Përmbajtje:

Flamuri i Kutisë Postare të MQTT dhe Wifi: 7 hapa (me fotografi)
Flamuri i Kutisë Postare të MQTT dhe Wifi: 7 hapa (me fotografi)

Video: Flamuri i Kutisë Postare të MQTT dhe Wifi: 7 hapa (me fotografi)

Video: Flamuri i Kutisë Postare të MQTT dhe Wifi: 7 hapa (me fotografi)
Video: Xhafo shpalos në “Log.’ flamurin kuq e zi të Ukrainës! Historia | ABC News Albania 2024, Korrik
Anonim
Flamuri i Kutisë Postare të MQTT dhe Wifi
Flamuri i Kutisë Postare të MQTT dhe Wifi

Shënim: përditësuar me firmware të ri, një skemë dhe një këshillë për një programues

Nja dy vjet fillova projektin tim të automatizimit të shtëpisë. Filloi duke ndërtuar një transmetues të kontrolluar nga serveri të ndërtuar 433 MHz me një Arduino për të ndërruar shumë ndërprerës të lirë të bazuar në PT2262. Më vonë shtova një marrës të bazuar në Arduino për stacionin tim të motit, lidha kontaktin e kontrollit të karikuesit tim EV, etj. Gjërat u ndërthurën gjithnjë e më shumë (dhe të ndërlikuara!). Kështu, disa muaj më parë vendosa të standardizoj gjithçka bazuar në MQTT për mesazhe, Node-RED për automatizim (të dyja duke funksionuar në një Raspberry Pi B+) dhe MariaDb për regjistrim (duke funksionuar në NAS Synology tim). Më vonë transferova ndërmjetësin MQTT (Mosquitto) dhe Node-RED në NAS gjithashtu..

Ky udhëzues përshkruan një projekt budalla për argëtim që lidh kutinë time postare të montuar në rrugë në këtë infrastrukturë shtëpiake. Ideja është që nëse dikush hap kutinë postare të rrethuar rreth 10 metra nga dera e përparme, ai më sinjalizon në telefonin tim dhe ndoshta pajisjet e tjera.

Hapi 1: Skica, Parakushtet dhe Pjesët

Skicë

Në një nivel të lartë, kutia postare duhet, kur të hapet, t'i dërgojë një mesazh unik MQTT ndërmjetësit, në mënyrë që pajtimtarët në atë temë të informohen. Node-RED pajtohet gjithashtu dhe bën disa automatizime, në këtë rast duke dërguar një email dhe/ose një mesazh shtytës në telefonin tim.

Kutia postare duhet të funksionojë me bateri dhe të funksionojë për të paktën një vit, dhe duhet ta bëjë këtë duke përdorur rrjetin tim WiFi. Meqë zgjimi i një mikrokontrolluesi dhe lidhja me një rrjet WiFi mund të zgjasë disa sekonda, unë nuk mund të përdor ndërprerësin e aktivizimit për të ndërprerë fuqinë. Në vend të kësaj, procesorit duhet t'i lejohet të përfundojë biznesin e tij pasi kapaku i kutisë postare të jetë mbyllur tashmë.

Parakushtet

Supozoj se keni aftësi modeste të saldimit, keni punuar pak me Arduino IDE dhe keni instaluar bordet ESP8266 duke përdorur Menaxherin e Bordeve. Ju gjithashtu duhet të keni një përshtatës Serial USB 3.3 volt për të programuar mikrokontrolluesin.

Unë gjithashtu supozoj se keni një ndërmjetës MQTT dhe një server Node-RED që funksionon. Nëse jo, ka shumë udhëzime në internet, por unë do të këshilloja që të merrni rrugën dembele dhe të përdorni skenarin e shkëlqyer të instalimit të Peter Scargill nëse doni ta përdorni këtë në ndonjë Pi ose Ubuntu, ose përdorni imazhin e Andreas Spiess për Pi Zero W (lidhje në përshkrimin e asaj video), e cila do t’ju kursejë disa orë duke parë skriptet e instalimit që funksionojnë. Përndryshe, mund ta bëni firmware -in të dërgojë një email direkt, por do të humbni shumë fleksibilitet duke e bërë këtë.

Pjesët

  • 1 kuti e mbyllur, 3 bateri AA
  • 2 bateri AA
  • 1 modul ESP8266. Për këtë projekt kam përdorur një ESP-01
  • 1 mikroçelës
  • 1 rezistencë 47K
  • 1 rezistencë 4M7
  • 1 kondensator 2.2uF
  • 1 tub plastik i hollë. Kam përdorur një stilolaps
  • 1 shkrepëse të trashë, të gjatë ose shkop sheqeri. Duhet të përshtatet lehtë dhe të lëvizë në tubin plastik

Hapi 2: Pajisjet kompjuterike: Kutia, Ndërprerësi dhe Instalimet

Pajisjet kompjuterike: Kutia, Ndërprerësi dhe Instalimet
Pajisjet kompjuterike: Kutia, Ndërprerësi dhe Instalimet
Pajisjet kompjuterike: Kutia, Ndërprerësi dhe Instalimet
Pajisjet kompjuterike: Kutia, Ndërprerësi dhe Instalimet
Pajisjet kompjuterike: Kutia, Ndërprerësi dhe Instalimet
Pajisjet kompjuterike: Kutia, Ndërprerësi dhe Instalimet

Fillova me një kuti të vjetër të baterisë nga një dekoratë e Krishtlindjeve e vdekur. Ajo ishte projektuar për tre bateri me madhësi AA. Meqenëse ESP8266 do të funksionojë mirë në 3 volt, unë mund të përdor dy bateri dhe të përdor pozicionin e tretë për mikrokontrolluesin. Vini re se si kutia kishte një ndarje të vogël shtesë që mund ta përdorja për çelësin e aktivizimit. Kam përdorur një ndërprerës shumë të zakonshëm të treguar në fotografi, por e hoqa sustën që e mbërthen në pozicionin e ndezjes ose fikjes. Unë ngjita dy tela të hollë në kontaktet NC dhe e ngjita në kuti me një pikë të vogël super ngjitës.

Më tej, unë shpova një vrimë në kapakun e sipërm që përputhej me një tub plastik të marrë nga një stilolaps. Vrima rreshtohet saktësisht me ndërprerësin dhe drejton një kumarxhi të bërë nga një shkop shkrepëse e trashë.

Më në fund, bashkova dy tela të tjerë në kontaktet e baterisë dhe i drejtova të katër telat në pozicionin e baterisë së tretë, ku do të ishte mikrokontrolluesi.

Hapi 3: Hardware: ESP-01

Pajisje kompjuterike: ESP-01
Pajisje kompjuterike: ESP-01
Pajisje kompjuterike: ESP-01
Pajisje kompjuterike: ESP-01
Pajisje kompjuterike: ESP-01
Pajisje kompjuterike: ESP-01

Duke pasur parasysh kërkesën për WiFi, i gjithë projekti bërtet ESP8266. Ky kontrollues i vogël WiFi është bërë kali i punës i preferuar i komunitetit tinkering si një modul që blihet nën 2.50 EUR dhe integron një WiFi të plotë dhe pirg TCP/IP, me më shumë se kapacitet të mjaftueshëm për të kursyer për të drejtuar programet tuaja. Arduino IDE (ose Atom me shtojcën PlatformIO) mbështet plotësisht ESP8266.

Unë zakonisht merrja një ESP-12F, por kisha një tabelë të vogël ESP-01, e cila ishte perfekte për punën dhe përshtatet mirë në kutinë e baterisë. Problemi i vetëm është se është mjaft e komplikuar të ndezësh firmware-in në ESP-01. Më shumë për këtë në hapin tjetër. Duhet të bëni një modifikim: Ju duhet të hiqni LED -in e kuq të energjisë nga bordi, pasi tërheq vazhdimisht 3mA. Me LED të hequr, moduli përdor vetëm disa dhjetëra uA në modalitetin e gjumit të thellë, i cili do ta bëjë atë të zgjasë për më shumë se një vit me dy bateri AA cilësore.

Doli se unë mund të përdor dy shirita me kokë femrash me 4 kunja dhe lidhës në disa përbërës shtesë në formë falas, në mënyrë që të mund të heq ESP-01 për të azhurnuar firmware-in, ndërsa ai akoma do të përshtatet në ndarjen e tretë të baterisë.

Veryshtë shumë e rëndësishme të lidhni saktë ESP. Duke përdorur fletën e mësipërme të mashtrimit, lidhni atë si më poshtë.

  1. Bateria plus Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) dhe një rezistencë 47K.
  2. Bateria minus GND (A1) dhe një tel i ndërprerësit.
  3. Teli tjetër i kalimit në një kondensator 100nF dhe një rezistencë 4M7.
  4. Skajet e hapura të të dy rezistencave dhe kondensatorit në RST (C2).
  5. TXD (A2) mund të mbetet e palidhur.

Edit: Më duhej të zëvendësoja ESP-01 sepse bëra një gabim budalla dhe e shkatërrova. Doli se për habinë time ESP-01 i ri nuk u rivendos me kondensatorin origjinal 100nF. Ndoshta ka një dizajn paksa të ndryshëm. E zëvendësova me një 2.2 uF dhe tani punon përsëri

Kur të bëhet, gjithçka mund të montohet në kuti, por prisni, së pari ne duhet të programojmë modulin.

Hapi 4: Programimi i ESP-01

Programimi i ESP-01
Programimi i ESP-01
Programimi i ESP-01
Programimi i ESP-01
Programimi i ESP-01
Programimi i ESP-01

Për të ndezur firmuerin në ESP-01, mund të ndërtoni një pajisje të vogël ose të blini një programues (pothuajse) të plotë për rreth 1 euro.

Programimi i pajisjeve hardware

Ndërtoni një platformë të vogël me përsëri dy kokë femra për ESP-01. Gjithashtu, keni nevojë për një modul USB Serial, të aftë për të siguruar 3.3 volt. Vini re se çipi ESP8266 nuk është i ngurtësuar 5 volt, kështu që një gabim këtu mund të vrasë modulin tuaj. Sidoqoftë, përsëri duke përdorur fletën e mashtrimit, lidhni pajisjen tuaj si më poshtë:

  1. 3.3V nga moduli USBSerial në Vcc, CH_PD, RST dhe GPIO2.
  2. GND e modulit USBSerial në GND dhe GPIO0.
  3. TXD e modulit USBSerial në RXD.
  4. RDX e modulit USBSerial në TXD.

Programues i para-ndërtuar

Edhe pse është argëtuese të ndërtosh sendet e tua, qasja më dembel është të marrësh një ndërfaqe serike ESP-01 nga faqja jote e preferuar e ankandit, shiko foton më lart. Kjo është shumë më e lehtë, më kompakte dhe më e besueshme sesa një pajisje. Sidoqoftë, disa nga këta nuk janë programues, vetëm ndërfaqe serike. Ju duhet të lidhni një urë teli midis GND (pin A1) dhe GPIO0 (pin C1) në pjesën e pasme të ndërfaqes, shihni foton e dytë. Vini re se ESP-01 duhet të lidhet me antenën përballë prizës USB, jo anasjelltas!

Shënim: ato gjithashtu ekzistojnë me një ndërprerës, shihni foton e tretë, shumë të këndshme.

Ngarkoni firmware -in

Duke supozuar një Arduino IDE prej 1.8.3 ose më vonë, zgjidhni Tools> Board dhe zgjidhni tabelën që keni. Për një ESP-01 siç kam përdorur, zgjidhni "Moduli i Përgjithshëm ESP8266" dhe vendosni opsionet e mëposhtme (këto duhet të jenë të gjitha parazgjedhjet):

  1. Mënyra e ndezjes: DIO
  2. Frekuenca e blicit: 40 MHz
  3. Frekuenca e CPU: 80 MHz
  4. Madhësia e blicit: 512KB (64KB SPIFFS) Shënim: nëse përdorni një tabelë të zezë ESP-01, zgjidhni 1MB (64KB SPIFFS)
  5. Porta e korrigjimit: e çaktivizuar
  6. Niveli i korrigjimit: Asnjë
  7. Metoda e rivendosjes: ck
  8. Shpejtësia e ngarkimit 115200
  9. Port: zgjidhni portën që është e lidhur me ndërfaqen tuaj Seriale USB. Për kompjuterin tim Ubuntu që ishte /dev /ttyUSB0

Lidheni pajisjen/programuesin, ngarkoni Skicën që mund të gjeni këtu https://gitlab.com/jeroenmeijer/Mailbox.git. Furnizoni kredencialet e ndërmjetësit tuaj WiFi dhe MQTT dhe konfigurimin tuaj IP në config.h dhe zgjidhni Ngarko.

Hapi 5: Mblidhni të gjitha

Mbledhja e të gjithave
Mbledhja e të gjithave

Unë shpova një vrimë për tubin plastik në kapakun e brendshëm të kutisë sime postare, sa më afër menteshës që të ishte e mundur, pastaj e ngjita kutinë e baterisë të nxehtë në pjesën e poshtme të atij kapaku. Më tej kam përdorur një shkrepëse të trashë si kumarxhi. Kam përdorur një prerje për të prerë shkrepësen në gjatësi në mënyrë që çelësi të hapet nëse kapaku i jashtëm është i mbyllur. Kam kontrolluar lidhshmërinë duke hapur kapakun gjatë drejtimit të mosquitto_sub për të monitoruar mesazhet MQTT (zëvendësoni mqttbroker, përdoruesin dhe fjalëkalimin me konfigurimin tuaj MQTT):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u përdorues -P fjalëkalim

Përafërsisht gjashtë sekonda pasi hapet kapaku i jashtëm, publikohet mesazhi i mëposhtëm MQTT. Koha përdoret për të zgjuar mikrokontrolluesin dhe për të krijuar lidhjen WiFi dhe ndërmjetësin.

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

Gjatë kësaj kohe, mikrokontrolluesi përdori afërsisht 70mA. Kur mbaron, bie në gjumë të thellë dhe në rastin tim përdori më pak se 20uA. "flap" është gjithmonë e vërtetë, "vcc" deklaron tensionin e baterisë në mV dhe "prev" duhet të jetë 0. Nëse është 1 ose 2, kjo do të thotë që kutia postare nuk ishte në gjendje të dërgonte një mesazh më herët, ose sepse nuk mund të lidhej me WiFi, ose sepse nuk mund të lidhej me ndërmjetësin MQTT. "RSSI" është forca e sinjalit WiFi. Të dy janë shumë të dobishëm për të diagnostikuar problemet.

Ideashtë një ide e mirë të monitoroni tensionin e baterisë për disa ditë për të siguruar që pajisja të funksionojë ashtu siç është menduar dhe të mos e shkarkojë baterinë për ndonjë arsye.

Firmware është gjithashtu në gjendje të azhurnohet vetë përmes ajrit (OTA), por kjo është pak përtej fushëveprimit të këtij udhëzimi. Për ata që janë të interesuar, konfigurimi OTA është gjithashtu në config.h.

Hapi 6: Përdorimi i Node-RED për të vepruar në Mesazhin MQTT

Përdorimi i Node-RED për të vepruar në Mesazhin MQTT
Përdorimi i Node-RED për të vepruar në Mesazhin MQTT

Më në fund, krijova një rrjedhë të thjeshtë në Nyje-RED. Nyja e parë regjistrohet në temën e kutisë postare (stat/kuti postare/shkas). Kur merret një mesazh, nyja e dytë formaton një email *). Nyja përfundimtare e dërgon atë në adresën time të gmail, duke përdorur gmail si server SMTP. Telefoni im do të më lajmërojë për postën e re.

Unë kam shtuar rrjedhën Node-RED në një copë gitlab kështu që ju mund ta importoni atë në rrjedhat tuaja Node-RED.

Sigurisht që mund të shtoni disa nyje të tjera, për shembull për të regjistruar ngjarjet e kutisë postare në MariaDb ose SqlLite, ose të krijoni alarme shtesë kur tensioni i baterisë të jetë nën 2.7 volt.

Gëzuar gjuetinë e postës!

*) Shih faqen tjetër, unë jam duke përdorur PushBullet tani në vend të postës elektronike.

Hapi 7: Mendimet e mëvonshme

Gjithmonë ekziston kjo ndjenjë se gjërat mund të ishin bërë më mirë.

Kaloni

Unë do të kisha preferuar të përdorja një magnet (super) dhe një kontakt kallami në vend të qasjes disi të ngathët të kumbuesit. Kishte dy arsye. Njëra është, nuk kishte asnjë mënyrë që ta bëja këtë punë me mbylljen e kontaktit kur kutia ishte e hapur, dhe ta kesh gjithmonë të mbyllur do të thoshte që një rrymë e vogël do të rridhte gjithmonë. Në retrospektivë, më pak se 1uA që rrjedh përmes rezistencës 4M7 nuk do të kishte qenë një punë e madhe për sa i përket jetës së baterisë. Tjetra ishte më praktike. Unë e përpilova këtë projekt të Shtunën dhe shkrova softuerin, ndërtoji të gjithë të Dielën nga ajo që ishte vendosur përreth. Unë thjesht nuk kisha një kontakt kallami në kutinë e hedhurinave.

Shënim: siç komentoi diy_bloke, kontaktet e kallamit kanë një tendencë të ngjiten kur magnetizohen për një kohë të gjatë, kështu që ndoshta kumarxhiu nuk ishte aspak një ide aq e keqe. Do të shohim. *)

Mesazh për zbrazjen

Kutia postare dërgon një mesazh kur e zbrazni atë gjithashtu. Kjo nuk është punë e madhe, por me më shumë njerëz në shtëpi që marrin paralajmërimin, dikush mund të përfundojë në një lak duke kontrolluar kutinë postare duke sfiduar qëllimin e tij të plotë! Ka disa mënyra rreth kësaj, të tilla si kontrollimi nëse kapaku i brendshëm është ngritur, dhe nëse po, mos dërgoni një mesazh. Ose në vend që të përdorni çelësin e kapakut, instaloni një detektor në fund të kutisë postare. Ose një buton i vogël rivendosjeje që duhet shtypur kur e zbrazni. Sidoqoftë, të gjitha do t'i komplikonin gjërat dhe ndoshta do të përkeqësonin besueshmërinë.

Mesazhe

Dërgimi i postës elektronike është një mënyrë mjaft efektive por e papërpunuar për të nxjerrë paralajmërimin. Një mënyrë më elegante do të ishte një aplikacion telefoni, por unë nuk kam gjetur një aplikacion pulti Android MQTT që mund të konfigurohet për të shkaktuar një alarm të sistemit operativ kur merret një mesazh i caktuar. Nëse ka një përreth, ju lutemi shtoni në komente. **)

*) Pas më shumë se një viti në punë, rezulton se shkopi i sheqerkut që kam përdorur, në thelb letër e mbështjellë fort, ka një tendencë të shkurtohet nën presionin e vazhdueshëm të pranverës së ndërprerës. Pas disa problemeve e zëvendësova me një shkop druri.

**) Unë jam duke përdorur PushBullet tani për mesazhe push, të ndara nga pulti MQTT. Një ndërfaqe e vogël Node-RED e ulët me API mund të gjendet këtu. Sigurohuni që të jepni shenjën e hyrjes në nyjen "Përgatituni për pushbullet" dhe adresën tuaj të postës elektronike për qëllime zëvendësuese në nyjen "Riprovo".

Recommended: