Mündəricat:

MQTT və Wifi Powered Poçt qutusu bayrağı: 7 addım (şəkillərlə birlikdə)
MQTT və Wifi Powered Poçt qutusu bayrağı: 7 addım (şəkillərlə birlikdə)

Video: MQTT və Wifi Powered Poçt qutusu bayrağı: 7 addım (şəkillərlə birlikdə)

Video: MQTT və Wifi Powered Poçt qutusu bayrağı: 7 addım (şəkillərlə birlikdə)
Video: Lellki WK34 - встраиваемая zigbee евророзетка с энергомониторингом, интеграция в Home Assistant 2024, Iyul
Anonim
MQTT və Wifi Powered Poçt qutusu bayrağı
MQTT və Wifi Powered Poçt qutusu bayrağı

Qeyd: yeni proqram təminatı, sxematik və proqramçı üçün məsləhətlər ilə yeniləndi

Bir neçə il öz ev avtomatlaşdırma layihəmə başladım. Çox ucuz PT2262 əsaslı uzaqdan açarları dəyişdirmək üçün bir Arduino ilə idarə olunan 433 MHz tezlikli bir server qurmaqla başladı. Daha sonra hava stansiyam üçün Arduino əsaslı bir alıcı əlavə etdim, EV şarj cihazımın idarə kontağını bağladım və s. İşlər getdikcə daha çox bir -birinə qarışdı (və mürəkkəb!). Beləliklə, bir neçə ay əvvəl hər şeyi mesajlaşma üçün MQTT, avtomatlaşdırma üçün Node-RED (hər ikisi də tək bir Raspberry Pi B+ilə işləyir) və MariaDb (Synology NAS-da işləyən) əsasında standartlaşdırmağa qərar verdim. Daha sonra MQTT brokerini (Mosquitto) və Node-RED-i də NAS-a köçürdüm.

Bu təlimat, bu ev infrastrukturunda mənim küçəyə quraşdırılmış poçt qutumuzu bağlayan əyləncəli bir layihəni təsvir edir. Fikir budur ki, kimsə giriş qapısından təxminən 10 metr aralıda çitə quraşdırılmış poçt qutusunu açarsa, bu telefonuma və bəlkə də digər cihazlara siqnal verir.

Addım 1: Xülasə, ön şərtlər və hissələr

Kontur

Yüksək səviyyədə, poçt qutusu açıldıqda brokerə unikal bir MQTT mesajı göndərməlidir ki, bu mövzuya abunəçilər məlumatlandırılsın. Node-RED də abunə olur və bir qədər avtomatlaşdırma edir, bu halda telefonuma bir e-poçt və/və ya təkan mesajı göndərir.

Poçt qutusu batareyalarla işləməli və ən azı bir il işləməlidir və bunu WiFi şəbəkəmdən istifadə edərək etməlidir. Mikro nəzarətçini oyatmaq və WiFi şəbəkəsinə qoşulmaq bir neçə saniyə çəkə biləcəyi üçün enerjini kəsmək üçün aktivləşdirmə düyməsini istifadə edə bilmədim. Bunun əvəzinə, poçt qutusunun qapağı artıq bağlandıqdan sonra prosessorun işini başa vurmasına icazə verilməlidir.

Ön şərtlər

Düşünürəm ki, təvazökar lehimləmə qabiliyyətiniz var, Arduino IDE ilə bir az işlədiniz və Lövhələr Menecerindən istifadə edərək ESP8266 lövhələrini quraşdırdınız. Mikro nəzarətçini proqramlaşdırmaq üçün 3.3 volt USB Serial adapterə də ehtiyacınız var.

Bir MQTT brokerinin və Node-RED serverinin işlədiyini də düşünürəm. Əks təqdirdə, İnternetdə bir çox təlimat var, amma hər hansı bir Pi və ya Ubuntu -da işə salmaq və ya Pi Zero W üçün Andreas Spiessin şəklindən istifadə etmək istəyirsinizsə tənbəl marşrutu götürməyi və Peter Scargill -in əla quraşdırma skriptindən istifadə etməyi məsləhət görərdim. bu videonun təsvirindəki bağlantılar), işləyən quraşdırma skriptlərini seyr etməkdən bir neçə saat xilas olacaqsınız. Alternativ olaraq, firmware -ni birbaşa bir e -poçt göndərə bilərsiniz, ancaq bunu edərkən çox rahatlıq itirəcəksiniz.

Hissələri

  • 1 qapalı, 3 AA batareya qutusu
  • 2 ədəd AA batareya
  • 1 ESP8266 modulu. Bu layihə üçün bir ESP-01 istifadə etdim
  • 1 mikro keçid
  • 1 47K müqavimət
  • 1 4M7 rezistor
  • 1 2.2 uF kondansatör
  • 1 ədəd nazik plastik boru. Qələm istifadə etdim
  • 1 qalın, uzun kibrit və ya lolipop çubuq. Plastik boruya asanlıqla oturmalı və hərəkət etməlidir

Addım 2: Hardware: Box, Switch və Wiring

Avadanlıq: qutu, keçid və naqillər
Avadanlıq: qutu, keçid və naqillər
Avadanlıq: qutu, keçid və naqillər
Avadanlıq: qutu, keçid və naqillər
Avadanlıq: qutu, keçid və naqillər
Avadanlıq: qutu, keçid və naqillər

Köhnə bir batareya qutusu ilə köhnə bir Milad bəzəyindən başladım. Üç AA ölçülü batareya üçün hazırlanmışdır. ESP8266 3 voltda yaxşı işləyəcəyi üçün iki batareyadan istifadə edə və mikro nəzarətçi üçün üçüncü mövqedən istifadə edə bilərdim. Qutunun aktivləşdirmə açarı üçün istifadə edə biləcəyim kiçik bir əlavə yuvaya necə sahib olduğuna diqqət yetirin. Şəkillərdə göstərilən çox yaygın bir keçid növündən istifadə etdim, ancaq onu açma və ya söndürmə vəziyyətində bağlayan yayı çıxardım. NC kontaktlarına iki nazik tel bağladım və kiçik bir damla super yapışqan ilə qutuya yapışdırdım.

Sonra, üst qapağında bir qələmdən götürülmüş plastik bir boruya uyğun bir delik açdım. Delik tam olaraq açarla düzülür və qalın kibrit çubuğundan hazırlanmış pistonu istiqamətləndirir.

Nəhayət, batareya kontaktlarına iki tel əlavə etdim və dörd telin hamısını mikro nəzarətçinin olacağı üçüncü batareyanın mövqeyinə yönləndirdim.

Addım 3: Avadanlıq: ESP-01

Avadanlıq: ESP-01
Avadanlıq: ESP-01
Avadanlıq: ESP-01
Avadanlıq: ESP-01
Avadanlıq: ESP-01
Avadanlıq: ESP-01

WiFi tələbini nəzərə alaraq, bütün layihə ESP8266 qışqırır. Bu kiçik WiFi nəzarətçisi, 2.50 EUR -dan aşağı satın alınacaq və öz proqramlarınızı idarə etmək üçün kifayət qədər ehtiyata sahib olan tam bir WiFi və TCP/IP yığını birləşdirən bir modul olaraq, tinkering cəmiyyətinin sevimli iş atına çevrildi. Arduino IDE (və ya PlatformIO plaginli Atom) ESP8266 -nı tam dəstəkləyir.

Ümumiyyətlə bir ESP-12F götürərdim, amma ətrafımda iş üçün mükəmməl olan və batareya qutusuna yaxşı uyğun olan kiçik bir ESP-01 lövhəm vardı. Yeganə problem, ESP-01-də proqram təminatını flash etmək olduqca çətin olmasıdır. Növbəti addımda bu barədə daha çox. Ediləcək bir dəyişiklik var: davamlı olaraq 3mA çəkdiyi üçün qırmızı işıq LEDini lövhədən çıxarmalısınız. LED çıxarıldıqda, modul dərin yuxu rejimində bir neçə on uA istifadə edir ki, bu da iki keyfiyyətli AA batareyada bir ildən çox davam edəcək.

Məlum oldu ki, proqram təminatını yeniləmək üçün ESP-01-i silmək üçün sərbəst formada bir neçə əlavə komponentdə 4 pinli dişi başlıq və lehimdən istifadə edə bilərəm, halbuki üçüncü batareya yuvasına sığacaqdı.

ESP -ni düzgün bir şəkildə bağlamaq çox vacibdir. Yuxarıdakı fırıldaqçı vərəqdən istifadə edərək aşağıdakı kimi bağlayın.

  1. Batareya plus Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) və 47K müqavimət.
  2. Batareya mənfi GND (A1) və açarın bir teli.
  3. 100nF kondansatörə və 4M7 rezistora keçidin digər teli.
  4. Həm rezistorların, həm də RST (C2) kondansatörünün açıq uçları.
  5. TXD (A2) əlaqəsiz qala bilər.

Düzəliş: ESP-01-i dəyişdirmək məcburiyyətində qaldım, çünki axmaq bir səhv etdim və onu məhv etdim. Məlum oldu ki, yeni ESP-01 orijinal 100nF kondansatörlə sıfırlanmadı. Yəqin ki, bir az fərqli dizaynı var. 2.2 uF ilə əvəz etdim və indi yenidən işləyir

Tamamlandıqda, hər şey qutuya quraşdırıla bilər, ancaq saxlayın, əvvəlcə modulu proqramlaşdırmalıyıq.

Addım 4: ESP-01 proqramlaşdırılması

ESP-01 proqramlaşdırılması
ESP-01 proqramlaşdırılması
ESP-01 proqramlaşdırılması
ESP-01 proqramlaşdırılması
ESP-01 proqramlaşdırılması
ESP-01 proqramlaşdırılması

Firmware-ni ESP-01-də yandırmaq üçün ya kiçik bir qurğu qura bilərsiniz, ya da təxminən 1 avroya (demək olar ki) tam bir proqramçı ala bilərsiniz.

Proqramlaşdırma aparatı

Yenidən ESP-01 üçün iki qadın başlığı olan kiçik bir qurğu qurun. Ayrıca, 3,3 volt təmin edə bilən bir USB Serial moduluna ehtiyacınız var. Diqqət yetirin ki, ESP8266 çipi 5 volt sərtləşməmişdir, buna görə buradakı səhv modulunuzu öldürə bilər. Hər halda, yenidən fırıldaqçı vərəqindən istifadə edərək qurğunuzu aşağıdakı kimi tel edin:

  1. USB Serial modulundan Vcc, CH_PD, RST və GPIO2 -yə 3.3V.
  2. USB Serial modulunun GND və GND və GPIO0.
  3. USB Serial modulunun TXD -dən RXD -ə.
  4. USB Serial modulunun RDX -dən TXD -ə.

Əvvəlcədən qurulmuş proqramçı

Öz əşyalarınızı yaratmaq kimi əyləncəli olsa da, daha aptal hərrac saytınızdan ESP-01-dən seriyaya qədər bir interfeys əldə etməkdir, yuxarıdakı şəklə baxın. Bu qurğudan daha asan, daha yığcam və daha etibarlıdır. Ancaq bunların bəziləri proqramçı deyil, sadəcə serial interfeysləridir. İnterfeysin arxasındakı GND (pin A1) və GPIO0 (pin C1) arasında bir tel körpü lehimləməlisiniz, ikinci şəklə baxın. Diqqət yetirin ki, ESP-01 antena USB fişinə baxan şəkildə bağlanmalıdır, əksinə deyil!

Qeyd: onlar da bir açarla mövcuddur, üçüncü şəkilə baxın, çox gözəldir.

Firmware yükləyin

Arduino IDE -nin 1.8.3 və ya daha yüksək olduğunu düşünərək Alətlər> İdarə Heyəti seçin və malik olduğunuz lövhəni seçin. İstifadə etdiyim kimi bir ESP-01 üçün "Ümumi ESP8266 Modulu" nu seçin və aşağıdakı variantları təyin edin (bütün standartlar bu olmalıdır):

  1. Flaş rejimi: DIO
  2. Flaş tezliyi: 40 MHz
  3. CPU tezliyi: 80 MHz
  4. Flaş ölçüsü: 512KB (64KB SPIFFS) Qeyd: qara ESP-01 lövhəsindən istifadə edirsinizsə, 1MB (64KB SPIFFS) seçin
  5. Debug portu: Deaktivdir
  6. Debug səviyyəsi: yox
  7. Sıfırlama üsulu: ck
  8. Yükləmə sürəti 115200
  9. Port: USB Serial interfeysinizə qoşulmuş portu seçin. Ubuntu kompüterim üçün /dev /ttyUSB0 idi

Qurğunu/proqramçını bağlayın, burada tapa biləcəyiniz eskizi yükləyin https://gitlab.com/jeroenmeijer/Mailbox.git. WiFi və MQTT broker etimadnamənizi və IP konfiqurasiyanızı config.h -də təmin edin və Yüklə seçin.

Addım 5: Hamısını yığın

Hamısını yığmaq
Hamısını yığmaq

Poçt qutusunun daxili qapağında, menteşəyə mümkün qədər yaxın olan plastik boru üçün bir delik açdım, sonra batareya qutusunu o qapağın altına isti yapışdırdım. Daha sonra piston olaraq qalın bir kibrit istifadə etdim. Kibritin uzunluğunu kəsmək üçün bir qapaq istifadə etdim ki, xarici qapaq bağlanarsa açar açılsın. MQTT mesajlarını izləmək üçün mosquitto_sub işləyərkən qapağı açaraq əlaqəni yoxladım (mqttbroker, istifadəçi və şifrənizi MQTT konfiqurasiyanızla əvəz edin):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u istifadəçi -P parol

Xarici qapaq açıldıqdan təxminən altı saniyə sonra aşağıdakı MQTT mesajı dərc olunur. Vaxt mikro nəzarətçini oyatmaq və WiFi və broker bağlantısı qurmaq üçün istifadə olunur.

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

Bu müddət ərzində mikro nəzarətçi təxminən 70mA istifadə etdi. Bitirdikdə, dərin yuxuya gedir və mənim vəziyyətimdə 20uA -dan az istifadə edir. "flap" hər zaman doğrudur, "vcc" mV -də batareya gərginliyini bildirir və "prev" 0 olmalıdır. 1 və ya 2 -dirsə, bu, poçt qutusuna bağlana bilmədiyi üçün daha əvvəl mesaj göndərə bilmədiyi deməkdir. WiFi və ya MQTT brokerinə qoşula bilmədiyi üçün. "RSSI" WiFi siqnalının gücüdür. Hər ikisi problemlərin diaqnozu üçün çox əlverişlidir.

Cihazın nəzərdə tutulduğu kimi işləməsini və nədənsə batareyasını boşaltmamasını təmin etmək üçün bir neçə gün ərzində batareya gərginliyini izləmək yaxşı bir fikirdir.

Firmware də havada (OTA) özünü yeniləyə bilir, amma bu, təlimat verilənin bir qədər kənardadır. Maraqlananlar üçün OTA konfiqurasiyası da config.h -dədir.

Addım 6: MQTT Mesajında hərəkət etmək üçün Node-RED istifadə edin

MQTT Mesajında Node-RED-dən istifadə etmək
MQTT Mesajında Node-RED-dən istifadə etmək

Nəhayət, Node-RED-də sadə bir axın yaratdım. İlk qovluq poçt qutusu mövzusuna abunə olur (stat/poçt qutusu/tətik). Mesaj alındıqda, ikinci düyün e -poçtu formatlayır *). Son düyün, gmail -i SMTP serveri olaraq istifadə edərək gmail ünvanına göndərir. Bundan sonra telefonum mənə yeni poçt haqqında xəbərdarlıq edəcək.

Node-RED axını bir gitlab parçasına əlavə etdim ki, onu Node-RED axınlarınıza daxil edə biləsiniz.

Əlbəttə ki, daha çox qovşaq əlavə edə bilərsiniz, məsələn, poçt qutusu hadisələrini MariaDb və ya SqlLite -də qeyd etmək və ya batareya gərginliyi 2.7 voltdan aşağı düşəndə əlavə həyəcan siqnalları yaratmaq.

Xoşbəxt poçt ovu!

*) Növbəti səhifəyə baxın, indi e -poçt əvəzinə PushBullet istifadə edirəm.

Addım 7: Sonrakı düşüncələr

İşlərin daha yaxşı edilə biləcəyini düşünmək həmişə var.

Keçid edin

Bir qədər yöndəmsiz dalğıc yanaşması yerinə (super) maqnit və qamış kontaktından istifadə etməyi üstün tutardım. İki səbəb var idi. Birincisi, qutu açıldıqda kontaktın bağlanması ilə bu işi edə bilməyimin heç bir yolu yox idi və həmişə bağlanması kiçik bir cərəyanın həmişə axacağı demək idi. Geriyə baxdıqda, 4M7 rezistorundan axan 1uA -dan az batareya ömrü baxımından böyük bir şey olmazdı. Digəri daha praktik idi. Şənbə günü bu layihəni hazırladım və proqramı yazdım, hamısını bazar günü ətrafında qurduqlarımdan qurdum. Sadəcə zibil qutusunda qamışla əlaqəm yox idi.

Qeyd: diy_blokenin dediyi kimi, qamış kontaktları uzun müddət maqnitləndikdə yapışmağa meyllidir, buna görə də piston heç də pis bir fikir deyildi. Biz görəcəyik. *)

Boşaltma mesajı

Poçt qutusu da boşaldıqda bir mesaj göndərir. Bu böyük bir şey deyil, amma evdə daha çox adam xəbərdarlıq aldıqda, bütün məqsədinə zidd olan poçt qutusunu yoxlayan bir döngə ilə nəticələnə bilər! Bunun bir neçə yolu var, məsələn, daxili qapağın qaldırılıb -açılmadığını yoxlamaq və əgər belədirsə, mesaj göndərməmək. Ya da qapaq açarını istifadə etmək əvəzinə poçt qutusunun altına bir detektor quraşdırın. Və ya boşaldarkən kiçik bir sıfırlama düyməsinə basılacaq. Bununla birlikdə, hər şeyi çətinləşdirəcək və ehtimal ki, etibarlılığı pisləşdirəcək.

Mesajlaşma

E -poçt göndərmək xəbərdarlığı söndürmək üçün olduqca təsirli, lakin kobud bir yoldur. Daha zərif bir yol bir telefon tətbiqi olardı, ancaq müəyyən bir mesaj alındıqda əməliyyat sistemi xəbərdarlığını işə salmaq üçün konfiqurasiya edilə bilən bir Android MQTT tablosuna tətbiq tapmadım. Ətrafda biri varsa, şərhlərə əlavə edin. **)

*) Bir ildən çox işlədikdən sonra istifadə etdiyim lolipop çubuğunun, əsasən sərt haddelenmiş kağızın, keçid yayının daimi təzyiqi altında qısalma meyli olduğu ortaya çıxdı. Bir az problem aradan qaldırıldıqdan sonra taxta çubuqla əvəz etdim.

**) İndi PushBullet -dən MQTT tablosundan ayrı push mesajları üçün istifadə edirəm. API üçün kiçik bir Node-RED aşağı interfeysləri burada tapa bilərsiniz. "Yenidən cəhd et" qovşağında "pushbullet üçün hazırla" düyməsindəki giriş simvolunu və geri dönüş məqsədləri üçün e -poçt ünvanınızı təmin etdiyinizə əmin olun.

Tövsiyə: