Orodha ya maudhui:

MQTT na Wifi Powered Boxbox: 7 Hatua (na Picha)
MQTT na Wifi Powered Boxbox: 7 Hatua (na Picha)

Video: MQTT na Wifi Powered Boxbox: 7 Hatua (na Picha)

Video: MQTT na Wifi Powered Boxbox: 7 Hatua (na Picha)
Video: Какая версия винды тебе нравится больше всех? 😅🤟 #windows #microsoft #винда #виндовс11 #виндовс 2024, Julai
Anonim
MQTT na Wifi Powered Boxbox
MQTT na Wifi Powered Boxbox

Kumbuka: imesasishwa na firmware mpya, skimu na vidokezo vya programu

Miaka michache nilianza mradi wangu mwenyewe wa nyumbani. Ilianza kwa kujenga seva inayodhibitiwa ya 433 MHz transmitter kujenga na Arduino kubadili swichi nyingi za bei rahisi za PT2262. Baadaye niliongeza mpokeaji msingi wa Arduino kwa kituo changu cha hali ya hewa, nikaunganisha mawasiliano ya kudhibiti chaja yangu ya EV, nk. Vitu vilikua vikiungana zaidi na zaidi (na ngumu!). Kwa hivyo, miezi michache iliyopita niliamua kusanifisha kila kitu kulingana na MQTT kwa ujumbe, Node-RED kwa kiotomatiki (zote zinaendesha Raspberry Pi B + moja) na MariaDb kwa magogo (inayoendesha Synology NAS yangu). Baadaye nilihamisha wakala wa MQTT (Mosquitto) na Node-RED kupita kwa NAS pia..

Hii inaelezewa inaelezea mradi wa ujinga wa kujifurahisha unaounganisha sanduku langu la barua kwenye barabara hii ya miundombinu. Wazo ni kwamba ikiwa mtu anafungua sanduku la barua lililowekwa juu ya mita 10 kutoka mlango wa mbele, inaniashiria kwenye simu yangu na labda vifaa vingine.

Hatua ya 1: muhtasari, mahitaji ya kwanza na sehemu

Muhtasari

Kwa kiwango cha juu, sanduku la barua linapaswa, wakati limefunguliwa, tuma ujumbe wa kipekee wa MQTT kwa broker, ili wanachama wa mada hiyo watajulishwa. Node-RED hujiandikisha pia na hufanya kiotomatiki, katika kesi hii kutuma barua pepe na / au ujumbe wa kushinikiza kwa simu yangu.

Sanduku la barua linapaswa kukimbia kwenye betri na kukimbia kwa angalau mwaka, na inapaswa kufanya hivyo kwa kutumia mtandao wangu wa WiFi. Kama kuamsha mdhibiti mdogo na kuunganisha kwenye mtandao wa WiFi kunaweza kuchukua sekunde kadhaa, sikuweza kutumia swichi ya uanzishaji kukata nguvu. Badala yake, processor inapaswa kuruhusiwa kumaliza biashara baada ya kifuniko cha sanduku la barua tayari kufungwa.

Mahitaji ya lazima

Nadhani una ujuzi mdogo wa kuuza, umefanya kazi na Arduino IDE kidogo, na umeweka bodi za ESP8266 ukitumia Meneja wa Bodi. Unahitaji pia kuwa na adapta ya Serial ya 3.3 volt USB kusanidi mdhibiti mdogo.

Nadhani pia unayo broker ya MQTT na seva ya Node-RED inayoendesha. Ikiwa sivyo, kuna maagizo mengi kwenye mtandao, lakini ningependa kushauri kuchukua njia ya uvivu na kutumia hati bora ya usakinishaji ya Peter Scargill ikiwa unataka kuiendesha kwenye Pi yoyote au Ubuntu, au tumia picha ya Andreas Spiess kwa Pi Zero W (viungo kwenye maelezo ya video hiyo), ambayo itakuokoa masaa machache ya kutazama hati za usakinishaji zinazoendesha. Vinginevyo, unaweza kufanya firmware kutuma barua pepe moja kwa moja, lakini utafungua mabadiliko mengi kwa kufanya hivyo.

Sehemu

  • 1 imefungwa, sanduku la betri 3 AA
  • Betri 2 za AA
  • Moduli 1 ESP8266. Kwa mradi huu nilitumia ESP-01
  • 1 kubadili ndogo
  • Kinga 1 47K
  • Kinga 1 1M7
  • 1 2.2uF capacitor
  • Bomba 1 nyembamba ya plastiki. Nilitumia kalamu
  • 1 nene, mechi ndefu au fimbo ya lollipop. Inapaswa kutoshea kwa urahisi na kuhamia kwenye bomba la plastiki

Hatua ya 2: Vifaa: Sanduku, Badilisha na Wiring

Vifaa: Sanduku, Kubadilisha na Wiring
Vifaa: Sanduku, Kubadilisha na Wiring
Vifaa: Sanduku, Kubadilisha na Wiring
Vifaa: Sanduku, Kubadilisha na Wiring
Vifaa: Sanduku, Kubadilisha na Wiring
Vifaa: Sanduku, Kubadilisha na Wiring

Nilianza na sanduku la zamani la betri kutoka kwa mapambo ya Krismasi yaliyopotea. Iliundwa kwa betri tatu za ukubwa wa AA. Kwa kuwa ESP8266 itaendesha vizuri kwenye volt 3, ningeweza kutumia betri mbili na kutumia nafasi ya tatu kwa mdhibiti mdogo. Angalia jinsi sanduku hilo lilikuwa na sehemu ndogo ya ziada ambayo ningeweza kutumia kwa swichi ya uanzishaji. Nilitumia aina ya swichi iliyoonyeshwa kwenye picha, lakini niliondoa chemchemi ambayo inaifunga kwa nafasi ya kuzima au kuzima. Niliuza waya mbili nyembamba kwa anwani za NC na nikaunganisha kwenye sanduku na tone dogo la gundi kubwa.

Ifuatayo, nilichimba shimo kwenye kifuniko cha juu kinacholingana na bomba la plastiki lililochukuliwa kutoka kwa kalamu ya mpira. Shimo linajipanga haswa na swichi na inaongoza plunger iliyotengenezwa kwa fimbo nene ya kiberiti.

Mwishowe, niliuza waya mbili zaidi kwa anwani za betri na kuelekeza waya zote nne kwenye nafasi ya betri ya tatu, ambapo mdhibiti mdogo angekuwa.

Hatua ya 3: Vifaa: ESP-01

Vifaa: ESP-01
Vifaa: ESP-01
Vifaa: ESP-01
Vifaa: ESP-01
Vifaa: ESP-01
Vifaa: ESP-01

Kwa kuzingatia mahitaji ya WiFi, mradi mzima unapiga kelele ESP8266. Kidhibiti hiki kidogo cha WiFi imekuwa kazi inayopendwa zaidi ya jamii inayofurahisha kama moduli ambayo inunuliwa chini ya EUR 2.50 na inaunganisha wigo kamili wa WiFi na TCP / IP, na uwezo wa kutosha wa kuweka programu zako mwenyewe. IDE ya Arduino (au Atomu iliyo na programu-jalizi ya PlatformIO) inasaidia kikamilifu ESP8266.

Kwa kawaida ningechukua ESP-12F, lakini nilikuwa na bodi ndogo ya ESP-01 iliyokuwa imewekwa karibu na hiyo ilikuwa kamili kwa kazi hiyo na inafaa vizuri kwenye sanduku la betri. Shida tu ni kwamba ni ngumu sana kuangaza firmware kwenye ESP-01. Zaidi juu ya hiyo katika hatua inayofuata. Kuna muundo mmoja wa kufanya: Lazima uondoe taa nyekundu ya umeme kutoka kwa bodi, kwani inaendelea kuchora 3mA. Pamoja na LED kuondolewa, moduli hutumia makumi kadhaa tu ya uA katika hali ya kulala ambayo itafanya idumu kwa zaidi ya mwaka kwa betri mbili za hali ya juu za AA.

Ilibadilika kuwa ningeweza kutumia vipande viwili vya vichwa 4 vya kike na solder kwenye vifaa vichache vya ziada katika fomu ya bure ili niweze kuondoa ESP-01 kusasisha firmware, wakati bado itafaa katika sehemu ya tatu ya betri.

Ni muhimu sana kuweka waya kwa usahihi ESP. Kutumia karatasi ya kudanganya hapo juu, waya juu kama ifuatavyo.

  1. Betri pamoja na Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) na kinzani cha 47K.
  2. Kutoa betri kwa GND (A1) na waya moja ya swichi.
  3. Waya nyingine ya kubadili kwa capacitor ya 100nF na kupinga 4M7.
  4. Mwisho wazi wa vipinga vyote na capacitor kwa RST (C2).
  5. TXD (A2) inaweza kubaki bila kuunganishwa.

Hariri: Ilinibidi kuchukua nafasi ya ESP-01 kwa sababu nilifanya makosa ya kijinga na kuiharibu. Ilibainika kuwa kwa mshangao wangu mpya ESP-01 haikuweka upya na capacitor ya asili ya 100nF. Labda ina muundo tofauti kidogo. Niliibadilisha na moja ya 2.2 uF na sasa inafanya kazi tena

Baada ya kumaliza, kila kitu kinaweza kuwekwa kwenye sanduku, lakini shikilia, kwanza tunahitaji kupanga moduli.

Hatua ya 4: Kupanga programu ya ESP-01

Kupanga programu ya ESP-01
Kupanga programu ya ESP-01
Kupanga programu ya ESP-01
Kupanga programu ya ESP-01
Kupanga programu ya ESP-01
Kupanga programu ya ESP-01

Ili kuwasha firmware kwenye ESP-01 yako, unaweza kujenga rig ndogo au kununua (karibu) programu kamili kwa karibu euro 1.

Kupanga vifaa vya vifaa

Jenga rig ndogo na tena vichwa viwili vya kike kwa ESP-01. Pia, unahitaji moduli ya USB Serial, inayoweza kutoa 3.3 volt. Kumbuka kuwa Chip ya ESP8266 sio volt 5 ngumu, kwa hivyo kosa hapa linaweza kuua moduli yako. Kwa hivyo, tena ukitumia karatasi ya kudanganya, weka waya wako kama ifuatavyo:

  1. 3.3V kutoka moduli ya USBSerial hadi Vcc, CH_PD, RST na GPIO2.
  2. GND ya moduli ya USBSerial kwa GND na GPIO0.
  3. TXD ya moduli ya USBSerial kwa RXD.
  4. RDX ya moduli ya USBSerial kwa TXD.

Programu ya kujenga mapema

Inafurahisha kama vile kujenga vitu vyako mwenyewe, njia ya lazier ni kupata kiolesura cha ESP-01-to-serial kutoka kwa tovuti yako ya mnada unaopenda, angalia picha hapo juu. Hii ni rahisi sana, inaunganisha zaidi na inaaminika zaidi kuliko rig. Walakini, zingine hizi sio programmers, ni tu njia za serial. Unahitaji kutengeneza daraja la waya kati ya GND (pini A1) na GPIO0 (pini C1) upande wa nyuma wa kiolesura, angalia picha ya pili. Kumbuka kuwa ESP-01 inapaswa kuingizwa na antenna inayoelekea kuziba USB, sio njia nyingine!

Kumbuka: pia zipo na swichi, angalia picha ya tatu, nzuri sana.

Pakia firmware

Kwa kudhani Arduino IDE ya 1.8.3 au baadaye, chagua Zana> Bodi na uchague bodi unayo. Kwa ESP-01 kama nilivyotumia, chagua "Moduli ya ESP8266", na uweke chaguo zifuatazo (hii inapaswa kuwa chaguzi zote):

  1. Njia ya Flash: DIO
  2. Mzunguko wa Flash: 40MHz
  3. Mzunguko wa CPU: 80MHz
  4. Ukubwa wa Flash: 512KB (64KB SPIFFS) Kumbuka: ikiwa unatumia bodi nyeusi ya ESP-01, chagua 1MB (64KB SPIFFS)
  5. Bandari ya utatuzi: Imelemazwa
  6. Kiwango cha utatuzi: Hakuna
  7. Rudisha njia: ck
  8. Kasi ya kupakia 115200
  9. Bandari: chagua bandari ambayo imeunganishwa na kiunga chako cha USB Serial. Kwa PC yangu ya Ubuntu ambayo ilikuwa / dev / ttyUSB0

Hook up rig / programmer, pakia Mchoro unaoweza kupata hapa https://gitlab.com/jeroenmeijer/Mailbox.git. Tumia sifa zako za wakala wa WiFi na MQTT na usanidi wako wa IP katika config.h na uchague Pakia.

Hatua ya 5: Kukusanya Yote

Kukusanya Yote
Kukusanya Yote

Nilichimba shimo kwa bomba la plastiki kwenye kifuniko cha ndani cha sanduku langu la barua, karibu na bawaba iwezekanavyo, kisha nikachoma moto sanduku la betri chini ya kifuniko hicho. Ifuatayo nilitumia mechi nene kama bomba. Nilitumia snip kukata mechi kwa urefu ili swichi ifunguke ikiwa kifuniko cha nje kimefungwa. Niliangalia muunganisho kwa kufungua kifuniko wakati wa kutumia mbu_sub kufuatilia ujumbe wa MQTT (badilisha mqttbroker, mtumiaji na nywila na usanidi wako wa MQTT):

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

Takriban sekunde sita baada ya kifuniko cha nje kufunguliwa ujumbe ufuatao wa MQTT umechapishwa. Wakati hutumiwa kuamsha mdhibiti mdogo na kuanzisha unganisho la WiFi na broker.

sanduku / sanduku la barua / kichocheo {"vcc": 3050, "flap": kweli, "prev": 0, "RSSI": 29, "toleo": "005"}

Wakati huu, mdhibiti mdogo alitumia takriban 70mA. Ukimaliza, huenda kwenye usingizi mzito na kwa upande wangu ilitumia chini ya 20uA. "flap" ni kweli kila wakati, "vcc" inasema voltage ya betri katika mV na "prev" inapaswa kuwa 0. Ikiwa ni 1 au 2, inamaanisha sanduku la barua halikuweza kutuma ujumbe mapema, labda kwa sababu haikuweza kuungana na WiFi, au kwa sababu haikuweza kuungana na broker wa MQTT. "RSSI" ni nguvu ya ishara ya WiFi. Wote ni rahisi sana kugundua shida.

Ni wazo nzuri kufuatilia voltage ya betri kwa siku chache kuhakikisha kuwa kifaa hufanya kazi kama ilivyokusudiwa na haitoi betri kwa sababu fulani.

Firmware pia inaweza kujisasisha hewani (OTA), lakini hiyo ni zaidi ya upeo wa hii inayoweza kufundishwa. Kwa wale wanaopenda, usanidi wa OTA pia uko kwenye config.h.

Hatua ya 6: Kutumia Node-RED Kufanya kazi kwenye Ujumbe wa MQTT

Kutumia Node-RED kutenda juu ya Ujumbe wa MQTT
Kutumia Node-RED kutenda juu ya Ujumbe wa MQTT

Mwishowe, niliunda mtiririko rahisi katika Node-RED. Node ya kwanza inajiunga na mada ya sanduku la barua (stat / postbox / trigger). Wakati ujumbe unapokelewa, node ya pili huunda barua pepe *). Node ya mwisho hutuma kwa anwani yangu ya gmail, kwa kutumia gmail kama seva ya SMTP. Simu yangu itanijulisha barua mpya.

Nimeongeza mtiririko wa Node-RED kwenye kijisehemu cha gitlab ili uweze kuiingiza kwenye mtiririko wako wa Node-RED.

Kwa kweli unaweza kuongeza nodi zingine, kwa mfano kuingia matukio ya sanduku la barua kwa MariaDb au SqlLite, au kuunda kengele za ziada wakati voltage ya betri inakwenda chini ya volts 2.7.

Furaha-uwindaji wa barua!

*) Angalia ukurasa unaofuata, ninatumia PushBullet sasa badala ya barua pepe.

Hatua ya 7: Baada-mawazo

Daima kuna hisia hii mambo yangefanywa vizuri zaidi.

Badilisha

Ningekuwa napendelea kutumia sumaku (super) na mawasiliano ya mwanzi badala ya njia ya kuporomoka kidogo. Kulikuwa na sababu mbili. Moja ni kwamba, hakukuwa na njia yoyote ambayo ningeweza kufanya kazi hii na kufunga mawasiliano wakati sanduku lilifunguliwa, na kuwa limefungwa kila wakati ilimaanisha mkondo mdogo utazunguka kila wakati. Kwa kurudia nyuma, chini ya 1uA inapita kupitia kinzani ya 4M7 isingekuwa jambo kubwa kwa suala la maisha ya betri. Nyingine ilikuwa ya vitendo zaidi. Nilitengeneza mradi huu Jumamosi na kuandika programu hiyo, naijenga yote Jumapili kutoka kwa kile kilichokuwa karibu. Sikuwa na mawasiliano ya mwanzi kwenye sanduku la taka.

Kumbuka: kama diy_bloke alivyosema, anwani za mwanzi zina tabia ya kunata wakati zina sumaku kwa muda mrefu, kwa hivyo labda plunger haikuwa wazo mbaya hata kidogo. Tutaona. *)

Ujumbe juu ya kumaliza

Sanduku la barua hutuma ujumbe wakati wa kuitoa pia. Hili sio jambo kubwa lakini kwa watu zaidi ndani ya nyumba kupata onyo, mtu anaweza kuishia kitanzi akiangalia sanduku la barua likikaidi kusudi lote! Kuna njia chache kuzunguka hii, kama vile kuangalia ikiwa kifuniko cha ndani kimeinuliwa, na ikiwa ni hivyo, usitume ujumbe. Au badala ya kutumia swichi ya kifuniko, weka kigunduzi chini ya sanduku la barua. Au kitufe kidogo cha kuweka upya ili kushinikizwa wakati ukiachilia. Walakini, yote yangefanya mambo kuwa magumu na labda kuzidisha kuegemea.

Kutuma ujumbe

Kutuma barua pepe ni njia bora lakini mbaya ya kuweka onyo. Njia ya kifahari zaidi itakuwa programu ya simu, lakini sijapata programu ya dashibodi ya Android MQTT ambayo inaweza kusanidiwa ili kuchochea tahadhari ya mfumo wa uendeshaji wakati ujumbe fulani unapokelewa. Ikiwa kuna moja karibu, tafadhali ongeza kwenye maoni. **)

*) Baada ya zaidi ya mwaka mmoja kufanya kazi, zinageuka kuwa fimbo ya lollipop niliyotumia, kimsingi karatasi ngumu iliyovingirishwa, ina tabia ya kufupisha chini ya shinikizo la kila wakati la chemchemi ya kubadili. Baada ya utatuzi wa shida nilibadilisha na fimbo ya mbao.

Ninatumia PushBullet sasa kwa ujumbe wa kushinikiza, tofauti na dashibodi ya MQTT. Njia ndogo ndogo za Node-RED chini ya API zinaweza kupatikana hapa. Hakikisha unasambaza tokeni ya ufikiaji katika nodi "Jitayarishe kwa risasi" na anwani yako ya barua pepe kwa sababu za kurudi nyuma katika nodi "Jaribu tena".

Ilipendekeza: