Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Chcel som mať nejaký čas domácu meteorologickú stanicu a takú, aby každý z rodiny mohol ľahko kontrolovať teplotu a vlhkosť. Okrem sledovania vonkajších podmienok som chcel monitorovať aj konkrétne miestnosti v dome a moju garážovú dielňu. To nám dá vedieť, kedy je vhodné vyvetrať dom alebo spustiť odvlhčovač (v zime tu veľa prší). To, čo som vytvoril, je senzorový systém založený na ESP-Now, ktorý hlási miestny webový server, ktorý si môže ktokoľvek skontrolovať zo svojho počítača alebo telefónu. Pre telefón som napísal ako jednoduchú aplikáciu pre Android, aby to bolo ešte jednoduchšie.
Krok 1: Detaily návrhu
Chcel som mať rôzne senzorové stanice, ktoré by som mohol umiestniť na rôzne miesta, a nechať ich nahlásiť späť na jednu hlavnú stanicu (alebo rozbočovač), ktorá by informácie uložila. Po vyskúšaní rôznych nápadov som sa rozhodol použiť protokol ESP-Now od spoločnosti Espressif, pretože umožňoval rýchlu komunikáciu priamo medzi zariadeniami. Môžete si prečítať niečo o ESP-Now tu a toto repo GitHub bolo veľkou súčasťou mojej inšpirácie.
Prvý obrázok zobrazuje rozloženie systému. Každý senzor hlási svoje merania do zariadenia brány, ktoré odosiela údaje na hlavný server pomocou káblového sériového pripojenia. Dôvodom je to, že protokol ESP-Now nemôže byť aktívny súčasne s pripojením WIFI. Aby mal používateľ prístup na webovú stránku, WIFI musí byť vždy zapnuté, a to potom znemožňuje používať komunikáciu ESP-Now na tom istom zariadení. Aj keď zariadenie brány musí byť zariadenie založené na programe Espressif (schopné ESP-Now), hlavným serverom môže byť akékoľvek zariadenie schopné spúšťať webovú stránku.
Niektorým senzorovým staniciam by došli batérie (alebo solárne nabité batérie) a iné by mali jednoducho napájanie zo siete. Chcel som však, aby všetci používali čo najmenej energie a práve tam je funkcia „hlbokého spánku“dostupná pre zariadenia ESP8266 a ESP32 mimoriadne užitočná. Senzorické stanice by sa mali pravidelne prebúdzať, vykonávať merania a odosielať ich do zariadenia brány a na nejaký vopred naprogramovaný časový úsek by sa vrátili spať. Ich doba bdenia iba asi 300 ms každých 5 minút (v mojom prípade) výrazne zníži ich spotrebu energie.
Krok 2: Senzory
Na meranie parametrov prostredia máte na výber rôzne senzory. Rozhodol som sa používať iba senzory schopné komunikácie I2C, pretože umožňovali rýchle merania a fungovali na akomkoľvek zariadení, ktoré som mal. Namiesto toho, aby som pracoval priamo s integrovanými obvodmi, som hľadal moduly pripravené na použitie, ktoré majú rovnaké vývody na zjednodušenie návrhov. Začal som tým, že som chcel iba merať teplotu a vlhkosť, a preto som si vybral modul založený na SI7021. Neskôr som chcel senzor, ktorý dokáže merať aj tlak, a rozhodol som sa vyskúšať senzorové moduly založené na BME280. Na niektorých miestach som dokonca chcel monitorovať úrovne svetla a modul BH1750 bol na to ideálny ako samostatný senzorový modul. Kúpil som svoje senzorové moduly z ebay a toto sú moduly, ktoré som dostal:
- BME280 (GY-BMP/E280), meria teplotu, vlhkosť a tlak
- SI7021 (GY-21), meria teplotu a vlhkosť
- BH1750 (GY-302), meria svetlo
Existujú dva štýly modulov plošných spojov GY-BMP/E280. Oba zdieľajú rovnaký kolík pre piny 1 až 4. Jeden modul má dva ďalšie piny, CSB a SDO. Tieto dva piny sú vopred prepojené na 4-pólovej verzii modulu. Úroveň kolíka SDO určuje adresu I2C (uzemnenie = predvolená hodnota je 0x76, VCC = 0x77). Na výber rozhrania I2C musí byť pin CSB pripojený k VCC. Preferujem 4 -pinový modul, pretože je pripravený na použitie tak, ako je pre môj účel.
Vo všeobecnosti sa tieto moduly veľmi pohodlne používajú, pretože už majú na komunikačných linkách nainštalované výsuvné odpory a všetky bežia na 3,3 V, takže sú kompatibilné s doskami na báze ESP8266. Všimnite si toho, že kolíky na týchto integrovaných obvodoch senzorov spravidla netolerujú 5V, takže ich priame prepojenie s niečím ako Arduino Uno ich môže trvale poškodiť.
Krok 3: Senzorové stanice
Ako už bolo spomenuté, všetky senzorové stanice budú zariadenia Espressif používajúce komunikačný protokol ESP-Now. Z predchádzajúcich projektov a experimentov som mal k dispozícii niekoľko rôznych zariadení na vykonanie prvých testov a ich začlenenie do konečného návrhu. Po ruke som mal nasledujúce zariadenia:
- dva moduly ESP-01
- dve vývojové dosky Wemos D1 mini
- jedna vývojová doska Lolin ESP8266
- jedna doska ESP12E sériovej WIFI súpravy
- jedna doska GOOUUU ESP32 (38 -pinová vývojová doska)
Mal som tiež vývojovú dosku Wemos D1 R2, ale vyskytli sa problémy, ktoré jej neumožnili prebudiť sa z hlbokého spánku a ako zariadenie na spôsob brány sa zrútilo a nesprávne sa reštartovalo. Neskôr som ho opravil a stal sa súčasťou projektu otvárača garážových brán. Aby „hlboký spánok“fungoval, musí byť pin RST na ESP8266 pripojený na pin GPIO16, aby mohol časovač vypnutia zariadenie prebudiť. V ideálnom prípade by sa toto spojenie malo vykonať pomocou diódy Schottky (katóda na GPIO16), aby manuálny reset prostredníctvom pripojenia USB-TLL počas programovania stále fungoval. Úsporný môže byť aj odpor s nízkou hodnotou (300 ish Ohm) alebo dokonca priame pripojenie drôtom.
Moduly ESP-01 neumožňujú ľahký prístup k kolíku GPIO16 a je potrebné ich spájkovať priamo s integrovaným obvodom. Nie je to jednoduchá úloha a neodporúčam to každému. Séria ESP12E sériovej dosky WIFI bola trochu novinkou a vyžadovala niekoľko zmien, aby bola užitočná pre môj účel. Najľahšie sa používali dosky typu Wemos D1 mini a doska Lolin. Zariadenia ESP32 nevyžadujú žiadne úpravy, aby hlboký spánok fungoval. Andreas Spiess má na to pekný návod.
Krok 4: Senzorická stanica ESP-01
Na všetkých senzorových staniciach sú senzorové moduly namontované vertikálne, aby sa znížilo množstvo prachu, ktorý sa na nich môže zhromažďovať. Nie všetky sú v skriniach a možno ich nebudem montovať do skriniek. Dôvodom je to, že zariadenia sa môžu zahrievať a ovplyvňovať hodnoty teploty a vlhkosti v nedostatočne vetraných priestoroch.
Dosky ESP-01 sú veľmi kompaktné a majú niekoľko digitálnych IO pinov, s ktorými je možné pracovať, ale na rozhranie I2C to stačí. Dosky však vyžadujú náročnú úpravu, aby „hlboký spánok“fungoval. Na zobrazenej fotografii bol spájaný drôt z rohového kolíka (GPIO16) s kolíkom RST v záhlaví. Použil som drôt izolovaný „opravný“drôt s priemerom 0,1 mm. Izolačný povlak sa po zahriatí roztaví, takže ho možno spájkovať na opravu stôp atď. Na doskách plošných spojov a napriek tomu si nemusíte robiť starosti s vytváraním skratov, kde sa drôt dotýka ostatných komponentov. Jeho veľkosť sťažuje prácu a tento drôt som spájkoval na mieste pod mikroskopom (štýl hobby/zberateľ známok). Majte na pamäti, že záhlavie na pravej strane má rozteč kolíkov 0,1 (2,54 mm). Inštalácia diódy Schottky tu nebude vôbec jednoduchá, a tak som sa rozhodol vyskúšať iba drôt a obe jednotky bežali viac ako 2 hodiny. mesiac bez problémov.
Moduly boli nainštalované na dve prototypové dosky, ktoré som vytvoril. Jeden (#1) je doska programátora, ktorá tiež umožňuje inštaláciu a testovanie modulov I2C, zatiaľ čo druhá (#2) je doska pre vývoj/testovanie zariadení I2C. Na prvej doske som spájkoval starý konektor USB male a malú dosku plošných spojov na napájanie jednotky priamo z nástenného adaptéra USB. Druhá jednotka má pravidelný konektor DC upravený tak, aby sa zmestil do konektora so skrutkovými svorkami, a je napájaný aj pomocou nástenného adaptéra.
Schéma ukazuje, ako sú prepojené a ako funguje programátor. Nemám žiadne ďalšie moduly ESP-01, takže som bezprostredne nepotreboval programátora. V budúcnosti im pravdepodobne vyrobím DPS. Obe tieto dosky majú nainštalovaný senzorový modul SI7021, pretože ma merania tlaku na týchto miestach až tak nezaujímali.
Krok 5: Senzorová stanica sériovej WIFI súpravy ESP 12E
Doska ESP12E Serial WIFI Kit nebola určená na vývoj ani tak na predstavenie toho, čo sa s týmto zariadením dá robiť. Kúpil som ho už dávno, aby som sa dozvedel niečo o programovaní ESP8266, a nakoniec som sa rozhodol dať mu nové využitie. Odstránil som všetky LED diódy, ktoré boli nainštalované na ukážky, a pridal som USB programovaciu hlavičku, ako aj I2C hlavičku vhodnú pre moduly, ktoré používam. K analógovému vstupnému kolíku bol pripojený fotografický odpor CdS a rozhodol som sa ho tam nechať. Táto konkrétna jednotka sa chystala monitorovať moju garážovú dielňu a fotografický senzor, ktorý mala, mi postačoval na to, aby som vedel, či sa svetlá omylom rozsvietili. Pri meraní svetla som normalizoval hodnoty, aby som získal percentuálny výkon, a čokoľvek nad „5“v noci znamenalo, že svetlá zostali zapnuté alebo dvere do domu neboli správne zatvorené. Kolíky RST a GPIO16 sú zreteľne označené na doske plošných spojov a dióda Schottkyho diódy, ktorá ich spája, bola nainštalovaná na spodnej strane dosky plošných spojov. Napája sa zo sériovej dosky USB, ktorá je priamo zapojená do nástennej nabíjačky USB. Mám doplnky k týmto sériovým doskám USB a práve ich nepotrebujem.
Pre túto dosku som nevytvoril schému a vo všeobecnosti neodporúčam kupovať ju na tento účel. Dosky Wemos D1 Mini sú oveľa vhodnejšie a budú diskutované ďalej. Aj keď, ak jeden z nich máte a potrebujete radu, rád vám pomôžem.
Krok 6: Mini senzorové stanice D1
Moje preferované sú vývojové dosky ESP8266 Wemos D1 Mini a keby som to mal urobiť znova, použil by som tieto. Majú veľký počet prístupných IO pinov, dajú sa priamo programovať cez Arduino IDE a sú stále dosť kompaktné. Na týchto doskách je pin D0 GPIO16 a pripojenie diódy Schottky je pomerne jednoduché. Schéma ukazuje, ako mám tieto dosky zapojené a obe používajú senzorový modul BME2808.
Jedna z dvoch dosiek slúži na monitorovanie vonkajšieho počasia a napája sa zo solárnej batérie. Solárny panel s rozmermi 165 mm x 135 mm (6 V, 3,5 W) je pripojený k nabíjaciemu modulu lítium-iónovej batérie TP4056 (pozri diagram inštalácie solárnej napájacej stanice senzora batérie). Tento konkrétny nabíjací modul (03962A) obsahuje ochranný obvod batérie, ktorý je potrebný, ak batéria (balenie) neobsahuje. Li-ion batéria bola recyklovaná zo starej batérie prenosného počítača a stále dokáže udržať dostatočné nabitie na prevádzku dosky D1 Mini, najmä ak je zapnutý hlboký spánok. Doska bola umiestnená v plastovom kryte, aby bola v určitom bezpečí pred živlami. Aby bol však interiér vystavený vonkajšej teplote a vlhkosti, boli na opačných stranách vyvŕtané dva otvory s priemerom 25 mm a zakryté (zvnútra) čiernou krajinkou. Utierka je navrhnutá tak, aby umožňovala prienik vlhkosti a aby sa dala vlhkosť merať. Na jednom konci krytu bol vyvŕtaný malý otvor a nainštalované priehľadné plastové okno. Tu bol umiestnený modul svetelného senzora BH1750. Celá jednotka je umiestnená vonku v tieni (nie na priamom slnku) so svetelným senzorom smerujúcim von. V našom daždivom/oblačnom zimnom počasí tu beží takmer 4 týždne zo solárnej batérie.
Krok 7: Brána a webový server
Pre zariadenie ESP-Now Gateway bola použitá doska Lolin NodeMCU V3 (ESP8266) a pre webový server ESP32 (doska GOOUUU). Takmer každá doska ESP8266 alebo dokonca ESP32 mohla slúžiť ako zariadenie brány, toto bola jednoducho doska, ktorá mi „zostala“potom, čo som použil všetky ostatné dosky, ktoré som mal.
Použil som dosku ESP32, pretože potrebujem dosku s trochu väčším výpočtovým výkonom na zhromažďovanie údajov, ich triedenie, ukladanie do úložiska a spustenie webového servera. V budúcnosti môže mať aj vlastný senzor a lokálny (OLED) displej. Na ukladanie údajov bola použitá karta SD s prispôsobeným adaptérom. Použil som bežný adaptér karty microSD na SD a na pozlátené kontakty som spájkoval 7 -pinovú zásuvku (rozteč 0,1 palca). Pri pripájaní som postupoval podľa rád tohto GitHubu.
Prototypové nastavenie (s vodičmi Dupont) neobsahuje senzorový modul, ale konečná doska plošných spojov, ktorú som navrhol, umožňuje jeden aj malý OLED displej. Podrobnosti o tom, ako som navrhol, že PCB sú súčasťou iného Instructable.
Krok 8: Softvér
Zariadenia ESP8266 (ESP-NOW)
Softvér pre všetky zariadenia bol napísaný pomocou Arduino IDE (v1.87). Každá senzorová stanica má v podstate rovnaký kód. Líšia sa iba tým, ktoré piny sa používajú na komunikáciu I2C a na ktorý senzorový modul sú pripojené. Najdôležitejšie je, že odosielajú identický paket nameraných údajov do stanice ESP-Now Gateway bez ohľadu na to, či majú rovnaký snímač. Čo to znamená, že niektoré senzorové stanice vyplnia fiktívne hodnoty pre meranie tlaku a hladiny svetla, ak nemajú senzory, ktoré by poskytovali skutočné hodnoty. Kód pre každú stanicu a bránu bol upravený z príkladov Anthonyho Eldera na tomto GitHube.
Kód zariadenia brány používal na komunikáciu s webovým serverom SoftwareSerial, pretože ESP8266 má iba jeden plne funkčný hardvér UART. Beží na maximálnej prenosovej rýchlosti 9600 a zdá sa byť celkom spoľahlivý a je viac ako dostačujúci na odosielanie týchto relatívne malých dátových paketov. Zariadenie brány je tiež naprogramované so súkromnou adresou MAC. Dôvodom je to, že ak je potrebná výmena, potom nemusia byť všetky senzorové stanice preprogramované s novou adresou MAC príjemcu.
ESP32 (webový server)
Každá senzorová stanica odošle svoj dátový paket do zariadenia brány, ktoré ho odošle na webový server. Spolu s dátovým paketom je odoslaná aj MAC adresa senzorovej stanice na identifikáciu každej stanice. Webový server má tabuľku „vyhľadávania“na určenie umiestnenia každého senzora a podľa toho triedi údaje. Časový interval medzi meraniami bol nastavený na 5 minút plus náhodný faktor, aby sa predišlo tomu, že by sa senzory pri odosielaní do zariadenia s bránou navzájom „zrazili“.
Domáci smerovač WIFI bol nastavený tak, aby webovému serveru prideľoval pevnú IP adresu, keď sa pripája k WIFI. U mňa to bolo 192.168.1.111. Zadaním tejto adresy do ľubovoľného prehliadača sa pripojíte k webovému serveru meteorologickej stanice, pokiaľ sa používateľ nachádza v dosahu WIFI (a pripojí sa) k domácej sieti. Keď sa používateľ pripojí k webovej stránke, webový server odpovie tabuľkou meraní a obsahuje čas posledného merania každého senzora. Týmto spôsobom, ak senzorová stanica nereaguje, je to vidieť z tabuľky, ak je údaj starší ako 5-6 minút.
Údaje sa ukladajú do jednotlivých textových súborov na kartu SD a dajú sa tiež stiahnuť z webovej stránky. Je možné ho importovať do Excelu alebo akejkoľvek inej aplikácie na vykresľovanie údajov
Aplikácia pre Android
Aby som si jednoduchšie prezeral informácie o miestnom počasí na smartfóne, vytvoril som relatívne malú aplikáciu pre Android pomocou Android Studio. Je k dispozícii na mojej stránke GitHub tu. Na načítanie webovej stránky zo servera používa triedu webview a ako takú má obmedzenú funkčnosť. Nie je schopný sťahovať dátové súbory a tie som v telefóne aj tak nepotreboval.
Krok 9: Výsledky
Na záver je tu niekoľko výsledkov z mojej domácej meteorologickej stanice. Údaje boli stiahnuté do prenosného počítača a vykreslené v programe Matlab. Pripojil som svoje skripty Matlab a môžete ich spustiť aj v GNU Octave. Vonkajší senzor beží na svojej solárne nabitej batérii takmer 4 týždne a v tomto ročnom období len málokedy máme slnko. Zatiaľ všetko funguje dobre a každý z rodiny si môže počasie skôr vyhľadať sám, ako by sa ma teraz pýtal!