Sadržaj:

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

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

Video: WiFi IoT osjetnik 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, Srpanj
Anonim
WiFi IoT osjetnik temperature i vlažnosti. Dio: 8 IoT, kućna automatizacija
WiFi IoT osjetnik temperature i vlažnosti. Dio: 8 IoT, kućna automatizacija

Preambula

Ovaj članak dokumentira praktičnu robusnost i daljnji razvoj ranijeg Instructablea: '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 s pouzdanim dizajnom sustava koji omogućuje uspješno rješavanje slučajeva praktične uporabe kao što su; Katastrofalan gubitak energije, kvar MQTT posrednika, kvar N/W WiFi -a, daljinska rekonfiguracija senzora, konfigurabilna strategija izvješćivanja 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 pregledava konvenciju imenovanja MQTT koja se koristi u početnoj seriji IoT Home Automation, ustupajući mjesto uravnoteženijoj, praktičnoj strukturi koja omogućuje jednostavnije otklanjanje pogrešaka IoT prometa 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 off 330R otpornik,
  5. 1 off promjera 3 mm. LED,
  6. 1 isključeno LD1117-33v, 3v3 LDO VReg. (Farnell ovdje),
  7. 1 isključeno DHT22 osjetnik temperature/vlažnosti,
  8. 1 isključeno Dvostruki konektor 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 istosmjernu 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 vrpčani kabel različitih duljina,
  14. Sastav hladnjaka,
  15. Veroboard,
  16. Uređaj za programiranje ESP8266-01. Vidi ovdje; Praktična konstrukcija kruga s 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 su mi alati potrebni?

  1. Lemilica,
  2. Bušilica i razni nastavci,
  3. Datoteke,
  4. Pila za metal,
  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.

Tema završena

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

Linkovi serija

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

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

Korak 1: Pregled kruga

Pregled kruga
Pregled kruga
Pregled kruga
Pregled kruga
Pregled kruga
Pregled kruga
Pregled kruga
Pregled kruga

Slika 1 gore prikazuje dizajn cijelog kruga IoT osjetnika.

U središtu IoT uređaja nalazi se ESP8266-01 koji je spojen na DHT22 osjetnik temperature/vlažnosti putem 10K pull-up otpornika na GPIO2. Vanjski napon od 5 V dobiva se s napajanjem s uključenim načinom rada i dovodi se u uređaj kroz utičnicu za montiranje istosmjerne ploče 2 mm, a 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 3 mm crvenu LED diodu povezanu na GPIO0 koja se koristi za lokalnu indikaciju statusa IoT uređaja tijekom pokretanja ili bilo kojeg sljedećeg stanja pogreške. Također se može koristiti za identifikaciju uređaja ručnom aktivacijom putem openHAB sučelja.

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

Ploča je jedan komad veroboard ploče, izrezane u oblik i izrađene tako da stane u kućište (slika 3 gore). Ova je ploča pričvršćena na mjesto pomoću M3 upuštenog najlonskog vijka i dvije matice koje pristaju u ravnini s donjom stranom senzora, što mu omogućuje da sjedi na ravnoj površini.

Slike 4… 6 prikazuju različita stanja gradnje.

Korak 2: Pregled softverskog sustava

Pregled softverskog sustava
Pregled softverskog sustava
Pregled softverskog sustava
Pregled softverskog sustava

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 sustav za spremanje datoteka i koristi se za pohranu sljedećih informacija (vidi sliku 2 gore);

  • Ikone i html 'Početna stranica za konfiguraciju senzora': poslužuje IoT uređaj kad se ne može povezati s vašom IoT WiFi mrežom (obično zbog netočnih sigurnosnih podataka) i pruža korisniku mogućnost 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 posrednikom MQTT. Podaci poslani putem 'početne stranice konfiguracije senzora' zapisuju se u ovu datoteku ('secvals.txt').
  • Informacije o kalibraciji: Podaci sadržani u ovoj datoteci ('calvals.txt') koriste se za kalibriranje ugrađenog osjetnika temperature/vlažnosti ako je potrebno. Konstante kalibracije mogu se zapisati na IoT uređaj samo putem MQTT naredbi od posrednika MQTT.

Napomena: Kako biste početno postavili uređaj, pogledajte ovdje za potpune pojedinosti o tome kako koristiti SPIFFS s Arduino IDE -om.

mDNS poslužitelj

Ova se funkcija poziva kada se IoT uređaj nije uspio povezati s vašom WiFi mrežom kao WiFi postajom 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 ispisane na naljepnici pričvršćenoj na okvir) izravno u URL traku preglednika, nakon čega biste primili stranicu za prijavu korisničko ime i lozinku kako biste mogli konfigurirati uređaj.

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

MQTT klijent

MQTT klijent pruža svu potrebnu funkcionalnost za; spojite se na svog MQTT brokera IoT mreže, pretplatite se na teme po svom izboru i objavite korisni teret na određenu temu. Ukratko, pruža osnovnu funkcionalnost IoT -a.

HTTP web poslužitelj

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 s WiFi mrežom koju pruža pristupna točka, prisutnost HTTP web poslužitelja omogućuje vam izravno povezivanje s uređajem i promjenu njegove konfiguracije korištenjem HTTP web preglednika čija je svrha posluživanje 'početne stranice konfiguracije senzora Web stranica koja se također održava u SPIFFS -u.

WiFi stanica

Ova funkcionalnost daje IoT uređaju mogućnost povezivanja s domaćom WiFi mrežom pomoću parametara u datoteci sigurnosnih informacija, bez toga vaš IoT uređaj neće se moći pretplatiti/objaviti na MQTT brokeru

WiFi pristupna točka

Sposobnost da postanete WiFi pristupna točka način je na koji vam IoT uređaj omogućuje povezivanje s njim i unošenje promjena u konfiguraciju putem WiFi postaje i preglednika (poput Safarija na Apple iPadu).

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 sastaviti ovaj izvorni kod trebat će vam sljedeće dodatne knjižnice;

PubSubClient.h

  • Napisao: Nick O'Leary
  • Svrha: Omogućuje uređaju objavljivanje ili pretplatu na teme o MQTT -u kod danog brokera
  • S:

DHT.h

  • Napisao: Adafruit
  • Namjena: Knjižnica za DHT osjetnik temperature/vlažnosti
  • S:

Pregled koda

Softver koristi državni stroj kao što je prikazano na slici 1 gore (potpuna kopija izvora navedenog u nastavku). Postoji 5 glavnih stanja kako slijedi;

  • 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

  • U ČEKANJU SZ

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

  • MQTT U ČEKANJU

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

  • AKTIVAN

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

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;

  • 1. MQTT posrednička IP adresa. U decimalnom obliku s točkama AAA. BBB. CCC. DDD
  • 2. MQTT brokerska luka. U cjelobrojnom obliku.
  • 3. MQTT posrednik pokušava uspostaviti vezu prije prelaska iz STA načina u AP način. U cjelobrojnom obliku.
  • 4. SSID WiFi mreže. Tekst u slobodnom obliku.
  • 5. lozinka WiFi mreže. Tekst u slobodnom obliku.

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 adresnu traku preglednika). Ova početna stranica omogućuje ponovnu konfiguraciju senzora putem HTTP preglednika.

Daljinski pristup dok je u stanju AKTIVNO

Nakon povezivanja s posrednikom MQTT također je moguće 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 pogrešaka korisnika

Tijekom redoslijeda pokretanja LED IoT uređaja daje sljedeće povratne informacije o otklanjanju pogrešaka

  • 1 Kratki bljesak: Nema datoteke za konfiguraciju koja se nalazi u SPIFFS -u (secvals.txt)
  • 2 kratka bljeskanja: IoT uređaj pokušava se povezati s WiFi mrežom
  • Kontinuirano 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: Kako bi se programirao svaki IoT uređaj, niz MQTT morat će se urediti 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

Kad se IoT uređaj uključi, kao dio niza 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šćivanja za uređaj, a dolje je opisana zajedno s postupkom za kalibraciju senzora.

Strategija izvješćivanja Ovaj 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ćuje optimizaciju MQTT mrežnog prometa.

Kalibracija temperature

Za kalibriranje 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 s kalibriranim termoelementom (Fluke 87 V), a zatim sam nadzirao izlaze sa svakog uređaja putem OpenHAB temperature stranica s trendovima tijekom dana kako biste postigli dobre promjene temperature. Zabilježio sam i statički pomak (povišena nula 'C') i brzinu promjene svakog uređaja (dobitak 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 kao bliska aproksimacija grafu ravne crte) i programirao sve potrebne ispravke u kalibracijske konstante putem MQTTSpy.

Uređaji su zatim nadzirani daljnjih 24 sata kako bi se osiguralo da je kalibracija uspješna. Indikator toga su bili 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

Budući da ne posjedujem sredstva za točno bilježenje ili čak kontrolu lokalne vlažnosti okoline, za kalibriranje senzora, upotrijebio sam sličan pristup gore navedenom, stavljajući sve uređaje u fizičku blizinu (slika 2) i jednostavno nadgledajući njihov izlaz putem OpenHAB -a Stranica s 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 pogrešaka, odlučio sam se o konvenciji imenovanja teme prikazanoj na slici 1 gore.

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

Nije savršen, ali dopušta primjenu korisnih filtara za prikaz svih izlaza senzora za zadanu parametarsku vrijednost, što omogućuje jednostavnu usporedbu kao na slici 2 gore s MQTTSpy. Također podržava razumno proširivo logičko grupiranje funkcionalnosti unutar datog IoT uređaja.

U implementaciji ovih tema u softver koristio sam tvrdo kodirane nizove tema s fiksnim, ugrađenim numeričkim identifikatorima za svaki uređaj, za razliku od dinamičkog generiranja tema tijekom izvođenja kako bih uštedio na RAM -u i održao performanse visokim.

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

Korak 6: OpenHAB konfiguracija

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

Izmijenio sam konfiguraciju OpenHAB -a datu u mojim ranijim Instructable (ovdje) i dodao u pojedinačne unose za;

  • Garaža,
  • Dvorana,
  • Dnevna soba,
  • Kuhinja
  • Spavaća soba za goste
  • 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);

  • Temperatura
  • Vlažnost
  • Indeks topline

Uključio sam i prekidač za upravljanje lokalnom LED diodom montiranom unutar senzora.

Slike 3… 5 prikazuju pojedinačne tragove uživo tijekom 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 prikazuje primjer dugoročnog trenda vlažnosti u razdoblju od tjedan dana.

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

Napomena 2: U nastavku se nalazi kopija izmijenjene karte web stranice, datoteka pravila i stavki, ikona itd.

Korak 7: Testiranje dizajna

Testiranje dizajna
Testiranje dizajna
Testiranje dizajna
Testiranje dizajna

Uglavnom sam testirao IoT uređaj preko MQTT veze sa MQTT Spy, nadzirao LED izlaz i otklanjao pogreške u prometu na serijskom sučelju. To mi je omogućilo da iskoristim 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 glavni državni stroj bio malo nezgodan za testiranje jer se oslanjao 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 sklopa na slici 2 iznad LED diode pokazalo je je li na njega spojen IoT uređaj. Iako ovo nije bilo savršeno rješenje za testiranje (tj. Svaka od ovih lažnih WiFi mreža nije sadržavala MQTT poslužitelj), bilo je moguće u potpunosti testirati državni stroj.

U nastavku sam priložio kopiju izvornog koda.

Korak 8: Zaključak

Općenito

Softver u IoT uređajima pouzdano radi već nekoliko mjeseci oporavljajući se od nestanka struje u kućanstvu (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 u SPIFFS napisao sam kod koji bi sa zadnje strane mogao biti malo napredniji nego što sam namjeravao, koristeći pokazivače praznine, preinake i pokazivače na pokazivače. Iako je vrlo fleksibilan i dobro radi posao, sljedeći put mogu upotrijebiti JSON nešto u skladu s ConfigFile.ino kako bih ga učinio malo jednostavnijim.

  • Arduino GIT HUB jezgra

    https://github.com/esp8266/Arduino

  • Izvor ConfigFile.ino

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

Lista želja

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

Bilo bi lijepo imati 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 točnom u skladu sa specifikacijom u DHT22 podatkovnom listu.

Konačno, s obzirom na složenost softvera, otkrio sam da sam potpuno testirao kôd nakon što je velika promjena postala dugotrajna. 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
  • S:

DHT.h

  • Napisao: Adafruit
  • S:

Tehnički list DHT22

Preporučeni: