Turinys:

ESP32 orų stotis saulės energija: 9 žingsniai
ESP32 orų stotis saulės energija: 9 žingsniai

Video: ESP32 orų stotis saulės energija: 9 žingsniai

Video: ESP32 orų stotis saulės energija: 9 žingsniai
Video: Arduino Nano, BME280 ir SSD1306 OLED meteorologinė stotis 2024, Lapkritis
Anonim
Image
Image
ESP32 meteorologinė stotis su saulės energija
ESP32 meteorologinė stotis su saulės energija
ESP32 meteorologinė stotis su saulės energija
ESP32 meteorologinė stotis su saulės energija

Šioje pamokoje mes sukursime „WiFi“įgalintą orų stoties projektą.

Tikslas yra sukurti orų stotį su beveik visomis įmanomomis savybėmis:

  • Rodyti esamas sąlygas, laiką, temperatūrą, drėgmę, slėgį
  • Rodyti kitų dienų prognozę
  • Atnaujinimas eteryje
  • Integruota svetainė konfigūracijai ir duomenų reprezentacijai
  • Įkelkite duomenis į debesį istorijos statistikai
  • Integruotas su „Aple Home Kit“arba „MQTT“
  • „Indueded Accu“maitinamas su galimybe įkrauti arba prijungti prie saulės kolektoriaus

Negaliu pridėti daugiau ir ne daugiau vaizduotės, kas dar turi ar gali būti

1 žingsnis: reikalingos dalys

Dalys, kurių reikia
Dalys, kurių reikia
Dalys, kurių reikia
Dalys, kurių reikia
Dalys, kurių reikia
Dalys, kurių reikia
  • ESP32 (naudojau dev modulį)
  • 2,8 colio 240x320 TFT LCD SPI ILI9341
  • Plastikinis dėklas
  • 3 x 18650 Accu
  • Oro jutiklis BME280 temperatūrai, drėgmei ir slėgiui matuoti
  • USB ličio įkrovimo modulis
  • DC-DC žingsnis UP18650
  • akumuliatoriaus laikiklis (3 vnt.)
  • Judesio jutiklis HC-SR505
  • 220 Om rezistorius
  • 2x 10 kOm rezistoriai
  • TIP120 NPN tranzistorius (Darlingtonas) gali būti naudojamas bet kuris kitas suderinamas
  • Mygtuko laidai, jungiklis, lituoklio plokštė….

2 žingsnis: laidų prijungimas ir surinkimas

Elektros instaliacija ir surinkimas
Elektros instaliacija ir surinkimas
Elektros instaliacija ir surinkimas
Elektros instaliacija ir surinkimas
Elektros instaliacija ir surinkimas
Elektros instaliacija ir surinkimas
Elektros instaliacija ir surinkimas
Elektros instaliacija ir surinkimas

Pirmasis žingsnis yra stoties galių surinkimas.

Aš padalijau plastikinį dėklą ant dviejų dalių, vienas iš jų naudojamas akumuliatoriui, jungikliui, USB įkrovikliui ir DC-DC išėjimui. Į šią dalį įdėjau akumuliatoriaus laikiklį ir padariau jungiklio ir USB įkroviklio langus. Atminkite, kad USB įkroviklio modulis yra gana ilgas, todėl aš naudoju aliuminio plokštę ir įdėjau USB įkroviklį į jį naudodami „Star 922“klijus.

Antras žingsnis yra surinkti valdiklius.

Žiūrėkite laidų schemą, kaip ji turėtų būti prijungta

Šiam tikslui aš naudoju duonos lentą, atlikdamas šiuos veiksmus

  • Lituoti ESP32 dev plokštė
  • Lituoklio skydas, skirtas išlaikyti TFT ekraną
  • Lituokite kitus elektroninius komponentus: BME280, rezistorius, mygtukus
  • Lituoklio laidai tarp komponentų pagal schemą

Trečias žingsnis - paruošti duonos lentos tvirtinimą prie antros plastikinio dėklo dalies. Aš atspausdinau savo 3D spausdintuve du strypus, pritvirtinau juos prie veisimo lentos varžtais ir iškirpiau stačiakampį ekraną.

Prie plastikinio dėklo korpuso priklijavau plastikinių strypų atramas. Dabar, kai klijai išdžiūsta, duonos lentos kabina turi būti atsukta varžtais.

Kitas žingsnis yra:

  • Maitinimo šaltinio lydmetalio laidai
  • Lituoklio laidai, skirti akumuliatoriaus įtampos būsenai
  • Lituoti ir pritvirtinti judesio detektorius

Paskutinis žingsnis:

  • DC-DC keitiklio nustatymas, nustatant išėjimo įtampą 5v
  • Prijunkite dvi stoties valdiklio dalis prie maitinimo: maitinimo laidus ir įtampos rodmenis

Judėjimo detektoriui ir mygtukui aš padariau papildomų skylių veido pusėje.

3 veiksmas: įkelkite programinę -aparatinę įrangą į ESP32

Šiam projektui naudojau universalią programinę įrangą, kurią sukūriau pats

Peržiūrėkite „Github“puslapį „ESPHomeController“. Čia pateikiama išsami kompiliavimo ir sąrankos instrukcija.

! Jei nesate susipažinę su kompiliavimu ir „Arduino“, pažiūrėkite, kaip įkelti paruoštą programinę -aparatinę įrangą

Kai tik pirmą kartą įkeliate programinę -aparatinę įrangą, ESP32 pradės veikti konfigūracijos režimu (prieigos taško režimas)

Turėtumėte juos sukonfigūruoti. Šiuo tikslu atidarykite bet kurio prieinamo „WiFi“įrenginių sąrašą. Raskite „HomeController“ir prisijunkite prie jo. Nelaisvės portalas turėtų prasidėti automatiškai. Jei ne, įveskite savo naršyklės URL: 192.168.4.1 ir pamatysite konfigūracijos ekraną

Vykdykite instrukcijas ir sukonfigūruokite „WiFi“prisijungimo duomenis prie „WiFi“tinklo.

Po to ESP bus paleistas iš naujo kaip „WiFi“klientas ir prisijungs prie jūsų „Wifi“.

Kai įvyks „sson firts“ryšys, jis automatiškai prijungs „Spiffs“failų sistemą ir atsisiųs reikalingus žiniatinklio portalo failus:

  • index.html
  • filebrowse.html
  • js/bundle.min.js.gz

Atsisiuntimas vyksta iš https://github.com/Yurik72/ESPHomeController/tree/… aplanko

Dabar galite peržiūrėti failo turinį naudodami žiniatinklio naršyklę. šiuo tikslu dabar turėtumėte įvesti savo ESP32 IP adresą

Jį galite rasti vienu iš šių būdų:

  • Serijinio prievado monitoriaus naudojimas ESP32 žurnalams peržiūrėti
  • Naudokite bet kurį „tcp“skaitytuvą tinklo įrenginiams nuskaityti
  • Paspauskite orų stoties mygtuką ir pamatysite sistemos informaciją

Įveskite naršymą https://192.168.0. XX/browse ir pamatysite savo ESP failų sąrašą

(192.168.0. XX yra jūsų įrenginio IP adresas

Galutiniam derinimui turite paruošti konfigūracijos failus.

4 veiksmas: įkelkite paruoštą programinę -aparatinę įrangą

Įkeliama paruošta programinė įranga
Įkeliama paruošta programinė įranga

Šis skyrius yra skirtas klausytojams, kurie nesiruošia patys gaminti programinės įrangos. Jums tereikia įkelti „paruoštą“programinę -aparatinę įrangą

1. Atsisiųskite „flash“įkėlimo įrankius iš šio puslapio

2. Atsisiųskite pridėtus (ištraukos iš archyvų) failus HomeController.bin ir bootloader_qio_80m.bin į standųjį diską

3. Paleiskite ESP32 atsisiuntimo įrankį ir įveskite vertes pagal ekrano kopiją

4. Paspauskite pradėti

5 žingsnis: konfigūravimas

Prieš pradėdami rengti konfigūraciją, jums reikia:

  1. Sukurkite savo kanalą pagal dalyko kalbą ir pagrindinį kanalą. Paruoškite 4 laukus ir tinkamai juos pavadinkite Temperatūra, Drėgmė, Slėgis, Įtampa
  2. Užsiregistruokite Weather.com, kad gautumėte savo API kodą

„Thingspeak“reikalingas norint įkelti duomenis ir stebėti tendencijas bei vertybes

Norint gauti prognozių duomenis, būtini orai.

Gerai, pagaliau jums reikia sukurti failą services.json su tokiu turiniu

[{"service": "TimeController", "name": "Time", "enabled": true, "interval": 1000, "timeoffs": 7200, "dayloffs": 3600, "server": "pool.ntp.org "," enableleep ": true," sleepptype ": 1," sleepinterval ": 900000," restartinterval ": 18000000}, {" service ":" BME280Controller "," name ":" BME "," enabled ": true, "interval": 900000, "i2caddr": 118, "uselegacy": true, "temp_corr":-3.0, "hum_corr": 10.0}, {"service": "WeatherClientController", "name": "WeatherForecast", "enabled": true, "interval": 500000, "uri": "https://api.weather.com/v3/wx/forecast/daily/5day?geocode=50.30, 30.70 & format = json & units = m & language = lt -US & apiKey = weatherapi "}, {" service ":" WeatherDisplayController "," name ":" WeatherDisplay "," enabled ": true," interval ": 500}, {" enabled ":" true "," interval ": 600000, "pin": 36, "service": "LDRController", "name": "LDR", "cvalmin": 0.0, "cvalmax": 7.2, "cfmt": "%. 2f V", "acctype": 10}, {"service": "ThingSpeakController", "name": "ThingSpeak", "enabled": true, "interval": 1200000, "value": [1, 1, 1, 1, 0, 0, 0, 0], "apiKey": "thingspea kapi "}, {" enabled ": true," interval ": 1," pin ":" "," service ":" ButtonController "," name ":" Button "," pins ": [27]}]

! Prašome pakeisti

  • thingspeakapi su jūsų daiktų kalbėjimo API raktu
  • weatherapi su jūsų orų API raktu
  • geokodą su savo vieta, kuriai norite gauti prognozę

Paruoškite antrą failą triggers.json

[{"type": "BMEToWeatherDisplay", "source": "BME", "destination": "WeatherDisplay"}, {"type": "TimeToWeatherDisplay", "source": "Time", "destination": "WeatherDisplay" "}, {" type ":" WeatherForecastToWeatherDisplay "," source ":" WeatherForecast "," destination ":" WeatherDisplay "}, {" type ":" BMEToThingSpeak "," source ":" BME "," destination ": "ThingSpeak", "t_ch": 1, "h_ch": 2, "p_ch": 3}, {"type": "ButtonToWeatherDisplay", "source": "Button", "destination": "WeatherDisplay"}, { "type": "LDRToThingSpeak", "source": "LDR", "destination": "ThingSpeak", "ch": 4}]

Abu failai turi būti perkelti į esp šaknį.

Tai galite padaryti naudodami naršyklę https://192.168.0. XX/browse, kur https://192.168.0. XX yra jūsų įrenginio IP adresas

Įkėlus ESP reikia iš naujo paleisti ir viskas buvo padaryta teisingai. Esp parodys tinkamą ekraną, kaip aukščiau esančioje nuotraukoje ir vaizdo įraše

6 žingsnis: taupymas ir energijos suvartojimas

Tunning ir energijos suvartojimas
Tunning ir energijos suvartojimas

Aš naudoju savo įrenginį prisijungęs prie saulės kolektoriaus ir esu tikras, kad jis gali veikti „be galo“

energijos suvartojimas yra svarbus ir po kelių eksperimentų panaudojau du pagrindinius triukus

Sumažinkite TFT ekrano foninio šviesos diodo suvartojimą

Remiantis matavimais, jis suvalgo 15-20 mA (daug), todėl naudoju taktiką su judesio detektoriumi. Jis puikiai veikia Judesio jutikliai, galintys atpažinti bet kokį aptikimą iki 8–10 metrų ir pakelti signalo kabelio įtampą. Tai yra tranzistoriaus ir atgalinio apšvietimo angos, gaunančios maitinimą. Paprastai detektorius palaiko šią būseną iki 10 sekundžių, o tai yra daugiau nei užtenka, kad pamatytumėte monitorių, tačiau, jei tęsiate judesius, signalas vis dar yra aukštas ir šviečia šviesos diodas.

Toks požiūris suteikia man didelę ekonomiją, be papildomų efektų, nesusiduriu su jokia problema, kad norėčiau pamatyti savo ekraną

2. Sumažinkite energijos suvartojimą ESP32

Kai ESP prijungtas prie „WiFi“, jis nuolat valgo 7–10 mA, aš kalbu apie pastovų laiką, o ne paleidimą ir pirmąjį prisijungimą. Tai gali būti priimtina, jei visada matėte tikrąją datą ir laiką, prieigą prie sistemos iš „Apple“namų rinkinio

Mano saulės energija žiemą taip pat turėjo atitikti darbus be papildomų energijos šaltinių, Todėl nusprendžiau periodiškai įjungti ESP32 miego režimą (valgymas yra mažesnis nei 1 mA). Man tai gerai, pavyzdžiui, ESP miega 20 minučių, o ne pabusti, atnaujinti ekraną (faktiniai duomenys ir prognozė) siunčia duomenis į kalbėjimo kalbą ir vėl įjungti miego režimą

Minusai yra šie:

  • Orų ekrane rodomos pasenusios laiko vertės
  • Stotis nėra prieinama iš naršyklės ir „Apple Home Kit“miego metu

Jūs turite nuspręsti, kas yra svarbiau, galite tai paprasčiausiai perkonfigūruoti.

Pažvelkite į services.json failą ir eilutę

[{"service": "TimeController", "name": "Time", "enabled": true, "interval": 1000, "timeoffs": 7200, "dayloffs": 3600, "server": "pool.ntp.org "," enableleep ": true," sleepptype ": 1," sleepinterval ": 900000," restartinterval ": 18000000}

„enableleep“: „true“apskritai leidžia užmigti, jei įdėsite klaidingą arba pašalinsite parametrą („false“yra numatytasis) ESP niekada nemiegos

„miego intervalas“: 900 000, tai yra milis, arba 15 min., reiškia, kad kas 15 minučių ESP atsibus ir prireiks darbuotojų

Taigi, dabar kiekvienas gali lengvai žaisti pagal būtinybę

7 žingsnis: jutiklių derinimas

Siekiant sumažinti vidinio šildymo poveikį BME280 temperatūros jutikliui

Firts Aš padariau vamzdelį aplink jutiklį ir skyles. „Hovewer“mano režimu, kai šviesos diodas paprastai yra išjungtas ir ESP miega, nėra toks svarbus. Kitais atvejais BME280 jutiklis turėtų kažkur pasislinkti, kad būtų išvengta vidinio šildymo įtakos. Kad ir kokią nedidelę įtaką radau, todėl reikia kompensuoti du parametrus

„hum_corr“: 10.0

tai reiškia, kad tos vertės bus pridėtos po matavimo

Antrasis yra kalibruoti akumuliatoriaus įtampos matavimą, {"enabled": "true", "interval": 600000, "pin": 36, "service": "LDRController", "name": "LDR", "cvalmin": 0.0, "cvalmax": 7.2, " cfmt ":"%. 2f V "," acctype ": 10}, „cvalmin“: 0,0

„cvalmax“: 7.2

yra skirti šiems tikslams, nes įtampa matuojama po rezistorių daliklių ir lyginama su 3,3 V, žaidžiant su cvalmax reikšme, galite pasiekti tikslų įtampos derinimą naudodami savo multimetro vertę

8 veiksmas: įrenginio pridėjimas prie „Apple Home Kit“

Įrenginio pridėjimas prie „Apple Home Kit“
Įrenginio pridėjimas prie „Apple Home Kit“

Galiausiai, kai jūsų įrenginys veikia tinkamai, jį galima pridėti prie „Apple Home Kit“ir galėsite pamatyti

jutiklių vertės „Apple“pagrindiniame ekrane.

Pirmiausia turite iš naujo paleisti įrenginį, nes netrukus, kai įrenginys paleidžiamas, jis neužmigs 20 minučių yra daugiau nei užtenka

Atidarykite „Home Kit“programą „iOS“įrenginyje ir pasirinkite arba sukurkite naują „Home1“. Paspauskite Pridėti (+)

2. Pasirinkite Pridėti priedą.

3. Paspauskite „Aš neturiu kodo“arba „Negaliu nuskaityti“(toliau bus pridėtas nuskaitymas)

4. jei viskas gerai, turėtumėte pamatyti savo naują esp įrenginį sąraše (žr. Paveikslėlį)

5. Pasirinkite įrenginį ir patvirtinkite pridėjimą be oficialaus sertifikavimo

6. Įveskite slaptažodį 11111111

7. Tai viskas! Turėtumėte pamatyti, kad įrenginys buvo sėkmingai suporuotas, priešingu atveju vėl pradėkite suporavimo procesą.

Remdamiesi tuo nustatymu, „Apple“pamatysite du įrenginius

1. Temperatūros jutiklis ir „Hum“jutiklis, eidami giliai, rodys reikšmes visame ekrane

2. Šviesos jutiklis:) Iš tikrųjų „Apple“gali parodyti lengvą atmosferą, bet ne įtampą, todėl akumuliatoriaus įtampa rodoma liuksais

9 veiksmas: OTA: atnaujinimai per orą

Prieš pradedant bet kokį atnaujinimą, geriau iš naujo paleisti ESP32, kaip minėta anksčiau, jis neužmigs pirmąsias 20 minučių

Yra dvi galimybės atnaujinti

  1. Konfigūracija naudojant https://192.168.0. XX/browse galite pasiekti savo failų sistemą ESP ir keisti konfigūracijos failus
  2. Galite visiškai atnaujinti programinę -aparatinę įrangą. šiuo tikslu pirmiausia turite sukurti naują. Tai galima padaryti naudojant „Arduino“arba „Visual Studio IDE“. Tada įveskite naršyklę https://192.168.0. XX/update, pasirinkite programinę -aparatinę įrangą ir paspauskite atnaujinti. Palaukite, kol procesas bus baigtas, ir gausite atsakymą Gerai, priešingu atveju pakartokite veiksmą dar kartą

Rekomenduojamas: