Obsah:

Vlajka schránky poháňaná MQTT a Wifi: 7 krokov (s obrázkami)
Vlajka schránky poháňaná MQTT a Wifi: 7 krokov (s obrázkami)

Video: Vlajka schránky poháňaná MQTT a Wifi: 7 krokov (s obrázkami)

Video: Vlajka schránky poháňaná MQTT a Wifi: 7 krokov (s obrázkami)
Video: Vlajka pro budoucnost - jak se zapojit 2024, November
Anonim
Vlajka schránky poháňaná MQTT a Wifi
Vlajka schránky poháňaná MQTT a Wifi

Poznámka: aktualizované novým firmvérom, schémou a tipmi pre programátora

Niekoľko rokov som sa púšťal do vlastného projektu automatizácie domácnosti. Začalo sa to tak, že sa vybudovala serverom ovládaná 433 MHz zostava vysielača s Arduinom, aby sa prepínalo veľa lacných diaľkových prepínačov na báze PT2262. Neskôr som do svojej meteorologickej stanice pridal prijímač založený na Arduine, zapojil riadiaci kontakt nabíjačky EV atď. Veci sa stále viac prepletali (a komplikovali!). Pred niekoľkými mesiacmi som sa teda rozhodol štandardizovať všetko na základe MQTT na odosielanie správ, Node-RED na automatizáciu (obe bežiace na jednom Raspberry Pi B+) a MariaDb na protokolovanie (bežiace na mojom zariadení Synology NAS). Neskôr som presťahoval na NAS aj brokera MQTT (Mosquitto) a Node-RED.

Tento návod popisuje hlúpy a zábavný projekt, ktorý zavesil moju poštovú schránku namontovanú na ulici do tejto domácej infraštruktúry. Ide o to, že ak niekto otvorí poštovú schránku namontovanú na plote asi 10 metrov od predných dverí, signalizuje mi to v telefóne a možno aj v ďalších zariadeniach.

Krok 1: Náčrt, predpoklady a diely

Obrys

Poštová schránka by mala na vysokej úrovni po otvorení odoslať sprostredkovateľovi jedinečnú správu MQTT, aby boli predplatitelia tejto témy informovaní. Node-RED sa tiež prihlasuje na odber a vykonáva určitú automatizáciu, v tomto prípade odoslanie e-mailu alebo správy push na môj telefón.

Poštová schránka by mala fungovať na batérie a mala by bežať najmenej jeden rok, pričom by to malo fungovať pomocou mojej siete WiFi. Pretože prebúdzanie mikrokontroléra a pripojenie k sieti Wi-Fi môže trvať niekoľko sekúnd, nemohol som aktivačný vypínač vypnúť. Namiesto toho by procesoru malo byť umožnené dokončiť svoju činnosť po tom, čo sa už zatvorí veko schránky.

Predpoklady

Predpokladám, že máte skromné spájkovacie schopnosti, trochu ste pracovali s Arduino IDE a nainštalovali ste dosky ESP8266 pomocou Správcu dosiek. Na programovanie mikrokontroléra potrebujete aj 3,3 voltový sériový adaptér USB.

Predpokladám tiež, že máte spusteného makléra MQTT a server Node-RED. Ak nie, existuje veľa inštrukcií na internete, ale odporučil by som ísť lenivou cestou a použiť vynikajúci inštalačný skript Petra Scargilla, ak ho chcete spustiť na akomkoľvek Pi alebo Ubuntu, alebo použiť obrázok Andreasa Spiessa pre Pi Zero W (odkazy v popise daného videa), čo vám ušetrí niekoľko hodín sledovania spustených inštalačných skriptov. Alternatívne môžete firmvér nechať poslať e -mail priamo, ale pri tom prídete o veľkú flexibilitu.

Časti

  • 1 uzavretý, 3 batérie AA
  • 2 AA batérie
  • 1 modul ESP8266. Na tento projekt som použil ESP-01
  • 1 mikrospínač
  • 1 47K odpor
  • 1 odpor 4M7
  • 1 kondenzátor 2.2uF
  • 1 tenká plastová trubica. Použil som pero
  • 1 hrubá, dlhá zápalka alebo tyčinka na lízanku. Mal by sa ľahko zmestiť a pohybovať sa v plastovej trubici

Krok 2: Hardvér: krabica, prepínač a zapojenie

Hardvér: krabica, spínač a zapojenie
Hardvér: krabica, spínač a zapojenie
Hardvér: krabica, spínač a zapojenie
Hardvér: krabica, spínač a zapojenie
Hardvér: krabica, spínač a zapojenie
Hardvér: krabica, spínač a zapojenie

Začal som starým boxom na batérie zo zaniknutej vianočnej dekorácie. Bol navrhnutý pre tri batérie veľkosti AA. Pretože ESP8266 bude fungovať dobre na 3 voltoch, mohol by som použiť dve batérie a tretiu pozíciu použiť na mikroovládač. Všimnite si, ako mala krabica malú extra priehradku, ktorú som mohol použiť na aktivačný spínač. Použil som veľmi bežný typ spínača zobrazený na obrázkoch, ale odstránil som pružinu, ktorá ho zaisťuje v polohe zapnutia alebo vypnutia. Na NC kontakty som spájkoval dva tenké drôty a v krabici som ich prilepil malou kvapkou super lepidla.

Ďalej som do horného krytu vyvŕtal otvor zodpovedajúci plastovej trubici odobratej z guľôčkového pera. Otvor je zarovnaný presne s vypínačom a vedie piest vyrobený z hrubej zápalky.

Nakoniec som k kontaktom batérie pripájal ďalšie dva vodiče a naviedol som všetky štyri vodiče do polohy tretej batérie, kde mal byť mikrokontrolér.

Krok 3: Hardvér: ESP-01

Hardvér: ESP-01
Hardvér: ESP-01
Hardvér: ESP-01
Hardvér: ESP-01
Hardvér: ESP-01
Hardvér: ESP-01

Vzhľadom na požiadavku na WiFi celý projekt kričí ESP8266. Tento malý ovládač WiFi sa stal obľúbeným pracovným koňom drobnej komunity ako modul, ktorý je možné zakúpiť za cenu 2,50 EUR, a integruje plný zásobník WiFi a TCP/IP s dostatočnou rezervou na spustenie vlastných programov. Arduino IDE (alebo Atom s doplnkom PlatformIO) plne podporuje ESP8266.

Obvykle by som bral ESP-12F, ale mal som položenú malú dosku ESP-01, ktorá bola perfektná pre túto prácu a krásne sa zmestila do skrinky na batérie. Jediným problémom je, že je veľmi zložité flash firmvér v ESP-01. Viac o tom v nasledujúcom kroku. Je potrebné vykonať jednu úpravu: Musíte odstrániť červenú diódu LED z dosky, pretože nepretržite odoberá 3 mA. Po odstránení diódy LED modul používa v režime hlbokého spánku iba niekoľko desiatok uA, vďaka čomu vydrží na dve kvalitné batérie AA viac ako rok.

Ukázalo sa, že som mohol použiť dva pásy 4-pinových zásuviek a spájku na niekoľkých ďalších komponentoch vo voľnej forme, aby som mohol odstrániť ESP-01 na aktualizáciu firmvéru, zatiaľ čo by sa stále zmestil do tretieho priestoru pre batériu.

Je veľmi dôležité správne zapojiť ESP. Pomocou vyššie uvedeného cheatového listu ho zapojte nasledovne.

  1. Batéria plus do Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) a 47K rezistora.
  2. Batéria mínus GND (A1) a jeden vodič spínača.
  3. Druhý vodič prepínača na kondenzátor 100nF a odpor 4M7.
  4. Otvorené konce oboch rezistorov a kondenzátora na RST (C2).
  5. TXD (A2) môže zostať nepripojený.

Upraviť: Musel som vymeniť ESP-01, pretože som urobil hlúpu chybu a zničil som ju. Ukázalo sa, že na moje prekvapenie sa nový ESP-01 neresetoval s pôvodným kondenzátorom 100nF. Pravdepodobne má trochu iný dizajn. Vymenil som ho za 2,2 uF a teraz funguje znova

Po dokončení je možné všetko namontovať do škatule, ale vydržte, najskôr musíme modul naprogramovať.

Krok 4: Programovanie ESP-01

Programovanie ESP-01
Programovanie ESP-01
Programovanie ESP-01
Programovanie ESP-01
Programovanie ESP-01
Programovanie ESP-01

Ak chcete na svojom ESP-01 flashovať firmvér, môžete si buď postaviť malú súpravu, alebo si kúpiť (takmer) kompletný programátor za približne 1 euro.

Hardvérová súprava na programovanie

Postavte pre ESP-01 malú súpravu opäť s dvoma ženskými hlavičkami. Potrebujete tiež sériový modul USB, ktorý dokáže poskytnúť 3,3 voltu. Všimnite si toho, že čip ESP8266 nie je tvrdený na 5 voltov, takže chyba tu môže zabiť váš modul. Každopádne, znova pomocou cheat listu, zapojte svoju súpravu nasledovne:

  1. 3,3 V z modulu USB Serial na Vcc, CH_PD, RST a GPIO2.
  2. GND modulu USBSériový na GND a GPIO0.
  3. TXD modulu USBSerial na RXD.
  4. RDX modulu USBSerial do TXD.

Programátor pred zostavením

Je zábavné stavať si vlastné veci. Lenivejším prístupom je získať rozhranie ESP-01-to-serial z vášho obľúbeného aukčného servera, pozri obrázok vyššie. Je to oveľa jednoduchšie, kompaktnejšie a spoľahlivejšie ako súprava. Niektoré z nich však nie sú programátormi, iba sériovými rozhraniami. Na zadnej strane rozhrania musíte spájkovať drôtový mostík medzi GND (pin A1) a GPIO0 (pin C1), pozri druhý obrázok. Všimnite si toho, že ESP-01 by mal byť zapojený tak, aby anténa smerovala k USB konektoru, nie naopak!

Poznámka: existujú aj s vypínačom, pozri tretí obrázok, veľmi pekné.

Načítajte firmvér

Za predpokladu, že IDE Arduino bude 1.8.3 alebo novší, vyberte Nástroje> Doska a vyberte dosku, ktorú máte. Pre ESP-01, aký som použil, zvoľte „Generický modul ESP8266“a nastavte nasledujúce možnosti (toto by mali byť všetky predvolené hodnoty):

  1. Režim blesku: DIO
  2. Frekvencia blesku: 40 MHz
  3. Frekvencia procesora: 80 MHz
  4. Veľkosť blesku: 512 kB (64 kB SPIFFS) Poznámka: Ak používate čiernu dosku ESP-01, vyberte 1 MB (64 kB SPIFFS)
  5. Ladiaci port: deaktivovaný
  6. Úroveň ladenia: Žiadna
  7. Spôsob resetovania: ck
  8. Rýchlosť nahrávania 115200
  9. Port: vyberte port, ktorý je pripojený k sériovému rozhraniu USB. Pre môj počítač Ubuntu to bolo /dev /ttyUSB0

Pripojte súpravu/programátor, načítajte náčrt, ktorý nájdete tu https://gitlab.com/jeroenmeijer/Mailbox.git. Zadajte svoje prihlasovacie údaje makléra WiFi a MQTT a konfiguráciu IP do súboru config.h a vyberte položku Nahrať.

Krok 5: Zostavenie všetkého

Zostaviť to všetko
Zostaviť to všetko

Vo vnútornom veku schránky som vyvŕtal otvor pre plastovú rúrku, čo najbližšie k závesu, a potom som za tepla prilepil škatuľu na batérie na spodnú stranu veka. Ďalej som ako piest použil hrubú zápalku. Útržkom som skrátil zápalku na dĺžku, aby sa spínač otvoril, ak by bolo vonkajšie veko zatvorené. Skontroloval som konektivitu otvorením veka počas behu mosquitto_sub na monitorovanie správ MQTT (nahraďte mqttbroker, používateľa a heslo konfiguráciou MQTT):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u užívateľ -P heslo

Asi šesť sekúnd po otvorení vonkajšieho veka sa zverejní nasledujúca správa MQTT. Čas sa používa na prebudenie mikrokontroléra a nadviazanie pripojenia WiFi a makléra.

stat/mailbox/trigger {"vcc": 3050, "flap": true, "prev": 0, "RSSI": 29, "version": "005"}

Počas tejto doby používal mikrokontrolér približne 70 mA. Keď je hotový, prejde do hlbokého spánku a v mojom prípade spotreboval menej ako 20uA. „klapka“je vždy pravdivá, „vcc“uvádza napätie batérie v mV a „predchádzajúca“by mala byť 0. Ak je 1 alebo 2, znamená to, že schránka nemohla odoslať správu skôr, pretože sa nemohla pripojiť k WiFi, alebo preto, že sa nemohlo pripojiť k brokerovi MQTT. „RSSI“je sila signálu WiFi. Oba sú veľmi užitočné pri diagnostike problémov.

Je vhodné niekoľko dní monitorovať napätie batérie, aby ste zaistili, že zariadenie funguje tak, ako má, a z nejakého dôvodu nevybije batériu.

Firmvér sa môže aktualizovať aj bezdrôtovo (OTA), ale to je trochu nad rámec tohto návodu. Pre záujemcov je konfigurácia OTA tiež v config.h.

Krok 6: Použitie Node-RED na pôsobenie na správu MQTT

Použitie Node-RED na pôsobenie na správu MQTT
Použitie Node-RED na pôsobenie na správu MQTT

Nakoniec som v Node-RED vytvoril jednoduchý tok. Prvý uzol sa prihlási k téme poštovej schránky (stat/postbox/trigger). Po prijatí správy druhý uzol naformátuje e -mail *). Posledný uzol to odošle na moju adresu gmail pomocou gmailu ako servera SMTP. Môj telefón ma potom upozorní na novú poštu.

Pridal som tok Node-RED do útržku gitlab, aby ste ho mohli importovať do svojich tokov Node-RED.

Samozrejme môžete pridať niekoľko ďalších uzlov, napríklad na zaznamenávanie udalostí poštovej schránky do MariaDb alebo SqlLite, alebo vytvárať ďalšie alarmy, keď napätie batérie klesne pod 2,7 voltu.

Šťastný lov pošty!

*) Pozri nasledujúcu stránku, namiesto e -mailu teraz používam PushBullet.

Krok 7: Úvahy

Vždy existuje pocit, že veci sa dali urobiť lepšie.

Prepnúť

Radšej by som použil (super) magnet a jazýčkový kontakt namiesto trochu nemotorného prístupu piestu. Dôvody boli dva. Jedným z nich je, že som nemohol túto prácu vykonávať so zatváraním kontaktov pri otvorení skrinky a mať ho vždy zatvorený, znamenalo, že vždy bude prúdiť malý prúd. Pri spätnom pohľade by menej ako 1uA pretekajúci odporom 4M7 nebol z hľadiska výdrže batérie veľký problém. Ten druhý bol praktickejší. Tento projekt som vymyslel v sobotu a napísal softvér, v nedeľu ho postavím z toho, čo sa okolo neho dialo. Jednoducho som nemal v škatuľke trstinový kontakt.

Poznámka: ako komentoval diy_bloke, trstinové kontakty majú tendenciu sa pri dlhodobom magnetizovaní lepiť, takže piest možno nebol taký zlý nápad. Uvidíme. *)

Správa o vyprázdňovaní

Poštová schránka odošle správu aj pri vyprázdnení. Nie je to nič hrozné, ale keď viac ľudí v dome dostane varovanie, jeden by mohol skončiť v slučke kontrolovať poštovú schránku a vzdorovať svojmu účelu! Existuje niekoľko spôsobov, ako napríklad skontrolovať, či je vnútorné veko zdvihnuté, a ak áno, neposielajte správu. Alebo namiesto použitia vekového spínača nainštalujte detektor do spodnej časti schránky. Alebo malé tlačidlo reset, ktoré sa má stlačiť pri vyprázdňovaní. Všetko by to však komplikovalo a pravdepodobne by zhoršilo spoľahlivosť.

Správy

Odosielanie e -mailov je pomerne účinný, ale hrubý spôsob varovania. Elegantnejším spôsobom by bola aplikácia pre telefón, ale nenašiel som aplikáciu pre ovládací panel Android MQTT, ktorú by bolo možné nakonfigurovať tak, aby po prijatí určitej správy spustila upozornenie operačného systému. Ak sa v okolí nejaký nachádza, pridajte ho do komentárov. **)

*) Po viac ako roku prevádzky sa ukazuje, že lízanka, ktorú som použil, v zásade tvrdý zvinutý papier, má tendenciu sa skracovať pod neustálym tlakom pružiny spínača. Po nejakom riešení problémov som ho nahradil drevenou palicou.

**) Teraz používam PushBullet na odosielanie správ, oddelene od hlavného panela MQTT. Tu nájdete malé nízke rozhranie Node-RED k rozhraniu API. Uistite sa, že zadáte prístupový token v uzle „Pripravte sa na pushbullet“a svoju e -mailovú adresu na záložné účely v uzle „Skúsiť znova“.

Odporúča: