INHOUDSOPGAWE:

MQTT- en Wifi -aangedrewe posbusvlag: 7 stappe (met foto's)
MQTT- en Wifi -aangedrewe posbusvlag: 7 stappe (met foto's)

Video: MQTT- en Wifi -aangedrewe posbusvlag: 7 stappe (met foto's)

Video: MQTT- en Wifi -aangedrewe posbusvlag: 7 stappe (met foto's)
Video: Счастливая история слепой кошечки по имени Нюша 2024, November
Anonim
Vlag met posbus met MQTT en Wifi
Vlag met posbus met MQTT en Wifi

Opmerking: opgedateer met nuwe firmware, 'n skematiese en wenke vir 'n programmeerder

Ek het 'n paar jaar met my eie tuis -outomatiseringsprojek begin. Dit het begin met die bou van 'n bedienerbeheerde 433 MHz -sender gebou met 'n Arduino om baie goedkoop afstandskakelaars op PT2262 te skakel. Later het ek 'n Arduino -ontvanger vir my weerstasie bygevoeg, die stuurkontak van my EV -laaier aangesluit, ens. Dinge het al hoe meer verweef (en ingewikkeld!) Dus, 'n paar maande gelede het ek besluit om alles op MQTT te baseer vir boodskappe, Node-RED vir outomatisering (beide op 'n enkele Raspberry Pi B+) en MariaDb vir aanmelding (loop op my Synology NAS). Later het ek ook die MQTT-makelaar (Mosquitto) en Node-RED na die NAS oorgeplaas.

Hierdie instruksies beskryf 'n dom en pret-projek wat my straatbus in hierdie huisinfrastruktuur haak. Die idee is dat as iemand die posbus op die omheining ongeveer 10 meter van die voordeur oopmaak, dit my op my foon en moontlik ander toestelle aandui.

Stap 1: uiteensetting, voorvereistes en onderdele

Buitelyn

Op 'n hoë vlak moet die posbus, wanneer dit oopgemaak word, 'n unieke MQTT -boodskap aan die makelaar stuur, sodat intekenare op die onderwerp ingelig word. Node-RED teken ook in en doen outomatisering, en stuur in hierdie geval 'n e-pos en/of 'n stootboodskap na my telefoon.

Die posbus moet op batterye werk en minstens 'n jaar lank werk, en dit moet met my WiFi -netwerk gedoen word. Omdat dit 'n paar sekondes kan neem om 'n mikrobeheerder en 'n verbinding met 'n WiFi-netwerk aan te wakker, kon ek nie die aktiveringsskakelaar gebruik om die krag te onderbreek nie. In plaas daarvan moet die verwerker sy besigheid kan voltooi nadat die posbus se deksel reeds toegemaak is.

Voorvereistes

Ek neem aan dat u beskeie soldeervaardighede het, 'n bietjie met die Arduino IDE gewerk het en dat u die ESP8266 -borde geïnstalleer het met behulp van die Boards Manager. U moet ook 'n 3,3 volt USB-reeksadapter hê om die mikrobeheerder te programmeer.

Ek neem ook aan dat u 'n MQTT-makelaar en 'n Node-RED-bediener het. As dit nie die geval is nie, is daar baie instruksies op die internet, maar ek raai u aan om die lui pad te volg en die uitstekende installeringsskrif van Peter Scargill te gebruik as u dit op enige Pi of Ubuntu wil gebruik, of die beeld van Andreas Spiess vir die Pi Zero W (skakels in die beskrywing van die video), wat u 'n paar uur bespaar om na die installeringskripte te kyk. Alternatiewelik kan u die firmware direk 'n e -pos stuur, maar u verloor baie buigsaamheid.

Dele

  • 1 geslote, 3 AA -batterykas
  • 2 AA batterye
  • 1 ESP8266 -module. Vir hierdie projek het ek 'n ESP-01 gebruik
  • 1 mikroskakelaar
  • 1 47K weerstand
  • 1 4M7 weerstand
  • 1 2.2uF kapasitor
  • 1 dun plastiekbuis. Ek het 'n pen gebruik
  • 1 dik, lang vuurhoutjie of suigstokkie. Dit moet maklik in die plastiekbuis pas en beweeg

Stap 2: Hardeware: die boks, skakelaar en bedrading

Hardeware: die boks, skakelaar en bedrading
Hardeware: die boks, skakelaar en bedrading
Hardeware: die boks, skakelaar en bedrading
Hardeware: die boks, skakelaar en bedrading
Hardeware: die boks, skakelaar en bedrading
Hardeware: die boks, skakelaar en bedrading

Ek het begin met 'n ou batterykas van 'n kersversiering wat opgehou het. Dit is ontwerp vir drie AA -grootte batterye. Aangesien die ESP8266 goed werk op 3 volt, kan ek twee batterye gebruik en die derde posisie vir die mikrobeheerder gebruik. Let op hoe die boks 'n klein ekstra kompartement gehad het wat ek vir die aktiveringsskakelaar kon gebruik. Ek het 'n baie algemene tipe skakelaar op die foto's gebruik, maar het die veer verwyder wat dit in die aan- of af -posisie vasmaak. Ek het twee dun drade aan die NC -kontakte gesoldeer en dit met 'n klein druppel supergom in die boks vasgeplak.

Vervolgens het ek 'n gat in die boonste deksel geboor wat ooreenstem met 'n plastiekbuis uit 'n balpen. Die gat pas presies met die skakelaar en lei 'n plunjer van 'n dik vuurhoutjie.

Uiteindelik het ek nog twee drade aan die batterykontakte gesoldeer en al vier die drade gelei na die posisie van die derde battery, waar die mikrobeheerder sou wees.

Stap 3: Hardeware: die ESP-01

Hardeware: die ESP-01
Hardeware: die ESP-01
Hardeware: die ESP-01
Hardeware: die ESP-01
Hardeware: die ESP-01
Hardeware: die ESP-01

Gegewe die WiFi -vereiste, skree die hele projek ESP8266. Hierdie klein WiFi -kontroleerder het die gunsteling werksperd van die geknoei -gemeenskap geword as 'n module wat onder EUR 2,50 gekoop kan word en 'n volledige WiFi- en TCP/IP -stapel integreer, met meer as genoeg ruimte om u eie programme uit te voer. Die Arduino IDE (of Atom met die PlatformIO -inprop) ondersteun die ESP8266 ten volle.

Ek sou gewoonlik 'n ESP-12F neem, maar ek het 'n klein ESP-01-bordjie laat lê wat perfek was vir die werk en wat goed in die batterykas pas. Die enigste probleem is dat dit baie ingewikkeld is om firmware in die ESP-01 te flits. Meer hieroor in die volgende stap. Daar is een wysiging wat u moet aanbring: u moet die rooi krag -LED van die bord verwyder, aangesien dit voortdurend 3mA trek. As die LED verwyder is, gebruik die module slegs 'n paar tiene uA in die slaap -modus, wat dit langer as 'n jaar op twee kwaliteit AA -batterye kan hou.

Dit het geblyk dat ek twee stroke 4-pins vroulike kopstukke en soldeersels op die paar ekstra komponente in vrye vorm kon gebruik, sodat ek die ESP-01 kon verwyder om die firmware op te dateer, terwyl dit nog in die derde batterykompartement sou pas.

Dit is baie belangrik om die ESP korrek te bedraad. Gebruik die bogenoemde bedekkingblad en rol dit soos volg op.

  1. Battery plus Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) en 'n weerstand van 47K.
  2. Battery minus GND (A1) en een draad van die skakelaar.
  3. Die ander draad van die skakelaar na 'n 100nF -kondensator en 'n 4M7 -weerstand.
  4. Die oop ente van beide weerstande en die kapasitor na RST (C2).
  5. TXD (A2) kan nie verbind bly nie.

Edit: Ek moes die ESP-01 vervang omdat ek 'n dom fout gemaak het en dit vernietig het. Dit blyk dat die nuwe ESP-01 tot my verbasing nie herstel is met die oorspronklike 100nF-kapasitor nie. Dit het waarskynlik 'n effens ander ontwerp. Ek het dit vervang met 'n 2.2 uF een en nou werk dit weer

As dit klaar is, kan alles in die boks gemonteer word, maar hou eers vas; eers moet ons die module programmeer.

Stap 4: Programmering van die ESP-01

Die programmering van die ESP-01
Die programmering van die ESP-01
Die programmering van die ESP-01
Die programmering van die ESP-01
Die programmering van die ESP-01
Die programmering van die ESP-01

Om die firmware op u ESP-01 te laat flits, kan u 'n klein tuig bou of 'n (byna) volledige programmeerder koop vir ongeveer 1 euro.

Programmeer hardeware tuig

Bou 'n klein tuig met weer twee kopstukke vir die ESP-01. U benodig ook 'n USB Serial -module wat 3,3 volt kan verskaf. Let daarop dat die ESP8266 -chip nie 5 volt verhard is nie, so 'n fout hier kan u module doodmaak. In elk geval, weer met behulp van die cheat sheet, draad u tuig soos volg:

  1. 3.3V van die USBSerial -module na Vcc, CH_PD, RST en GPIO2.
  2. GND van die USBSerial -module na GND en GPIO0.
  3. TXD van die USBSerial -module na RXD.
  4. RDX van die USBSerial -module na TXD.

Voorafgeboude programmeerder

Dit is net so lekker om u eie goed te bou, maar die luier benadering is om 'n ESP-01-na-reeks-koppelvlak van u gunsteling veilingswerf te kry, sien die prent hierbo. Dit is baie makliker, meer kompak en betroubaarder as 'n tuig. Sommige hiervan is egter nie programmeerders nie, maar slegs seriële koppelvlakke. U moet 'n draadbrug tussen GND (pen A1) en GPIO0 (pen C1) aan die agterkant van die koppelvlak soldeer, sien die tweede prentjie. Let daarop dat die ESP-01 met die antenna in die rigting van die USB-aansluiting gekoppel moet word, nie andersom nie!

Let wel: hulle bestaan ook met 'n skakelaar, sien die derde prentjie, baie mooi.

Laai die firmware

As ons aanvaar dat 'n Arduino IDE van 1.8.3 of later is, kies dan Tools> Board en kies die bord wat u het. Vir 'n ESP-01 soos ek gebruik het, kies 'Generic ESP8266 Module' en stel die volgende opsies in (dit moet al die standaard wees):

  1. Flitsmodus: DIO
  2. Flitsfrekwensie: 40MHz
  3. CPU frekwensie: 80MHz
  4. Flitsgrootte: 512KB (64KB SPIFFS) Let wel: as u 'n swart ESP-01-bord gebruik, kies 1MB (64KB SPIFFS)
  5. Ontfoutpoort: Gedeaktiveer
  6. Ontfoutvlak: Geen
  7. Herstel metode: ck
  8. Oplaaisnelheid 115200
  9. Poort: kies die poort wat gekoppel is aan u USB Serial -koppelvlak. Vir my Ubuntu -rekenaar was dit /dev /ttyUSB0

Sluit die tuig/programmeerder aan, laai die skets wat u hier kan vind https://gitlab.com/jeroenmeijer/Mailbox.git. Gee u geloofsbriewe vir u WiFi- en MQTT -makelaar en u IP -opset in config.h en kies Laai op.

Stap 5: Monteer dit alles

Monteer dit alles
Monteer dit alles

Ek het 'n gat vir die plastiekbuis in die binneste deksel van my posbus geboor, so naby as moontlik aan die skarnier, en daarna die batterykas aan die onderkant van die deksel vasgeplak. Daarna gebruik ek 'n dik vuurhoutjie as 'n suier. Ek gebruik 'n snip om die vuurhoutjie in lengte te sny sodat die skakelaar kan oopgaan as die buitedeksel toegemaak word. Ek het die konneksie nagegaan deur die deksel oop te maak terwyl ek mosquitto_sub gebruik om MQTT -boodskappe te monitor (vervang mqttbroker, gebruiker en wagwoord met u MQTT -opset):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u gebruiker -P wagwoord

Ongeveer ses sekondes nadat die buitenste deksel oopgemaak is, word die volgende MQTT -boodskap gepubliseer. Die tyd word gebruik om die mikrobeheerder wakker te maak en die WiFi- en makelaarsverbinding tot stand te bring.

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

Gedurende hierdie tyd gebruik die mikrobeheerder ongeveer 70mA. As dit klaar is, slaap dit diep en in my geval gebruik dit minder as 20uA. 'flap' is altyd waar, 'vcc' noem die batteryspanning in mV en 'prev' moet 0. As dit 1 of 2 is, beteken dit dat die posbus nie vroeër 'n boodskap kon stuur nie, óf omdat dit nie kon koppel nie die WiFi, of omdat dit nie kon koppel aan die MQTT -makelaar nie. "RSSI" is die sterkte van die WiFi -sein. Albei is baie handig om probleme op te spoor.

Dit is 'n goeie idee om die batteryspanning vir 'n paar dae te monitor om te verseker dat die toestel werk soos bedoel en om een of ander rede nie die battery leegmaak nie.

Die firmware kan homself ook via die lug (OTA) opdateer, maar dit is 'n bietjie buite die omvang van hierdie instruksies. Vir belangstellendes is die OTA -opset ook in config.h.

Stap 6: Gebruik Node-RED om op die MQTT-boodskap op te tree

Gebruik Node-RED om op die MQTT-boodskap op te tree
Gebruik Node-RED om op die MQTT-boodskap op te tree

Uiteindelik het ek 'n eenvoudige vloei in Node-RED geskep. Die eerste knoop teken in op die onderwerp van die posbus (stat/posbus/sneller). As 'n boodskap ontvang word, formateer die tweede node 'n e -pos *). Die finale node stuur dit na my gmail -adres, met behulp van gmail as SMTP -bediener. My foon sal my dan in kennis stel van nuwe pos.

Ek het die Node-RED-vloei by 'n gitlab-brokkie gevoeg, sodat u dit in u Node-RED-vloei kan invoer.

U kan natuurlik nog 'n paar nodusse byvoeg, byvoorbeeld om die posbusgebeurtenisse by MariaDb of SqlLite aan te meld, of ekstra alarms te skep as die batteryspanning onder 2,7 volt daal.

Gelukkige posjag!

*) Sien die volgende bladsy, ek gebruik PushBullet nou in plaas van e -pos.

Stap 7: Na-gedagtes

Daar is altyd die gevoel dat dinge beter gedoen kon word.

Skakel oor

Ek sou verkies om 'n (super) magneet en 'n rietkontak te gebruik in plaas van die ietwat lomp plunjerbenadering. Daar was twee redes. Die een is dat ek dit nie kon regkry deur die kontak toe te maak wanneer die boks oopgemaak word nie, en as dit altyd gesluit was, beteken dit dat daar altyd 'n klein stroom sou vloei. Terugskouend sou die minder as 1uA wat deur die 4M7 -weerstand vloei nie 'n groot probleem gewees het wat die batterylewe betref nie. Die ander was meer prakties. Ek het hierdie projek Saterdag opgestel en die sagteware geskryf, dit alles op Sondag gebou uit wat daar lê. Ek het eenvoudig nie 'n rietkontak in die rommelbak nie.

Let wel: soos diy_bloke gesê het, het rietkontakte 'n neiging om taai te word as hulle lank gemagnetiseer word, so miskien was die suier glad nie so 'n slegte idee nie. Ons sal sien. *)

Boodskap oor leegmaak

Die posbus stuur ook 'n boodskap uit wanneer dit leeggemaak word. Dit is nie 'n groot probleem nie, maar as meer mense in die huis die waarskuwing kry, kan 'n mens in 'n lus beland om die posbus na te gaan en die hele doel daarvan te weerstaan! Daar is 'n paar maniere om dit te doen, soos om te kyk of die binneste deksel opgelig is, en indien nie, stuur nie 'n boodskap nie. Of installeer 'n detektor onderaan die posbus in plaas van die dekselskakelaar te gebruik. Of 'n klein reset -knoppie om ingedruk te word wanneer u dit leegmaak. Alles sou egter dinge bemoeilik en waarskynlik die betroubaarheid versleg.

Boodskappe

Die stuur van e -pos is 'n redelik effektiewe, maar growwe manier om die waarskuwing uit te skakel. 'N Meer elegante manier sou 'n telefoonprogram wees, maar ek het nie 'n Android MQTT -dashboard -app gevind wat gekonfigureer kan word om 'n bedryfstelselwaarskuwing te aktiveer as 'n sekere boodskap ontvang word nie. As daar een is, voeg dan by die kommentaar. **)

*) Na meer as 'n jaar in werking, blyk dit dat die suigstokkie wat ek gebruik het, basies hardgewalste papier, neig om onder die konstante druk van die skakelaarveer te verkort. Na 'n bietjie probleemoplossing het ek dit vervang met 'n houtstok.

**) Ek gebruik PushBullet nou vir stootboodskappe, apart van die MQTT -dashboard. U kan hier 'n klein Node-RED-lae koppelvlak met die API vind. Maak seker dat u die nodige token in die knoppie "Berei voor vir pushbullet" en u e -posadres vir terugvoerdoeleindes in die knoop "Herprobeer" verskaf.

Aanbeveel: