Мазмуну:

MQTT жана Wifi Powered почта кутусунун желеги: 7 кадам (сүрөттөр менен)
MQTT жана Wifi Powered почта кутусунун желеги: 7 кадам (сүрөттөр менен)

Video: MQTT жана Wifi Powered почта кутусунун желеги: 7 кадам (сүрөттөр менен)

Video: MQTT жана Wifi Powered почта кутусунун желеги: 7 кадам (сүрөттөр менен)
Video: Как использовать ESP32 WiFi и Bluetooth с Arduino IDE, полная информация с примерами и кодом. 2024, Июль
Anonim
MQTT жана Wifi Powered Mailbox Flag
MQTT жана Wifi Powered Mailbox Flag

Эскертүү: жаңы программалык камсыздоо, схема жана программист үчүн кеңештер менен жаңыртылган

Бир нече жыл мен өзүмдүн үйүмдү автоматташтыруу долбоорун баштадым. Бул арзан PT2262 негизделген алыскы өчүргүчтөрдү алмаштыруу үчүн Arduino менен башкарылган 433 МГц жыштыктагы серверди куруу менен башталды. Кийинчерээк мен аба ырайынын станциясына Arduino негизиндеги ресиверди кошуп, EV заряддагычты көзөмөлдөө контактин ж.б. коштум. Иштер барган сайын чырмалышып (жана татаал!) Өстү. Ошентип, бир нече ай мурун мен баардык нерсени MQTTге негизделген, автоматташтыруу үчүн Node-RED (экөө тең бир Raspberry Pi B+менен иштейт) жана MariaDb (менин Synology NAS-да иштеп жаткан) боюнча стандартташтырууну чечтим. Кийинчерээк мен MQTT брокерин (Mosquitto) жана Node-REDди УИАга өткөрүп бердим.

Бул нускамада бул үй инфраструктурасында менин көчөдө орнотулган почта кутусуна илинген акылсыз долбоор сүрөттөлөт. Идея, эгер кимдир бирөө эшиктен болжол менен 10 метр алыстыкта орнотулган почта ящигин ачса, бул мага телефонумда жана башка түзмөктөрдө сигнал берет.

1 -кадам: Контур, Пререквизиттер жана Бөлүктөр

Контур

Жогорку деңгээлде, почта ящиги ачылганда, брокерге уникалдуу MQTT билдирүүсүн жөнөтүшү керек, ошондо бул темага жазылуучулар кабардар болушат. Node-RED дагы жазылат жана автоматташтырылат, бул учурда телефонума электрондук почта жана/же билдирүү жөнөтүлөт.

Почта ящиги батарейкалар менен иштеши керек жана жок дегенде бир жыл иштеши керек жана муну менин WiFi тармагым аркылуу жасаш керек. Микроконтроллерди ойготуу жана WiFi тармагына туташуу бир нече секундага созулушу мүмкүн, мен кубаттуулукту өчүрүү үчүн активация которгучун колдоно алган жокмун. Анын ордуна, почта кутусунун капкагы жабылган соң, процессор өз ишин бүтүрүүгө уруксат бериши керек.

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

Менин оюмча, сизде жөнөкөй ширетүү жөндөмү бар, Arduino IDE менен бир аз иштештиңиз жана ESP8266 такталарын Boards Manager аркылуу орноттуңуз. Ошондой эле микро контроллерди программалоо үчүн 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 плагин менен Атом) толугу менен 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 үчүн дагы эки аял башы бар кичинекей станок куруңуз. Ошондой эле, сизге USB Serial модулу керек, ал 3,3 вольтту камсыздай алат. ESP8266 чипи 5 вольт катуулабаганын эске алыңыз, андыктан бул жердеги ката сиздин модулду өлтүрүп коюшу мүмкүн. Кандай болбосун, дагы бир жолу баракчаны колдонуп, аппаратты төмөнкүдөй өткөрүңүз:

  1. USB Serial модулунан 3.3V Vcc, CH_PD, RST жана GPIO2ге чейин.
  2. USB Сериялык модулунун GND жана GND жана GPIO0.
  3. USBSerial модулунун TXD RXDге.
  4. USB Serial модулунун RDX TXDге.

Алдын ала түзүлгөн программист

Өзүңүздүн нерселериңизди куруунун өзү эле кызыктуу, эң жалкоо ыкмасы-сүйүктүү аукцион сайтыңыздан ESP-01ден серияга чейин интерфейсти алуу, жогорудагы сүрөттү караңыз. Бул бургулоочу станокко караганда алда канча жеңил, компакт жана ишенимдүү. Бирок, булардын айрымдары программисттер эмес, жөн гана сериялык интерфейстер. Интерфейстин арт жагында GND (пин A1) менен GPIO0 (пин C1) ортосундагы зым көпүрөнү ширетүү керек, экинчи сүрөттү караңыз. Эскерте кетсек, ESP-01 антеннаны USB розеткасына каратып туташтырылышы керек, тескерисинче!

Эскертүү: алар дагы которгуч менен бар, үчүнчү сүрөттү караңыз, абдан сонун.

Камтылган программаны жүктөңүз

1.8.3 же андан кийинки Arduino IDE деп ойлосоңуз, Tools> Board тандап, өзүңүздөгү тактаны тандаңыз. Мен колдонгон ESP-01 үчүн "Жалпы ESP8266 модулун" тандап, жана төмөнкү параметрлерди коюңуз (бул бардык демейки шарттар болушу керек):

  1. Жарык режими: DIO
  2. Жарык жыштыгы: 40 МГц
  3. CPU жыштыгы: 80MHz
  4. Жарыктын өлчөмү: 512KB (64KB SPIFFS) Эскертүү: эгер сиз кара ESP-01 тактасын колдонсоңуз, 1MB (64KB SPIFFS) тандаңыз
  5. Мүчүлүштүктөрдү оңдоо порт: Өчүрүлгөн
  6. Мүчүлүштүктөрдү оңдоо деңгээли: Жок
  7. Кайра коюу ыкмасы: ck
  8. Жүктөө ылдамдыгы 115200
  9. Порт: USB Serial интерфейсине туташкан портту тандаңыз. Менин Ubuntu PC үчүн /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"}

Бул убакыттын ичинде, микро контроллер болжол менен 70mA колдонгон. Бүткөндөн кийин, ал терең уйкуга кетет жана менин учурда ал 20uAдан азыраак колдонулат. "flap" дайыма чындык, "vcc" батареянын чыңалуусу mV менен "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 дарегиме жөнөтөт, 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 төмөн интерфейстерин бул жерден тапса болот. Сиз "pushbulletке даярдануу" түйүнүнө кирүү энбелгисин жана "Кайталап көрүү" түйүнүндө артка кайтаруу үчүн электрондук почта дарегиңизди камсыздаганыңызды текшериңиз.

Сунушталууда: