Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Selles õpetuses ehitame WiFi -toega ilmajaama projekti.
Eesmärk on kujundada ilmajaam peaaegu kõigi võimalike omadustega:
- Kuva praegused tingimused, aeg, temperatuur, niiskus, rõhk
- Kuva järgmiste päevade prognoos
- Värskendus eetris
- Sisseehitatud veebisait konfigureerimiseks ja andmete esitamiseks
- Ajaloostatistika jaoks laadige andmed pilve üles
- Integreeritud Aple Home Kit'i või MQTT -ga
- Sisseehitatud Accu töötab võimaliku laadimise või päikesepaneeliga ühendamisega
Ma ei saa lisada rohkem ja mitte rohkem kujutlusvõimet, mis veel peab või võib olla
Samm: vajalikud osad
- ESP32 (olen kasutanud arendusmoodulit)
- 2,8 "240x320 TFT LCD SPI ILI9341
- Plastikust ümbris
- 3 x 18650 Accu
- Ilmaandur BME280 temperatuuri, niiskuse ja rõhu mõõtmiseks
- USB liitium laadija moodul
- DC-DC samm UP18650
- patareihoidja (3 tk)
- HC-SR505 Liikumisandur
- 220 Om takisti
- 2x 10 kOm takistid
- TIP120 NPN transistorit (Darlington) saab kasutada mis tahes muu ühilduvaga
- Nupud Juhtmed, lüliti, jootmisplaat….
Samm: juhtmestik ja kokkupanek
Esimene samm on jaama jõudude kokkupanek.
Olen jaganud plastkorpuse kahele parsile, millest ühte kasutatakse aku, lüliti, USB-laadija ja alalisvoolu alalisvoolu jaoks. Sellesse ossa panin akuhoidiku ja tegin aknad lülitile ja USB-laadijale. Pidage meeles, et USB -laadija moodul on üsna aeglane, seetõttu olen kasutanud allumiiniumplaati ja pannud sellele USB -laadija, kasutades Star 922 liimi.
Teine samm on kontrollerite kokkupanek.
Vaadake ühendusskeemi, kuidas seda ühendada
Olen kasutanud sel eesmärgil leivaplaati järgmiste sammudega
- Joote ESP32 arendusplaat
- Jootekilp TFT -ekraani hoidmiseks
- Muude elektroonikakomponentide jootmine: BME280, takistid, nupud
- Jootejuhtmed komponentide vahel vastavalt skeemile
Kolmas samm on valmistada leivaplaat plastkorpuse teisele osale. Olen printinud oma 3D -printerile kaks riba, kinnitanud need kruvidega aretusplaadile ja teinud ekraanile ristkülikukujulise lõike.
Liimisin plastkangide toed plastkorpuse korpuse külge. Nüüd, kui liim on kuiv, tuleb leivaplaadi kabiin kruvidega lahti võtta.
Järgmine samm on:
- Jootetraat toiteallika jaoks
- Jootetraat aku pinge oleku jaoks
- Jootma ja paigaldama liikumisandurit
Viimane samm:
- DC-DC muunduri seadistamine väljundpinge 5v abil
- ühendage jaama kontrolleri kaks osa toitega: toitejuhtmed ja pinge näit
Liikumisanduri ja nupu jaoks olen teinud näo poolele täiendavad augud.
Samm: püsivara üleslaadimine ESP32 -sse
Selle projekti jaoks olen kasutanud universaalset tarkvara, mille olen ise välja töötanud
Palun vaadake githubi lehte ESPHomeController. See sisaldab täielikke kompileerimise ja seadistamise juhiseid.
! Kui te pole kompileerimise ja Arduinoga tuttav, vaadake samm Valmis püsivara üleslaadimine
Niipea, kui laadite püsivara esimest korda üles, käivitub ESP32 konfiguratsioonirežiimis (pääsupunkti režiim)
Peaksite need konfigureerima. Selleks avage mis tahes saadaolevate WiFi -seadmete loendis. Leidke HomeController ja looge sellega ühendus. Suletud portaal peaks automaatselt käivituma. Kui te seda ei tee, sisestage oma brauseri URL: 192.168.4.1 ja näete konfiguratsiooniekraani
Järgige juhiseid ja konfigureerige WiFi volitused oma WiFi võrku.
ESP taaskäivitub pärast seda WiFi -kliendina ja loob ühenduse teie Wifi -ga.
Kui sson firts ühendus juhtub, ühendab see automaatselt Spiffsi failisüsteemi ja laadib veebiportaali jaoks vajalikud failid alla:
- index.html
- filebrowse.html
- js/kimp.min.js.gz
Allalaadimine toimub kaustast
Nüüd näete faili sisu veebibrauseri kaudu. selleks peaksite nüüd oma ESP32 IP -aadressi sisestama
Selle leiate ühel järgmistest viisidest.
- Sarjapordi monitori kasutamine ESP32 logide vaatamiseks
- Mis tahes tcp -skanneri kasutamine võrguseadmete skannimiseks
- Vajutage ilmajaama nuppu ja näete süsteemiteavet
Sirvige veebilehte https://192.168.0. XX/browse ja näete oma ESP failide loendit
(192.168.0. XX on teie seadme IP -aadress
Lõplikuks häälestamiseks peate ette valmistama konfiguratsioonifailid.
Samm: valmis püsivara üleslaadimine
See jaotis on mõeldud spetsiaalselt kuulajatele, kes ei kavatse püsivara ise toota. Peate lihtsalt üles laadima "valmis" püsivara
1. Laadige sellelt lehelt üleslaadimistööriistad
2. Laadige kõvakettale alla lisatud (väljavõte arhiividest) failid HomeController.bin ja bootloader_qio_80m.bin
3. Käivitage ESP32 allalaadimistööriist ja sisestage väärtused vastavalt ekraanipildile
4. Vajutage start
Samm: seadistamine
Enne konfiguratsiooni ettevalmistamise alustamist vajate:
- Looge oma kanal asjaomase jutu ja võtme jaoks. Valmistage ette 4 välja ja nimetage need õigesti temperatuur, niiskus, rõhk, pinge
- Registreeruge saidil Weather.com, et hankida oma api võti
Asjade rääkimine on vajalik teie andmete üleslaadimiseks ning suundumuste ja väärtuste jälgimiseks
Prognoosiandmete saamiseks on ilm vajalik.
Ok, lõpuks peate looma järgmise sisuga faili services.json
[{"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", "lubatud": tõsi, "intervall": 500000, "uri": "https://api.weather.com/v3/wx/forecast/daily/5day?geocode=50.30, 30.70 & format = json & units = m & language = et -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", "lubatud": true, "interval": 1200000, "value": [1, 1, 1, 1, 0, 0, 0, 0], "apiKey": "thingspea kapi "}, {" lubatud ": tõsi," intervall ": 1," pin ":" "," service ":" ButtonController "," name ":" Button "," pins ": [27]}]
Palun asendage!
- thingspeakapi oma thingspeak api võtmega
- weatherapi oma ilmastiku api võtmega
- geokood oma asukohaga, mille kohta soovite prognoosi saada
Valmistage ette teine 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}]
Mõlemad failid tuleb esp -i juure alla laadida.
Seda saate teha brauseri kaudu https://192.168.0. XX/browse, kus https://192.168.0. XX on teie seadme IP -aadress
Pärast üleslaadimist tuleb ESP uuesti käivitada ja kõik tehti õigesti. Esp näitab õiget ekraani nagu ülaltoodud fotol ja videol
6. samm: Tunning ja energiatarve
Kasutan oma seadet päikesepaneeliga ühenduses ja veendun, et see võib töötada „lõpmatult”
energiatarbimine on oluline ja pärast mitmeid katseid olen kasutanud kahte peamist nippi
Vähendage TFT -ekraani taustvalgusdioodi tarbimist
Mõõtmiste järgi sööb see 15-20 mA (palju), seetõttu olen kasutanud liikumisanduriga taktikat. See töötab suurepäraselt Liikumisandurid, mis suudavad tuvastada mis tahes detektsiooni kuni 8-10 meetrit ja tõsta signaalikaabli pinget. See on avad, mida transistor ja ümberringi LED saavad. Tavaliselt hoiab andur seda olekut kuni 10 sekundit, mis on rohkem kui monitori nägemiseks piisav, kuid kui jätkate liigutusi, on signaal endiselt kõrge ja LED süttib.
Selline lähenemine annab mulle suure majanduse, ilma täiendavate efektideta, ma ei kohtu ühegi probleemiga, et oma ekraani soovitud ajal näha
2. Vähendage energiatarvet ESP32 võrra
Kui ESP on WiFi-ga ühendatud, sööb see pidevalt 7-10 mA, ma räägin pidevast ajast, mitte käivitamisest ja esimesest ühendusest. See on vastuvõetav, kui olete alati näinud tegelikku kuupäeva ja kellaaega ning pääsete oma süsteemile juurde Apple'i kodukomplekti kaudu
Ka minu päikeseenergia jaoks talvel pidi see sobima töödega ilma täiendavate toiteallikateta, Seetõttu otsustasin ESP32 perioodiliselt unerežiimi lülitada (söömine on alla 1 mA). See on minu jaoks ok, näiteks ESP magab 20 minutit, siis ärkamine, ekraani värskendamine (tegelikud andmed ja prognoos) saadab andmed asjakõnele ja taas unerežiimi
Miinused on:
- Ilmateade kuvab aegunud ajaväärtusi
- Jaam ei ole unerežiimi ajal brauseri ja Apple Home Kiti kaudu juurdepääsetav
Teie otsustate, mis on olulisem, saate selle lihtsalt ümber konfigureerida.
Palun vaadake services.json faili ja rida
[{"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": tõene võimaldab üldse magada, kui see pannakse vale või eemaldatakse parameeter (vale on vaikimisi) ESP ei maga kunagi
"uneintervall": 900000, see on millis ehk 15 minutit, tähendab, et iga 15 minuti järel ärkab ESP üles ja teeb vajalikud töötajad
Niisiis, nüüd saavad kõik hõlpsalt mängida vastavalt vajadusele
7. samm: andurite häälestamine
Sisemise kuumutamise mõju minimeerimiseks temperatuuriandurile BME280
Firts Tegin toru anduri ja aukude ümber. Hovewer minu režiimis, kui LED on tavaliselt välja lülitatud ja ESP magab, pole nii oluline. Muudel juhtudel peaks BME280 andur kuhugi liikuma, et välistada sisemise kuumutamise mõju. Kui vähe mõju ma leidsin, on selle kompenseerimiseks kaks parameetrit
"hum_corr": 10,0
mis tähendab, et need väärtused lisatakse pärast mõõtmist
Teine on aku pinge mõõtmise kalibreerimine, {"lubatud": "tõene", "intervall": 600000, "pin": 36, "teenus": "LDRkontroller", "nimi": "LDR", "cvalmin": 0,0, "cvalmax": 7,2, " cfmt ":"%. 2f V "," acctype ": 10}, "cvalmin": 0,0
"cvalmax": 7.2
on selleks otstarbeks, kuna pinget mõõdetakse pärast takistite jagajaid ja võrreldakse 3,3 V -ga, mängides cvalmax väärtusega, saate oma multimeetri väärtusega täpse pinge häälestamise
Samm: seadme lisamine Apple'i kodukomplekti
Lõpuks, kui teie seade töötab korralikult, saab selle Apple Home Kit'i lisada ja näete
andurite väärtused Apple'i avaekraanil.
Esmalt peate seadme taaskäivitama, sest kohe, kui seade käivitati, ei lähe see 20 minutiks magama, on rohkem kui küll
Avage oma iOS -i seadmes rakendus Home Kit ja valige või looge uus Home1. Vajutage Lisa (+)
2. Valige Lisa tarvik.
3. Vajutage nuppu Mul pole koodi või ei saa skannida (skaneerimine lisatakse)
4. kui kõik läheb hästi, peaksite oma uut esp -seadet loendis nägema (vt pilti)
5. Valige seade ja kinnitage lisamine ilma ametliku sertifikaadita
6. Sisestage parool 11111111
7. See kõik! Peaksite nägema, et seade on edukalt sidunud, vastasel juhul alustage sidumisprotsessi uuesti.
Selle sätte põhjal näete Apple'is kahte seadet
1. Temp sensor & Hum sensor, sügavale minnes kuvatakse väärtused täisekraanil
2. Valgusandur:) Tegelikult suudab Apple näidata kerget õhkkonda, kuid mitte pinget, seega näitab aku pinget luks
9. samm: OTA: üle õhu värskendused
Enne värskendamise alustamist on parem ESP32 taaskäivitada, nagu varem mainitud, ei lähe see esimese 20 minuti jooksul magama
Värskendamiseks on kaks võimalust
- Seadistamine https://192.168.0. XX/browse abil pääsete oma failisüsteemile juurde ESP -s ja saate muuta konfiguratsioonifaile
- Saate püsivara täielikult värskendada. selleks peate esmalt looma uue. Seda saab teha Arduino või Visual Studio IDE kaudu. Seejärel tippige brauserisse https://192.168.0. XX/update, valige oma püsivara ja vajutage update. Oodake, kuni protsess on lõpule jõudnud ja saate vastuse OK, vastasel korral korrake sammu uuesti