Мазмұны:

MQTT және Wifi қосылған пошта жәшігінің жалауы: 7 қадам (суреттермен)
MQTT және Wifi қосылған пошта жәшігінің жалауы: 7 қадам (суреттермен)

Бейне: MQTT және Wifi қосылған пошта жәшігінің жалауы: 7 қадам (суреттермен)

Бейне: MQTT және Wifi қосылған пошта жәшігінің жалауы: 7 қадам (суреттермен)
Бейне: РАЗДАЕТ WIFI СЛЕДИТ ЗА ЧЕЛОВЕКОМ 4G камера видеонаблюдения 2024, Шілде
Anonim
MQTT және Wifi қосылған пошта жәшігінің жалауы
MQTT және Wifi қосылған пошта жәшігінің жалауы

Ескерту: жаңа микробағдарламамен, схемамен және бағдарламашыға арналған кеңестермен жаңартылған

Бірнеше жыл ішінде мен өз үйімді автоматтандыру жобасын бастадым. Ол PT2262 негізіндегі көптеген арзан қашықтан ажыратқыштарды ауыстыру үшін Arduino көмегімен 433 МГц жылдамдықтағы сервермен басқарылатын құрылғыны құрудан басталды. Кейінірек мен метеостанцияға Arduino негізіндегі ресиверді қостым, EV зарядтау құрылғысының басқару контактісін жалғадым және т. Заттар бір -бірімен тығыз байланысты болды (және күрделі!). Сонымен, бірнеше ай бұрын мен хабар алмасу үшін MQTT, автоматтандыруға арналған Node-RED (екеуі де бір Raspberry Pi B+жүйесінде жұмыс істейді) және MariaDb журналдарын тіркеуге (менің Synology NAS жүйесінде жұмыс істейтін) негізделген стандарттауды шештім. Кейін мен MQTT брокерін (Mosquitto) және Node-RED-ті NAS-ға ауыстырдым.

Бұл нұсқаулық менің үйдегі инфрақұрылымдағы менің көшедегі пошта жәшігімен байланыстыратын көңілді жобаны сипаттайды. Идея мынада, егер біреу кіреберістен шамамен 10 метр қашықтықта қоршалған пошта жәшігін ашса, бұл менің телефоныма және мүмкін басқа құрылғыларға сигнал береді.

1 -қадам: Контур, алғы шарттар мен бөліктер

Контур

Жоғары деңгейде, пошта жәшігі ашылған кезде, брокерге бірегей MQTT хабарламасын жіберуі керек, осылайша жазылушылар осы тақырыпта хабардар болады. Node-RED де жазылады және кейбір автоматтандыруды жасайды, бұл жағдайда менің телефоныма электрондық поштаны және/немесе хабарламаны жібереді.

Пошта жәшігі батареялармен жұмыс істеп, кем дегенде бір жыл жұмыс істеуі керек және мұны менің Wi -Fi желісінің көмегімен жасау керек. Микроконтроллерді ояту және WiFi желісіне қосылу бірнеше секундқа созылуы мүмкін болғандықтан, мен қуатты өшіру үшін белсендіру қосқышын пайдалана алмадым. Оның орнына, пошта жәшігінің қақпағы жабылғаннан кейін процессорға өз жұмысын аяқтауға рұқсат беру керек.

Алдын ала шарттар

Менің ойымша, сізде дәнекерлеу дағдылары бар, Arduino IDE -мен біраз жұмыс жасадыңыз және ESP8266 тақталарын тақталар менеджерінің көмегімен орнаттыңыз. Микроконтроллерді бағдарламалау үшін сізге 3,3 вольтты USB сериялық адаптері болуы керек.

Сізде MQTT брокері мен Node-RED сервері бар деп ойлаймын. Егер олай болмаса, Интернетте көптеген нұсқаулар бар, бірақ мен оны кез келген Pi немесе Ubuntu -да іске қосқыңыз келсе немесе Питер Скаргиллдің тамаша орнату сценарийін қолдануға кеңес берер едім, немесе Pi Zero W (сілтеме сол бейненің сипаттамасында), бұл сізге жұмыс сценарийлерін қараудың бірнеше сағатын үнемдеуге мүмкіндік береді. Сонымен қатар, сіз микробағдарламаны электрондық поштаны тікелей жібере аласыз, бірақ сіз бұл үшін икемділікті жоғалтасыз.

Бөлшектер

  • 1 жабық, 3 АА батарея қорабы
  • 2 АА батареялары
  • 1 ESP8266 модулі. Бұл жоба үшін мен ESP-01 қолдандым
  • 1 микро коммутатор
  • 1 47K резистор
  • 1 4M7 резисторы
  • 1 2.2uF конденсатор
  • 1 жұқа пластикалық түтік. Мен қалам қолдандым
  • 1 қалың, ұзын сіріңке немесе лолипоп таяқшасы. Ол пластикалық түтікке оңай еніп, қозғалуы керек

2 -қадам: Жабдық: қорап, қосқыш және сымдар

Жабдық: қорап, қосқыш және сымдар
Жабдық: қорап, қосқыш және сымдар
Жабдық: қорап, қосқыш және сымдар
Жабдық: қорап, қосқыш және сымдар
Жабдық: қорап, қосқыш және сымдар
Жабдық: қорап, қосқыш және сымдар

Мен ескі батарея қорапшасынан Рождестволық безендіруден бастадым. Ол АА өлшемді үш батареяға арналған. ESP8266 3 вольтта жақсы жұмыс істейтіндіктен, мен екі батареяны қолданып, микроконтроллер үшін үшінші орынды қолдана аламын. Қорапта активтендіру қосқышы үшін қолдануға болатын кішкене қосымша бөлік болғанына назар аударыңыз. Мен суретте көрсетілген коммутатордың өте кең таралған түрін қолдандым, бірақ оны қосулы немесе өшірулі күйде бекітетін серіппені алып тастадым. Мен екі жұқа сымды NC түйіспелеріне дәнекерледім және оны супер желімнің кішкене тамшысымен қорапқа жапсырдым.

Содан кейін мен шарикті қаламнан алынған пластикалық түтікке сәйкес келетін жоғарғы қақпақта тесік жасадым. Тесік коммутатормен дәл сәйкес келеді және қалың сіріңке таяқшасынан жасалған поршенді басқарады.

Ақырында мен батарея контактілеріне тағы екі сымды дәнекерледім және барлық төрт сымды микроконтроллер болатын үшінші батареяның орнына бағыттадым.

3-қадам: Жабдық: ESP-01

Жабдық: ESP-01
Жабдық: ESP-01
Жабдық: ESP-01
Жабдық: ESP-01
Жабдық: ESP-01
Жабдық: ESP-01

WiFi талаптарын ескере отырып, бүкіл жоба ESP8266 деп айқайлайды. Бұл шағын WiFi контроллері 2,50 еуроға сатып алынатын және толық WiFi мен TCP/IP жинағын біріктіретін, өз бағдарламаларын іске қосу үшін жеткілікті сыйымдылыққа ие болатын модуль ретінде жұмыс жасайтын қоғамдастықтың сүйікті жұмыс күшіне айналды. Arduino IDE (немесе PlatformIO плагині бар Atom) ESP8266 толық қолдайды.

Мен әдетте ESP-12F алатын едім, бірақ менде жұмыс үшін өте ыңғайлы және батарея қорабына жақсы сай келетін шағын ESP-01 тақтасы болды. Жалғыз мәселе-бұл ESP-01-де микробағдарламаны жарқылдату өте қиын. Бұл туралы келесі қадамда толығырақ. Бір модификация бар: тақтадан қызыл жарық диодты алып тастау керек, себебі ол 3мА үздіксіз тартады. Светодиодты алып тастағанда, модуль терең ұйқы режимінде бірнеше ондаған УА пайдаланады, бұл оны екі жыл бойы АА екі сапалы батареямен жұмыс істеуге мүмкіндік береді.

Мен ESP-01-ді микробағдарламаны жаңарту үшін алып тастау үшін, ол әлі де үшінші аккумуляторлық бөлімге сәйкес келуі үшін, 4 түйреуішті аналық үстіңгі тақталар мен екі қосымша жолақты еркін формада қолдана алатыным белгілі болды.

ESP сымын дұрыс қосу өте маңызды. Жоғарыда көрсетілген парақты пайдаланып, оны келесідей жалғаңыз.

  1. Батарея плюс Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) және 47K резистор.
  2. Батарея минусы GND (A1) және коммутатордың бір сымы.
  3. 100nF конденсаторға және 4M7 резисторына ауысудың басқа сымы.
  4. Резистордың да, конденсатордың да ашық ұштары RST (C2).
  5. TXD (A2) қосылмай қалуы мүмкін.

Өңдеу: Мен ESP-01 ауыстыруым керек болды, себебі мен ақымақтық қате жіберіп, оны жойдым. Жаңа ESP-01 бастапқы 100nF конденсаторымен қалпына келтірілмегені мені таң қалдырды. Оның сәл өзгеше дизайны бар шығар. Мен оны 2,2 uF -ке ауыстырдым, енді ол қайтадан жұмыс істейді

Аяқтағаннан кейін бәрін қорапқа орнатуға болады, бірақ ұстап тұрыңыз, алдымен модульді бағдарламалау керек.

4-қадам: ESP-01 бағдарламалау

ESP-01 бағдарламалау
ESP-01 бағдарламалау
ESP-01 бағдарламалау
ESP-01 бағдарламалау
ESP-01 бағдарламалау
ESP-01 бағдарламалау

Микробағдарламаны ESP-01-де жыпылықтау үшін сіз шағын қондырғы жасай аласыз немесе шамамен 1 евроға толық дерлік бағдарламашыны сатып ала аласыз.

Программалық аппараттық қондырғы

Кішкентай қондырғыны жасаңыз, ESP-01 үшін тағы екі әйел басы бар. Сондай -ақ, сізге 3,3 вольтты қамтамасыз ететін USB сериялық модулі қажет. ESP8266 чипі 5 вольтты қатайтылмағанын ескеріңіз, сондықтан қателік сіздің модульді өлтіруі мүмкін. Қалай болғанда да, қайтадан парақты қолданып, қондырғыңызды келесідей сыммен жалғаңыз:

  1. USBSerial модулінен Vcc, CH_PD, RST және GPIO2 -ге 3.3В.
  2. USBSerial модулінің GND және GND және GPIO0.
  3. USBSerial модулінің RXD -ге TXD.
  4. TXD -ге USBSerial модулінің RDX.

Алдын ала құрастырушы бағдарламашы

Өзіңіздің жеке бұйымдарыңызды құрастыру қызықты болғанымен, ең жақсы тәсіл-сіздің сүйікті аукцион сайтынан ESP-01 сериялық интерфейсін алу, жоғарыдағы суретті қараңыз. Бұл қондырғыға қарағанда әлдеқайда жеңіл, ықшам және сенімді. Алайда, олардың кейбіреулері бағдарламашылар емес, тек сериялық интерфейстер. Интерфейстің артқы жағында GND (A1 түйреуіші) мен GPIO0 (түйреуіш С1) арасындағы сымдық көпірді дәнекерлеу қажет, екінші суретті қараңыз. Назар аударыңыз, ESP-01 антеннасы USB розеткасына қарама-қарсы қосылуы керек, керісінше емес!

Ескерту: олар коммутатормен де бар, үшінші суретті қараңыз, өте жақсы.

Микробағдарламаны жүктеңіз

Arduino IDE 1.8.3 немесе одан жоғары деп есептесеңіз, Құралдар> Тақтаны таңдап, өзіңізде бар тақтаны таңдаңыз. Мен қолданатын ESP-01 үшін «Жалпы ESP8266 модулін» таңдап, келесі опцияларды орнатыңыз (бұл әдепкі мәндер болуы керек):

  1. Жарқыл режимі: DIO
  2. Жарқыл жиілігі: 40 МГц
  3. CPU жиілігі: 80 МГц
  4. Жарқыл өлшемі: 512KB (64KB SPIFFS) Ескерту: егер сіз қара ESP-01 тақтасын қолдансаңыз, 1MB (64KB SPIFFS) таңдаңыз
  5. Жөндеу порты: өшірілген
  6. Жөндеу деңгейі: жоқ
  7. Қалпына келтіру әдісі: ck
  8. Жүктеу жылдамдығы 115200
  9. Порт: USB сериялық интерфейсіне қосылған портты таңдаңыз. Менің Ubuntu ДК үшін /dev /ttyUSB0 болды

Бұрғылау қондырғысын/бағдарламашыны қосыңыз, мұнда таба алатын эскизді жүктеңіз https://gitlab.com/jeroenmeijer/Mailbox.git. WiFi және MQTT брокерінің тіркелгі деректерін және IP конфигурациясын config.h ішінде жеткізіп, Жүктеуді таңдаңыз.

5 -қадам: Барлығын жинау

Барлығын жинау
Барлығын жинау

Мен пошта жәшігімнің ішкі қақпағындағы пластикалық түтікке ілмекке мүмкіндігінше жақын тесік жасадым, содан кейін батарея қорабын сол қақпақтың астына ыстық желіммен жапсырдым. Содан кейін мен поршень ретінде қалың сіріңкені қолдандым. Сыртқы қақпақ жабылған жағдайда қосқыш ашылатындай етіп мен сіріңкені ұзындыққа қысқарттым. Мен MQTT хабарларын бақылау үшін mosquitto_sub іске қосылған кезде қақпақты ашу арқылы қосылымды тексердім (mqttbroker, пайдаланушы мен құпия сөзді MQTT конфигурациясымен ауыстырыңыз):

$ mosquitto_sub -h mqttbroker -v -t «stat/#» -u пайдаланушы -P құпия сөзі

Сыртқы қақпақ ашылғаннан кейін шамамен алты секундтан кейін келесі MQTT хабарламасы жарияланады. Уақыт микроконтроллерді оятуға және WiFi мен брокер байланысын орнатуға жұмсалады.

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

Осы уақыт ішінде микроконтроллер шамамен 70 мА жұмсады. Аяқтағаннан кейін ол терең ұйқыға кетеді, ал менің жағдайда ол 20uA -дан аз жұмсалады. «flap» әрқашан дұрыс, «vcc» аккумулятор кернеуін мВ -да көрсетеді және «prev» 0 болуы керек. Егер ол 1 немесе 2 болса, бұл пошта жәшігі қосыла алмағаны үшін хабарды ертерек жібере алмайтынын білдіреді. WiFi, немесе ол MQTT брокеріне қосыла алмады. «RSSI» - бұл WiFi сигналының күші. Екеуі де проблемаларды диагностикалауға өте ыңғайлы.

Бірнеше күн бойы батареяның кернеуін бақылау жақсы, себебі құрылғы ойдағыдай жұмыс істейді және қандай да бір себептермен оның батареясы таусылмайды.

Микробағдарлама сонымен қатар ауада жаңарта алады (OTA), бірақ бұл нұсқаулықтың ауқымынан сәл тыс. Қызығушылар үшін OTA конфигурациясы config.h ішінде де бар.

6-қадам: MQTT хабарламасында әрекет ету үшін Node-RED пайдалану

MQTT хабарламасында әрекет ету үшін Node-RED пайдалану
MQTT хабарламасында әрекет ету үшін Node-RED пайдалану

Ақырында, мен Node-RED-те қарапайым ағын құрдым. Бірінші түйін пошта жәшігінің тақырыбына жазылады (стат/пошта жәшігі/триггер). Хабар алынған кезде, екінші түйін электрондық поштаны пішімдейді *). Соңғы түйін оны gmail -ке SMTP сервері ретінде қолданып жібереді. Содан кейін телефон маған жаңа хат туралы хабарлайды.

Мен Node-RED ағынын gitlab үзіндісіне қостым, сондықтан сіз оны Node-RED ағындарына импорттай аласыз.

Әрине, сіз бірнеше түйіндерді қоса аласыз, мысалы, пошта жәшігіндегі оқиғаларды MariaDb немесе SqlLite журналына тіркеу немесе батарея кернеуі 2,7 вольттан төмен болған кезде қосымша дабылдар қосу.

Пошталық аңшылық құтты болсын!

*) Келесі бетті қараңыз, мен қазір электрондық поштаның орнына PushBullet қолданамын.

7-қадам: Кейінгі ойлар

Әрқашан бұл нәрсені жақсартуға болатын сияқты сезім бар.

Ауыстыру

Мен поршеньдік тәсілдің орнына (супер) магнит пен қамыс контактісін қолданғанды жөн көрер едім. Екі себеп болды. Бірі, қорап ашылған кезде контактіні жабу арқылы мен бұл жұмысты жасай алмадым, және оны үнемі жабу кішкентай ток үнемі ағып тұратынын білдіреді. Артқа қарайтын болсақ, 4М7 резисторы арқылы өтетін 1уА -дан аз батареяның қызмет ету мерзімі бойынша үлкен мәселе болмас еді. Екіншісі практикалық болды. Мен сенбіде бұл жобаны жасадым және бағдарламалық қамтамасыз етуді жаздым, бәрін жексенбіде айналадағылардың есебінен құрдым. Менде қоқыс жәшігінде қамыс байланысы болған жоқ.

Ескерту: diy_bloke түсіндіргендей, қамыс контактілер ұзақ уақыт магниттелген кезде жабысқақ болады, сондықтан поршень мүлде жаман идея емес шығар. Біз көреміз. *)

Босату туралы хабарлама

Пошта жәшігі оны босатқан кезде хабар жібереді. Бұл маңызды емес, бірақ үйде көп адамдар ескерту алған кезде, оның мақсатын жоққа шығаратын пошта жәшігін тексеруге болады! Мұның бірнеше жолы бар, мысалы, ішкі қақпақ көтерілгенін тексеру, егер болса, хабарлама жібермеу. Немесе қақпақ ауыстырғышты пайдаланудың орнына пошта жәшігінің төменгі жағына детекторды орнатыңыз. Немесе оны босату кезінде ысыру түймесін басу керек. Алайда, бәрі жағдайды қиындатады және сенімділікті нашарлатады.

Хабар алмасу

Электрондық поштаны жіберу - бұл ескертуді жоюдың өте тиімді, бірақ өрескел әдісі. Телефон қосымшасы неғұрлым талғампаз болады, бірақ мен белгілі бір хабар алынған кезде операциялық жүйенің ескертуін іске қосатын Android MQTT бақылау тақтасының қосымшасын таппадым. Егер айналасында біреу болса, түсініктемелерге қосыңыз. **)

*) Бір жылдан астам жұмыс істегеннен кейін, мен қолданған лолипоп таяқшасы, негізінен қатты илектелген қағаз, коммутатор серіппесінің тұрақты қысымы кезінде қысқаруға бейім екені белгілі болды. Ақаулықтарды жойғаннан кейін мен оны ағаш таяқшамен алмастырдым.

**) Мен PushBullet -ті қазір MQTT бақылау тақтасынан бөлек хабарламалар үшін қолданамын. API-ге арналған Node-RED төмен шағын интерфейстерін осы жерден табуға болады. «Қайталау» түйінінде «Басу құрылғысына дайындық» түйінінде кіру таңбалауышын және резервтік мақсат үшін электрондық пошта мекенжайын енгізгеніңізге көз жеткізіңіз.

Ұсынылған: