Obsah:

Meteorologická stanice ESP-Now Home: 9 kroků (s obrázky)
Meteorologická stanice ESP-Now Home: 9 kroků (s obrázky)

Video: Meteorologická stanice ESP-Now Home: 9 kroků (s obrázky)

Video: Meteorologická stanice ESP-Now Home: 9 kroků (s obrázky)
Video: Mastering Business Success: 25 Strategic Secrets Every CEO Should Know #audiobook 2024, Listopad
Anonim
Domácí meteorologická stanice ESP-Now
Domácí meteorologická stanice ESP-Now

Chtěl jsem mít nějakou dobu domácí meteorologickou stanici a takovou, u které by každý z rodiny mohl snadno kontrolovat teplotu a vlhkost. Kromě sledování vnějších podmínek jsem chtěl sledovat také konkrétní místnosti v domě a svoji garážovou dílnu. Díky tomu budeme vědět, kdy je vhodné vyvětrat dům nebo spustit odvlhčovač (v zimě zde hodně prší). To, co jsem vytvořil, je senzorový systém založený na ESP-Now, který hlásí místnímu webovému serveru, který může kdokoli zkontrolovat ze svého počítače nebo telefonu. Pro telefon jsem napsal jako jednoduchou aplikaci pro Android, aby to bylo ještě jednodušší.

Krok 1: Podrobnosti o návrhu

Podrobnosti o designu
Podrobnosti o designu

Chtěl jsem mít různé senzorové stanice, které bych mohl umístit na různá místa a nechat je hlásit zpět na jednu hlavní stanici (nebo rozbočovač), která by informace uložila. Po vyzkoušení různých nápadů jsem se rozhodl použít protokol ESP-Now společnosti Espressif, protože umožňoval rychlou komunikaci přímo mezi zařízeními. Můžete si přečíst něco o ESP-Now zde a toto repo GitHub bylo velkou součástí mé inspirace.

První obrázek ukazuje rozložení systému. Každý senzor hlásí svá měření do zařízení brány, které předává data hlavnímu serveru pomocí pevného kabelového sériového připojení. Důvodem je to, že protokol ESP-Now nemůže být aktivní současně s připojením WIFI. Aby měl uživatel přístup na webovou stránku, muselo by být WIFI vždy zapnuté, a to pak znemožňuje používat komunikaci ESP-Now na stejném zařízení. Přestože zařízení brány musí být zařízení založené na Espressifu (schopné ESP-Now), hlavním serverem může být jakékoli zařízení schopné spouštět webovou stránku.

Některým senzorovým stanicím by došly baterie (nebo solárně nabité baterie) a jiné by jednoduše měly síťové napájení. Chtěl jsem však, aby všichni používali co nejméně energie, a v tom je funkce „hlubokého spánku“dostupná pro zařízení ESP8266 a ESP32 velmi užitečná. Senzorické stanice by se pravidelně probouzely, prováděly měření a odesílaly je do zařízení brány a na nějaký předem naprogramovaný časový úsek by se vrátily do režimu spánku. Jejich doba probuzení pouze asi 300 ms každých 5 minut (v mém případě) výrazně snižuje jejich spotřebu energie.

Krok 2: Senzory

Senzory
Senzory
Senzory
Senzory

Pro měření parametrů prostředí lze vybírat z různých senzorů. Rozhodl jsem se zůstat pouze u senzorů schopných komunikace I2C, protože to umožňovalo rychlé měření a fungovalo by to na jakémkoli zařízení, které jsem měl. Spíše než pracovat přímo s integrovanými obvody jsem hledal moduly připravené k použití, které měly stejné vývody pro zjednodušení návrhů. Začal jsem tím, že jsem chtěl pouze měřit teplotu a vlhkost, a proto jsem si vybral modul založený na SI7021. Později jsem chtěl senzor, který by také mohl měřit tlak, a rozhodl jsem se vyzkoušet senzorové moduly založené na BME280. Na některých místech jsem dokonce chtěl sledovat úrovně světla a modul BH1750 byl pro to ideální jako samostatný senzorový modul. Koupil jsem své senzorové moduly z ebay a toto jsou moduly, které jsem obdržel:

  • BME280 (GY-BMP/E280), měří teplotu, vlhkost a tlak
  • SI7021 (GY-21), měří teplotu a vlhkost
  • BH1750 (GY-302), měří světlo

Existují dva styly modulů plošných spojů GY-BMP/E280. Oba sdílejí stejný pin pro piny 1 až 4. Jeden modul má dva další piny, CSB a SDO. Tyto dva piny jsou předem propojeny na 4pinové verzi modulu. Úroveň pinu SDO určuje adresu I2C (Ground = výchozí hodnota 0x76, VCC = 0x77). K výběru rozhraní I2C musí být pin CSB připojen k VCC. Dávám přednost 4pinovému modulu, protože je připraven k použití tak, jak je pro můj účel.

Obecně je použití těchto modulů velmi výhodné, protože již mají na komunikačních linkách nainstalované výsuvné odpory a všechny běží na 3,3 V, takže jsou kompatibilní s deskami založenými na ESP8266. Piny na těchto integrovaných obvodech senzorů obecně netolerují 5V, takže jejich přímé propojení s něčím jako Arduino Uno je může trvale poškodit.

Krok 3: Senzorové stanice

Senzorové stanice
Senzorové stanice

Jak již bylo zmíněno, senzorovými stanicemi by byla všechna zařízení Espressif využívající komunikační protokol ESP-Now. Z předchozích projektů a experimentů jsem měl k dispozici několik různých zařízení k provedení mých počátečních testů a jejich začlenění do konečného návrhu. Měl jsem po ruce následující zařízení:

  • dva moduly ESP-01
  • dvě vývojové desky Wemos D1 mini
  • jedna vývojová deska Lolin ESP8266
  • jedna ESP12E sériová WIFI stavebnice
  • jedna deska GOOUUU ESP32 (38kolíková vývojová deska)

Měl jsem také vývojovou desku Wemos D1 R2, ale byly s ní problémy, které jí neumožnily probudit se z hlubokého spánku a jako zařízení brány by se zhroutilo a řádně nerestartovalo. Později jsem to opravil a stalo se to součástí projektu otvírače garážových vrat. Aby „hluboký spánek“fungoval, musí být kolík RST na ESP8266 připojen ke kolíku GPIO16, aby časovač spánku mohl zařízení probudit. V ideálním případě by toto připojení mělo být provedeno pomocí Schottkyho diody (katoda na GPIO16), aby ruční reset přes připojení USB-TLL během programování stále fungoval. Úspěšný může být přesto odpor s nízkou hodnotou (300 ish Ohm) nebo dokonce přímé drátové připojení.

Moduly ESP-01 neumožňují snadný přístup ke kolíku GPIO16 a je třeba je pájet přímo k IC. Není to jednoduchý úkol a nedoporučoval bych to každému. Deska ESP12E sériové WIFI sady byla trochu novinkou a vyžadovala několik změn, aby byla užitečná pro můj účel. Nejsnáze použitelné desky byly desky typu Wemos D1 mini a deska Lolin. Aby zařízení ESP32 fungovalo, nevyžadují žádné úpravy. Andreas Spiess má na to pěkný instruktáž.

Krok 4: Senzorická stanice ESP-01

Senzorická stanice ESP-01
Senzorická stanice ESP-01
Senzorická stanice ESP-01
Senzorická stanice ESP-01
Senzorická stanice ESP-01
Senzorická stanice ESP-01

Na všech senzorových stanicích jsou senzorové moduly namontovány svisle, aby se snížilo množství prachu, který se na nich může shromažďovat. Ne všechny jsou v rozvaděčích a možná je nebudu do příloh montovat. Důvodem je to, že se zařízení mohou zahřívat a ovlivňovat hodnoty teploty a vlhkosti v nedostatečně větraných místnostech.

Desky ESP-01 jsou velmi kompaktní a mají několik digitálních IO pinů, se kterými lze pracovat, ale na rozhraní I2C to stačí. Desky však vyžadují složitou úpravu, aby „hluboký spánek“fungoval. Na zobrazené fotografii byl vodič připájen od rohového kolíku (GPIO16) ke kolíku RST na záhlaví. Drát, který jsem použil, je izolovaný „opravný“drát o průměru 0,1 mm. Izolační povlak se při zahřívání roztaví, takže jej lze připájet k opravě stop atd. Na deskách plošných spojů a přesto si nemusíte dělat starosti s vytvářením zkratů, kde se vodič dotýká jiných komponent. Jeho velikost znesnadňuje práci a tento drát jsem připájel na místo pod mikroskopem (styl fandy/sběratelé známek). Mějte na paměti, že záhlaví na pravé straně má rozteč kolíků 0,1 (2,54 mm). Instalace diody Schottky zde nebude vůbec jednoduchá, a tak jsem se rozhodl zkusit pouze samotný vodič a obě jednotky běžely přes měsíc bez problémů.

Moduly byly nainstalovány na dvě prototypové desky, které jsem vytvořil. Jedna (#1) je deska programátoru, která také umožňuje instalaci a testování I2C modulů, zatímco druhá (#2) je vývojová/testovací deska pro zařízení I2C. Pro první desku jsem spojil starý USB konektor a malou desku plošných spojů pro napájení jednotky přímo z USB nástěnného adaptéru. Druhá jednotka má běžný stejnosměrný konektor upravený tak, aby se vešel do konektoru šroubových svorek, a je napájen také pomocí nástěnného adaptéru.

Schéma ukazuje, jak jsou propojeny a jak programátor pracuje. Nemám žádné další moduly ESP-01, takže jsem neměl okamžitou potřebu programátora. V budoucnu jim pravděpodobně vyrobím desku plošných spojů. Obě tyto desky mají nainstalovaný senzorový modul SI7021, protože mě měření tlaku na těchto místech tolik nezajímalo.

Krok 5: Senzorová stanice ESP 12E Serial WIFI Kit

Senzorová stanice ESP 12E Serial WIFI Kit
Senzorová stanice ESP 12E Serial WIFI Kit
Senzorová stanice ESP 12E Serial WIFI Kit
Senzorová stanice ESP 12E Serial WIFI Kit

Deska ESP12E Serial WIFI Kit nebyla navržena tak pro vývoj, jako pro představení toho, co lze s tímto zařízením dělat. Koupil jsem ho už dávno, abych se něco dozvěděl o programování ESP8266 a nakonec jsem se rozhodl dát mu nějaké nové využití. Odstranil jsem všechny LED diody, které byly nainstalovány pro ukázky, a přidal jsem USB programovací záhlaví a také I2C záhlaví vhodné pro moduly, které používám. K jeho analogovému vstupnímu pinu byl připojen fotoodpor CdS a rozhodl jsem se ho tam nechat. Tato konkrétní jednotka se chystala monitorovat moji garážovou dílnu a foto-senzor, který měl, aby mi dal vědět, jestli světla náhodou zůstala zapnutá. Pro měření světla jsem normalizoval hodnoty, abych získal procentní výkon, a cokoli přes 5 v noci znamenalo, že světla zůstala rozsvícená nebo dveře do domu nebyly řádně zavřené. Piny RST a GPIO16 jsou zřetelně označeny na desce plošných spojů a na spodní straně desky plošných spojů byla nainstalována dioda Schottky, která je spojuje. Napájí se pomocí sériové USB desky, která je přímo zapojena do USB nástěnné nabíječky. Mám doplňky těchto USB-sériových desek a tuto právě nepotřebuji.

Pro tuto desku jsem nevytvořil schéma a obecně nedoporučuji kupovat ji k tomuto účelu. Desky Wemos D1 Mini jsou mnohem vhodnější a budou diskutovány dále. I když, pokud jeden z nich máte a potřebujete poradit, rád vám pomůžu.

Krok 6: Mini senzorové stanice D1

Mini senzorové stanice D1
Mini senzorové stanice D1
Mini senzorové stanice D1
Mini senzorové stanice D1
Mini senzorové stanice D1
Mini senzorové stanice D1

Vývojové desky ESP8266 Wemos D1 Mini používám nejraději a kdybych to měl udělat znovu, použil bych jen tyto. Mají velký počet přístupných IO pinů, lze je přímo programovat přes Arduino IDE a jsou stále poměrně kompaktní. Na těchto deskách je pin D0 GPIO16 a připojení diody Schottky je poměrně snadné. Schéma ukazuje, jak mám tyto desky zapojené a obě používají senzorový modul BME2808.

Jedna ze dvou desek slouží k monitorování vnějšího počasí a je napájena solární baterií. Solární panel o rozměrech 165 mm x 135 mm (6 V, 3,5 W) je připojen k nabíjecímu modulu lithium-iontové baterie TP4056 (viz schéma instalace solární baterie). Tento konkrétní nabíjecí modul (03962A) je vybaven ochranným obvodem baterie, který je nezbytný, pokud baterie (balíček) neobsahuje. Li-ion baterie byla recyklována ze staré baterie notebooku a stále dokáže udržet dostatečné nabití pro provoz desky D1 Mini, zejména s povoleným hlubokým spánkem. Deska byla umístěna v plastovém pouzdře, aby byla do jisté míry chráněna před živly. Aby však byl interiér vystaven vnější teplotě a vlhkosti, byly vyvrtány dva otvory o průměru 25 mm na opačných stranách a zakryty (zevnitř) černou krajinnou tkaninou. Tkanina je navržena tak, aby umožňovala pronikání vlhkosti, a proto lze vlhkost měřit. Na jednom konci skříně byl vyvrtán malý otvor a nainstalováno průhledné plastové okno. Zde byl umístěn modul světelného senzoru BH1750. Celá jednotka je umístěna venku ve stínu (ne na přímém slunci) se světelným senzorem směřujícím ven do otevřeného prostoru. V našem deštivém/zataženém zimním počasí zde běží téměř 4 týdny ze solární baterie.

Krok 7: Brána a webový server

Brána a webový server
Brána a webový server
Brána a webový server
Brána a webový server
Brána a webový server
Brána a webový server

Pro zařízení ESP-Now Gateway byla použita deska Lolin NodeMCU V3 (ESP8266) a pro webový server ESP32 (deska GOOUUU). Jako zařízení brány mohla sloužit téměř jakákoli deska ESP8266 nebo dokonce ESP32, prostě to byla deska, která mi „zbyla“poté, co jsem použil všechny ostatní desky, které jsem měl.

Použil jsem desku ESP32, protože potřebuji desku s trochu větším výpočetním výkonem ke shromažďování dat, jejich třídění, ukládání do úložiště a spouštění webového serveru. V budoucnu může mít také vlastní senzor a místní (OLED) displej. Pro ukládání byla použita karta SD s přizpůsobeným adaptérem. Použil jsem běžný adaptér karty microSD na SD a připájel jsem na pozlacené kontakty 7kolíkovou zástrčku (0,1 rozteč). Při připojení jsem postupoval podle pokynů tohoto GitHubu.

Nastavení prototypu (s vodiči Dupont) neobsahuje senzorový modul, ale konečná deska plošných spojů, kterou jsem navrhl, umožňuje jeden i malý OLED displej. Podrobnosti o tom, jak jsem navrhl, že PCB jsou součástí jiného Instructable.

Krok 8: Software

Software
Software

Zařízení ESP8266 (ESP-NOW)

Software pro všechna zařízení byl napsán pomocí Arduino IDE (v1.87). Každá senzorová stanice provozuje v podstatě stejný kód. Liší se pouze tím, které piny jsou použity pro komunikaci I2C a ke kterému senzorovému modulu jsou připojeny. Nejdůležitější je, že posílají stejný paket naměřených dat do stanice ESP-Now Gateway, bez ohledu na to, zda mají stejný senzor. To znamená, že některé senzorové stanice vyplní fiktivní hodnoty pro měření tlaku a hladiny světla, pokud nemají senzory, které by poskytovaly skutečné hodnoty. Kód pro každou stanici a bránu byl upraven z příkladů Anthonyho Eldera na tomto GitHubu.

Kód zařízení brány používal ke komunikaci s webovým serverem SoftwareSerial, protože ESP8266 má pouze jeden plně funkční hardwarový UART. Běžící na maximální přenosové rychlosti 9600 se zdá být docela spolehlivý a je více než dostačující pro odesílání těchto relativně malých datových paketů. Zařízení brány je také naprogramováno se soukromou adresou MAC. Důvodem je to, že pokud potřebuje výměnu, nemusí být všechny senzorové stanice přeprogramovány s novou adresou MAC příjemce.

ESP32 (webový server)

Každá senzorová stanice odešle svůj datový paket do zařízení brány, které jej přepošle na webový server. Spolu s datovým paketem je odeslána také MAC adresa senzorové stanice pro identifikaci každé stanice. Webový server má tabulku „vyhledávání“, která určuje umístění každého senzoru a podle toho data třídí. Časový interval mezi měřeními byl nastaven na 5 minut plus náhodný faktor, aby se zabránilo vzájemnému „kolizi“senzorů při odesílání do zařízení brány.

Domácí WIFI router byl nastaven tak, aby přiděloval pevnou IP adresu webovému serveru, když se připojuje k WIFI. U mého to bylo 192.168.1.111. Zadáním této adresy v libovolném prohlížeči se připojí k webovému serveru meteorologické stanice, pokud je uživatel v dosahu WIFI (a připojuje se) k domácí síti. Když se uživatel připojí k webové stránce, webový server odpoví tabulkou měření a zahrnuje čas posledního měření každého senzoru. Tímto způsobem, pokud senzorová stanice přestane reagovat, je to vidět z tabulky, pokud je odečet starší než 5-6 minut.

Data jsou uložena v jednotlivých textových souborech na SD kartu a lze je také stáhnout z webové stránky. Lze jej importovat do aplikace Excel nebo jakékoli jiné aplikace pro vykreslování dat

Aplikace pro Android

Aby bylo snazší prohlížet si místní informace o počasí na smartphonu, vytvořil jsem relativně Android App pomocí Android Studio. Je k dispozici na mé stránce GitHub zde. Používá třídu webview k načtení webové stránky ze serveru a jako takové má omezenou funkčnost. Není schopen stahovat datové soubory a ty jsem v telefonu stejně nepotřeboval.

Krok 9: Výsledky

Výsledek
Výsledek

Na závěr je zde několik výsledků z mé domácí meteorologické stanice. Data byla stažena do notebooku a vykreslena v Matlabu. Připojil jsem své skripty Matlab a můžete je také spustit v GNU Octave. Venkovní senzor běží na jeho solárně nabitou baterii téměř 4 týdny a v tomto ročním období máme jen málokdy slunce. Zatím vše funguje dobře a každý z rodiny si může počasí vyhledat sám, než aby se mě teď ptal!

Doporučuje: