Агуулгын хүснэгт:

MQTT болон Wifi -ээр ажилладаг шуудангийн хайрцагны туг: 7 алхам (зурагтай)
MQTT болон Wifi -ээр ажилладаг шуудангийн хайрцагны туг: 7 алхам (зурагтай)

Видео: MQTT болон Wifi -ээр ажилладаг шуудангийн хайрцагны туг: 7 алхам (зурагтай)

Видео: MQTT болон Wifi -ээр ажилладаг шуудангийн хайрцагны туг: 7 алхам (зурагтай)
Видео: Глобальные тренды 2020 — от Agile до IoT / Java Tech Talk 2024, Долдугаар сарын
Anonim
MQTT болон Wifi -ээр ажилладаг шуудангийн хайрцагны туг
MQTT болон Wifi -ээр ажилладаг шуудангийн хайрцагны туг

Тэмдэглэл: шинэ програм хангамж, схем, програмистын зөвлөмжөөр шинэчлэгдсэн

Хэдэн жилийн дараа би өөрийн гэрийн автоматжуулалтын төслийг эхлүүлсэн. Энэ нь PT2262 дээр суурилсан олон тооны алсын унтраалгыг солихын тулд Arduino ашиглан 433 МГц давтамжтай сервер удирддаг сервер бүтээх замаар эхэлсэн юм. Хожим нь би цаг агаарын станцынхаа Arduino дээр суурилсан хүлээн авагчийг нэмж, цахилгаан цэнэглэгчээ хянах контактийг холбосон гэх мэт. Аливаа зүйл улам бүр хоорондоо уялдаатай болж (мөн төвөгтэй!). Тиймээс, хэдэн сарын өмнө би мессеж бичих MQTT, автоматжуулалтад зориулагдсан Node-RED (хоёулаа нэг Raspberry Pi B+дээр ажилладаг), бүртгэхэд зориулагдсан MariaDb (миний Synology NAS дээр ажилладаг) дээр суурилсан бүх зүйлийг стандартчлахаар шийдсэн. Хожим нь би MQTT брокер (Mosquitto) болон Node-RED-ийг NAS-д шилжүүлэв.

Энэхүү зааварчилгаа нь энэхүү байшингийн дэд бүтцэд миний гудамжинд суурилуулсан шуудангийн хайрцгийг холбосон хөгжилтэй, тэнэг төслийг тайлбарласан болно. Гол санаа нь хэрэв хэн нэгэн урд хаалганаас 10 метрийн зайд хашаанд суурилуулсан шуудангийн хайрцгийг онгойлгох юм бол энэ нь миний утас болон магадгүй бусад төхөөрөмж дээр дохио өгдөг гэсэн үг юм.

Алхам 1: Тойм, урьдчилсан нөхцөл, эд анги

Тойм

Өндөр түвшинд, шуудангийн хайрцаг нээгдсэн тохиолдолд брокерт өвөрмөц MQTT мессеж илгээх ёстой бөгөөд ингэснээр тухайн сэдвийг захиалагчдад мэдээлэл өгөх болно. Node-RED бас захиалга өгч, автоматжуулалт хийдэг бөгөөд энэ тохиолдолд миний утас руу имэйл болон/эсвэл түлхэх мессеж илгээдэг.

Шуудангийн хайрцаг нь батерейгаар ажилладаг бөгөөд дор хаяж нэг жил ажиллах ёстой бөгөөд үүнийг WiFi сүлжээгээ ашиглан хийх ёстой. Микроконтроллерийг сэрээж, 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 нимгэн хуванцар хоолой. Би үзэг ашигласан
  • Зузаан, урт шүдэнз эсвэл зэгсэн мод. Энэ нь хуванцар хоолойд амархан багтаж, хөдөлж байх ёстой

Алхам 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мА -ыг тасралтгүй зурдаг тул та улаан өнгийн LED самбарыг самбараас салгах хэрэгтэй. LED -ийг салгаснаар модуль нь унтах горимд хэдхэн арван uA -ийг ашигладаг бөгөөд энэ нь хоёр чанарын АА батерейгаар бүтэн жил ажиллах боломжтой болно.

Би хэд хэдэн нэмэлт бүрэлдэхүүн хэсгүүдэд 4 зүү эмэгтэй толгой ба гагнуур хийх хоёр туузыг үнэгүй хэлбэрээр ашиглаж болох бөгөөд ингэснээр би ESP-01 програмыг шинэчлэхийн тулд гурав дахь батерейны тасалгаанд суулгасан хэвээр байх болно.

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.3V.
  2. USBSerial модулийн GND ба GND ба GPIO0.
  3. USBSerial модулийн TXD нь RXD рүү.
  4. USBSerial модулийн RDX -ийг TXD рүү.

Урьдчилан бүтээх програмист

Өөрийнхөө гараар эд зүйл бүтээх нь хөгжилтэй боловч хамгийн дур булаам арга бол дуудлага худалдааны дуртай сайтаас ESP-01-ээс цуврал интерфэйсийг авах явдал юм, дээрх зургийг үзнэ үү. Энэ нь өрмийн машинаас хамаагүй хялбар, авсаархан, илүү найдвартай байдаг. Гэсэн хэдий ч эдгээрийн зарим нь програмист биш, зөвхөн цуваа интерфейс юм. Та интерфейсийн ар талд GND (A1 зүү) ба GPIO0 (зүү C1) хоорондох төмөр гүүрийг гагнах хэрэгтэй, хоёр дахь зургийг үзнэ үү. ESP-01-ийг антенныг USB залгуур руу харсан байдлаар залгах ёстой гэдгийг анхаарна уу.

Тэмдэглэл: тэд бас унтраалгатай байдаг, гуравдахь зургийг үзнэ үү, маш сайхан.

Програм хангамжийг ачаална уу

Arduino IDE 1.8.3 ба түүнээс дээш хувилбартай гэж үзвэл Tools> Board -ийг сонгоод өөрт байгаа самбараа сонгоно уу. Миний ашиглаж байсан 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 PC -ийн хувьд /dev /ttyUSB0 байсан

Тоног төхөөрөмж/програмистыг холбоод эндээс олж болох Sketch -ийг ачаална уу https://gitlab.com/jeroenmeijer/Mailbox.git. WiFi болон MQTT брокерын итгэмжлэл, IP тохиргоог config.h дээр нийлүүлээд Upload -ийг сонгоно уу.

Алхам 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" нь зайны хүчдэлийг 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 -ийг SMTP сервер болгон миний gmail хаягаар илгээдэг. Дараа нь миний утас шинэ захидлын талаар надад мэдэгдэх болно.

Би Node-RED урсгалыг gitlab-ийн хэсэг дээр нэмсэн тул та үүнийг Node-RED урсгал руу оруулах боломжтой.

Мэдээжийн хэрэг, та хэд хэдэн зангилаа нэмж болно, жишээлбэл, шуудангийн хайрцгийн үйл явдлыг MariaDb эсвэл SqlLite дээр бүртгэх, эсвэл батерейны хүчдэл 2.7 вольтоос доош байвал нэмэлт дохиолол үүсгэх.

Аз жаргалтай шуудангийн ан!

*) Дараагийн хуудсыг үзнэ үү, би одоо имэйлийн оронд PushBullet ашиглаж байна.

Алхам 7: Дараагийн бодол

Аливаа зүйлийг илүү сайн хийх боломжтой гэсэн мэдрэмж үргэлж байдаг.

Шилжүүлэх

Би арай болхи поршений аргын оронд (супер) соронз, зэгс контакт ашиглахыг илүүд үзэх байсан. Хоёр шалтгаан байсан. Нэгдүгээрт, хайрцгийг онгойлгоход контакт хаагдахад би үүнийг хийх боломжгүй байсан бөгөөд үүнийг үргэлж хаах нь жижиг урсгал үргэлж урсах болно гэсэн үг юм. Эргээд харахад 4M7 резистороор дамждаг 1uA -аас бага зай нь батерейны ашиглалтын хувьд тийм ч том асуудал биш байх болно. Нөгөө нь илүү практик байсан. Би бямба гаригт энэ төслийг зохиож, програм хангамжаа бичиж, бүгдийг нь ням гаригт эргэн тойронд байгаа зүйлээс бүтээв. Надад зүгээр л хогны хайрцагт зэгс холбоо байгаагүй.

Анхаарна уу: diy_bloke -ийн тайлбарласнаар, зэгс контактууд удаан хугацаанд соронзлоход наалдах хандлагатай байдаг тул поршен нь тийм ч муу санаа биш байж магадгүй юм. Бид харах болно. *)

Хоослох тухай мессеж

Шуудангийн хайрцаг үүнийг хоослох үед мессеж илгээдэг. Энэ нь тийм ч том асуудал биш, гэхдээ байшинд олон хүн анхааруулга авснаар бүх зорилгоо биелүүлэхгүй байгаа шуудангийн хайрцгийг шалгаж үзэх боломжтой болно! Дотор тагийг өргөсөн эсэхийг шалгах, хэрэв тийм бол мессеж илгээхгүй байх гэх мэт хэд хэдэн арга байдаг. Эсвэл тагны унтраалга ашиглахын оронд шуудангийн хайрцгийн доод хэсэгт детектор суулгаарай. Эсвэл хоослох үед дахин тохируулах жижиг товчлуурыг дарах хэрэгтэй. Гэсэн хэдий ч бүх зүйл асуудлыг улам хүндрүүлж, найдвартай байдлыг улам бүр дордуулах болно.

Мессеж илгээх

Имэйл илгээх нь анхааруулгыг арилгах нэлээд үр дүнтэй боловч бүдүүлэг арга юм. Илүү гоёмсог арга бол утасны апп байх болно, гэхдээ би тодорхой мессеж хүлээн авах үед үйлдлийн системийн сэрэмжлүүлгийг өгөхийн тулд тохируулж болох Android MQTT хяналтын самбарыг олж чадаагүй байна. Ойр хавьд байгаа хүмүүс байвал сэтгэгдлээ нэмж бичээрэй. **)

*) Жил гаруйн хугацаанд ажилласны дараа миний ашиглаж байсан савхин мод, үндсэндээ хатуу өнхрүүлсэн цаас нь унтраалгын булгийн тогтмол даралтын дор богиносох хандлагатай байдаг. Алдааг олж засварласны дараа би модон саваагаар сольсон.

**) Би одоо PushBullet -ийг MQTT хяналтын самбараас тусдаа мессеж бичихэд ашиглаж байна. API-ийн жижиг Node-RED бага интерфэйсийг эндээс олж болно. "Дахин оролдох" зангилааны хувьд "pushbullet -д бэлдэх" зангилаа дахь хандалтын жетон, нөөцөд зориулж имэйл хаягаа нийлүүлсэн эсэхээ шалгаарай.

Зөвлөмж болгож буй: