Kazalo:

Oznaka nabiralnika MQTT in Wifi: 7 korakov (s slikami)
Oznaka nabiralnika MQTT in Wifi: 7 korakov (s slikami)

Video: Oznaka nabiralnika MQTT in Wifi: 7 korakov (s slikami)

Video: Oznaka nabiralnika MQTT in Wifi: 7 korakov (s slikami)
Video: Забор из профнастила 2024, Julij
Anonim
Zastavica nabiralnika MQTT in Wifi
Zastavica nabiralnika MQTT in Wifi

Opomba: posodobljeno z novo vdelano programsko opremo, shemo in nasveti za programerja

Nekaj let sem se lotil lastnega projekta avtomatizacije doma. Začelo se je z izdelavo strežniško nadzorovanega 433 MHz oddajnika z Arduinom za preklop številnih poceni daljinskih stikal na osnovi PT2262. Kasneje sem za svojo vremensko postajo dodal sprejemnik, ki temelji na Arduinu, priključil krmilni kontakt mojega polnilnika za električno energijo itd. Stvari so postajale vse bolj prepletene (in zapletene!). Tako sem se pred nekaj meseci odločil, da bom vse standardiziral na podlagi MQTT za pošiljanje sporočil, Node-RED za avtomatizacijo (oboje deluje na enem Raspberry Pi B+) in MariaDb za beleženje (deluje na mojem Synology NAS). Kasneje sem posrednik MQTT (Mosquitto) in Node-RED preselil tudi v NAS.

Ta navodila opisujejo neumni projekt za zabavo, ki poveže moj nabiralnik, nameščen na ulici, v tej domači infrastrukturi. Zamisel je, da če nekdo odpre nabiralnik, nameščen na ograji, približno 10 metrov od vhodnih vrat, mi to sporoči po telefonu in morda drugih napravah.

1. korak: oris, predpogoji in deli

Oris

Na visoki ravni mora nabiralnik, ko se odpre, posredniku poslati edinstveno sporočilo MQTT, tako da bodo naročniki na to temo obveščeni. Node-RED se tudi naroči in naredi nekaj avtomatizacije, v tem primeru pošlje e-pošto in/ali potisno sporočilo na moj telefon.

Nabiralnik bi moral delovati na baterije in delovati vsaj eno leto, pri tem pa naj uporablja moje omrežje WiFi. Ker prebujanje mikrokrmilnika in povezovanje z omrežjem WiFi lahko traja nekaj sekund, nisem mogel uporabiti stikala za vklop, da bi prekinil napajanje. Namesto tega bi morali procesorju dovoliti, da konča svoje delo, potem ko se je pokrov nabiralnika že zaprl.

Predpogoji

Predvidevam, da imate skromne sposobnosti spajkanja, ste nekaj delali z Arduino IDE in namestili plošče ESP8266 z upraviteljem plošč. Za programiranje mikrokrmilnika morate imeti tudi 3,3-voltni serijski vmesnik USB.

Predvidevam tudi, da imate posrednika MQTT in strežnik Node-RED. Če ne, je na internetu veliko navodil, vendar bi vam svetoval, da uberete leno pot in uporabite odličen namestitveni skript Petra Scargilla, če želite to zagnati na katerem koli Pi ali Ubuntu, ali uporabite sliko Andreasa Spiess za Pi Zero W (povezave v opisu tega videoposnetka), kar vam bo prihranilo nekaj ur gledanja izvajanja namestitvenih skriptov. Druga možnost je, da lahko vdelano programsko opremo pošljete neposredno po e -pošti, vendar boste pri tem izgubili veliko prožnosti.

Deli

  • 1 zaprta, 3 AA škatla za baterije
  • 2 bateriji AA
  • 1 modul ESP8266. Za ta projekt sem uporabil ESP-01
  • 1 mikro stikalo
  • 1 47K upor
  • 1 upor 4M7
  • 1 2.2uF kondenzator
  • 1 tanka plastična cev. Uporabil sem pero
  • 1 debela, dolga vžigalica ali palica za liziko. Z lahkoto se prilega in premika v plastični cevi

2. korak: Strojna oprema: škatla, stikalo in ožičenje

Strojna oprema: škatla, stikalo in ožičenje
Strojna oprema: škatla, stikalo in ožičenje
Strojna oprema: škatla, stikalo in ožičenje
Strojna oprema: škatla, stikalo in ožičenje
Strojna oprema: škatla, stikalo in ožičenje
Strojna oprema: škatla, stikalo in ožičenje

Začel sem s staro škatlo za baterije iz pokojne božične dekoracije. Zasnovan je bil za tri baterije velikosti AA. Ker bo ESP8266 lepo deloval na 3 voltih, bi lahko uporabil dve bateriji in tretji položaj za mikro krmilnik. Opazite, kako je škatla imela majhen dodaten predal, ki bi ga lahko uporabil za stikalo za vklop. Uporabil sem zelo pogost tip stikala, prikazan na slikah, vendar sem odstranil vzmet, ki ga zaskoči v položaju za vklop ali izklop. Na NC kontakte sem spajkal dve tanki žici in jo z majhno kapljico super lepila zlepil v škatlo.

Nato sem izvrtal luknjo v zgornjem pokrovu, ki ustreza plastični cevi iz kemičnega svinčnika. Luknja se natančno poravna s stikalom in vodi bat iz debele palice za vžigalice.

Nazadnje sem spajal še dve žici na kontakte akumulatorja in vse štiri žice vodil v položaj tretje baterije, kjer naj bi bil mikrokrmilnik.

3. korak: Strojna oprema: ESP-01

Strojna oprema: ESP-01
Strojna oprema: ESP-01
Strojna oprema: ESP-01
Strojna oprema: ESP-01
Strojna oprema: ESP-01
Strojna oprema: ESP-01

Glede na zahtevo WiFi celotni projekt kriči ESP8266. Ta majhen krmilnik WiFi je postal najljubši delovni konj skupnosti petljanja kot modul, ki ga je mogoče kupiti za manj kot 2,50 EUR in vključuje poln sklad WiFi in TCP/IP z več kot dovolj prostora za zagon lastnih programov. Arduino IDE (ali Atom z vtičnikom PlatformIO) v celoti podpira ESP8266.

Ponavadi bi vzel ESP-12F, toda okrog sem imel majhno ploščo ESP-01, ki je bila kot nalašč za delo in se lepo prilega v škatlo za baterije. Edina težava je, da je v ESP-01 precej zapleteno utripati vdelano programsko opremo. Več o tem v naslednjem koraku. Izvesti je treba eno spremembo: rdečo LED za napajanje morate odstraniti s plošče, saj nenehno črpa 3mA. Z odstranjeno LED diodo modul v načinu globokega spanca porabi le nekaj deset uA, zaradi česar bo z dvema kakovostnima baterijama AA zdržal več kot eno leto.

Izkazalo se je, da bi lahko uporabil dva traka 4-polnih ženskih glav in spajkala na nekaj dodatnih komponentah v prosti obliki, da bi lahko odstranila ESP-01 za posodobitev vdelane programske opreme, medtem ko bi se še vedno spravil v tretji predal za baterije.

Zelo pomembno je, da pravilno priključite ESP. Z zgornjo goljufijo ga povežite na naslednji način.

  1. Baterija plus do Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) in 47K upor.
  2. Minus baterije do GND (A1) in ena žica stikala.
  3. Druga žica stikala na kondenzator 100nF in upor 4M7.
  4. Odprti konci obeh uporov in kondenzatorja na RST (C2).
  5. TXD (A2) lahko ostane nepovezan.

Edit: ESP-01 sem moral zamenjati, ker sem naredil neumno napako in jo uničil. Izkazalo se je, da se na moje presenečenje novi ESP-01 ni ponastavil s prvotnim kondenzatorjem 100nF. Verjetno ima nekoliko drugačno zasnovo. Zamenjal sem ga z 2.2 uF in zdaj spet deluje

Ko končate, lahko vse namestite v škatlo, vendar počakajte, najprej moramo programirati modul.

4. korak: Programiranje ESP-01

Programiranje ESP-01
Programiranje ESP-01
Programiranje ESP-01
Programiranje ESP-01
Programiranje ESP-01
Programiranje ESP-01

Če želite na svojem ESP-01 utripati vdelano programsko opremo, lahko zgradite majhno ploščad ali kupite (skoraj) popoln programer za približno 1 evro.

Strojna oprema za programiranje

Zgradite majhno ploščad z dvema ženskima glavoma za ESP-01. Potrebujete tudi serijski modul USB, ki zmore 3,3 volta. Upoštevajte, da čip ESP8266 ni utrjen s 5 volti, zato lahko napaka tukaj ubije vaš modul. Kakor koli že, znova uporabite goljufanje, ožičite svojo ploščad na naslednji način:

  1. 3.3V iz modula USBSerial v Vcc, CH_PD, RST in GPIO2.
  2. GND serijskega modula USB na GND in GPIO0.
  3. TXD serijskega modula USB na RXD.
  4. RDX serijskega modula USB na TXD.

Predprogramirani programer

Čeprav je zabavno graditi svoje stvari, je lažji pristop pridobiti vmesnik ESP-01 do serijskega vmesnika s svojega najljubšega dražbenega mesta, oglejte si zgornjo sliko. To je veliko lažje, bolj kompaktno in bolj zanesljivo kot ploščad. Nekateri od teh pa niso programerji, le serijski vmesniki. Žični most med GND (pin A1) in GPIO0 (pin C1) morate spajkati na zadnji strani vmesnika, glejte drugo sliko. Upoštevajte, da je treba ESP-01 priključiti tako, da je antena obrnjena proti vtiču USB, ne obratno!

Opomba: obstajajo tudi s stikalom, glej tretjo sliko, zelo lepo.

Naložite vdelano programsko opremo

Ob predpostavki, da je Arduino IDE 1.8.3 ali novejši, izberite Orodja> Plošča in izberite ploščo, ki jo imate. Za ESP-01, kot sem ga uporabil, izberite "Generic ESP8266 Module" in nastavite naslednje možnosti (to morajo biti vse privzete vrednosti):

  1. Način bliskavice: DIO
  2. Frekvenca bliskavice: 40 MHz
  3. Frekvenca procesorja: 80 MHz
  4. Velikost bliskavice: 512 KB (64 KB SPIFFS) Opomba: če uporabljate črno ploščo ESP-01, izberite 1 MB (64 KB SPIFFS)
  5. Vrata za odpravljanje napak: onemogočeno
  6. Raven odpravljanja napak: Ni
  7. Način ponastavitve: ck
  8. Hitrost nalaganja 115200
  9. Vrata: izberite vrata, ki so priključena na vaš serijski vmesnik USB. Za moj računalnik Ubuntu, ki je bil /dev /ttyUSB0

Priključite ploščad/programer, naložite skico, ki jo najdete tukaj https://gitlab.com/jeroenmeijer/Mailbox.git. Vnesite poverilnice posrednika WiFi in MQTT ter konfiguracijo IP v config.h in izberite Naloži.

5. korak: Vse sestavite

Sestavljanje vsega
Sestavljanje vsega

V notranjem pokrovu nabiralnika sem izvrtal luknjo za plastično cev, čim bližje tečaju, nato pa vroče zlepil baterijsko škatlo na spodnjo stran tega pokrova. Nato sem kot bat uporabil debelo vžigalico. Uporabil sem izrezek, da sem ujemalko prerezal na dolžino, tako da bi se stikalo odprlo, če bi bil zunanji pokrov zaprt. Povezanost sem preveril tako, da sem med izvajanjem programa mosquitto_sub odprl pokrov za spremljanje sporočil MQTT (zamenjajte mqttbroker, uporabnika in geslo s konfiguracijo MQTT):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u uporabniško -P geslo

Približno šest sekund po odprtju zunanjega pokrova je objavljeno naslednje sporočilo MQTT. Čas se porabi za prebujanje mikrokrmilnika in vzpostavitev povezave WiFi in posrednika.

stat/nabiralnik/sprožilec {"vcc": 3050, "flap": true, "prev": 0, "RSSI": 29, "version": "005"}

V tem času je mikrokrmilnik porabil približno 70 mA. Ko konča, gre v globok spanec in v mojem primeru je porabil manj kot 20uA. "flap" je vedno res, "vcc" navaja napetost baterije v mV in "prev" mora biti 0. Če je 1 ali 2, to pomeni, da nabiralnik ni mogel poslati sporočila prej, ker se ni mogel povezati z WiFi ali ker se ni mogel povezati z posrednikom MQTT. "RSSI" je moč signala WiFi. Oboje je zelo priročno za diagnosticiranje težav.

Dobro je, da nekaj dni spremljate napetost akumulatorja, da zagotovite, da naprava deluje, kot je predvideno, in da iz nekega razloga ne izprazni baterije.

Vdelana programska oprema se lahko tudi samodejno posodablja (OTA), vendar to nekoliko presega obseg tega navodila. Za tiste, ki jih zanima, je konfiguracija OTA tudi v config.h.

Korak 6: Uporaba Node-RED za delovanje na sporočilu MQTT

Uporaba Node-RED za delovanje na sporočilu MQTT
Uporaba Node-RED za delovanje na sporočilu MQTT

Končno sem ustvaril preprost tok v Node-RED. Prvo vozlišče se naroči na temo nabiralnika (stat/poštni predal/sprožilec). Ko je prejeto sporočilo, drugo vozlišče oblikuje e -poštno sporočilo *). Končno vozlišče ga pošlje na moj gmail naslov z uporabo gmaila kot strežnika SMTP. Telefon me bo nato opozoril na novo pošto.

V delček gitlaba sem dodal tok Node-RED, tako da ga lahko uvozite v svoje tokove Node-RED.

Seveda lahko dodate še nekaj vozlišč, na primer za beleženje dogodkov nabiralnika v MariaDb ali SqlLite ali ustvarite dodatne alarme, ko napetost baterije pade pod 2,7 volta.

Vesel lov na pošto!

*) Glej naslednjo stran, namesto e -pošte uporabljam PushBullet.

7. korak: Pomisleki

Vedno obstaja občutek, da bi stvari lahko naredili bolje.

Preklopite

Namesto nekoliko nerodnega pristopa bata bi raje uporabil (super) magnet in trstični kontakt. Razloga sta bila dva. Eno je, da ni bilo mogoče, da bi to delovalo z zapiranjem kontakta, ko je bila škatla odprta, in če je bila vedno zaprta, je vedno tekel majhen tok. Če pogledamo nazaj, manj kot 1uA, ki teče skozi upor 4M7, ne bi predstavljalo velikega pomena glede življenjske dobe baterije. Druga je bila bolj praktična. Ta projekt sem si izmislil v soboto in napisal programsko opremo, v nedeljo pa vse sestavil iz tistega, kar je ležalo naokoli. Enostavno nisem imel stika s trstiko v škatli za smeti.

Opomba: kot je komentiral diy_bloke, imajo trstični stiki navadno lepljivost, ko se dolgo časa magnetizirajo, zato morda bat sploh ni bil tako slaba ideja. Bomo videli. *)

Sporočilo o praznjenju

Nabiralnik pošlje tudi sporočilo, ko ga izpraznite. To ni nič hudega, a ker več ljudi v hiši prejme opozorilo, bi lahko končali v zanki in preverili nabiralnik, ki kljubuje njegovemu celotnemu namenu! Obstaja nekaj načinov za to, na primer preverjanje, ali je notranji pokrov dvignjen, in če je tako, ne pošiljajte sporočila. Ali namesto stikala za pokrov namestite detektor na dno nabiralnika. Ali pa majhen gumb za ponastavitev, ki ga pritisnete pri praznjenju. Vendar bi vse skupaj zapletlo in verjetno poslabšalo zanesljivost.

Sporočila

Pošiljanje e -pošte je precej učinkovit, a grob način opozarjanja. Bolj eleganten način bi bila aplikacija za telefon, vendar nisem našel aplikacije za nadzorno ploščo Android MQTT, ki bi jo bilo mogoče konfigurirati tako, da sproži opozorilo operacijskega sistema, ko prejme določeno sporočilo. Če je kakšen v bližini, ga dodajte v komentarje. **)

*) Po več kot enem letu delovanja se je izkazalo, da se palica za liziko, ki sem jo uporabil, v bistvu trdo valjani papir, pod stalnim pritiskom stikalne vzmeti nagiba k skrajšanju. Po nekaj odpravljanju težav sem ga zamenjal z leseno palico.

**) Zdaj uporabljam PushBullet za potisna sporočila, ločeno od nadzorne plošče MQTT. Majhen Node-RED nizki vmesniki za API najdete tukaj. Prepričajte se, da v vozlišču "Pripravi se na pushbullet" vnesite žeton za dostop in svoj e -poštni naslov za nadomestne namene v vozlišču "Poskusi znova".

Priporočena: