ESP-Now Home Weather Station: 9 lépés (képekkel)
ESP-Now Home Weather Station: 9 lépés (képekkel)
Anonim
ESP-Now Home Weather Station
ESP-Now Home Weather Station

Már régóta szerettem volna egy otthoni időjárás -állomást, amelyet a család minden tagja könnyen ellenőrizhet a hőmérséklet és a páratartalom szempontjából. A külső körülmények megfigyelése mellett a ház bizonyos helyiségeit és a garázsműhelyt is fel akartam figyelni. Ez tudatná velünk, hogy mikor érdemes kiszellőztetni a házat vagy működtetni a párátlanítót (itt nagyon esik az eső). Az ESP-Now alapú érzékelőrendszert készítettem, amely jelentést tesz egy helyi webszervernek, amelyet bárki ellenőrizhet számítógépről vagy telefonjáról. A telefonhoz egyszerű Android -alkalmazásként írtam, hogy még könnyebb legyen.

1. lépés: Tervezési részletek

Tervezési részletek
Tervezési részletek

Azt akartam, hogy legyenek különböző érzékelőállomásaim, amelyeket különböző helyekre helyezhetek el, és kérjenek jelentést egy főállomásról (vagy hubról), amely elmenti az információkat. A különböző ötletek kipróbálása után úgy döntöttem, hogy az Espressif ESP-Now protokollját használom, mivel lehetővé tette a gyors kommunikációt közvetlenül az eszközök között. Itt olvashat egy kicsit az ESP-Now-ról, és ez a GitHub-repó nagy része volt az inspirációmnak.

Az első képen a rendszer elrendezése látható. Mindegyik érzékelő jelenti a méréseit egy átjáróeszköznek, amely vezetékes soros kapcsolaton keresztül továbbítja az adatokat a fő szervernek. Ennek az az oka, hogy az ESP-Now protokoll nem lehet aktív a WIFI kapcsolattal egy időben. Ahhoz, hogy a felhasználó hozzáférjen a weboldalhoz, a WIFI-nek mindig bekapcsolva kell lennie, és ez lehetetlenné teszi az ESP-Now kommunikáció használatát ugyanazon az eszközön. Míg az átjáróeszköznek Espressif-alapú eszköznek kell lennie (képes az ESP-Now rendszerre), a fő szerver bármely olyan eszköz lehet, amely képes weblapok futtatására.

Egyes érzékelőállomások lemerülnének (vagy napelemmel feltöltött elemekkel), mások pedig egyszerűen hálózati árammal rendelkeznének. Mindazonáltal azt akartam, hogy mindenki a lehető legkevesebb energiát használja fel, és ez az, ahol az ESP8266 és ESP32 eszközök számára elérhető "mély alvás" funkció rendkívül hasznos. Az érzékelőállomások időnként felébrednek, méréseket végeznek, elküldik azokat az átjáróeszközre, és visszaállnak aludni egy előre beprogramozott időtartamra. Az ébresztési periódusuk mindössze 300 ms 5 percenként (az én esetemben) jelentősen csökkenti az energiafogyasztást.

2. lépés: Érzékelők

Érzékelők
Érzékelők
Érzékelők
Érzékelők

Különféle érzékelők közül lehet választani a környezeti paraméterek mérésére. Úgy döntöttem, hogy maradok csak az I2C kommunikációra képes érzékelőknél, mivel ez lehetővé teszi a gyors méréseket, és bármelyik eszközömön működni fog. Ahelyett, hogy közvetlenül IC-vel dolgoznék, használatra kész modulokat kerestem, amelyek ugyanazokkal a tűkkel rendelkeznek, hogy egyszerűsítsék a terveimet. Azzal kezdtem, hogy csak a hőmérsékletet és a páratartalmat akartam mérni, ezért egy SI7021 alapú modult választottam. Később olyan érzékelőt szerettem volna, amely képes a nyomást is mérni, és úgy döntöttem, hogy kipróbálom a BME280 alapú érzékelő modulokat. Bizonyos helyeken még a fényszintet is figyelemmel akartam kísérni, és a BH1750 modul ideális erre külön érzékelőmodulként. Az érzékelő moduljaimat az ebay -ről vettem, és ezeket a modulokat kaptam:

  • BME280 (GY-BMP/E280), méri a hőmérsékletet, a páratartalmat és a nyomást
  • SI7021 (GY-21), méri a hőmérsékletet és a páratartalmat
  • BH1750 (GY-302), méri a fényt

A GY-BMP/E280 NYÁK modulok két stílusa található. Mindkettő ugyanazt a tűt használja az 1-4. Tűkhöz. Az egyik modul két további tűvel rendelkezik, a CSB és az SDO. Ez a két érintkező előre csatlakoztatva van a modul 4 tűs verziójához. Az SDO pin szintje határozza meg az I2C címet (Ground = 0x76 alapértelmezett, VCC = 0x77). Az I2C interfész kiválasztásához a CSB tűt csatlakoztatni kell a VCC -hez. Én a 4 tűs modult részesítem előnyben, mivel az használatra készen áll.

Általánosságban elmondható, hogy ezeket a modulokat nagyon kényelmesen lehet használni, mivel már rendelkeznek felhúzó ellenállásokkal a kommunikációs vonalakhoz, és mindegyik 3.3V-on működik, így kompatibilisek az ESP8266 alapú kártyákkal. Ne feledje, hogy ezen érzékelő IC -k csapjai általában nem tolerálják az 5 V -ot, így az Arduino Uno -hoz hasonló eszközökkel való közvetlen érintkezés véglegesen károsíthatja őket.

3. lépés: Érzékelő állomások

Érzékelő állomások
Érzékelő állomások

Mint már említettük, az érzékelőállomások mind Espressif-eszközök lennének, amelyek ESP-Now kommunikációs protokollt használnak. A korábbi projektekből és kísérletekből több különböző eszköz állt rendelkezésemre, hogy elvégezzem az első teszteket és beépítsem őket a végső tervbe. A következő készülékek voltak kéznél:

  • két ESP-01 modul
  • két Wemos D1 mini fejlesztőlap
  • egy Lolin ESP8266 fejlesztőlap
  • egy ESP12E soros WIFI készletlap
  • egy GOOUUU ESP32 kártya (38 tűs fejlesztőlap)

Volt egy Wemos D1 R2 fejlesztőlapom is, de voltak vele olyan problémák, amelyek nem tették lehetővé, hogy felébredjen a mély alvásból, és kapueszközként összeomlik, és nem indul újra megfelelően. Később megjavítottam, és a Garázskapu nyitó projekt részévé vált. Annak érdekében, hogy a "mély alvás" működjön, az ESP8266 RST csapját csatlakoztatni kell a GPIO16 tűhöz, így az elalváskapcsoló felébreszti a készüléket. Ideális esetben ezt a csatlakozást Schottky diódával (katód GPIO16-hoz) kell létrehozni, hogy a programozás során a kézi visszaállítás az USB-TLL kapcsolaton keresztül továbbra is működjön. Egy alacsony értékű (300 ohm) ellenállás vagy akár közvetlen vezetékes csatlakozás azonban továbbra is sikeres lehet.

Az ESP-01 modulok nem teszik lehetővé a könnyű hozzáférést a GPIO16 tűhöz, és közvetlenül az IC-hez kell forrasztani. Ez nem egyszerű feladat, és nem ajánlom mindenkinek. Az ESP12E soros WIFI készletlap kissé újdonságnak számított, és jó néhány változtatást igényelt, hogy hasznos legyen a célomhoz. A legegyszerűbben használható táblák a Wemos D1 mini típusú táblák és a Lolin tábla voltak. Az ESP32 eszközök nem igényelnek módosításokat a mély alvás működéséhez. Andreas Spiessnek van egy szép Instructableje ebben.

4. lépés: ESP-01 érzékelőállomás

ESP-01 érzékelőállomás
ESP-01 érzékelőállomás
ESP-01 érzékelőállomás
ESP-01 érzékelőállomás
ESP-01 érzékelőállomás
ESP-01 érzékelőállomás

Minden érzékelőállomáson az érzékelő modulok függőlegesen vannak felszerelve, hogy csökkentsék a rájuk gyűlő por mennyiségét. Nem mindegyik van a burkolatokban, és lehet, hogy nem szerelhetem be őket. Ennek az az oka, hogy a készülékek felmelegedhetnek, és nem megfelelően szellőztetve befolyásolhatják a hőmérséklet- és páratartalom -értékeket.

Az ESP-01 táblák nagyon kompaktok, és kevés digitális IO érintkezővel rendelkeznek, de elegendő az I2C interfészhez. A táblák azonban trükkös módosítást igényelnek, hogy a "mély alvás" működjön. A bemutatott fotón egy vezetéket forrasztottak a sarokcsapból (GPIO16) a fejléc RST csapjához. Az általam használt huzal 0,1 mm átmérőjű szigetelt "javító" huzal. A szigetelő bevonat hevítéskor elolvad, így forrasztható a nyomtatott áramkörök nyomaihoz stb. Mérete megnehezíti a munkát, és ezt a vezetéket a helyére forrasztottam (hobbista/bélyeggyűjtő stílusában) mikroszkóp alatt. Ne feledje, hogy a jobb oldali fejléc 0,1 "(2,54 mm) tűtávolsággal rendelkezik. A Schottky dióda telepítése egyáltalán nem lenne egyszerű, ezért úgy döntöttem, hogy csak a vezetéket próbálom egyedül, és mindkét egység már több mint egy hónap minden probléma nélkül.

A modulokat két általam készített prototípus táblára telepítették. Az egyik (#1) egy programozó kártya, amely lehetővé teszi az I2C modulok telepítését és tesztelését is, míg a másik (#2) az I2C eszközök fejlesztési/tesztlapja. Az első táblához összeforrasztottam egy régi USB dugót és egy kis NYÁK -ot, hogy a készüléket közvetlenül egy USB fali adapterről tápláljam. A másik egység normál DC aljzattal rendelkezik, amely illeszkedik a csavaros csatlakozófejhez, és fali adapteren keresztül is táplálja.

A vázlat azt mutatja, hogyan kapcsolódnak egymáshoz, és hogyan működik a programozó. Nincs más ESP-01 modulom, így nem volt azonnali igényem a programozóra. A jövőben valószínűleg PCB -t fogok készíteni nekik. Mindkét táblára telepítve van az SI7021 érzékelő modul, mivel nem voltam annyira kíváncsi a nyomásmérésre ezeken a helyeken.

5. lépés: ESP 12E soros WIFI készlet érzékelőállomás

ESP 12E soros WIFI készlet érzékelő állomás
ESP 12E soros WIFI készlet érzékelő állomás
ESP 12E soros WIFI készlet érzékelő állomás
ESP 12E soros WIFI készlet érzékelő állomás

Az ESP12E soros WIFI készletlapot nem annyira fejlesztésre szánták, mint annak bemutatására, hogy mit lehet tenni ezzel az eszközzel. Régóta vettem, hogy kicsit megtanuljak az ESP8266 programozásról, és végül úgy döntöttem, hogy új felhasználást teszek lehetővé. Eltávolítottam minden bemutatóhoz telepített LED -et, és hozzáadtam egy USB programozási fejlécet, valamint egy I2C fejlécet, amely megfelel az általam használt moduloknak. Analóg bemeneti csapjához CdS fotóellenállás volt csatlakoztatva, és úgy döntöttem, hogy ott hagyom. Ez a készülék figyelni fogja a garázsműhelyemet, és a benne lévő fényérzékelő elegendő volt ahhoz, hogy tudassa velem, ha a lámpákat véletlenül kigyújtották. A fényméréshez normalizáltam a leolvasott értékeket, hogy százalékos kimenetet kapjak, és bármi „5” felett éjszaka azt jelenti, hogy a lámpákat bekapcsolva hagyták, vagy a ház ajtaja nem volt megfelelően bezárva. Az RST és a GPIO16 csapok egyértelműen fel vannak tüntetve a NYÁK -on, és az őket összekötő Schottky dióda a NYÁK aljára van felszerelve. A tápellátás egy USB soros kártyán keresztül történik, amely közvetlenül az USB fali töltőhöz van csatlakoztatva. Vannak extráim ezekről az USB-soros kártyákról, és most nincs szükségem erre.

Nem készítettem vázlatot ehhez a táblához, és általában nem javaslom, hogy vásároljak egyet erre a célra. A Wemos D1 Mini táblák sokkal alkalmasabbak, és ezekről lesz szó. Bár ha van ilyen, és tanácsra van szüksége, szívesen segítek.

6. lépés: D1 mini érzékelő állomások

D1 Mini érzékelő állomások
D1 Mini érzékelő állomások
D1 Mini érzékelő állomások
D1 Mini érzékelő állomások
D1 Mini érzékelő állomások
D1 Mini érzékelő állomások

A Wemos D1 Mini típusú ESP8266 fejlesztőlapokat használom a legjobban, és ha át kell csinálnom, akkor csak ezeket használnám. Nagyszámú hozzáférhető IO tűvel rendelkeznek, közvetlenül programozhatók az Arduino IDE -n keresztül, és még mindig meglehetősen kompaktak. A D0 érintkező GPIO16 ezeken a lapokon, és a Schottky dióda csatlakoztatása meglehetősen egyszerű. A vázlat azt mutatja, hogyan kell ezeket a lapokat bekötni, és mindkettő a BME2808 érzékelő modult használja.

A két tábla közül az egyiket a külső időjárás figyelésére használják, és napelemes akkumulátorról működik. 165 mm x 135 mm-es (6 V, 3,5 W) napelem csatlakozik a TP4056 lítium-ion akkumulátor töltőmodulhoz (lásd a napelemes akkumulátor-érzékelőállomás beállítási diagramját). Ez a töltőmodul (03962A) akkumulátorvédő áramkörrel rendelkezik, amely akkor szükséges, ha az akkumulátor (csomag) nem tartalmaz egyet. A Li-ion akkumulátort egy régi laptop akkumulátorból újrafeldolgozták, és még mindig képes elegendő töltést biztosítani a D1 Mini kártya futtatásához, különösen a mély alvás engedélyezése esetén. A táblát egy műanyag házba helyezték, hogy némileg biztonságban legyen az elemektől. Annak érdekében azonban, hogy a belső teret ki lehessen tenni a külső hőmérsékletnek és páratartalomnak, két 25 mm átmérőjű lyukat fúrtak a szemközti oldalakon, és (belülről) fekete tájkendővel borították. A ruhát úgy tervezték, hogy lehetővé tegye a nedvesség behatolását, és ezért meg lehet mérni a páratartalmat. A szekrény egyik végén egy kis lyukat fúrtak és egy átlátszó műanyag ablakot szereltek be. Itt helyezték el a BH1750 fényérzékelő modult. A teljes egységet a szabadban, árnyékban (nem közvetlen napsütésben) kell elhelyezni úgy, hogy a fényérzékelő a szabadba nézzen. Az esős/felhős téli időjárásunk miatt közel 4 hete működik a napelemes akkumulátorról.

7. lépés: Átjáró és webszerver

Átjáró és webszerver
Átjáró és webszerver
Átjáró és webszerver
Átjáró és webszerver
Átjáró és webszerver
Átjáró és webszerver

Az ESP-Now Gateway eszközhöz egy Lolin NodeMCU V3 (ESP8266) kártyát, a Webszerverhez pedig egy ESP32 (GOOUUU kártya) kártyát használtunk. Szinte bármelyik ESP8266 vagy akár ESP32 kártya szolgálhatott átjáróeszközként, ez egyszerűen az a tábla volt, ami "megmaradt", miután az összes többi lapomat használtam.

Az ESP32 kártyát használtam, mivel szükségem van egy kicsit nagyobb számítási képességű táblára az adatok összegyűjtéséhez, rendezéséhez, tároláshoz és a webszerver futtatásához. A jövőben saját érzékelővel és helyi (OLED) kijelzővel is rendelkezhet. A tároláshoz SD -kártyát használtak személyre szabott adapterrel. Egy közös microSD -SD kártya adaptert használtam, és egy 7 tűs (0,1 hüvelykes) fejlécet forrasztottam a lemezes érintkezőkre. A csatlakozáshoz követtem a GitHub tanácsát.

A prototípuskészítés (Dupont vezetékekkel) nem tartalmaz érzékelő modult, de az általam tervezett végleges NYÁK lehetővé teszi egy és egy kis OLED kijelző megjelenítését. A PCB tervezésének részletei egy másik Instructable része.

8. lépés: Szoftver

Szoftver
Szoftver

ESP8266 (ESP-NOW) eszközök

Az összes eszköz szoftverét az Arduino IDE (v1.87) segítségével írták. Minden érzékelőállomás lényegében ugyanazt a kódot futtatja. Csak abban különböznek, hogy mely csapokat használják az I2C kommunikációhoz, és melyik érzékelőmodulhoz vannak csatlakoztatva. A legfontosabb, hogy ugyanazt a mérési adatcsomagot küldik az ESP-Now Gateway állomásra, függetlenül attól, hogy ugyanazzal az érzékelővel rendelkeznek-e. Ez azt jelenti, hogy néhány érzékelőállomás kitölti a nyomás- és a fényszintmérés dummy értékeit, ha nincsenek valós értékeket biztosító érzékelők. Az egyes állomások és az átjárók kódját Anthony Elder példáiról alakítottuk ki ezen a GitHubon.

Az átjáróeszköz kódja a SoftwareSerial -t használta a webszerverrel való kommunikációhoz, mivel az ESP8266 csak egy teljesen működő hardver UART -val rendelkezik. A maximális 9600 baud sebességgel történő futtatás megbízhatónak tűnik, és több mint elegendő ezen viszonylag kis adatcsomagok küldéséhez. Az átjáró eszköz saját MAC -címmel is programozott. Ennek az az oka, hogy ha ki kell cserélni, akkor az érzékelőállomásokat nem kell újraprogramozni az új fogadó MAC-címmel.

ESP32 (webszerver)

Minden érzékelőállomás elküldi adatcsomagját az átjáróeszköznek, amely továbbítja azt a webszerverhez. Az adatcsomaggal együtt az érzékelőállomás MAC -címe is elküldésre kerül az egyes állomások azonosítására. A webszerver rendelkezik egy "lekérdezési" táblával, amely meghatározza az egyes érzékelők helyét, és ennek megfelelően rendezi az adatokat. A mérések közötti időintervallumot 5 percre és egy véletlenszerű tényezőre állítottuk be annak elkerülése érdekében, hogy az érzékelők "ütközzenek" egymással, amikor a kapuirányú eszközre küldik őket.

Az otthoni WIFI útválasztó úgy lett beállítva, hogy rögzített IP -címet rendeljen a webszerverhez, amikor csatlakozik a WIFI -hez. Az enyémnél 192.168.1.111 volt. Ha ezt a címet bármely böngészőben beírja, akkor csatlakozik az időjárásjelző webszerverhez, amíg a felhasználó az otthoni hálózat WIFI -tartományán belül van (és csatlakozik hozzá). Amikor a felhasználó csatlakozik a weboldalhoz, a webszerver válaszol a mérési táblázattal, és tartalmazza az egyes érzékelők utolsó mérésének idejét. Ily módon, ha egy érzékelőállomás nem reagál, ezt láthatja a táblázatból, ha a leolvasott érték 5-6 percnél régebbi.

Az adatok egyes szöveges fájlokban kerülnek mentésre SD -kártyára, és letölthetők a weboldalról is. Importálható Excelbe vagy bármely más adatrajzoló alkalmazásba

Android -alkalmazás

A helyi időjárási információk okostelefonon történő megtekintésének megkönnyítése érdekében egy viszonylag Android -alkalmazást hoztam létre az Android Studio segítségével. Ez elérhető a GitHub oldalamon itt. A webview osztályt használja a weboldal betöltéséhez a szerverről, és korlátozott funkcionalitásként. Nem képes letölteni az adatfájlokat, és amúgy sem volt szükségem a telefonomon lévőkre.

9. lépés: Eredmények

Eredmények
Eredmények

Végezetül íme néhány eredmény az otthoni időjárás -állomásomról. Az adatokat egy laptopra töltötték le, és a Matlab programban ábrázolták. Csatoltam a Matlab szkripteimet, és a GNU Octave -ban is futtathatod őket. A kültéri érzékelő csaknem 4 hete működik napelemes akkumulátorával, és ritkán süt a nap ebben az évszakban. Eddig minden jól működik, és a családban mindenki maga nézheti meg az időjárást, ahelyett, hogy most engem kérdezne!

Ajánlott: