Talaan ng mga Nilalaman:

MQTT at Wifi Powered Mailbox Flag: 7 Mga Hakbang (na may Mga Larawan)
MQTT at Wifi Powered Mailbox Flag: 7 Mga Hakbang (na may Mga Larawan)

Video: MQTT at Wifi Powered Mailbox Flag: 7 Mga Hakbang (na may Mga Larawan)

Video: MQTT at Wifi Powered Mailbox Flag: 7 Mga Hakbang (na may Mga Larawan)
Video: #126 Cheap MQTT Broker on Raspberry Zero W / DietPi / MQTT Message Logger SQlite / PHPliteAdmin 2024, Hulyo
Anonim
MQTT at Wifi Powered Mailbox Flag
MQTT at Wifi Powered Mailbox Flag

Tandaan: na-update gamit ang bagong firmware, isang eskematiko at isang tip para sa isang programmer

Ilang taon na nagsimula ako sa aking sariling proyekto sa automation ng bahay. Nagsimula ito sa pamamagitan ng pagbuo ng isang server na kinokontrol ang 433 MHz transmitter build gamit ang isang Arduino upang lumipat ng maraming murang PT2262 based remote switch. Nang maglaon ay nagdagdag ako ng isang Arduino based na tatanggap para sa aking istasyon ng panahon, na-hook up ang control contact ng aking EV charger, atbp. Ang mga bagay ay lumago nang higit pa at higit na magkakaugnay (at kumplikado!). Kaya, ilang buwan na ang nakaraan napagpasyahan kong gawing pamantayan ang lahat batay sa MQTT para sa pagmemensahe, Node-RED para sa awtomatiko (kapwa tumatakbo sa isang solong Raspberry Pi B +) at MariaDb para sa pag-log (tumatakbo sa aking Synology NAS). Nang maglaon inilipat ko ang MQTT broker (Mosquitto) at Node-RED sa NAS din..

Ang itinuturo na ito ay naglalarawan ng isang hangal na for-fun na proyekto na nakakabit ang aking mailagay sa mailbox sa kalye sa imprastrakturang ito sa bahay. Ang ideya ay kung ang isang tao ay magbubukas ng bakod na naka-mount sa mailbox mga 10 metro mula sa pintuan, ito ay hudyat sa akin sa aking telepono at marahil iba pang mga aparato.

Hakbang 1: Balangkas, Mga Kinakailangan at Bahagi

Balangkas

Sa isang mataas na antas, dapat ang mailbox, kapag binuksan, ay magpadala ng isang natatanging mensahe ng MQTT sa broker, upang masabihan ang mga subscriber sa paksang iyon. Nag-subscribe din ang Node-RED at gumagawa ng ilang pag-aautomat, sa kasong ito nagpapadala ng isang email at / o isang push message sa aking telepono.

Ang mailbox ay dapat na tumakbo sa mga baterya at tumakbo nang hindi bababa sa isang taon, at dapat gawin ito gamit ang aking WiFi network. Tulad ng paggising ng isang micro-controller at pagkonekta sa isang WiFi network ay maaaring tumagal ng ilang segundo, hindi ko magamit ang switch ng activation upang putulin ang lakas. Sa halip, dapat payagan ang processor na tapusin ang negosyo nito pagkatapos magsara ang takip ng mailbox.

Mga Prerequistite

Ipinapalagay ko na mayroon kang katamtamang mga kasanayan sa paghihinang, nagtrabaho nang kaunti sa Arduino IDE, at na-install ang mga board ng ESP8266 gamit ang Boards Manager. Kailangan mo ring magkaroon ng isang 3.3 volt USB Serial adapter upang mai-program ang micro-controller.

Ipinapalagay ko rin na mayroon kang isang MQTT broker at isang Node-RED server na tumatakbo. Kung hindi, maraming mga tagubilin sa Internet, ngunit payuhan ko na gawin ang tamad na ruta at gamitin ang mahusay na pag-install na script ni Peter Scargill kung nais mong patakbuhin ito sa anumang Pi o Ubuntu, o gamitin ang imahe ni Andreas Spiess para sa Pi Zero W (mga link sa paglalarawan ng video na iyon), na makakapag-save sa iyo ng ilang oras ng panonood na tumatakbo ang mga script ng pag-install. Bilang kahalili, maaari mong gawin ang firmware nang direkta magpadala ng isang email, ngunit maluluwag mo ang maraming kakayahang umangkop sa paggawa nito.

Mga Bahagi

  • 1 sarado, 3 kahon ng baterya ng AA
  • 2 baterya ng AA
  • 1 module ng ESP8266. Para sa proyektong ito gumamit ako ng isang ESP-01
  • 1 micro-switch
  • 1 47K risistor
  • 1 4M7 risistor
  • 1 2.2uF capacitor
  • 1 manipis na plastik na tubo. Gumamit ako ng panulat
  • 1 makapal, mahabang tugma o lollipop stick. Dapat itong madaling magkasya at ilipat sa plastic tube

Hakbang 2: Hardware: ang Kahon, Lumipat at Mga Kable

Hardware: ang Kahon, Lumipat at Mga Kable
Hardware: ang Kahon, Lumipat at Mga Kable
Hardware: ang Kahon, Lumipat at Mga Kable
Hardware: ang Kahon, Lumipat at Mga Kable
Hardware: ang Kahon, Lumipat at Mga Kable
Hardware: ang Kahon, Lumipat at Mga Kable

Nagsimula ako sa isang lumang kahon ng baterya mula sa isang hindi na ginagamit na dekorasyon ng Pasko. Dinisenyo ito para sa tatlong mga bateryang may sukat sa AA. Bilang ang ESP8266 ay tatakbo nang maayos sa 3 volt, maaari akong gumamit ng dalawang baterya at gamitin ang pangatlong posisyon para sa micro-controller. Pansinin kung paano ang kahon ay may isang maliit na labis na kompartimento na maaari kong magamit para sa switch ng pag-aktibo. Gumamit ako ng isang napaka-karaniwang uri ng switch na ipinapakita sa mga larawan, ngunit inalis ang tagsibol na na-latch ito sa posisyon ng on o off. Inhinang ko ang dalawang manipis na mga wire sa mga contact sa NC at idinikit ito sa kahon na may isang maliit na patak ng sobrang pandikit.

Susunod, nag-drill ako ng isang butas sa tuktok na takip na tumutugma sa isang plastik na tubo na kinuha mula sa isang bolpen. Ang mga butas ay linya nang eksakto gamit ang switch at gabay ng isang plunger na ginawa mula sa isang makapal na tugma ng tugma.

Sa wakas, naghinang ako ng dalawa pang mga wire sa mga contact ng baterya at iginiya ang lahat ng apat na mga wire sa posisyon ng pangatlong baterya, kung saan ang micro-controller ay magiging.

Hakbang 3: Hardware: ang ESP-01

Hardware: ang ESP-01
Hardware: ang ESP-01
Hardware: ang ESP-01
Hardware: ang ESP-01
Hardware: ang ESP-01
Hardware: ang ESP-01

Dahil sa kinakailangan ng WiFi, ang buong proyekto ay sumisigaw ng ESP8266. Ang maliit na WiFi control na ito ay naging paboritong workhorse ng komunidad ng tinkering bilang isang module na binili sa ilalim ng EUR 2.50 at isinasama ang isang buong WiFi at TCP / IP stack, na may higit sa sapat na kapasidad na matitira upang patakbuhin ang iyong sariling mga programa. Ang Arduino IDE (o Atom kasama ang plugin ng PlatformIO) ay ganap na sumusuporta sa ESP8266.

Karaniwan akong kukuha ng isang ESP-12F, ngunit mayroon akong isang maliit na board na ESP-01 na inilalagay sa paligid na perpekto para sa trabaho at umaangkop nang maayos sa kahon ng baterya. Ang tanging problema ay iyon ay medyo kumplikado sa flash firmware sa ESP-01. Higit pa sa na sa susunod na hakbang. Mayroong isang pagbabago na gagawin: Kailangan mong alisin ang pulang kapangyarihan na LED mula sa board, dahil patuloy itong kumukuha ng 3mA. Sa tinanggal na LED, gumagamit ang module ng ilang sampu-sampung uA sa deeps Sleep mode na tatagal ng higit sa isang taon sa dalawang kalidad na baterya ng AA.

Ito ay naka-out na maaari kong gumamit ng dalawang piraso ng 4 na pin na mga header ng babae at panghinang sa ilang dagdag na mga bahagi sa libreng form upang maalis ko ang ESP-01 upang mai-update ang firmware, habang magkakasya pa rin ito sa ikatlong kompartimento ng baterya.

Napakahalaga na mai-wire nang tama ang ESP. Gamit ang cheat sheet sa itaas, i-wire ito tulad ng mga sumusunod.

  1. Ang baterya plus sa Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) at isang resistensya ng 47K.
  2. Ang baterya ay minus sa GND (A1) at isang wire ng switch.
  3. Ang iba pang kawad ng switch sa isang 100nF capacitor at isang 4M7 risistor.
  4. Ang bukas na mga dulo ng parehong resistors at ang capacitor sa RST (C2).
  5. Ang TXD (A2) ay maaaring manatiling hindi konektado.

I-edit: Kailangan kong palitan ang ESP-01 dahil gumawa ako ng isang ulok na pagkakamali at nawasak ito. Ito ay nagulat na ang bagong ESP-01 ay hindi na-reset sa orihinal na 100nF capacitor. Marahil ay may isang kakaibang disenyo. Pinalitan ko ito ng isang 2.2 uF isa at ngayon gumagana ulit ito

Kapag tapos na, ang lahat ay maaaring mai-mount sa kahon, ngunit hawakan, kailangan muna nating i-program ang module.

Hakbang 4: Pagprogram ng ESP-01

Programming ang ESP-01
Programming ang ESP-01
Programming ang ESP-01
Programming ang ESP-01
Programming ang ESP-01
Programming ang ESP-01

Upang mai-flash ang firmware sa iyong ESP-01, maaari kang bumuo ng isang maliit na rig o bumili ng isang (halos) kumpletong programmer para sa halos 1 euro.

Programing hardware rig

Bumuo ng isang maliit na kalesa na may muli dalawang mga babaeng header para sa ESP-01. Gayundin, kailangan mo ng isang USB Serial module, na may kakayahang magbigay ng 3.3 volt. Tandaan na ang ESP8266 chip ay hindi 5 volt na tumigas, kaya't ang isang pagkakamali dito ay maaaring pumatay sa iyong module. Gayunpaman, muling paggamit ng cheat sheet, i-wire ang iyong rig tulad ng sumusunod:

  1. 3.3V mula sa module ng USBSerial hanggang Vcc, CH_PD, RST at GPIO2.
  2. GND ng USBSerial module sa GND at GPIO0.
  3. TXD ng module ng USBSerial sa RXD.
  4. RDX ng USBSerial module sa TXD.

Pre-build programmer

Masaya dahil sa pagbuo ng iyong sariling mga bagay, ang mas tamad na diskarte ay upang makakuha ng isang interface ng ESP-01-to-serial mula sa iyong paboritong site sa auction, tingnan ang larawan sa itaas. Ito ay mas madali, mas compact at mas maaasahan kaysa sa isang kalesa. Gayunpaman, ang ilan sa mga ito ay hindi mga programmer, mga serial interface lang. Kailangan mong maghinang ng isang tulay ng kawad sa pagitan ng GND (pin A1) at GPIO0 (pin C1) sa likuran ng interface, tingnan ang pangalawang larawan. Tandaan na ang ESP-01 ay dapat na naka-plug in sa antena na nakaharap sa USB plug, hindi sa ibang paraan!

Tandaan: mayroon din silang isang switch, tingnan ang pangatlong larawan, napakabuti.

I-load ang firmware

Ipagpalagay ang isang Arduino IDE na 1.8.3 o mas bago, piliin ang Mga Tool> Lupon at piliin ang board na mayroon ka. Para sa isang ginamit kong ESP-01, piliin ang "Generic ESP8266 Module", at itakda ang mga sumusunod na pagpipilian (dapat itong lahat ng mga default):

  1. Flash Mode: DIO
  2. Dalas ng Flash: 40MHz
  3. Dalas ng CPU: 80MHz
  4. Laki ng flash: 512KB (64KB SPIFFS) Tandaan: kung gumagamit ka ng isang itim na board na ESP-01, pumili ng 1MB (64KB SPIFFS)
  5. Port ng pag-debug: Hindi pinagana
  6. Antas ng pag-debug: Wala
  7. I-reset ang pamamaraan: ck
  8. Bilis ng pag-upload 115200
  9. Port: piliin ang port na konektado sa iyong USB Serial interface. Para sa aking Ubuntu PC na / dev / ttyUSB0

I-hook up ang rig / programmer, i-load ang Sketch na maaari mong makita dito https://gitlab.com/jeroenmeijer/Mailbox.git. Ibigay ang iyong mga kredensyal sa WiFi at MQTT broker at ang iyong pagsasaayos ng IP sa config.h at piliin ang I-upload.

Hakbang 5: Pag-iipon ng Lahat ng Ito

Pag-iipon ng Lahat ng Ito
Pag-iipon ng Lahat ng Ito

Nag-drill ako ng isang butas para sa plastik na tubo sa panloob na takip ng aking mailbox, na malapit sa bisagra hangga't maaari, pagkatapos ay nakadikit ang kahon ng baterya sa ilalim ng takip na iyon. Sumunod ay gumamit ako ng isang makapal na tugma bilang isang plunger. Gumamit ako ng isang snip upang i-cut ang tugma sa haba upang ang switch ay magbukas kung ang panlabas na takip ay sarado. Sinuri ko ang pagkakakonekta sa pamamagitan ng pagbubukas ng takip habang tumatakbo ang mosquitto_sub upang subaybayan ang mga mensahe ng MQTT (palitan ang mqttbroker, gumagamit at password sa iyong pagsasaayos ng MQTT):

$ mosquitto_sub -h mqttbroker -v -t "stat / #" -u gumagamit -P password

Tinatayang anim na segundo matapos mabuksan ang panlabas na takip ang sumusunod na mensahe ng MQTT ay nai-publish. Ginagamit ang oras upang gisingin ang micro-controller at maitaguyod ang koneksyon sa WiFi at broker.

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

Sa oras na ito, ginamit ng micro-controller ang humigit-kumulang na 70mA. Kapag tapos na, ito ay papunta sa malalim na pagtulog at sa aking kaso gumamit ito ng mas mababa sa 20uA. Ang "flap" ay laging totoo, isinasaad ng "vcc" ang boltahe ng baterya sa mV at ang "prev" ay dapat 0. Kung ito ay 1 o 2, nangangahulugan ito na ang mailbox ay hindi nakapagpadala ng isang mensahe nang mas maaga, alinman dahil hindi ito makakonekta sa ang WiFi, o dahil hindi ito makakonekta sa MQTT broker. Ang "RSSI" ay ang lakas ng signal ng WiFi. Parehong napaka-madaling gamiting upang masuri ang mga problema.

Magandang ideya na subaybayan ang boltahe ng baterya sa loob ng ilang araw upang matiyak na gumagana ang aparato tulad ng inilaan at hindi maubos ang baterya nito sa ilang kadahilanan.

Ang firmware ay nagawa ring i-update ang sarili sa ere (OTA), ngunit medyo lampas sa saklaw ng itinuturo na ito. Para sa mga interesado, ang pagsasaayos ng OTA ay nasa config.h din.

Hakbang 6: Paggamit ng Node-RED upang Kumilos sa Mensahe ng MQTT

Paggamit ng Node-RED upang Kumilos sa MQTT Mensahe
Paggamit ng Node-RED upang Kumilos sa MQTT Mensahe

Sa wakas, lumikha ako ng isang simpleng daloy sa Node-RED. Ang unang node ay nag-subscribe sa paksa ng mailbox (stat / postbox / trigger). Kapag natanggap ang isang mensahe, ang pangalawang node ay nag-format ng isang email *). Ipinapadala ito ng huling node sa aking gmail address, gamit ang gmail bilang SMTP server. Aalertuhan ako ng aking telepono ng bagong mail.

Naidagdag ko ang daloy ng Node-RED sa isang gitlab snippet upang ma-import mo ito sa iyong mga daloy ng Node-RED.

Siyempre maaari kang magdagdag ng ilang higit pang mga node, halimbawa upang mai-log ang mga kaganapan sa mailbox sa MariaDb o SqlLite, o lumikha ng labis na mga alarma kapag ang boltahe ng baterya ay mas mababa sa 2.7 volts.

Maligayang mail-pangangaso!

*) Tingnan ang susunod na pahina, gumagamit ako ng PushBullet ngayon sa halip na email.

Hakbang 7: Pagkatapos-iisip

Palaging may ganitong pakiramdam na ang mga bagay ay maaaring nagawa ng mas mahusay.

Lumipat

Mas gugustuhin kong gumamit ng isang (sobrang) magnet at isang contact na tambo sa halip na medyo malamya na diskarte ng plunger. Mayroong dalawang kadahilanan. Ang isa ay, walang paraan na magagawa ko ang gawaing ito sa pagsasara ng contact nang buksan ang kahon, at ang pagkakaroon ng palaging sarado ay nangangahulugang isang maliit na kasalukuyang palaging umaagos. Sa paggunita, ang mas mababa sa 1uA na dumadaloy sa pamamagitan ng 4M7 risistor ay hindi maaaring maging isang malaking pakikitungo sa mga tuntunin ng buhay ng baterya. Ang isa pa ay mas praktikal. Ginawa ko ang proyektong ito noong Sabado at isinulat ang software, itatayo ang lahat sa Linggo mula sa kung ano ang nakalatag. Wala lang akong contact na tambo sa junk box.

Tandaan: habang nagkomento si diy_bloke, ang mga contact sa tambo ay may ugali na maging malagkit kapag na-magnetize ng mahabang panahon, kaya marahil ang plunger ay hindi naman masamang ideya. Makikita natin. *)

Mensahe tungkol sa pag-alis ng laman ng laman

Nagpapadala ang mailbox ng isang mensahe kapag tinatanggal din ito. Ito ay hindi isang malaking pakikitungo ngunit sa maraming mga tao sa bahay ang nakakakuha ng babala, ang isa ay maaaring mapunta sa isang loop na suriin ang mailbox na tinatanggihan ang buong layunin! Mayroong ilang mga paraan sa paligid nito, tulad ng pag-check kung ang panloob na takip ay itinaas, at kung gayon, huwag magpadala ng isang mensahe. O sa halip na gamitin ang switch ng talukap ng mata, mag-install ng isang detektor sa ilalim ng mailbox. O isang maliit na pindutan ng pag-reset upang mapindot kapag inaalis ang bisa nito. Gayunpaman, ang lahat ay magpapalubha ng mga bagay at marahil ay magpapalala ng pagiging maaasahan.

Pagmemensahe

Ang pagpapadala ng email ay isang mabisa ngunit krudo na paraan ng paglalagay ng babala. Ang isang mas matikas na paraan ay magiging isang app ng telepono, ngunit hindi ko natagpuan ang isang Android MQTT dashboard app na maaaring mai-configure upang ma-trigger ang isang alerto sa operating system kapag natanggap ang isang tiyak na mensahe. Kung mayroong isang nasa paligid, mangyaring idagdag sa mga komento. **)

*) Matapos ang higit sa isang taon sa pagpapatakbo, lumalabas na ginamit ko ang stick ng lollipop, karaniwang matigas na papel, ay may posibilidad na paikliin sa ilalim ng patuloy na presyon ng switch spring. Pagkatapos ng ilang pag-troubleshoot ay pinalitan ko ito ng kahoy na stick.

**) Gumagamit ako ngayon ng PushBullet para sa mga push message, hiwalay sa MQTT dashboard. Ang isang maliit na Node-RED mababang interface sa API ay matatagpuan dito. Tiyaking ibibigay mo ang access token sa node na "Maghanda para sa pushbullet" at ang iyong email address para sa mga layuning fallback sa node na "Subukang muli".

Inirerekumendang: