Kazalo:

Senzor temperature in vlažnosti WiFi IoT. Del: 8 IoT, Domača avtomatizacija: 9 korakov
Senzor temperature in vlažnosti WiFi IoT. Del: 8 IoT, Domača avtomatizacija: 9 korakov

Video: Senzor temperature in vlažnosti WiFi IoT. Del: 8 IoT, Domača avtomatizacija: 9 korakov

Video: Senzor temperature in vlažnosti WiFi IoT. Del: 8 IoT, Domača avtomatizacija: 9 korakov
Video: Простое Android приложение для контроля ESP8266 по WiFI на Android Studio 2024, Julij
Anonim
Senzor temperature in vlažnosti WiFi IoT. Del: 8 IoT, Domača avtomatizacija
Senzor temperature in vlažnosti WiFi IoT. Del: 8 IoT, Domača avtomatizacija

Preambula

Ta članek dokumentira praktično robustnost in nadaljnji razvoj prejšnje Instructable: "Pimping" vaše prve IoT WiFi naprave. 4. del: IoT, Home Automation, vključno z vso potrebno programsko opremo, ki omogoča uspešno uvajanje v domačem domačem okolju.

Uvod

Kot je navedeno zgoraj, ta Instructable opisuje združevanje prejšnjega primera IoT z zanesljivo zasnovo sistema, ki omogoča uspešno obravnavo primerov praktične uporabe, kot so; Katastrofalna izguba energije, okvara posrednika MQTT, okvara WiFi N/W, daljinska rekonfiguracija senzorja, nastavljiva strategija poročanja za zmanjšanje omrežnega prometa in umerjanje senzorja po meri.

Ustvarjenih je bilo skupaj 6 izključenih naprav (glej sliko 1 zgoraj), ki so bile razdeljene po mojem domu in oblikovale moje prvo senzorsko omrežje IoT.

Instructable vidi tudi pregled konvencije o poimenovanju MQTT, ki je bila uporabljena v začetni seriji IoT Home Automation, kar daje pot bolj uravnoteženi, praktični strukturi, ki omogoča enostavnejše odpravljanje napak v prometu IoT v okolju naprav z več IoT.

Sledijo podrobne podrobnosti o zasnovi senzorja IoT, vključno z; konstrukcija, izvorna koda, strategija testiranja in konfiguracije OpenHAB.

Katere dele potrebujem?

  1. 1 off ESP8266-01,
  2. 2 off 1uF elektrolitski kondenzatorji,
  3. 3 od 10K uporov,
  4. 1 upor 330R,
  5. 1 od premera 3 mm. LED,
  6. 1 izklop LD1117-33v, 3v3 LDO VReg. (Farnell tukaj),
  7. 1 izklop senzorja temperature/vlažnosti DHT22,
  8. 1 izklop Dvojni 4 -kanalni 0,1 "priključek,
  9. 1 off CAMDENBOSS RX2008/S-5 plastično ohišje, lončnica, ABS, 38 mm, 23 mm (tukaj Farnell),
  10. 1 izklop DC napajalni konektor, vtič, 1 A, 2 mm, montaža na ploščo (tukaj Farnell),
  11. 1 izklop hladilnika TO-220 24,4 ° C/W (tukaj Farnell),
  12. Različne toplotno skrčljive cevi (rumene, tukaj Ebay),
  13. IDC trakovni kabel različnih dolžin,
  14. Hladilna spojina,
  15. Veroboard,
  16. Naprava za programiranje ESP8266-01. Glej tukaj; Praktična konstrukcija vezja s trakovno ploščo, korak 9 naprej.

Kakšno programsko opremo potrebujem?

  1. Arduino IDE 1.6.9
  2. Arduino IDE, konfiguriran za programiranje ESP8266-01. Glej tukaj; Nastavitev Arduino IDE za programiranje ESP8266-01

Katera orodja potrebujem?

  1. Spajkalnik,
  2. Vrtalnik in različni nastavki,
  3. Datoteke,
  4. Žaga,
  5. Trden primež,
  6. Grelna pištola,
  7. DMM.

Kakšne veščine potrebujem?

  1. Minimalno razumevanje elektronike,
  2. Poznavanje Arduina in njegove IDE,
  3. Osnovne sposobnosti izdelave (spajkanje, žaganje, rezanje, vrtanje itd.),
  4. Nekaj potrpežljivosti,
  5. Nekaj razumevanja vašega domačega omrežja.

Zajete teme

  1. Pregled vezja
  2. Pregled sistema programske opreme
  3. Pregled programske opreme
  4. Kalibracija senzorja
  5. Konvencija o poimenovanju tem MQTT
  6. Konfiguracija OpenHAB
  7. Testiranje oblikovanja
  8. Zaključek
  9. Uporabljene reference

Povezave do serije

Do 7. dela: Krmilnik študijskih luči (predelano). 7. del: IoT, Domača avtomatizacija

Do 9. dela: Omrežni krmilnik IoT. 9. del: IoT, Domača avtomatizacija

1. korak: Pregled vezja

Pregled vezja
Pregled vezja
Pregled vezja
Pregled vezja
Pregled vezja
Pregled vezja
Pregled vezja
Pregled vezja

Slika 1 zgoraj prikazuje celotno zasnovo senzorja IoT.

V središču naprave IoT je ESP8266-01, ki je povezan s senzorjem temperature/vlažnosti DHT22 prek 10K vlečnega upora na GPIO2. Zunanji 5v se napaja s preklopljenim načinom napajanja in se napaja v napravo preko 2 mm vtičnice za pritrditev na DC ploščo in se lokalno regulira z regulatorjem napetosti LD1117-33v, 3v3 LDO, pritrjenim na zunanji hladilnik z vijakom in matico BZP M3.

Zasnova vključuje 3 mm rdečo LED diodo, priključeno na GPIO0, ki se uporablja za lokalno indikacijo stanja naprave IoT med zagonom ali kakršnimi koli naknadnimi napakami. Uporablja se lahko tudi za identifikacijo naprave z ročnim aktiviranjem prek vmesnika openHAB.

Celotna zasnova se lepo prilega lončku iz ABS -a, kot je prikazano zgoraj na sliki 2, in je bil postavljen posebej za zagotovitev, da je senzor čim dlje od regulatorja, da se prepreči pristranskost zaradi lokalnih učinkov ogrevanja (slika 7 zgoraj).

Vezje je en sam kos veroboarda, izrezan v obliko in narejen tako, da se prilega ohišju (slika 3 zgoraj). Ta plošča je pritrjena na mestu z vijakom iz najlona M3 in dvema maticama, ki se prilegata spodnji strani senzorja, kar ji omogoča, da sedi na ravni površini.

Slike 4… 6 prikazujejo različna stanja gradnje.

2. korak: Pregled sistema programske opreme

Pregled sistema programske opreme
Pregled sistema programske opreme
Pregled sistema programske opreme
Pregled sistema programske opreme

Ta naprava za zaznavanje temperature in vlažnosti IoT vsebuje šest ključnih programskih komponent, kot je prikazano na sliki 1 zgoraj.

SPIFFS

To je vgrajen sistem za shranjevanje bliskovnih sporočil SPI in se uporablja za shranjevanje naslednjih informacij (glej sliko 2 zgoraj);

  • Ikone in html 'Domača stran za konfiguracijo senzorja': vroča jo naprava IoT, ko se ne more povezati z vašim omrežjem WiFi IoT (običajno zaradi napačnih varnostnih podatkov), uporabniku pa omogoča, da senzor na daljavo konfigurira brez potrebe za ponovno programiranje ali nalaganje nove vsebine SPIFFS.
  • Varnostni podatki: Ta vsebuje podatke, ki jih naprava IoT vklopi za povezavo z vašim omrežjem WiFi IoT in posrednikom MQTT. Podatki, poslani prek 'Domače strani za konfiguracijo senzorja', so zapisani v to datoteko ('secvals.txt').
  • Podatki o umerjanju: Podatki v tej datoteki („calvals.txt“) se uporabljajo za umerjanje vgrajenega senzorja temperature/vlažnosti na vozilu, če je to potrebno. Kalibracijske konstante je mogoče v napravo IoT zapisati samo z ukazi MQTT posrednika MQTT.

Opomba: Če želite najprej nastaviti napravo, si oglejte tukaj za podrobne informacije o uporabi SPIFFS z Arduino IDE.

strežnik mDNS

Ta funkcija se aktivira, ko se naprava IoT ne poveže z vašim omrežjem WiFi kot postajo WiFi in je namesto tega postala dostopna točka WiFi, podobna domačemu usmerjevalniku WiFi. V primeru takšnega usmerjevalnika se običajno povežete z njim tako, da vnesete naslov IP, na primer 192.168.1.1 (običajno natisnjen na nalepki, pritrjeni na polje), neposredno v vrstico URL brskalnika, nakar boste prejeli stran za prijavo uporabniško ime in geslo za konfiguracijo naprave.

Za ESP8266 v načinu AP (način dostopne točke) je naprava privzeto nastavljena na naslov IP 192.168.4.1, vendar morate pri delujočem strežniku mDNS v vrstico URL brskalnika vnesti samo prijazno ime 'SENSORSVR.local'. 'Domača stran konfiguracije senzorja'.

Odjemalec MQTT

Odjemalec MQTT nudi vso potrebno funkcionalnost za; povežite se s svojim posrednikom MQTT v omrežju IoT, se naročite na izbrane teme in objavite koristne podatke za določeno temo. Na kratko določa osnovno funkcionalnost IoT.

Spletni strežnik

Kot je navedeno zgoraj, če naprava IoT ne more vzpostaviti povezave z omrežjem WiFi, katerega SSID, P/W itd. Je določeno v datoteki varnostnih informacij, shranjenih v SPIFFS, bo naprava postala dostopna točka. Ko se povežete z omrežjem WiFi, ki ga omogoča dostopna točka, vam prisotnost spletnega strežnika HTTP omogoča neposredno povezavo z napravo in spreminjanje njene konfiguracije z uporabo spletnega brskalnika HTTP, katerega namen je postreči »Domov za konfiguracijo senzorja« Spletna stran, ki je tudi v SPIFFS.

WiFi postaja

Ta funkcija daje napravi IoT možnost, da se poveže z domačim omrežjem WiFi z uporabo parametrov v datoteki varnostnih informacij, brez tega se vaša naprava IoT ne bo mogla naročiti/objaviti pri posredniku MQTT

Dostopna točka WiFi

Sposobnost, da postanete dostopna točka WiFi, je sredstvo, s katerim vam naprava IoT omogoča povezavo z njo in spreminjanje konfiguracije prek postaje WiFi in brskalnika (na primer Safari na iPadu Apple).

Ta dostopna točka oddaja SSID = "SENSOR" + zadnjih 6 številk naslova MAC naprave IoT. Geslo za to zaprto omrežje se domiselno imenuje "GESLO"

3. korak: Pregled programske opreme

Pregled programske opreme
Pregled programske opreme
Pregled programske opreme
Pregled programske opreme

Preamble Če želite uspešno sestaviti to izvorno kodo, potrebujete naslednje dodatne knjižnice;

PubSubClient.h

  • Avtor: Nick O'Leary
  • Namen: napravi omogoča objavo ali naročanje na teme MQTT pri danem posredniku
  • Iz:

DHT.h

  • Avtor: Adafruit
  • Namen: Knjižnica za senzor temperature/vlažnosti DHT
  • Iz:

Pregled kode

Programska oprema uporablja state-machine, kot je prikazano na sliki 1 zgoraj (celotna kopija vira je navedena spodaj). Spodaj je 5 glavnih stanj;

  • V

    To stanje inicializacije je prvo stanje, vneseno po vklopu

  • NOCONFIG

    To stanje se vnese, če po vklopu zazna neveljavno ali manjkajočo datoteko secvals.txt

  • V ČAKANJU SZ

    To stanje je prehodno, vneseno, medtem ko ni omrežne povezave WiFi

  • PRIČAKAJ MQTT

    To stanje je prehodno, vnese se po vzpostavljeni povezavi z omrežjem WiFi, medtem ko v tem omrežju ni povezave z posrednikom MQTT

  • AKTIVNO

    To je običajno stanje delovanja, ki je vneseno, ko sta vzpostavljeni tako omrežna povezava WiFi kot povezava posrednika MQTT. V tem stanju se funkcija senzorja temperature in vlažnosti objavi posredniku MQTT

Dogodki, ki nadzorujejo prehode med stanji, so opisani na sliki 1 zgoraj. Prehode med državami urejajo tudi naslednji parametri SecVals;

  • 1. IP naslov posrednika MQTT. V decimalni obliki s pikami AAA. BBB. CCC. DDD
  • 2. posredniško pristanišče MQTT. V celobrojni obliki.
  • Tretja povezava posrednika MQTT poskuša vzpostaviti pred prehodom iz načina STA v način AP. V celobrojni obliki.
  • 4. SSID omrežja WiFi. Besedilo v prosti obliki.
  • 5. geslo za omrežje WiFi. Besedilo v prosti obliki.

Kot je navedeno zgoraj, če se naprava IoT ne more povezati kot postaja WiFi z omrežjem WiFi, katere SSID in P/W sta definirana v datoteki secvals.txt, shranjeni v SPIFFS, bo naprava IoT postala dostopna točka. Ko je povezan s to dostopno točko, bo služil na "Domači strani za konfiguracijo senzorja", kot je prikazano zgoraj na sliki 2 (z vnosom "SENSORSVR.local" ali 192.168.4.1 v naslovno vrstico brskalnikov). Ta domača stran omogoča ponovno konfiguracijo senzorja prek brskalnika

Oddaljeni dostop, medtem ko je v stanju AKTIVNO

Ko ste povezani z posrednikom MQTT, je možno tudi ponovno kalibrirati in znova konfigurirati napravo prek publikacij tem MQTT. Datoteka calvals.txt ima dostop R/W in secvals.txt ima izpostavljen dostop samo za pisanje.

Odpravljanje napak uporabnikov

Med zagonskim zaporedjem LED IoT naprave daje naslednje povratne informacije o odpravljanju napak

  • 1 Kratek utrip: v datoteki SPIFFS ni datoteke Config (secvals.txt)
  • 2 Kratki utripi: Naprava IoT se poskuša povezati z omrežjem WiFi
  • Neprekinjeno osvetljevanje: Naprava IoT se poskuša povezati z posrednikom MQTT
  • Izklopljeno: naprava je aktivna
  • Opomba 1: »Domača stran za konfiguracijo senzorja« ne uporablja varnih vtičnic in je zato odvisna od varnosti vašega omrežja.
  • Opomba 2: Za programiranje vsake naprave IoT bo treba niz MQTT pred prenosom urediti. To je zato, ker je številka senzorja vdelana v niz tem teme MQTT. tj. „WFD/THSen/100/HumdStatus/1“za mojih 6 naprav so oštevilčene 1… 6.

4. korak: Umerjanje senzorja

Kalibracija senzorja
Kalibracija senzorja
Kalibracija senzorja
Kalibracija senzorja

Ko se naprava IoT vklopi, se kot del zagonskega zaporedja iz SPIFFS prebere datoteka z imenom 'cavals.txt'. Vsebina te datoteke je kalibracijska konstanta, kot je prikazano zgoraj na sliki 1. Te kalibracijske konstante se uporabljajo za prilagoditev odčitkov, pridobljenih s senzorjem, da jih uskladijo z referenčno napravo. Obstaja še ena vrednost, ki opredeljuje strategijo poročanja za napravo in je opisana spodaj skupaj s postopkom za umerjanje senzorjev.

Strategija poročanja Ta parameter določa, kako daljinski senzor poroča o vseh lokalnih parametričnih spremembah okolja. Če je izbrana vrednost 0, bo daljinski senzor objavil vse spremembe, ki jih vidi v vrednostih temperature ali vlažnosti, vsakič, ko se senzor odčita (približno vsakih 10 sekund). Vsaka druga vrednost bo objavo spremembe odložila za 1… 60 minut. Sprememba tega parametra omogoča optimizacijo omrežnega prometa MQTT.

Umerjanje temperature

Za umerjanje senzorjev so bili postavljeni v neposredni fizični bližini drug drugega, kot je prikazano zgoraj na sliki 2. Ob njih sem postavil DMM s pritrjenim kalibriranim termoelementom (Fluke 87 V) in nato spremljal izhode iz vsake naprave prek temperature OpenHAB trendno stran v enem dnevu, da dobite dobro nihanje temperature. Opazil sem tako statični odmik (povišana ničla "C") kot hitrost spremembe vsake naprave (dobiček ali naklon grafa "M") glede na vrednost, ki prihaja iz umerjenega termoelementa. Nato sem izračunal preprosto razmerje y = mx+c (ugotovil sem, da je dovolj linearno, da je blizu približku grafu ravne črte) in vse potrebne popravke programiral v umeritvene konstante prek MQTTSpy.

Naprave so nato spremljali nadaljnjih 24 ur, da bi zagotovili uspešno kalibracijo. Kar kaže na temperaturne sledi na strani trendov temperature OpenHAB, so bili precej drug na drugem.

Seveda, če vas zanima le približek temperature, lahko pustite vse vrednosti umerjanja privzete.

Kalibracija vlažnosti

Ker nimam sredstev za natančno beleženje ali celo nadzor lokalne vlažnosti okolja, za umerjanje senzorjev, sem uporabil podoben pristop kot zgoraj, tako da sem vse naprave postavil v neposredno fizično bližino (slika 2) in preprosto spremljal njihov izhod prek OpenHAB Stran za vlažnost. Nato sem za kalibracijsko referenco izbral napravo št. 1 in umeril vse naprave glede tega.

5. korak: Konvencija o poimenovanju tem MQTT

Konvencija o poimenovanju tem MQTT
Konvencija o poimenovanju tem MQTT
Konvencija o poimenovanju tem MQTT
Konvencija o poimenovanju tem MQTT

Po dolgih poskusih in napakah sem se odločil za konvencijo poimenovanja tem, opisano na sliki 1 zgoraj.

Namreč 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice'

Ni popoln, vendar omogoča uporabo uporabnih filtrov za ogled vseh izhodov senzorjev za dano parametrično vrednost, kar omogoča enostavno primerjavo, kot je na sliki 2 zgoraj, z MQTTSpy. Prav tako podpira razumno razširljive logične skupine funkcionalnosti znotraj določene naprave IoT.

Pri izvajanju teh tem v programski opremi sem uporabil trdo kodirane nizove tem s fiksnimi, vgrajenimi številskimi identifikatorji za vsako napravo, v nasprotju z dinamičnim ustvarjanjem tem med izvajanjem, da bi prihranili RAM in ohranili visoko zmogljivost.

Opomba: Če niste prepričani, kako uporabljati MQTTSpy, glejte tukaj 'Nastavitev posrednika MQTT. 2. del: IoT, domača avtomatizacija '

6. korak: Konfiguracija OpenHAB

Konfiguracija OpenHAB
Konfiguracija OpenHAB
Konfiguracija OpenHAB
Konfiguracija OpenHAB
Konfiguracija OpenHAB
Konfiguracija OpenHAB

Spremenil sem konfiguracijo OpenHAB, podano v mojem prejšnjem Instructable (tukaj), in dodal posamezne vnose za;

  • Garaža,
  • Hodnik,
  • Dnevna soba,
  • Kuhinja
  • Spalnica za goste
  • Glavna spalnica

Na zemljevidu mesta glejte sliko 1 zgoraj.

Za vsak od teh vnosov sem dodal posamezne zemljevide mest, ki razkrivajo lokalne okoljske vrednosti (glej sliko 2 zgoraj);

  • Temperatura
  • Vlažnost
  • Toplotni indeks

Vključil sem tudi stikalo za nadzor lokalnega LED, nameščenega v senzorju.

Slike 3… 5 prikazujejo posamezne sledi v živo v 24 urah glede temperature, vlažnosti in RSSI (indikacija jakosti prejetega signala, v bistvu merilo, kako dobro senzor vidi omrežje WiFi).

Slika 6 prikazuje primer dolgoročnega trenda vlažnosti v obdobju enega tedna.

Opomba 1: Če niste prepričani, kako uporabljati OpenHAB, si oglejte tukaj 'Nastavitev in konfiguriranje OpenHAB. 6. del: IoT, domača avtomatizacija '

Opomba 2: Spodaj je podana kopija spremenjenega zemljevida spletnega mesta, datotek s pravili in elementi, ikon itd.

7. korak: Preizkusite zasnovo

Testiranje oblikovanja
Testiranje oblikovanja
Testiranje oblikovanja
Testiranje oblikovanja

Napravo IoT sem večinoma preizkusil prek povezave MQTT s programom MQTT Spy, spremljal izhod LED in odpravljal napake na serijskem vmesniku. To mi je omogočilo, da sem izkoristil vse razpoložljive naročene teme in preveril objavljene odgovore. Čeprav je bilo to doseženo ročno in je včasih postalo malce dolgočasno, je omogočilo 100 -odstotno pokritost.

Vendar se je izkazal, da je glavni državni stroj nekoliko težaven za preizkus, saj se je oprl na prisotnost ali odsotnost omrežja WiFi, za dostop do katerega so potrebni posebni nizi parametrov. Domačega omrežja za to preprosto ni bilo praktično uporabiti.

Da bi rešil to težavo, sem ustvaril lasten nabor lažnih omrežij z uporabo ESP8266-01, konfiguriran kot dostopne točke (slika 1) s SSID-ji 'DummyNet1' in 'DummyNet2'. Uporaba vezja na sliki 2 nad LED je pokazala, ali je nanj priključena naprava IoT. Čeprav to ni bila popolna preskusna rešitev (tj. Vsako od teh lažnih omrežij WiFi ni vsebovalo strežnika MQTT), je bilo mogoče v celoti preizkusiti državni stroj.

Spodaj sem vključil kopijo izvorne kode.

8. korak: Zaključek

Splošno

Programska oprema v napravah IoT je že več mesecev zanesljivo delovala in se obnavljala zaradi izpadov električne energije v gospodinjstvu (predvsem zaradi mene). Na splošno so zelo robustne naprave, ki dajejo dosledne in točne podatke.

Izboljšave

Pri razvoju programskih področij za branje in pisanje v SPIFFS sem napisal kodo, ki je v ozadju morda nekoliko naprednejša, kot sem nameraval, z uporabo praznih kazalcev, preoblikovanjem in kazalci na kazalce. Čeprav je zelo prilagodljiv in dobro opravlja svoje delo, bom naslednjič morda uporabil nekaj JSON -a po vzoru ConfigFile.ino, da bom nekoliko poenostavil.

  • Jedro Arduino GIT HUB

    https://github.com/esp8266/Arduino

  • Vir ConfigFile.ino

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

Seznam želja

Nameraval sem uporabiti odjemalca mDNS za povezavo s posrednikom, vendar je bila knjižnica preveč luskasta. Zato je treba v nasprotju z 'MQTTSVR.local' podati naslov IP posrednika MQTT. Če bo knjižnica mDNS v prihodnje postala bolj stabilna, bom tej zmogljivosti dodala napravo.

Lepo bi bilo imeti sredstva za natančno spremljanje in nadzor vlažnosti okolja za umerjanje senzorjev. Vendar omenjena izbrana metoda umerjanja daje dobre relativne odčitke in se zdi primerno natančna v skladu s specifikacijo v podatkovnem listu DHT22.

Nazadnje, glede na zapletenost programske opreme, sem ugotovil, da je koda v celoti testirana, potem ko je velika sprememba postala dolgotrajna. Morda bom kasneje razmislil o avtomatiziranem testiranju.

9. korak: Uporabljene reference

Za pripravo tega Instructable sem uporabil naslednje vire;

PubSubClient.h

  • Avtor: Nick O'Leary
  • Iz:

DHT.h

  • Avtor: Adafruit
  • Iz:

Tehnični list DHT22

Priporočena: