Mundarija:

MQTT va Wifi bilan ishlaydigan pochta qutisi bayrog'i: 7 qadam (rasmlar bilan)
MQTT va Wifi bilan ishlaydigan pochta qutisi bayrog'i: 7 qadam (rasmlar bilan)

Video: MQTT va Wifi bilan ishlaydigan pochta qutisi bayrog'i: 7 qadam (rasmlar bilan)

Video: MQTT va Wifi bilan ishlaydigan pochta qutisi bayrog'i: 7 qadam (rasmlar bilan)
Video: Boshqa telefonga ulanish va kim bilan gaplashayotganini bilish. слежка за телефоном бесплатно 2024, Noyabr
Anonim
MQTT va Wifi bilan ishlaydigan pochta qutisi bayrog'i
MQTT va Wifi bilan ishlaydigan pochta qutisi bayrog'i

Eslatma: yangi dasturiy ta'minot, sxema va dasturchi uchun maslahatlar bilan yangilandi

Bir necha yil men o'z uyimni avtomatlashtirish loyihasini boshladim. U PT2262 asosidagi arzon pultli kalitlarni almashtirish uchun Arduino bilan 433 MGts chastotali server boshqaruvi qurilishi bilan boshlandi. Keyinchalik men ob -havo stantsiyam uchun Arduino -ga asoslangan qabul qilgichni qo'shdim, elektr zaryadlovchining boshqaruv kontaktini uladim va hokazo. Vaziyat tobora ortib bordi (va murakkab!). Shunday qilib, bir necha oy oldin men hamma narsani xabar almashish uchun MQTT, avtomatlashtirish uchun Node-RED (ikkalasi ham bitta Raspberry Pi B+da ishlaydi) va MariaDb (mening Synology NAS-da ishlaydi) asosida standartlashtirishga qaror qildim. Keyinchalik men MQTT brokerini (Mosquitto) va Node-REDni NASga o'tkazdim.

Bu ko'rsatma uy infratuzilmasida mening ko'chaga o'rnatilgan pochta qutimga bog'langan o'yin-kulgi loyihasini tasvirlaydi. Gap shundaki, agar kimdir old eshikdan taxminan 10 metr narida devorga o'rnatilgan pochta qutisini ochsa, bu menga telefonimda va ehtimol boshqa qurilmalarda signal beradi.

1 -qadam: kontur, old shartlar va qismlar

Anahat

Yuqori darajada, pochta qutisi ochilganda, brokerga noyob MQTT xabarini yuborishi kerak, shunda bu mavzuga obuna bo'lganlar xabardor qilinadi. Node-RED ham obuna bo'ladi va ba'zi avtomatlashtirishlarni amalga oshiradi, bu holda telefonimga elektron pochta va/yoki push-xabar yuboriladi.

Pochta qutisi batareyalarda ishlaydi va kamida bir yil ishlashi kerak va buni WiFi tarmog'im yordamida amalga oshirish kerak. Mikrokontrollerni uyg'otish va Wi-Fi tarmog'iga ulanish bir necha soniya davom etishi mumkin, men quvvatni o'chirish uchun faollashtirish kalitidan foydalana olmadim. Buning o'rniga, pochta qutisi qopqog'i yopilganidan keyin protsessor o'z ishini tugatishi kerak.

Old shartlar

Menimcha, siz oddiy lehimlash qobiliyatiga egasiz, Arduino IDE bilan bir oz ishlagansiz va taxtalar menejeri yordamida ESP8266 taxtalarini o'rnatgansiz. Bundan tashqari, mikrokontrolerni dasturlash uchun sizda 3,3 voltli USB seriyali adapter bo'lishi kerak.

Menimcha, sizda MQTT brokeri va Node-RED serveri ishlaydi. Agar yo'q bo'lsa, Internetda juda ko'p ko'rsatma bor, lekin men uni dangasa yo'l bilan borishni va Piter Skargillning ajoyib o'rnatish skriptidan foydalanishni maslahat beraman, agar siz uni biron bir Pi yoki Ubuntu -da ishlatmoqchi bo'lsangiz yoki Pi Zero W uchun Andreas Spissning rasmidan foydalanmoqchi bo'lsangiz (havolalar ushbu videoning tavsifida), bu sizga ishlaydigan skriptlarning ishlashini bir necha soat davomida tejash imkonini beradi. Shu bilan bir qatorda, siz dasturiy ta'minotni elektron pochtaga to'g'ridan -to'g'ri yuborishingiz mumkin, lekin buning uchun siz ko'p moslashuvchanlikni yo'qotasiz.

Qismlar

  • 1 ta yopiq, 3 ta AA batareya qutisi
  • 2 ta AA batareyasi
  • 1 ESP8266 moduli. Ushbu loyiha uchun men ESP-01 dan foydalanardim
  • 1 ta mikro kalit
  • 1 47K qarshilik
  • 1 4M7 qarshilik
  • 1 kondansatör 2.2 uF
  • 1 ingichka plastik quvur. Men qalam ishlatardim
  • 1 qalin, uzun gugurt yoki lolipop tayog'i. U plastmassa trubkaga osongina joylashishi va harakatlanishi kerak

2 -qadam: Uskuna: quti, kalit va simlar

Uskuna: quti, kalit va simlar
Uskuna: quti, kalit va simlar
Uskuna: quti, kalit va simlar
Uskuna: quti, kalit va simlar
Uskuna: quti, kalit va simlar
Uskuna: quti, kalit va simlar

Men eski Rojdestvo bezaklaridan eski batareya qutisidan boshladim. U AA o'lchamdagi uchta batareyaga mo'ljallangan. ESP8266 3 voltda yaxshi ishlaydi, men ikkita batareyani ishlatardim va mikro-nazoratchi uchun uchinchi pozitsiyani ishlatardim. E'tibor bering, qutida aktivlashtirish tugmasi uchun ishlatilishi mumkin bo'lgan kichik qo'shimcha bo'linma bor edi. Men rasmlarda ko'rsatilgan juda keng tarqalgan kalitni ishlatardim, lekin uni yoqish yoki o'chirish holatida ushlab turadigan kamonni olib tashladim. Men ikkita ingichka simni NK kontaktlariga lehimladim va qutiga mayda tomchi super elim bilan yopishtirdim.

Keyin, men yuqori qopqog'ida shar qalamdan olingan plastik naychaga mos keladigan teshik ochdim. Teshik tugmachaga to'g'ri keladi va qalin gugurt tayog'idan yasalgan pistonni boshqaradi.

Nihoyat, men yana ikkita simni batareya kontaktlariga lehimlab qo'ydim va to'rtta simni uchinchi batareyaning holatiga yo'naltirdim, u erda mikro-nazoratchi bo'ladi.

3-qadam: Uskuna: ESP-01

Uskuna: ESP-01
Uskuna: ESP-01
Uskuna: ESP-01
Uskuna: ESP-01
Uskuna: ESP-01
Uskuna: ESP-01

WiFi talabini hisobga olgan holda, butun loyiha ESP8266 deb baqiradi. Bu kichik Wi -Fi boshqaruvchisi 2,50 evrodan past narxda sotib olinadigan va o'z dasturlarini ishga tushirish uchun yetarli hajmga ega bo'lgan to'liq Wi -Fi va TCP/IP -ni o'z ichiga olgan modul sifatida xayolparastlarning sevimli ishchi otiga aylandi. Arduino IDE (yoki PlatformIO plaginli Atom) ESP8266 ni to'liq qo'llab -quvvatlaydi.

Men odatda ESP-12F ni olardim, lekin menda ish uchun juda mos bo'lgan va batareya qutisiga yaxshi mos keladigan kichik ESP-01 taxtasi bor edi. Yagona muammo shundaki, ESP-01-da dasturiy ta'minotni o'chirish juda murakkab. Bu haqda keyingi bosqichda batafsilroq. O'zgartirishlar kiritilishi mumkin: qizil LEDni taxtadan olib tashlashingiz kerak, chunki u doimiy ravishda 3mA chiziladi. LED o'chirilganida, modul bir necha o'nlab UA -ni chuqur uyqu rejimida ishlatadi, bu esa uni bir yildan ko'proq vaqt davomida ikkita AA sifatli batareyada ishlaydi.

Ma'lum bo'lishicha, men ESP-01-ni o'chirib tashlashim mumkin bo'lgan, bir nechta qo'shimcha komponentlar uchun 4 pinli ayol bosh va lehimdan bo'sh shaklda foydalanishim mumkin edi.

ESPni to'g'ri ulash juda muhimdir. Yuqoridagi hiyla -nayrangdan foydalanib, uni quyidagicha ulang.

  1. Batareya Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) va 47K qarshilikka ega.
  2. Batareya GND (A1) va kalitning bitta simiga minus.
  3. 100nF kondansatör va 4M7 rezistorli kalitning boshqa simlari.
  4. Ikkala rezistorning ham, kondansatörning ham ochiq uchlari RST (C2).
  5. TXD (A2) ulanmagan holda qolishi mumkin.

Tartibga solish: Men ESP-01ni almashtirishim kerak edi, chunki men bema'ni xato qilib, uni yo'q qildim. Ma'lum bo'lishicha, yangi ESP-01 asl 100nF kondansatör bilan tiklanmagan. Ehtimol, u biroz boshqacha dizaynga ega. Men uni 2,2 uF bilan almashtirdim va endi u yana ishlaydi

Ish tugagach, hamma narsani qutiga o'rnatish mumkin, lekin ushlab turing, avval modulni dasturlashimiz kerak.

4-qadam: ESP-01 dasturlash

ESP-01 dasturlash
ESP-01 dasturlash
ESP-01 dasturlash
ESP-01 dasturlash
ESP-01 dasturlash
ESP-01 dasturlash

ESP-01-da dasturiy ta'minotni o'chirish uchun siz kichik dastgoh qurishingiz yoki taxminan 1 evroga (deyarli) to'liq dasturchi sotib olishingiz mumkin.

Dasturiy ta'minot uskunalari

ESP-01 uchun yana ikkita ayol boshli kichik burg'ulash qurilmasini yarating. Shuningdek, sizga 3,3 voltsli USB seriyali modul kerak. ESP8266 chipi 5 voltli qotmaganligini unutmang, shuning uchun bu erda xato modulingizni o'ldirishi mumkin. Yaxshiyamki, yana hiyla -nayrang yordamida qurilmangizni quyidagicha sim bilan ulang:

  1. USB Serial modulidan Vcc, CH_PD, RST va GPIO2 ga 3,3V.
  2. USB Serial modulining GND va GND va GPIO0.
  3. USB Serial modulining TXD -ni RXD -ga.
  4. USB Serial modulining RDX -ni TXD -ga.

Dastlabki dasturchi

O'zingizning shaxsiy buyumlaringizni yaratish qanchalik qiziqarli bo'lsa ham, eng achinarli sayt-ESP-01-dan seriyali interfeysni olish, yuqoridagi rasmga qarang. Bu qurilmaga qaraganda ancha sodda, ixcham va ishonchli. Biroq, ularning ba'zilari dasturchilar emas, faqat ketma -ket interfeyslar. Interfeysning orqa tomonidagi GND (A1 pin) va GPIO0 (pin C1) orasidagi simli ko'prikni lehimlashingiz kerak, ikkinchi rasmga qarang. ESP-01 antennani USB vilkasiga qaragan holda ulash lozim, aksincha emas!

Eslatma: ular kalit bilan ham mavjud, uchinchi rasmga qarang, juda yaxshi.

Dasturiy ta'minotni yuklang

Arduino IDE -ni 1.8.3 yoki undan yuqori deb hisoblasangiz, Asboblar> Kengash -ni tanlang va sizda mavjud bo'lgan taxtani tanlang. Men foydalangan ESP-01 uchun "Umumiy ESP8266 moduli" -ni tanlang va quyidagi variantlarni o'rnating (bu barcha standart sozlamalar bo'lishi kerak):

  1. Chaqnoq rejimi: DIO
  2. Chiroq chastotasi: 40 MGts
  3. CPU chastotasi: 80 MGts
  4. Fleshli hajmi: 512KB (64KB SPIFFS) Eslatma: agar siz qora ESP-01 kartasidan foydalansangiz, 1MB (64KB SPIFFS) ni tanlang.
  5. Tuzatish porti: o'chirilgan
  6. Nosozliklarni tuzatish darajasi: yo'q
  7. Qayta tiklash usuli: ck
  8. Yuklab olish tezligi 115200
  9. Port: USB Seriya interfeysiga ulangan portni tanlang. Ubuntu shaxsiy kompyuterim uchun bu /dev /ttyUSB0 edi

Qurilmani/dasturchini ulang, eskizni bu erda toping: https://gitlab.com/jeroenmeijer/Mailbox.git. WiFi va MQTT brokerining hisob ma'lumotlarini va IP -konfiguratsiyasini config.h da taqdim eting va Yuklab olishni tanlang.

5 -qadam: Hammasini yig'ish

Hammasini yig'ish
Hammasini yig'ish

Men pochta qutimning ichki qopqog'idagi plastmassa trubka uchun teshikni iloji boricha menteşaga yaqin burg'iladim, keyin batareya qutisini shu qopqoqning pastki qismiga issiq yopishtirdim. Keyin men qalin gugurtni piston sifatida ishlatardim. Tashqi qopqog'i yopilgan bo'lsa, kalit ochilib qolishi uchun men gugurtni uzunligiga kesib oldim. MQTT xabarlarini kuzatish uchun mosquitto_sub -ni ishga tushirayotganda qopqog'ini ochish orqali ulanishni tekshirdim (mqttbroker, foydalanuvchi va parolni MQTT konfiguratsiyasi bilan almashtiring):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u foydalanuvchi -P parol

Tashqi qopqoq ochilgandan taxminan olti soniya o'tgach, quyidagi MQTT xabari e'lon qilinadi. Vaqt mikro-nazoratchini uyg'otish va WiFi va broker aloqasini o'rnatish uchun ishlatiladi.

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

Bu vaqt mobaynida mikrokontroller taxminan 70mA ishlatgan. Ish tugagach, u chuqur uyquga ketadi va mening holimda u 20uA dan kam ishlatilgan. "flap" har doim to'g'ri bo'ladi, "vcc" batareyaning kuchlanishini mV va "prev" ning 0 bo'lishi kerakligini bildiradi. Agar u 1 yoki 2 bo'lsa, bu pochta qutisi ulanmaganligi uchun xabarni oldinroq jo'natolmaganligini bildiradi. WiFi yoki u MQTT brokeriga ulana olmagani uchun. "RSSI" - bu WiFi signalining kuchi. Har ikkisi ham muammolarni aniqlashda juda qulay.

Batareya zo'riqishini bir necha kun kuzatib turish maqsadga muvofiq ishlaydi va negadir batareyasi zaryadsizlanmaydi.

Dasturiy ta'minot, shuningdek, havoda (OTA) yangilanishi mumkin, lekin bu ko'rsatma doirasidan biroz tashqarida. Qiziquvchilar uchun OTA konfiguratsiyasi config.h da.

6-qadam: MQTT xabarida harakat qilish uchun Node-RED-dan foydalanish

MQTT xabarida harakat qilish uchun Node-RED-dan foydalanish
MQTT xabarida harakat qilish uchun Node-RED-dan foydalanish

Nihoyat, men Node-RED-da oddiy oqim yaratdim. Birinchi tugun pochta qutisi mavzusiga obuna bo'ladi (stat/pochta qutisi/tetik). Xabar qabul qilinganda, ikkinchi tugun elektron pochtani formatlaydi *). Oxirgi tugun uni gmail -ga SMTP -server sifatida ishlatib yuboradi. Keyin telefonim menga yangi xat haqida xabar beradi.

Men Node-RED oqimini gitlab parchasiga qo'shdim, shunda siz uni Node-RED oqimlariga import qilishingiz mumkin.

Albatta, siz bir nechta tugunlarni qo'shishingiz mumkin, masalan, pochta qutisidagi hodisalarni MariaDb yoki SqlLite -ga yozib qo'yish yoki batareya quvvati 2,7 voltsdan past bo'lganda qo'shimcha signallarni yaratish.

Baxtli pochta ovi!

*) Keyingi sahifaga qarang, men hozir elektron pochta o'rniga PushBullet -dan foydalanayapman.

7-qadam: Keyingi fikrlar

Hamma narsani yaxshiroq qilish mumkin degan tuyg'u doimo mavjud.

O'tish

Bir oz bema'ni piston usuli o'rniga (super) magnit va qamish kontaktidan foydalanishni ma'qul ko'rardim. Buning ikkita sababi bor edi. Birinchisi, bu ishni quti ochilganda kontakt yopilishi bilan amalga oshirishning iloji yo'q edi va uni har doim yopib qo'yish kichik oqim doimo oqishini bildirardi. Orqaga qarab, 4M7 rezistoridan o'tadigan 1uA dan kam batareya quvvati uchun katta ahamiyatga ega bo'lmaydi. Ikkinchisi esa amaliyroq edi. Men bu loyihani shanba kuni tuzdim va dasturiy ta'minotni yozdim, hammasini yakshanba kuni qurilgan narsadan qurdim. Menda axlat qutisida qamish bilan aloqa yo'q edi.

E'tibor bering: diy_bloke sharhlaganidek, qamish kontaktlari uzoq vaqt magnitlanganida yopishqoq bo'lib qoladi, shuning uchun piston umuman yomon fikr emas edi. Ko'ramiz. *)

Bo'shatish haqida xabar

Pochta qutisi uni bo'shatganda ham xabar yuboradi. Bu katta muammo emas, lekin uydagilar ogohlantirish olsalar, uning maqsadiga zid bo'lgan pochta qutisini tekshirish mumkin. Buning bir necha yo'li bor, masalan, ichki qopqoq ko'tarilganligini tekshirish, agar shunday bo'lsa, xabar yubormang. Yoki qopqoq kalitini ishlatishning o'rniga, pochta qutisining pastki qismiga detektorni o'rnating. Yoki bo'shatish paytida kichik reset tugmasini bosish kerak. Biroq, hamma narsa murakkablashadi va ehtimol ishonchliligi yomonlashadi.

Xabar yuborish

E -pochtani yuborish - bu ogohlantirishni o'chirishning juda samarali, ammo qo'pol usuli. Telefon ilovasi yanada oqilona bo'lardi, lekin men ma'lum bir xabar kelganida operatsion tizim ogohlantirishini ishga tushirish uchun sozlanadigan Android MQTT boshqaruv paneli ilovasini topmadim. Agar atrofdagilar bo'lsa, sharhlarga qo'shing. **)

*) Bir yildan ko'proq ishlaganidan so'ng, men ishlatgan lolipop tayog'i, asosan, qattiq o'ralgan qog'oz, kalit kamonining doimiy bosimi ostida qisqarish tendentsiyasiga ega ekanligi ma'lum bo'ldi. Muammo bartaraf etilgandan so'ng, men uni yog'och tayoq bilan almashtirdim.

**) Men hozir PushBullet -dan MQTT boshqaruv panelidan alohida xabarlar yuborish uchun foydalanayapman. Bu erda API uchun kichik tugunli-RED past interfeyslarni topish mumkin. "Qayta urinish" tugunida "Pushbulletga tayyorlaning" tuguniga kirish belgisini va orqaga qaytarish uchun elektron pochta manzilingizni kiritganingizga ishonch hosil qiling.

Tavsiya: