WiFi snímač teploty a vlhkosti IoT. Časť: 8 IoT, domáca automatizácia: 9 krokov
WiFi snímač teploty a vlhkosti IoT. Časť: 8 IoT, domáca automatizácia: 9 krokov
Anonim
WiFi snímač teploty a vlhkosti IoT. Časť: 8 IoT, domáca automatizácia
WiFi snímač teploty a vlhkosti IoT. Časť: 8 IoT, domáca automatizácia

Preambula

Tento článok dokumentuje praktickú robustnosť a ďalší vývoj predchádzajúceho Instructable: 'Pimping' vášho prvého IoT WiFi zariadenia. Časť 4: IoT, domáca automatizácia vrátane všetkých potrebných softvérových funkcií, ktoré umožňujú úspešné nasadenie v domácom domácom prostredí.

Úvod

Ako je uvedené vyššie, tento návod na použitie popisuje kombináciu predchádzajúceho príkladu internetu vecí so spoľahlivým návrhom systémov, ktoré umožňujú úspešné zvládnutie praktických prípadov použitia, ako sú; Katastrofická strata napájania, porucha MQTT Broker, porucha WiFi N/W, diaľková rekonfigurácia senzora, konfigurovateľná stratégia hlásenia na zníženie sieťovej prevádzky a kalibrácia senzora na mieru.

Bolo vytvorených celkom 6 vypnutých zariadení (pozri obrázok 1 vyššie) a distribuované po mojom dome, aby vytvorili moju prvú senzorovú sieť IoT.

Instructable tiež vidí prehľad konvencií pomenovania MQTT, ktoré sa používajú v počiatočných sériách IoT Home Automation, čím ustupuje vyváženejšej a praktickejšej štruktúre, ktorá umožňuje jednoduchšie ladenie prevádzky IoT v prostredí zariadení s viacerými IoT.

Nasledujú úplné konštrukčné detaily senzora IoT vrátane; konštrukcia, zdrojový kód, stratégia testovania a konfigurácie OpenHAB.

Aké diely potrebujem?

  1. 1 zľava ESP8266-01,
  2. 2 vypnuté 1uF elektrolytické kondenzátory,
  3. 3 vypnuté 10K odpory,
  4. 1 vypnutý odpor 330R,
  5. 1 kus s priemerom 3 mm LED,
  6. 1 zľava na LD1117-33v, 3v3 LDO VReg. (Farnell tu),
  7. 1 vypnutý snímač teploty/vlhkosti DHT22,
  8. 1 vypnutý duálny 4 -cestný 0,1 "konektor,
  9. 1 ks plastový kryt CAMDENBOSS RX2008/S-5, zalievací box, ABS, 38 mm, 23 mm (Farnell tu),
  10. 1 vypnutý konektor napájania DC, zástrčka, 1 A, 2 mm, montáž na panel (Farnell tu),
  11. 1 vypnutý chladič TO-220 24,4 ° C/W (Farnell tu),
  12. Rôzne teplom zmrštiteľné hadičky (žltá, Ebay tu),
  13. Plochý kábel IDC rôznych dĺžok,
  14. Chladiaca zmes,
  15. Veroboard,
  16. Programovacie zariadenie ESP8266-01. Pozri tu; Praktická konštrukcia obvodov s doskou, krok 9 ďalej.

Aký softvér potrebujem?

  1. Arduino IDE 1.6.9
  2. Arduino IDE nakonfigurované na programovanie ESP8266-01. Pozri tu; Nastavenie IDE Arduino na programovanie ESP8266-01

Aké nástroje potrebujem?

  1. Spájkovačka,
  2. Vŕtačka a rôzne bity,
  3. Súbory,
  4. Pílka,
  5. Robustný zverák,
  6. Tepelná pištoľ,
  7. DMM.

Aké zručnosti potrebujem?

  1. Minimálne znalosti elektroniky,
  2. Znalosť Arduina a jeho IDE,
  3. Základné výrobné schopnosti (spájkovanie, pílenie, pilovanie, vŕtanie atď.),
  4. Trochu trpezlivosti,
  5. Porozumenie vašej domácej sieti.

Témy pokryté

  1. Prehľad obvodov
  2. Prehľad softvérového systému
  3. Prehľad softvéru
  4. Kalibrácia senzora
  5. Dohovor o pomenovaní tém MQTT
  6. Konfigurácia OpenHAB
  7. Testovanie dizajnu
  8. Záver
  9. Použité referencie

Odkazy na série

K časti 7: Študujte ovládač svetiel (prepracovaný). Časť 7: IoT, domáca automatizácia

K časti 9: Sieťový ovládač IoT. Časť 9: IoT, domáca automatizácia

Krok 1: Prehľad obvodu

Prehľad obvodu
Prehľad obvodu
Prehľad obvodu
Prehľad obvodu
Prehľad obvodu
Prehľad obvodu
Prehľad obvodu
Prehľad obvodu

Na obrázku 1 vyššie je uvedený úplný návrh obvodu pre snímač IoT.

Srdcom zariadenia IoT je ESP8266-01, ktorý je pripojený k senzoru teploty/vlhkosti DHT22 pomocou 10K pull up rezistora na GPIO2. Externý zdroj 5 V je napájaný spínaným režimom a napájaný do zariadenia 2 mm zásuvkou na panel DC a je regulovaný lokálne pomocou regulátora napätia LD1117-33v, 3v3 LDO namontovaného na externom chladiči pomocou skrutky s maticou a maticou BZP M3..

Konštrukcia obsahuje 3 mm červenú diódu pripojenú k GPIO0, ktorá slúži na lokálnu indikáciu stavu zariadenia IoT počas spustenia alebo akéhokoľvek následného chybového stavu. Možno ho použiť aj na identifikáciu zariadenia manuálnou aktiváciou prostredníctvom rozhrania openHAB.

Celý dizajn sa úhľadne zmestí do zavlažovacieho boxu ABS, ako je uvedené vyššie na obrázku 2, a bol navrhnutý špeciálne tak, aby zabezpečil, že snímač bude čo najďalej od regulátora, aby sa zabránilo predpätiu v dôsledku účinkov miestneho vykurovania (obrázok 7 vyššie).

Doska s plošnými spojmi je jeden kus veroboardu, narezaný do tvaru a vyrobený tak, aby zapadol do krytu (obrázok 3 vyššie). Táto doska je upevnená v polohe zapustenou nylonovou skrutkou M3 a dvoma maticami, ktoré sú v jednej rovine so spodnou stranou senzora, a umožňujú tak sedieť na rovnom povrchu.

Obrázky 4… 6 ukazujú rôzne stavy konštrukcie.

Krok 2: Prehľad softvérového systému

Prehľad softvérového systému
Prehľad softvérového systému
Prehľad softvérového systému
Prehľad softvérového systému

Toto zariadenie na snímanie teploty a vlhkosti IoT obsahuje šesť kľúčových softvérových komponentov, ako je znázornené na obrázku 1 vyššie.

SPIFFS

Toto je vstavaný systém SPI Flash Filing System a slúži na uchovávanie nasledujúcich informácií (pozri obrázok 2 vyššie);

  • Ikony a html „Domovská stránka konfigurácie senzora“: Obsluhuje zariadenie IoT, keď sa nemôže pripojiť k vašej sieti IoT WiFi (zvyčajne kvôli nesprávnym bezpečnostným informáciám) a poskytuje používateľovi prostriedky na vzdialenú konfiguráciu senzora bez potreby preprogramovať alebo nahrať nový obsah SPIFFS.
  • Informácie o zabezpečení: Obsahuje informácie používané pri zapnutí zariadenia IoT na pripojenie k vašej sieti IoT WiFi a MQTT Broker. Informácie odoslané prostredníctvom „domovskej stránky konfigurácie senzora“sú zapísané do tohto súboru („secvals.txt“).
  • Informácie o kalibrácii: Informácie obsiahnuté v tomto súbore („calvals.txt“) sa v prípade potreby použijú na kalibráciu palubného snímača teploty/vlhkosti. Kalibračné konštanty je možné zapísať do zariadenia IoT iba pomocou príkazov MQTT od brokera MQTT.

Poznámka: Pôvodné nastavenie zariadenia nájdete tu, kde nájdete všetky podrobnosti o tom, ako používať SPIFFS s Arduino IDE.

server mDNS

Táto funkcia je spustená, keď sa zariadeniu IoT nepodarilo pripojiť k vašej sieti WiFi ako stanici WiFi a namiesto toho sa stalo prístupovým bodom WiFi, čo je niečo podobné domácemu smerovaču WiFi. V prípade takéhoto smerovača sa k nemu zvyčajne pripojíte zadaním IP adresy napríklad 192.168.1.1 (zvyčajne vytlačenej na štítku nalepenom na poli) priamo do panela s adresou URL prehliadača, načo vám príde prihlasovacia stránka na zadanie. používateľské meno a heslo, ktoré vám umožnia konfigurovať zariadenie.

V prípade ESP8266 v režime AP (režim prístupového bodu) má zariadenie predvolenú IP adresu 192.168.4.1, pri spustenom serveri mDNS však do panela s adresou URL prehliadača stačí zadať priateľské meno „SENSORSVR.local“. „Domovská stránka konfigurácie senzora“.

Klient MQTT

Klient MQTT poskytuje všetky potrebné funkcie; pripojte sa k svojej sieti IoT broker MQTT, prihláste sa na odber tém podľa vlastného výberu a zverejnite užitočné údaje k danej téme. Stručne povedané, poskytuje základnú funkčnosť IoT.

Webový server

Ako je uvedené vyššie, ak sa zariadenie IoT nemôže pripojiť k sieti WiFi, ktorej SSID, P/W atď. Je definované v súbore bezpečnostných informácií uloženom v SPIFFS, zariadenie sa stane prístupovým bodom. Po pripojení k sieti Wi -Fi poskytovanej prístupovým bodom vám prítomnosť webového servera HTTP umožňuje priame pripojenie k zariadeniu a zmenu jeho konfigurácie pomocou webového prehliadača HTTP, ktorého účelom je obsluhovať „domovskú stránku konfigurácie senzorov“. Webová stránka stránky, ktorá sa taktiež nachádza v SPIFFS.

WiFi stanica

Táto funkcia dáva zariadeniu IoT možnosť pripojiť sa k domácej sieti WiFi pomocou parametrov v súbore bezpečnostných informácií, bez toho sa vaše zariadenie IoT nebude môcť prihlásiť/publikovať u makléra MQTT

WiFi prístupový bod

Možnosť stať sa prístupovým bodom WiFi je prostriedok, pomocou ktorého vám zariadenie IoT umožňuje pripojiť sa k nemu a vykonávať zmeny konfigurácie prostredníctvom stanice WiFi a prehliadača (napríklad Safari na zariadení Apple iPad).

Tento prístupový bod vysiela SSID = „SENZOR“+ posledných 6 číslic adresy MAC zariadenia IoT. Heslo pre túto uzavretú sieť má pomyselný názov „HESLO“

Krok 3: Prehľad softvéru

Prehľad softvéru
Prehľad softvéru
Prehľad softvéru
Prehľad softvéru

Preamble Na úspešné zostavenie tohto zdrojového kódu budete potrebovať nasledujúce ďalšie knižnice;

PubSubClient.h

  • Od: Nick O'Leary
  • Účel: Umožňuje zariadeniu publikovať alebo prihlásiť sa na odber tém MQTT s daným maklérom
  • Od:

DHT.h

  • Autor: Adafruit
  • Účel: Knižnica pre snímač teploty/vlhkosti DHT
  • Z:

Prehľad kódu

Softvér využíva stavový stroj, ako je znázornené na obrázku 1 vyššie (úplná kópia zdroja uvedená nižšie). Nasleduje 5 hlavných stavov;

  • INIT

    Tento inicializačný stav je prvým stavom, ktorý bol zadaný po zapnutí

  • NOCONFIG

    Tento stav je zadaný, ak je po zapnutí detekovaný neplatný alebo chýbajúci súbor secvals.txt

  • ČAKÁ NA SZ

    Tento stav je prechodný, zadaný, zatiaľ čo neexistuje žiadne pripojenie k sieti WiFi

  • ČAKANÝ MQTT

    Tento stav je prechodný, zadáva sa po vytvorení pripojenia k sieti WiFi a zatiaľ čo v tejto sieti neexistuje žiadne spojenie s maklérom MQTT

  • AKTÍVNE

    Toto je normálny prevádzkový stav, ktorý sa zadáva po nadviazaní pripojenia k sieti WiFi a pripojenia MQTT Broker. V tomto stave je teplotná a vlhkostná funkcia senzora zverejnená u makléra MQTT

Udalosti riadiace prechody medzi stavmi sú popísané na obrázku 1 vyššie. Prechody medzi stavmi sa tiež riadia nasledujúcimi parametrami SecVals;

  • 1. adresa IP makléra MQTT. V bodkovanom desatinnom tvare AAA. BBB. CCC. DDD
  • 2. port makléra MQTT. V celočíselnej forme.
  • 3. Pripojenie makléra MQTT sa pokúša vytvoriť pred prepnutím z režimu STA do režimu AP. V celočíselnej forme.
  • 4. WiFi sieť SSID. Vo voľnej forme textu.
  • 5. heslo siete WiFi. Vo voľnej forme textu.

Ako je uvedené vyššie, ak sa zariadenie IoT nemôže pripojiť ako stanica WiFi k sieti WiFi, ktorého SSID a P/W sú definované v secvals.txt uloženom v SPIFFS, zariadenie IoT sa stane prístupovým bodom. Po pripojení k tomuto prístupovému bodu bude slúžiť na „domovskej stránke konfigurácie senzora“, ako je uvedené vyššie na obrázku 2 (zadaním buď „SENSORSVR.local“alebo 192.168.4.1 do panela s adresou URL vášho prehliadača). Táto domovská stránka umožňuje rekonfiguráciu senzora prostredníctvom prehliadača

Vzdialený prístup v AKTÍVNOM stave

Po pripojení k MQTT Broker je tiež možné zariadenie znova kalibrovať a prekonfigurovať prostredníctvom tematických publikácií MQTT. Súbor calvals.txt má prístup R/W a secvals.txt má prístup iba na zápis.

Ladenie používateľa

Počas zavádzacej sekvencie LED zariadenia IoT poskytuje nasledujúcu spätnú väzbu ladenia

  • 1 Krátky odkaz: V súbore SPIFFS (secvals.txt) nie je umiestnený žiadny konfiguračný súbor
  • 2 Krátke bliknutia: Zariadenie IoT sa pokúša pripojiť k sieti WiFi
  • Nepretržité osvetlenie: Zariadenie IoT sa pokúša pripojiť k MQTT Broker
  • Vypnuté: Zariadenie je aktívne
  • Poznámka 1: „Domovská stránka konfigurácie senzora“nepoužíva zabezpečené zásuvky, a preto sa spolieha na to, že vaša sieť je bezpečná.
  • Poznámka 2: Aby bolo možné naprogramovať každé zariadenie IoT, reťazec MQTT bude vyžadovať úpravu pred stiahnutím. Dôvodom je, že číslo senzora bolo vložené do reťazca tém MQTT. tj. „WFD/THSen/100/HumdStatus/1“pre mojich 6 zariadení sú očíslované 1… 6.

Krok 4: Kalibrácia senzora

Kalibrácia senzora
Kalibrácia senzora
Kalibrácia senzora
Kalibrácia senzora

Keď sa zariadenie IoT zapne, ako súčasť bootovacej sekvencie sa zo súboru SPIFFS načíta súbor s názvom „cavals.txt“. Obsahom tohto súboru sú kalibračné konštanty, ako je uvedené vyššie na obrázku 1. Tieto kalibračné konštanty sa používajú na úpravu hodnôt získaných zo snímača tak, aby boli v súlade s referenčným zariadením. Existuje ešte jedna hodnota, ktorá definuje stratégiu hlásenia pre zariadenie a ktorá je popísaná nižšie spolu s postupom, ktorý sa používa pri kalibrácii senzorov.

Stratégia vykazovania Tento parameter určuje, ako diaľkový senzor hlási akékoľvek miestne parametrické zmeny. Ak je zvolená hodnota 0, diaľkový senzor zverejní každú zmenu teploty alebo vlhkosti, ktorú vidí, pri každom čítaní snímača (približne každých 10 sekúnd). Akákoľvek iná hodnota oneskorí zverejnenie zmeny o 1… 60 minút. Úprava tohto parametra umožňuje optimalizáciu sieťovej prevádzky MQTT.

Kalibrácia teploty

Na kalibráciu senzorov boli navzájom umiestnené v tesnej fyzickej blízkosti, ako je uvedené vyššie na obrázku 2. Pozdĺž ich strany som umiestnil DMM s pripojeným kalibrovaným termočlánkom (Fluke 87 V) a potom monitoroval výstupy z každého zariadenia pomocou teploty OpenHAB. trendovú stránku v priebehu dňa, aby ste dosiahli dobrý teplotný výkyv. Zaznamenal som ako statický posun (zvýšená nula 'C'), tak rýchlosť zmeny každého zariadenia (zosilnenie alebo sklon grafu 'M') vzhľadom na hodnotu pochádzajúcu z kalibrovaného termočlánku. Potom som vypočítal jednoduchý vzťah y = mx+c (zistil som, že je dostatočne lineárny, aby bol tesným priblížením sa k priamočarému grafu) a naprogramoval som všetky potrebné opravy kalibračných konštánt pomocou MQTTSpy.

Zariadenia boli potom monitorované ďalších 24 hodín, aby sa zaistilo, že kalibrácia bola úspešná. Náznakom toho boli teplotné stopy na stránke trendov teploty OpenHAB všetky do značnej miery nad sebou.

Pokiaľ vás zaujíma iba aproximácia teploty, môžete samozrejme ponechať všetky kalibračné hodnoty ako predvolené.

Kalibrácia vlhkosti

Pretože nemám prostriedky na presné zaznamenávanie alebo dokonca kontrolu miestnej okolitej vlhkosti, na kalibráciu senzorov som použil podobný prístup ako vyššie, umiestnením všetkých zariadení do tesnej blízkosti (obrázok 2) a jednoduchým monitorovaním ich výstupu prostredníctvom OpenHAB. Stránka o vlhkosti. Potom som vybral zariadenie č. 1 ako kalibračnú referenciu a nakalibroval som všetky zariadenia k tomu súvisiace.

Krok 5: Konvencia pomenovania tém MQTT

Dohovor o pomenovaní tém MQTT
Dohovor o pomenovaní tém MQTT
Dohovor o pomenovaní tém MQTT
Dohovor o pomenovaní tém MQTT

Po mnohých pokusoch a omyloch som sa zaoberal konvenciou pomenovania tém, naznačenou na obrázku 1 vyššie.

Menovite „AccessMethod/DeviceType/WhichDevice/Action/SubDevice“

Nie je to dokonalé, ale umožňuje použitie užitočných filtrov na zobrazenie všetkých výstupov senzorov pre danú parametrickú hodnotu, čo umožňuje ľahké porovnanie ako na obrázku 2 vyššie s MQTTSpy. Podporuje tiež primerane rozšíriteľné logické zoskupenia funkcií v rámci daného zariadenia IoT.

Pri implementácii týchto tém do softvéru som používal napevno kódované reťazce tém s pevnými, vstavanými číselnými identifikátormi pre každé zariadenie, na rozdiel od dynamického generovania tém za behu, aby som šetril pamäť RAM a udržal vysoký výkon.

Poznámka: Ak si nie ste istí, ako používať MQTTSpy, pozrite si časť „Nastavenie makléra MQTT“. Časť 2: IoT, domáca automatizácia

Krok 6: Konfigurácia OpenHAB

Konfigurácia OpenHAB
Konfigurácia OpenHAB
Konfigurácia OpenHAB
Konfigurácia OpenHAB
Konfigurácia OpenHAB
Konfigurácia OpenHAB

Upravil som konfiguráciu OpenHAB uvedenú v mojom predchádzajúcom Instructable (tu) a pridal som jednotlivé položky pre;

  • Garáž,
  • Hala,
  • Obývačka,
  • Kuchyňa
  • Hosťovská izba
  • Hlavná spálňa

Na mape stránok pozrite obrázok 1 vyššie.

Pre každý z týchto záznamov som pridal jednotlivé mapy stránok vystavujúce lokálne okolité hodnoty (pozri obrázok 2 vyššie);

  • Teplota
  • Vlhkosť
  • Tepelný index

Súčasťou senzora je aj spínač na ovládanie miestnych LED diód.

Obrázky 3… 5 zobrazujú jednotlivé živé stopy v priebehu 24 hodín pre teplotu, vlhkosť a RSSI (indikácia sily prijatého signálu, v podstate miera, ako dobre senzor vidí sieť WiFi).

Obrázok 6 uvádza príklad dlhodobého trendu vlhkosti počas týždňa.

Poznámka 1: Ak si nie ste istí, ako používať OpenHAB, pozrite si časť „Nastavenie a konfigurácia OpenHAB“. Časť 6: IoT, domáca automatizácia “

Poznámka 2: Kópia upraveného mapy webu, súborov pravidiel a položiek, ikon atď. Je uvedená nižšie.

Krok 7: Testovanie dizajnu

Testovanie dizajnu
Testovanie dizajnu
Testovanie dizajnu
Testovanie dizajnu

Väčšinou som testoval zariadenie IoT cez pripojenie MQTT s MQTT Spy, monitoroval výstup LED a ladil prenos na sériovom rozhraní. To mi umožnilo precvičiť všetky dostupné prihlásené témy a skontrolovať zverejnené odpovede. Aj keď sa to dosiahlo ručne a občas to bolo trochu únavné, umožnilo to 100% pokrytie.

Hlavný stavový stroj sa však ukázal ako trochu zložitý na testovanie, pretože sa spoliehal na prítomnosť alebo neprítomnosť siete WiFi, ktorej prístup vyžaduje špecifické sady parametrov. Využívať na to domácu sieť jednoducho nebolo praktické.

Aby som tento problém vyriešil, vytvoril som vlastnú sadu atrapových sietí pomocou ESP8266-01 nakonfigurovaného ako prístupové body (obr. 1) so SSID „DummyNet1“a „DummyNet2“. Použitie obvodu na obrázku 2 nad LED diódou indikovalo, či sa k nemu pripojilo zariadenie IoT. Aj keď to nebolo dokonalé testovacie riešenie (tj. Každá z týchto fiktívnych WiFi sietí neobsahovala server MQTT), bolo možné stavový stroj úplne otestovať.

Kópiu zdrojového kódu som vložil nižšie.

Krok 8: Záver

Generál

Softvér v zariadeniach IoT funguje spoľahlivo mnoho mesiacov a teraz sa zotavuje z výpadkov elektrickej energie v domácnosti (spôsobených hlavne mnou). Celkovo sú to veľmi robustné zariadenia, ktoré poskytujú konzistentné a presné údaje.

Vylepšenia

Pri vývoji softvérových rutín na čítanie a zápis do formátu SPIFFS som napísal kód, ktorý môže byť v zadnom pohľade o niečo pokročilejší, ako som mal v úmysle, pričom som použil prázdne ukazovatele, prepracovanie a ukazovatele na ukazovatele. Aj keď je to veľmi flexibilné a robí svoju prácu dobre, nabudúce možno použijem JSON podľa vzoru ConfigFile.ino, aby to bolo trochu jednoduchšie.

  • Arduino GIT HUB Core

    https://github.com/esp8266/Arduino

  • Zdroj ConfigFile.ino

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

Zoznam želaní

Mal som v úmysle použiť klienta mDNS na pripojenie k maklérovi, ale knižnica bola príliš slabá. Preto je potrebné špecifikovať IP adresu MQTT Broker na rozdiel od „MQTTSVR.local“. Ak by sa knižnica mDNS v budúcnosti stala stabilnejšou, pridám túto možnosť do zariadenia.

Bolo by pekné mať prostriedky na presné monitorovanie a kontrolu okolitej vlhkosti na kalibráciu senzorov proti. To však znamená, že zvolená metóda kalibrácie poskytuje dobré relatívne hodnoty a zdá sa byť primerane presná v súlade so špecifikáciou v dátovom liste DHT22.

Nakoniec, vzhľadom na zložitosť softvéru, som zistil, že úplné testovanie kódu potom, čo veľká zmena začala byť časovo náročné. O automatizovanom testovaní môžem uvažovať neskôr.

Krok 9: Použité referencie

Na zostavenie tohto Pokynu som použil nasledujúce zdroje;

PubSubClient.h

  • Od: Nick O'Leary
  • Od:

DHT.h

  • Autor: Adafruit
  • Z:

Dátový list DHT22