Sadržaj:

WiFi IoT senzor temperature i vlažnosti. Dio: 8 IoT, kućna automatizacija: 9 koraka
WiFi IoT senzor temperature i vlažnosti. Dio: 8 IoT, kućna automatizacija: 9 koraka

Video: WiFi IoT senzor temperature i vlažnosti. Dio: 8 IoT, kućna automatizacija: 9 koraka

Video: WiFi IoT senzor temperature i vlažnosti. Dio: 8 IoT, kućna automatizacija: 9 koraka
Video: Lesson 1: What is Arduino? Types of Arduino Boards and SunFounder Kit | SunFounder Robojax 2024, Novembar
Anonim
WiFi IoT senzor temperature i vlažnosti. Dio: 8 IoT, kućna automatizacija
WiFi IoT senzor temperature i vlažnosti. Dio: 8 IoT, kućna automatizacija

Preambula

Ovaj članak dokumentuje praktičnu robusnost i dalji razvoj ranijeg Instructable -a: 'Pimping' vašeg prvog IoT WiFi uređaja. Dio 4: IoT, kućna automatizacija, uključujući svu potrebnu softversku funkcionalnost za omogućavanje uspješne implementacije u domaćem kućnom okruženju.

Uvod

Kao što je gore spomenuto, ovaj Instructable opisuje spajanje ranijeg primjera IoT -a sa pouzdanim dizajnom sistema koji omogućava uspješno rješavanje praktičnih slučajeva upotrebe, kao što su; Katastrofalan gubitak napajanja, kvar MQTT posrednika, kvar N/W WiFi -a, daljinska rekonfiguracija senzora, konfigurabilna strategija izvještavanja za smanjenje mrežnog prometa i prilagođena kalibracija senzora.

Ukupno je stvoreno 6 isključenih uređaja (vidi sliku 1 gore) i distribuirano po mojoj kući kako bi formirali moju prvu mrežu IoT senzora.

Instructable također vidi pregled konvencije imenovanja MQTT koja se koristi u početnoj seriji IoT Home Automation, ustupajući mjesto uravnoteženijoj, praktičnijoj strukturi koja omogućava jednostavnije otklanjanje grešaka u IoT prometu u okruženju s više IoT uređaja.

Slijede potpuni detalji dizajna IoT senzora uključujući; konstrukcija, izvorni kod, strategija testiranja i OpenHAB konfiguracije.

Koji dijelovi mi trebaju?

  1. 1 off ESP8266-01,
  2. 2 isključena 1uF elektrolitički kondenzatori,
  3. 3 od 10K otpornika,
  4. 1 od 330R otpornika,
  5. 1 od prečnika 3 mm. LED,
  6. 1 isključeno LD1117-33v, 3v3 LDO VReg. (Farnell ovdje),
  7. 1 isključeno DHT22 Senzor temperature/vlažnosti,
  8. 1 isključeno Dvostruki priključak 0,1 "0,1",
  9. 1 off CAMDENBOSS RX2008/S-5 Plastično kućište, kutija za saksije, ABS, 38 mm, 23 mm (ovdje Farnell),
  10. 1 isključeno Konektor za jednosmjernu struju, utikač, 1 A, 2 mm, montaža na ploču (Farnell ovdje),
  11. 1 isključeno Hladnjak TO-220 24,4 ° C/W (ovdje Farnell),
  12. Razne termoskupljajuće cijevi (žuta, Ebay ovdje),
  13. IDC trakasti kabel različitih dužina,
  14. Sastav hladnjaka,
  15. Veroboard,
  16. Uređaj za programiranje ESP8266-01. Vidi ovdje; Praktična konstrukcija kola sa trakastom pločom, korak 9 nadalje.

Koji softver mi treba?

  1. Arduino IDE 1.6.9
  2. Arduino IDE konfiguriran za programiranje ESP8266-01. Vidi ovdje; Postavljanje Arduino IDE-a za programiranje ESP8266-01

Koji alati su mi potrebni?

  1. Lemilica,
  2. Bušilica i razni nastavci,
  3. Datoteke,
  4. Nožna pila,
  5. Čvrst porok,
  6. Toplinska pištolj,
  7. DMM.

Koje vještine su mi potrebne?

  1. Minimalno razumijevanje elektronike,
  2. Poznavanje Arduina i njegovog IDE -a,
  3. Vještine osnovne izrade (lemljenje, piljenje, turpijanje, bušenje itd.),
  4. Malo strpljenja,
  5. Malo razumijevanja vaše kućne mreže.

Obrađene teme

  1. Pregled kola
  2. Pregled softverskog sistema
  3. Pregled softvera
  4. Kalibracija senzora
  5. MQTT Konvencija o imenovanju tema
  6. OpenHAB konfiguracija
  7. Testiranje dizajna
  8. Zaključak
  9. Korišćene reference

Linkovi serija

Do dijela 7: Kontroler svjetla za proučavanje (prerađeno). Dio 7: IoT, kućna automatizacija

Do dijela 9: IoT mrežni kontroler. Dio 9: IoT, kućna automatizacija

Korak 1: Pregled kola

Pregled kola
Pregled kola
Pregled kola
Pregled kola
Pregled kola
Pregled kola
Pregled kola
Pregled kola

Slika 1 gore prikazuje dizajn cijelog kruga IoT senzora.

U srcu IoT uređaja je ESP8266-01 koji je povezan s DHT22 senzorom temperature/vlažnosti preko 10K pull-up otpornika na GPIO2. Vanjski napon od 5 V dobiva se s uključenim načinom napajanja i napaja se u uređaj preko 2 mm utičnice za montiranje istosmjerne ploče i lokalno se regulira pomoću regulatora napona LD1117-33v, 3v3 LDO montiranog na vanjski hladnjak s vijkom s glavom BZP M3 i maticom.

Dizajn uključuje crveni LED diode od 3 mm povezane s GPIO0 koji se koristi za lokalnu indikaciju statusa IoT uređaja tijekom pokretanja ili bilo kojeg drugog stanja greške. Također se može koristiti za identifikaciju uređaja ručnom aktivacijom putem openHAB sučelja.

Potpuni dizajn uredno se uklapa u kutiju za lonce od ABS -a, kao što je prikazano gore na slici 2, a posebno je postavljena kako bi se osiguralo da je senzor što je moguće dalje od regulatora kako bi se spriječilo naginjanje zbog efekata lokalnog zagrijavanja (slika 7 gore).

Ploča je jedan komad veroboard ploče, izrezane u oblik i prilagođene za postavljanje u kućište (slika 3 gore). Ova ploča je fiksirana u položaj pomoću M3 upuštenog najlonskog vijka i dvije matice koje pristaju u ravnini sa donjom stranom senzora, što mu omogućuje da sjedi na ravnoj površini.

Slike 4… 6 prikazuju različita stanja izgradnje.

Korak 2: Pregled softverskog sistema

Pregled softverskog sistema
Pregled softverskog sistema
Pregled softverskog sistema
Pregled softverskog sistema

Ovaj IoT uređaj za mjerenje temperature i vlažnosti sadrži šest ključnih softverskih komponenti kako je prikazano na slici 1 gore.

SPIFFS

Ovo je ugrađeni SPI sistem za arhiviranje bljeskalica i koristi se za čuvanje sljedećih informacija (vidi sliku 2 gore);

  • Ikone i html 'Početna stranica za konfiguraciju senzora': opslužuje IoT uređaj kada se ne može povezati na vašu IoT WiFi mrežu (obično zbog netočnih sigurnosnih podataka) i pruža korisniku način daljinskog konfiguriranja senzora bez potrebe za ponovno programiranje ili postavljanje novog SPIFFS sadržaja.
  • Sigurnosne informacije: Ovo sadrži podatke koje IoT uređaj koristi pri uključivanju za povezivanje s vašom IoT WiFi mrežom i MQTT posrednikom. Podaci poslani putem 'početne stranice za konfiguraciju senzora' zapisuju se u ovu datoteku ('secvals.txt').
  • Informacije o kalibraciji: Podaci sadržani u ovoj datoteci ('calvals.txt') koriste se za kalibraciju ugrađenog senzora temperature/vlažnosti ako je potrebno. Konstante kalibracije se mogu zapisati samo na IoT uređaj putem MQTT naredbi iz MQTT brokera.

Napomena: Za početno postavljanje uređaja pogledajte ovdje za potpune detalje o tome kako koristiti SPIFFS s Arduino IDE -om.

mDNS poslužitelj

Ova se funkcija poziva kada se IoT uređaj ne uspije povezati s vašom WiFi mrežom kao WiFi stanicom i umjesto toga je postao WiFi pristupna točka nešto slično domaćem WiFi usmjerivaču. U slučaju takvog usmjerivača, obično biste se povezali s njim unosom IP adrese poput 192.168.1.1 (obično se štampa na naljepnici pričvršćenoj na okvir) izravno u URL traku vašeg preglednika, nakon čega biste dobili stranicu za prijavu za unos korisničko ime i lozinku kako biste mogli konfigurirati uređaj.

Za ESP8266 u AP načinu (način pristupne točke) uređaj prema zadanim postavkama postavlja IP adresu 192.168.4.1, međutim s mDNS poslužiteljem morate samo unijeti ime prilagođeno ljudima 'SENSORSVR.local' u URL traku preglednika da biste vidjeli 'Početna stranica konfiguracije senzora'.

MQTT klijent

MQTT klijent pruža sve potrebne funkcije za; povežite se sa svojim MQTT posrednikom na IoT mreži, pretplatite se na teme po svom izboru i objavite korisni teret za datu temu. Ukratko, pruža osnovnu funkcionalnost IoT -a.

HTTP web server

Kao što je gore spomenuto, ako se IoT uređaj ne može povezati s WiFi mrežom čiji su SSID, P/W itd. Definirani u datoteci sigurnosnih informacija koja se nalazi u SPIFFS -u, uređaj će postati pristupna točka. Nakon što se povežete na WiFi mrežu koju pruža pristupna točka, prisutnost HTTP web poslužitelja omogućuje vam da se izravno povežete s uređajem i promijenite njegovu konfiguraciju korištenjem HTTP web preglednika čija je svrha posluživanje 'početne stranice konfiguracije senzora Web stranica koja se takođe nalazi u SPIFFS -u.

WiFi stanica

Ova funkcionalnost daje IoT uređaju mogućnost povezivanja na domaću WiFi mrežu koristeći parametre u datoteci sigurnosnih informacija, bez toga vaš IoT uređaj neće biti u mogućnosti pretplatiti se/objaviti na MQTT brokeru

WiFi pristupna tačka

Mogućnost da postanete WiFi pristupna točka sredstvo je pomoću kojeg vam IoT uređaj omogućava povezivanje s njim i unošenje promjena u konfiguraciju putem WiFi stanice i preglednika (poput Safarija na Apple iPad -u).

Ova pristupna točka emitira SSID = "SENSOR" + posljednjih 6 znamenki MAC adrese IoT uređaja. Lozinka za ovu zatvorenu mrežu maštovito se naziva 'LOZINKA'

Korak 3: Pregled softvera

Pregled softvera
Pregled softvera
Pregled softvera
Pregled softvera

PreambleTo uspješno kompajliranje ovog izvornog koda trebat će vam sljedeće dodatne biblioteke;

PubSubClient.h

  • Napisao: Nick O'Leary
  • Svrha: Omogućava uređaju da objavi ili se pretplati na MQTT teme kod datog brokera
  • Sa:

DHT.h

  • Napisao: Adafruit
  • Namena: Biblioteka za DHT senzor temperature/vlažnosti
  • Sa:

Pregled koda

Softver koristi state-machine kao što je prikazano na slici 1 gore (potpuna kopija izvora navedena ispod). Postoji 5 glavnih država navedenih u nastavku;

  • U TOME

    Ovo stanje inicijalizacije je prvo stanje uneseno nakon uključivanja

  • NOCONFIG

    Ovo stanje se unosi ako se nakon uključivanja detektira nevažeća ili nedostajuća datoteka secvals.txt

  • PENDING NW

    Ovo stanje je privremeno, uneseno je dok ne postoji WiFi mreža

  • PENDING MQTT

    Ovo stanje je prolazno, unosi se nakon uspostavljanja WiFi mreže i dok na toj mreži ne postoji veza s MQTT posrednikom

  • ACTIVE

    Ovo je normalno operativno stanje uneseno nakon što se uspostavi i WiFi mrežna veza i MQTT posrednik. U tom se stanju temperatura i vlažnost senzora objavljuju u MQTT brokeru

Događaji koji kontroliraju prijelaze između stanja opisani su na slici 1 gore. Prijelazima između stanja također upravljaju sljedeći SecVals parametri;

  • Prva MQTT posrednička IP adresa. U decimalnom obliku s točkama AAA. BBB. CCC. DDD
  • 2. MQTT posrednički port. U obliku cijelog broja.
  • 3. MQTT Broker veza se pokušava uspostaviti prije prelaska iz STA načina u AP način. U obliku cijelog broja.
  • 4. SSID WiFi mreže. Tekst u slobodnoj formi.
  • 5. lozinka WiFi mreže. Tekst u slobodnoj formi.

Kao što je gore spomenuto, ako se IoT uređaj ne može povezati kao WiFi stanica s WiFi mrežom čiji su SSID i P/W definirani u secvals.txt koji se čuva u SPIFFS -u, IoT uređaj će postati pristupna točka. Nakon što se poveže s ovom pristupnom točkom, poslužit će 'Početna stranica konfiguracije senzora' kao što je prikazano gore na slici 2 (unosom ili 'SENSORSVR.local' ili 192.168.4.1 u traku URL adresa vašeg preglednika). Ova početna stranica omogućava rekonfiguraciju senzora putem HTTP pretraživača.

Daljinski pristup dok je u stanju AKTIVNO

Nakon povezivanja na MQTT Broker moguće je i ponovno kalibrirati i ponovno konfigurirati uređaj putem publikacija o temama MQTT. Datoteka calvals.txt ima pristup R/W, a secvals.txt ima pristup samo za pisanje.

Otklanjanje grešaka korisnika

Tokom sekvence pokretanja, LED dioda IoT uređaja daje sljedeće povratne informacije o otklanjanju grešaka

  • 1 Kratak treptaj: Nema datoteke za konfiguraciju koja se nalazi u SPIFFS -u (secvals.txt)
  • 2 kratka bljeska: IoT uređaj pokušava se povezati na WiFi mrežu
  • Neprekidno osvjetljenje: IoT uređaj pokušava se povezati s MQTT posrednikom
  • Isključeno: Uređaj je aktivan
  • Napomena 1: 'Početna stranica za konfiguraciju senzora' ne koristi sigurne utičnice i stoga se oslanja na to da je vaša mreža sigurna.
  • Napomena 2: Da bi se programirao svaki IoT uređaj, niz MQTT -a mora biti uređen prije preuzimanja. To je zato što je broj senzora ugrađen u niz tema MQTT. tj. 'WFD/THSen/100/HumdStatus/1' za mojih 6 uređaja označeni su brojevima 1 … 6.

Korak 4: Kalibracija senzora

Kalibracija senzora
Kalibracija senzora
Kalibracija senzora
Kalibracija senzora

Kada se IoT uređaj uključi, kao dio sekvence pokretanja, datoteka sa imenom 'cavals.txt' se čita iz SPIFFS -a. Sadržaj ove datoteke su kalibracijske konstante kako je gore prikazano na slici 1. Ove kalibracijske konstante koriste se za podešavanje očitanja dobivenih sa senzora kako bi ih uskladili s referentnim uređajem. Postoji još jedna vrijednost koja definira strategiju izvještavanja za uređaj, a dolje je opisana zajedno sa procedurom koja se slijedi za kalibraciju senzora.

Izvještavajuća strategijaOvaj parametar određuje kako daljinski senzor izvještava o lokalnim parametarskim promjenama okoline. Ako je odabrana vrijednost 0, daljinski senzor će objaviti svaku promjenu koju vidi u vrijednostima temperature ili vlažnosti svaki put kada se očita senzor (približno svakih 10 sekundi). Bilo koja druga vrijednost odgodit će objavljivanje promjene za 1 … 60 minuta. Izmjena ovog parametra omogućava optimizaciju MQTT mrežnog prometa.

Kalibracija temperature

Za kalibraciju senzora bili su postavljeni u neposrednoj fizičkoj blizini jedan s drugim, kao što je prikazano gore na slici 2. Uz njih sam postavio DMM sa kalibriranim termoelementom (Fluke 87 V), a zatim sam nadzirao izlaze sa svakog uređaja putem OpenHAB temperature trend stranicu tokom dana kako biste postigli dobar temperaturni skok. Zabilježio sam i statički pomak (povišena nula 'C') i brzinu promjene svakog uređaja (pojačanje ili nagib grafikona 'M') u odnosu na vrijednost koja dolazi iz kalibriranog termoelementa. Zatim sam izračunao jednostavan odnos y = mx+c (otkrio sam da je dovoljno linearan da bude bliska aproksimacija pravolinijskog grafa) i programirao sve potrebne ispravke u kalibracijske konstante putem MQTTSpy.

Uređaji su zatim nadzirani još 24 sata kako bi se osiguralo da je kalibracija uspješna. Indikacija toga su temperaturni tragovi na OpenHAB stranici trendova temperature svi su bili prilično jedan preko drugog.

Naravno, ako vas zanima samo približavanje temperature, možete ostaviti sve kalibracijske vrijednosti kao zadane.

Kalibracija vlažnosti

Kako ne posjedujem sredstva za precizno snimanje ili čak kontrolu lokalne vlažnosti okoline, za kalibraciju senzora, koristio sam sličan pristup kao gore, stavljajući sve uređaje u fizičku blizinu (slika 2) i jednostavno nadgledajući njihov izlaz putem OpenHAB -a Stranica sa tendencijom vlažnosti. Zatim sam odabrao uređaj #1 kao referentnu kalibraciju i kalibrirao sve uređaje u odnosu na ovo.

Korak 5: MQTT Konvencija o imenovanju tema

MQTT Konvencija o imenovanju tema
MQTT Konvencija o imenovanju tema
MQTT Konvencija o imenovanju tema
MQTT Konvencija o imenovanju tema

Nakon mnogo pokušaja i grešaka, odlučio sam se o konvenciji imenovanja teme prikazanoj na slici 1 gore.

Naime, 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice'

Nije savršeno, ali dopušta primjenu korisnih filtera za pregled svih izlaza senzora za datu parametarsku vrijednost, što omogućava lako poređenje kao na slici 2 gore sa MQTTSpy. Također podržava razumno proširivo logičko grupiranje funkcionalnosti unutar datog IoT uređaja.

U implementaciji ovih tema u softveru koristio sam tvrdo kodirane nizove tema sa fiksnim, ugrađenim numeričkim identifikatorima za svaki uređaj, za razliku od dinamičkog generiranja tema u vrijeme izvođenja radi uštede na RAM -u i održavanja visokih performansi.

Napomena: Ako niste sigurni kako koristiti MQTTSpy, pogledajte ovdje 'Postavljanje MQTT brokera. Dio 2: IoT, kućna automatizacija '

Korak 6: OpenHAB konfiguracija

OpenHAB konfiguracija
OpenHAB konfiguracija
OpenHAB konfiguracija
OpenHAB konfiguracija
OpenHAB konfiguracija
OpenHAB konfiguracija

Izmenio sam OpenHAB konfiguraciju datu u mojim ranijim Instructable (ovde) i dodao u pojedinačne stavke za;

  • Garaža,
  • Hall,
  • Dnevna soba,
  • Kuhinja
  • Guest Bedroom
  • Glavna spavaća soba

Na karti web stranice pogledajte gornju sliku 1.

Za svaki od ovih unosa dodao sam pojedinačne karte web stranica koje izlažu lokalne ambijentalne vrijednosti (vidi sliku 2 gore);

  • Temperature
  • Vlažnost
  • Indeks topline

Uključio sam i prekidač za kontrolu lokalnog LED -a montiranog unutar senzora.

Slike 3… 5 pokazuju pojedinačne tragove uživo tokom 24 sata za temperaturu, vlažnost i RSSI (Indikacija jačine primljenog signala, u osnovi mjera koliko dobro senzor može vidjeti WiFi mrežu).

Slika 6 daje primjer dugoročnog trenda vlažnosti u periodu od sedmice.

Napomena 1: Ako niste sigurni kako koristiti OpenHAB, pogledajte ovdje 'Postavljanje i konfiguriranje OpenHAB -a. Dio 6: IoT, kućna automatizacija '

Napomena 2: Kopija izmijenjene karte web stranice, datoteka pravila i stavki, ikona itd. Data je u nastavku.

Korak 7: Testiranje dizajna

Testiranje dizajna
Testiranje dizajna
Testiranje dizajna
Testiranje dizajna

Uglavnom sam testirao IoT uređaj preko MQTT veze sa MQTT Spy -om, nadzirao LED izlaz i otklanjao greške u saobraćaju na serijskom interfejsu. To mi je omogućilo da vježbam sve dostupne pretplaćene teme i provjerim objavljene odgovore. Iako je to postignuto ručno i ponekad je postalo pomalo zamorno, omogućilo je 100% pokrivenost.

Međutim, pokazalo se da je glavna državna mašina bila malo nezgodna za testiranje jer se oslanjala na prisutnost ili odsutnost WiFi mreže, za pristup kojoj su potrebni posebni skupovi parametara. Za to jednostavno nije bilo praktično koristiti kućnu mrežu.

Da bih zaobišao ovaj problem, stvorio sam vlastiti skup lažnih mreža koristeći ESP8266-01 konfiguriran kao pristupne točke (slika 1) sa SSID-ovima 'DummyNet1' i 'DummyNet2'. Korištenje kola na slici 2 iznad LED diode pokazalo je je li IoT uređaj spojen na njega. Iako ovo nije bilo savršeno rješenje za testiranje (tj. Svaka od ovih lažnih WiFi mreža nije sadržavalo MQTT poslužitelj), bilo je moguće u potpunosti testirati državnu mašinu.

U nastavku sam priložio kopiju izvornog koda.

Korak 8: Zaključak

Općenito

Softver u IoT uređajima je pouzdano radio već mjesecima oporavljajući se od nestanka struje u domaćinstvu (uglavnom sam to uzrokovao sam). Sve u svemu, oni su prilično robusni uređaji koji daju dosljedne i točne podatke.

Poboljšanja

U razvoju softverskih rutina za čitanje i pisanje na SPIFFS napisao sam kôd koji bi sa zadnje strane mogao biti malo napredniji nego što sam namjeravao, koristeći pokazivače praznina, preinake i pokazivače na pokazivače. Iako je vrlo fleksibilan i dobro radi posao, sljedeći put ću možda upotrijebiti JSON nešto po uzoru na ConfigFile.ino kako bi bilo malo jednostavnije.

  • Arduino GIT HUB Core

    https://github.com/esp8266/Arduino

  • ConfigFile.ino izvor

    https://github.com/esp8266/Arduino/tree/master/libraries/esp8266/examples/ConfigFile

Lista želja

Namjeravao sam koristiti mDNS klijent za povezivanje s posrednikom, ali biblioteka je bila previše labava. Zbog toga je potrebno navesti IP adresu posrednika MQTT umjesto "MQTTSVR.local". Ako mDNS biblioteka postane stabilnija u budućnosti, dodat ću ovu mogućnost na uređaj.

Bilo bi lijepo imati i sredstva za precizno praćenje i kontrolu vlažnosti okoline za kalibriranje senzora. Međutim, spomenuta metoda kalibracije daje dobra relativna očitanja i čini se razumno tačnom u skladu sa specifikacijom u DHT22 tehničkom listu.

Konačno, s obzirom na složenost softvera, otkrio sam da u potpunosti testiram kôd nakon što je velika promjena oduzimala mnogo vremena. Možda ću kasnije razmisliti o automatiziranom testiranju.

Korak 9: Korištene reference

Koristio sam sljedeće izvore da sastavim ovaj Instructable;

PubSubClient.h

  • Napisao: Nick O'Leary
  • Sa:

DHT.h

  • Napisao: Adafruit
  • Sa:

Tehnički list DHT22

Preporučuje se: