Sadržaj:

Kućna meteorološka stanica ESP-Now: 9 koraka (sa slikama)
Kućna meteorološka stanica ESP-Now: 9 koraka (sa slikama)

Video: Kućna meteorološka stanica ESP-Now: 9 koraka (sa slikama)

Video: Kućna meteorološka stanica ESP-Now: 9 koraka (sa slikama)
Video: Esp8266 Devkit V0.9 Online Weather Station 2024, Studeni
Anonim
Kućna meteorološka stanica ESP-Now
Kućna meteorološka stanica ESP-Now

Htio sam već neko vrijeme imati kućnu meteorološku stanicu koju bi svi u obitelji mogli lako provjeriti na temperaturu i vlagu. Osim nadziranja vanjskih uvjeta, htio sam nadzirati i određene prostorije u kući i svoju garažu. To bi nas obavijestilo kada je dobro vrijeme da prozračite kuću ili pokrenete odvlaživač zraka (ovdje tijekom zime pada velika kiša). Ono što sam stvorio je senzorski sustav zasnovan na ESP-u koji izvještava lokalni web-poslužitelj koje svatko može provjeriti sa svog računala ili telefona. Za telefon sam napisao kao jednostavnu aplikaciju za Android kako bih to učinio još lakšim.

Korak 1: Pojedinosti o dizajnu

Pojedinosti o dizajnu
Pojedinosti o dizajnu

Htio sam imati različite senzorske stanice koje bih mogao postaviti na različita mjesta i da ih jave na jednu glavnu stanicu (ili čvorište) koja bi spremila podatke. Nakon isprobavanja različitih ideja, odlučio sam upotrijebiti Espressifov protokol ESP-Now jer je dopuštao brzu komunikaciju izravno između uređaja. Ovdje možete pročitati nešto o ESP-Now-u, a ovaj GitHub repo bio je veliki dio moje inspiracije.

Prva slika prikazuje izgled sustava. Svaki senzor prijavljuje svoja mjerenja pristupnom uređaju koji podatke prosljeđuje na glavni poslužitelj putem žičane serijske veze. Razlog tome je što protokol ESP-Now ne može biti aktivan istovremeno s WIFI vezom. Da bi korisnik mogao pristupiti web stranici, WIFI bi trebao biti uključen cijelo vrijeme, što onemogućuje korištenje komunikacije ESP-Now na istom uređaju. Dok gateway uređaj mora biti uređaj zasnovan na Espressifu (sposoban za ESP-Now), glavni poslužitelj može biti bilo koji uređaj koji može pokrenuti web stranicu.

Neke senzorske stanice bi se ispraznile iz baterija (ili solarno napunjenih baterija), a druge bi jednostavno imale napajanje iz mreže. Međutim, želio sam da svi koriste što je moguće manje energije i tu je značajka "dubokog sna" dostupna za uređaje ESP8266 i ESP32 izuzetno korisna. Senzorske stanice povremeno bi se budile, uzimale mjerenja i slale ih na pristupni uređaj i vraćale u san na neko unaprijed programirano razdoblje. Njihovo razdoblje buđenja od samo 300 ms svakih 5 minuta (u mom slučaju) značajno smanjuje njihovu potrošnju energije.

Korak 2: Senzori

Senzori
Senzori
Senzori
Senzori

Za mjerenje parametara okoliša možete izabrati različite senzore. Odlučio sam se držati samo I2C komunikacijskih senzora, jer su dopuštali brza mjerenja i radili bi na bilo kojem od uređaja koje sam imao. Umjesto izravnog rada s IC-ovima, tražio sam module spremne za upotrebu s istim pin-outima kako bih pojednostavio dizajn. Počeo sam samo sa mjerenjem temperature i vlažnosti pa sam odabrao modul temeljen na SI7021. Kasnije sam htio senzor koji je mogao mjeriti i tlak i odlučio sam isprobati senzorske module temeljene na BME280. Na nekim sam mjestima čak želio pratiti razinu svjetla, a modul BH1750 bio je idealan za to kao zaseban senzorski modul. Moje senzorske module kupio sam na ebayu, a ovo su moduli koje sam dobio:

  • BME280 (GY-BMP/E280), mjeri temperaturu, vlažnost i tlak
  • SI7021 (GY-21), mjeri temperaturu i vlažnost
  • BH1750 (GY-302), mjeri svjetlo

Postoje dva stila PCB modula GY-BMP/E280 koji se mogu pronaći. Oba dijele isti pin out za pinove 1 do 4. Jedan modul ima dva dodatna pina, CSB i SDO. Ta dva pina su prethodno spojena na 4-pinsku verziju modula. Razina SDO pina određuje I2C adresu (Uzemljenje = zadano 0x76, VCC = 0x77). CSB pin mora biti spojen na VCC za odabir I2C sučelja. Više volim 4 -pinski modul jer je spreman za upotrebu onako kako je i za moju namjenu.

Općenito, ovi moduli su vrlo prikladni za upotrebu jer već imaju ugrađene otpornike za izvlačenje za komunikacijske vodove i svi rade na 3.3V pa su kompatibilni s pločama baziranim na ESP8266. Imajte na umu da pinovi na ovim IC osjetnicima općenito nisu tolerantni na 5 V, pa ih povezivanje izravno s nečim poput Arduino Uno može trajno oštetiti.

Korak 3: Senzorske postaje

Senzorske stanice
Senzorske stanice

Kao što je spomenuto, sve senzorske stanice bile bi Espressif uređaji koji koriste komunikacijski protokol ESP-Now. Od prethodnih projekata i eksperimentiranja, na raspolaganju mi je bilo nekoliko različitih uređaja za provođenje početnih testova i njihovo uključivanje u konačni dizajn. Pri ruci sam imao sljedeće uređaje:

  • dva modula ESP-01
  • dvije razvojne ploče Wemos D1 mini
  • jedna razvojna ploča Lolin ESP8266
  • jedna ESP12E serijska WIFI ploča
  • jedna GOOUUU ESP32 ploča (38 -pinska razvojna ploča)

Također sam imao razvojnu ploču Wemos D1 R2, ali bilo je problema s njom koji joj nisu dopuštali da se probudi iz dubokog sna, a kao pristupni uređaj bi se srušio i ne bi se pravilno ponovno pokrenuo. Kasnije sam ga popravio i postao je dio projekta otvaranja garažnih vrata. Kako bi "duboki san" funkcionirao, RST pin ESP8266 mora biti spojen na GPIO16 pin, tako da mjerač vremena za isključivanje može probuditi uređaj. Idealno bi bilo da se ovo povezivanje izvede sa Schottkyjevom diodom (katoda na GPIO16) tako da ručno resetiranje putem USB-TLL veze tijekom programiranja i dalje radi. Međutim, otpornik niske vrijednosti (300 ohma) ili čak izravno povezivanje žicom i dalje mogu biti uspješni.

Moduli ESP-01 ne dopuštaju lak pristup GPIO16 pinu i morate ih lemiti izravno na IC. Ovo nije jednostavan zadatak i ne bih ga preporučio svima. ESP12E serijska ploča za WIFI komplet bila je nešto novo i zahtijevalo je dosta promjena kako bi mi bila korisna. Najjednostavnije ploče za uporabu bile su ploče tipa Wemos D1 mini i ploča Lolin. ESP32 uređaji ne zahtijevaju nikakve izmjene za funkcioniranje dubokog sna. Andreas Spiess ima lijepu instrukciju o tome.

Korak 4: Senzorska stanica ESP-01

Senzorska stanica ESP-01
Senzorska stanica ESP-01
Senzorska stanica ESP-01
Senzorska stanica ESP-01
Senzorska stanica ESP-01
Senzorska stanica ESP-01

Na svim senzorskim postajama senzorski moduli montirani su okomito kako bi se smanjila količina prašine koja se može skupiti na njima. Nisu svi u kućištima i ne smijem ih postavljati u kućišta. Razlog tome je što se uređaji mogu zagrijati i utjecati na očitanje temperature i vlažnosti u nedovoljno prozračenom prostoru.

ESP-01 ploče su vrlo kompaktne i imaju nekoliko digitalnih IO pinova za rad, ali to je dovoljno za I2C sučelje. Ploče ipak zahtijevaju lukavu izmjenu kako bi omogućile "duboki san" da radi. Na prikazanoj fotografiji žica je lemljena od kutnog zatiča (GPIO16) do RST pina na zaglavlju. Žica koju sam koristio je izolirana "popravna" žica promjera 0,1 mm. Izolacijski premaz se pri zagrijavanju topi, pa se može lemiti za popravak tragova itd. U PCB -ovima i još uvijek ne brinuti o stvaranju kratkih spojeva gdje žica dodiruje druge komponente. Njegova veličina otežava rad i lemio sam ovu žicu na mjesto pod mikroskopom (u stilu hobista/sakupljača marki). Imajte na umu da zaglavlje s desne strane ima razmak između pinova 0,1 "(2,54 mm). Ugradnja Schottkyjeve diode ovdje ne bi bila nimalo laka, pa sam odlučio samo isprobati žicu i obje su jedinice radile više od mjesec dana bez ikakvih problema.

Moduli su instalirani na dvije prototipne ploče koje sam stvorio. Jedna (#1) je ploča za programere koja također omogućuje instaliranje i testiranje I2C modula, dok je druga (#2) razvojna/testna ploča za I2C uređaje. Za prvu ploču sam lemio stari USB muški priključak i malu PCB za napajanje jedinice izravno iz USB zidnog adaptera. Druga jedinica ima redovitu istosmjernu utičnicu modificiranu da stane u zavojnu stezaljku, a napaja se i putem zidnog adaptera.

Shema prikazuje kako su spojeni i kako radi programer. Nemam druge module ESP-01, pa nisam imao nikakvu neposrednu potrebu za programatorom. U budućnosti ću vjerojatno napraviti PCB za njih. Obje ove ploče imaju instaliran senzorski modul SI7021 jer me nisu zanimala mjerenja tlaka na tim mjestima.

Korak 5: ESP 12E Serijska WIFI Kit senzorska stanica

ESP 12E Serijska WIFI senzorska stanica
ESP 12E Serijska WIFI senzorska stanica
ESP 12E Serijska WIFI senzorska stanica
ESP 12E Serijska WIFI senzorska stanica

Ploča ESP12E Serial WIFI Kit nije bila namijenjena za razvoj koliko za prikaz onoga što se može učiniti s ovim uređajem. Davno sam ga kupio da naučim nešto o programiranju ESP8266 i konačno sam mu dao novu upotrebu. Uklonio sam sve LED diode koje su instalirane za demonstracije i dodao USB zaglavlje za programiranje, kao i I2C zaglavlje pogodno za module koje koristim. Imao je CdS foto otpornik spojen na analogni ulazni pin i odlučio sam ga ostaviti tamo. Ova će jedinica namjeravati nadzirati moju garažu i foto-senzor koji je imao bio je dovoljan da me obavijesti jesu li svjetla slučajno bila uključena. Za mjerenje svjetla normalizirao sam očitanja kako bih postigao postotak izlaza, a sve preko "5" noću značilo je da su svjetla ostavljena upaljena ili da vrata kuće nisu pravilno zatvorena. Igle RST i GPIO16 jasno su označene na PCB -u, a Schottkyjeva dioda koja ih povezuje bila je instalirana s donje strane PCB -a. Napaja se putem USB serijske ploče koja je izravno priključena na USB zidni punjač. Imam dodatke ovih USB-serijskih ploča i ova mi trenutno ne treba.

Nisam napravio shemu za ovu ploču i općenito ne preporučujem kupnju za korištenje u tu svrhu. Ploče Wemos D1 Mini puno su prikladnije i o njima će biti riječi dalje. Iako, ako imate neki od ovih i trebate savjet, rado ću vam pomoći.

Korak 6: D1 mini senzorske stanice

Mini stanice senzora D1
Mini stanice senzora D1
Mini stanice senzora D1
Mini stanice senzora D1
Mini stanice senzora D1
Mini stanice senzora D1

Razvojne ploče tipa Wemos D1 Mini ESP8266 su mi najdraže za korištenje i kad bih to morao ponoviti, samo bih ih koristio. Imaju veliki broj pristupačnih IO pinova, mogu se izravno programirati putem Arduino IDE -a i još uvijek su prilično kompaktni. D0 pin je GPIO16 na ovim pločama, a povezivanje Schottkyjeve diode prilično je jednostavno. Shema prikazuje kako ove ploče ožičenim i obje koriste senzorski modul BME2808.

Jedna od dvije ploče koristi se za nadzor vanjskog vremena i radi od solarne baterije. Solarni panel dimenzija 165 mm x 135 mm (6V, 3,5 W) spojen je na modul za punjenje litij-ionske baterije TP4056 (pogledajte dijagram postavljanja postaje senzora baterije sa solarnom energijom). Ovaj određeni modul za punjenje (03962A) sadrži zaštitni krug baterije koji je neophodan ako ga baterija (paket) ne sadrži. Li-ionska baterija je reciklirana iz stare baterije za prijenosno računalo i još uvijek može držati dovoljno napunjenosti za rad ploče D1 Mini, posebno ako je omogućen duboki san. Ploča je postavljena u plastično kućište kako bi bila donekle zaštićena od elemenata. Međutim, kako bi unutrašnjost bila izložena vanjskoj temperaturi i vlažnosti, dvije su rupe promjera 25 mm izbušene na suprotnim stranama i prekrivene (iznutra) crnom pejzažnom tkaninom. Tkanina je dizajnirana tako da dopušta prodiranje vlage, pa se vlažnost može mjeriti. Na jednom kraju ograde izbušena je mala rupa i ugrađen prozirni plastični prozor. Ovdje je postavljen modul svjetlosnog senzora BH1750. Cijela jedinica je postavljena na otvorenom u sjeni (ne na izravnom suncu) sa svjetlosnim senzorom usmjerenim prema otvorenom. Radi na solarnu bateriju gotovo 4 tjedna po našem kišnom/oblačnom zimskom vremenu ovdje.

Korak 7: Gateway i web poslužitelj

Gateway i web poslužitelj
Gateway i web poslužitelj
Gateway i web poslužitelj
Gateway i web poslužitelj
Gateway i web poslužitelj
Gateway i web poslužitelj

Lolin NodeMCU V3 (ESP8266) ploča korištena je za uređaj ESP-Now Gateway, a ESP32 (GOOUUU ploča) za web poslužitelj. Gotovo svaka ploča ESP8266 ili čak ESP32 mogla je poslužiti kao gateway uređaj, ovo je jednostavno ploča koju sam "ostavio" nakon što sam upotrijebio sve ostale ploče koje sam imao.

Koristio sam ploču ESP32 jer mi je potrebna ploča s nešto više računalne snage za prikupljanje podataka, njihovo sortiranje, spremanje u pohranu i pokretanje web poslužitelja. U budućnosti bi mogao imati i vlastiti senzor i lokalni (OLED) zaslon. Za pohranu je korištena SD kartica s prilagođenim adapterom. Koristio sam uobičajeni adapter za microSD na SD karticu i lemio 7 -polno muško (0,1 korak) zaglavlje na presvučene kontakte. Slijedio sam savjet ovog GitHub -a za povezivanje.

Postavljanje prototipova (s Dupont žicama) ne uključuje senzorski modul, ali finalizirana PCB koju sam dizajnirao dopušta jedan, ali i mali OLED zaslon. Pojedinosti o tome kako sam dizajnirao PCB dio su drugog instruktora.

Korak 8: Softver

Softver
Softver

Uređaji ESP8266 (ESP-SADA)

Softver za sve uređaje napisan je pomoću Arduino IDE -a (v1.87). Svaka senzorska stanica u biti ima identičan kod. Razlikuju se samo po tome koji se pinovi koriste za I2C komunikacije i na koji su senzorski modul spojeni. Ono što je najvažnije, oni šalju identičan paket mjernih podataka na stanicu ESP-Now Gateway, bez obzira imaju li isti senzor. To znači da će neke senzorske stanice popuniti lažne vrijednosti za mjerenje tlaka i razine svjetlosti ako nemaju senzore za pružanje stvarnih vrijednosti. Kôd za svaku stanicu i pristupnik prilagođen je iz primjera Anthonyja Eldera na ovom GitHubu.

Kod pristupnog uređaja koristio je SoftwareSerial za komunikaciju s web poslužiteljem, budući da ESP8266 ima samo jedan potpuno funkcionalni hardverski UART. Radi na maksimalnoj brzini prijenosa od 9600 čini se prilično pouzdanim i više je nego dovoljnim za slanje ovih relativno malih paketa podataka. Gateway uređaj je također programiran s privatnom MAC adresom. Razlog tome je ako je potrebno zamijeniti, onda stanice senzora ne moraju sve biti ponovno programirane s novom MAC adresom primatelja.

ESP32 (web poslužitelj)

Svaka senzorska stanica šalje svoj paket podataka na gateway uređaj koji ga prosljeđuje web poslužitelju. Zajedno s paketom podataka, MAC adresa senzorske postaje također se šalje radi identifikacije svake postaje. Web poslužitelj ima "tražilicu" tablicu za određivanje mjesta svakog senzora i prema tome sortira podatke. Vremenski interval između mjerenja postavljen je na 5 min plus slučajni faktor kako bi se izbjeglo da se senzori "sudaraju" jedni s drugima pri slanju na gateway uređaj.

Kućni WIFI usmjerivač postavljen je tako da dodijeli fiksnu IP adresu web poslužitelju kada se poveže na WIFI. Za moje je to bilo 192.168.1.111. Upisivanjem te adrese u bilo koji preglednik povezat će se s web poslužiteljem meteorološke postaje sve dok je korisnik u dometu WIFI -a (i povezuje se s) kućnom mrežom. Kad se korisnik poveže na web stranicu, web poslužitelj odgovara tablicom mjerenja i uključuje vrijeme posljednjeg mjerenja svakog senzora. Na ovaj način, ako senzorska stanica ne reagira, to se može vidjeti iz tablice ako je očitanje staro više od 5-6 minuta.

Podaci se spremaju u pojedinačne tekstualne datoteke na SD karticu, a mogu se preuzeti i s web stranice. Može se uvesti u Excel ili bilo koju drugu aplikaciju za crtanje podataka

Android aplikacija

Kako bih olakšao pregled lokalnih vremenskih podataka na pametnom telefonu, stvorio sam relativno Android aplikaciju koristeći Android Studio. Dostupan je na mojoj stranici GitHub ovdje. Koristi klasu webview za učitavanje web stranice s poslužitelja i kao takvu s ograničenom funkcionalnošću. Ne može preuzeti datoteke s podacima, a ja ionako nisam imao potrebe za onima na svom telefonu.

Korak 9: Rezultati

Rezultati
Rezultati

Na kraju, evo nekoliko rezultata za moju kućnu meteorološku stanicu. Podaci su preuzeti na prijenosno računalo i iscrtani u Matlabu. Priložio sam svoje skripte Matlab, a možete ih pokrenuti i u GNU Octave. Vanjski senzor radi na svojoj solarno napunjenoj bateriji gotovo 4 tjedna i rijetko imamo sunce u ovo doba godine. Zasad sve funkcionira dobro i svi u obitelji mogu sami pogledati vrijeme umjesto da me to sada pitaju!

Preporučeni: