Tartalomjegyzék:

MQTT és Wifi Powered Mailbox Flag: 7 lépés (képekkel)
MQTT és Wifi Powered Mailbox Flag: 7 lépés (képekkel)

Videó: MQTT és Wifi Powered Mailbox Flag: 7 lépés (képekkel)

Videó: MQTT és Wifi Powered Mailbox Flag: 7 lépés (képekkel)
Videó: #126 Cheap MQTT Broker on Raspberry Zero W / DietPi / MQTT Message Logger SQlite / PHPliteAdmin 2024, November
Anonim
MQTT és Wifi Powered Mailbox Flag
MQTT és Wifi Powered Mailbox Flag

Megjegyzés: frissítve új firmware -rel, sematikával és tippekkel egy programozó számára

Pár évig belekezdtem a saját otthoni automatizálási projektembe. Azzal kezdődött, hogy egy szerver által vezérelt 433 MHz -es távadót épített egy Arduino -val, hogy sok olcsó PT2262 -alapú távkapcsolót kapcsoljon. Később hozzáadtam egy Arduino alapú vevőt az időjárás -állomásomhoz, bekötöttem az elektromos töltőm vezérlő érintkezőjét stb. A dolgok egyre jobban összefonódtak (és bonyolultak!). Így néhány hónappal ezelőtt úgy döntöttem, hogy mindent szabványosítok az MQTT alapján az üzenetküldéshez, a Node-RED-et az automatizáláshoz (mindkettő egyetlen Raspberry Pi B+-on fut) és a MariaDb-hez a naplózáshoz (a Synology NAS-on fut). Később áthelyeztem az MQTT brókerét (Mosquitto) és a Node-RED-t a NAS-ra is.

Ez az oktatható leírás egy buta, szórakoztató projektet ír le, amellyel az utcára szerelt postafiókomat beakasztja ebbe az otthoni infrastruktúrába. Az ötlet az, hogy ha valaki kinyitja a kerítésre szerelt postaládát körülbelül 10 méterre a bejárati ajtótól, az jelzi a telefonomon és esetleg más eszközökön.

1. lépés: Vázlat, előfeltételek és alkatrészek

Vázlat

Magas szinten a postafióknak, amikor kinyílik, egyedi MQTT üzenetet kell küldenie a brókernek, hogy a téma előfizetői értesüljenek. A Node-RED is előfizet, és némi automatizálást végez, ebben az esetben e-mailt és/vagy push üzenetet küld a telefonomra.

A postaládának akkumulátorról kell működnie, és legalább egy évig kell működnie, és ezt a WiFi hálózatom használatával kell elvégeznie. Mivel a mikrovezérlő felébresztése és a WiFi hálózathoz való csatlakozás több másodpercet is igénybe vehet, nem tudtam az aktiváló kapcsolóval lekapcsolni az áramot. Ehelyett a processzornak meg kell engednie, hogy befejezze tevékenységét, miután a postafiók fedele már bezárult.

Előfeltételek

Feltételezem, hogy szerény forrasztási készségekkel rendelkezik, dolgozott egy kicsit az Arduino IDE -vel, és telepítette az ESP8266 táblákat a Boards Manager segítségével. A mikrovezérlő programozásához rendelkeznie kell egy 3,3 voltos USB soros adapterrel is.

Feltételezem azt is, hogy van egy MQTT brókere és egy Node-RED szervere. Ha nem, akkor sok utasítás található az interneten, de azt tanácsolom, hogy válasszon lusta utat, és használja Peter Scargill kiváló telepítő szkriptjét, ha ezt bármelyik Pi vagy Ubuntu rendszeren futtatni szeretné, vagy Andreas Spiess képét használja a Pi Zero W (linkeket a videó leírásában), így néhány órát takaríthat meg a telepítési szkriptek futásától. Alternatív megoldásként beállíthatja, hogy a firmware közvetlenül küldjön egy e -mailt, de sok rugalmasságot veszít ezzel.

Alkatrészek

  • 1 zárt, 3 AA elemdoboz
  • 2 db AA elem
  • 1 ESP8266 modul. Ehhez a projekthez ESP-01-t használtam
  • 1 db mikrokapcsoló
  • 1 47K ellenállás
  • 1 4M7 ellenállás
  • 1 2.2uF kondenzátor
  • 1 vékony műanyag cső. Tollat használtam
  • 1 vastag, hosszú gyufaszál vagy nyalókás bot. Könnyen illeszkedjen és mozogjon a műanyag csőben

2. lépés: Hardver: doboz, kapcsoló és huzalozás

Hardver: doboz, kapcsoló és vezetékek
Hardver: doboz, kapcsoló és vezetékek
Hardver: doboz, kapcsoló és vezetékek
Hardver: doboz, kapcsoló és vezetékek
Hardver: doboz, kapcsoló és vezetékek
Hardver: doboz, kapcsoló és vezetékek

Kezdtem egy régi elemdobozzal, egy megszűnt karácsonyi díszből. Három AA méretű elemre tervezték. Mivel az ESP8266 szépen fog működni 3 volton, két elemet használhatnék, és a harmadik pozíciót használhatnám a mikrovezérlőhöz. Figyelje meg, hogy a dobozban volt egy kis extra rekesz, amelyet az aktiváló kapcsolóhoz használhattam. A képeken látható nagyon gyakori kapcsolót használtam, de eltávolítottam a rugót, amely be- vagy kikapcsolt helyzetben rögzíti. Két vékony vezetéket forrasztottam az NC érintkezőkre, és apró csepp szuperragasztóval ragasztottam a dobozba.

Ezt követően lyukat fúrtam a felső burkolatba, amely megfelel egy golyóstollból vett műanyag csőnek. A lyuk pontosan illeszkedik a kapcsolóhoz, és egy vastag gyufaszálból készült dugattyút vezet.

Végül még két vezetéket forrasztottam az akkumulátor érintkezőire, és mind a négy vezetéket a harmadik akkumulátor helyzetébe vezettem, ahol a mikrovezérlő lesz.

3. lépés: Hardver: az ESP-01

Hardver: az ESP-01
Hardver: az ESP-01
Hardver: az ESP-01
Hardver: az ESP-01
Hardver: az ESP-01
Hardver: az ESP-01

Tekintettel a WiFi követelményre, az egész projekt ESP8266 felkiált. Ez a kis WiFi -vezérlő a bütykölő közösség kedvenc munkalová lett, 2,50 euró alatt megvásárolható modulként, amely teljes WiFi- és TCP/IP -stacket tartalmaz, több mint elegendő kapacitással a saját programok futtatásához. Az Arduino IDE (vagy az Atom a PlatformIO beépülő modullal) teljes mértékben támogatja az ESP8266 -at.

Általában ESP-12F-et vennék, de volt egy apró ESP-01-es tábla, amely tökéletesen megfelelt a feladatnak, és jól illeszkedik az elemtartóba. Az egyetlen probléma az, hogy meglehetősen bonyolult a firmware frissítése az ESP-01-ben. Erről bővebben a következő lépésben. Egy módosítást kell végrehajtani: el kell távolítania a piros tápellátás LED -et a tábláról, mivel folyamatosan 3 mA áramot vesz fel. A LED eltávolításával a modul csak néhány tíz uA -t használ mély alvás üzemmódban, ami két évig tartó minőséget biztosít két minőségi AA elemmel.

Kiderült, hogy két csíkot, 4 tűs hüvelyes fejlécet és forrasztást használhatok a néhány extra komponensre szabad formában, hogy eltávolíthassam az ESP-01-et a firmware frissítéséhez, miközben még mindig elfér a harmadik elemtartóban.

Nagyon fontos az ESP megfelelő bekötése. A fenti csalólap segítségével kösse be az alábbiak szerint.

  1. Akkumulátor plusz Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) és 47K ellenállás.
  2. Az akkumulátor mínusz GND (A1) és a kapcsoló egy vezetéke.
  3. A kapcsoló másik vezetéke 100nF kondenzátorhoz és 4M7 ellenálláshoz.
  4. Mindkét ellenállás és a kondenzátor nyitott végei az RST -hez (C2).
  5. A TXD (A2) kapcsolat nélkül maradhat.

Szerkesztés: Ki kellett cserélnem az ESP-01-et, mert buta hibát követtem el és megsemmisítettem. Meglepetésemre kiderült, hogy az új ESP-01 nem nullázódott az eredeti 100nF kondenzátorral. Valószínűleg egy kicsit más kialakítású. Lecseréltem egy 2.2 uF -esre, és most újra működik

Ha elkészült, mindent be lehet szerelni a dobozba, de várjon, először be kell programoznunk a modult.

4. lépés: Az ESP-01 programozása

Az ESP-01 programozása
Az ESP-01 programozása
Az ESP-01 programozása
Az ESP-01 programozása
Az ESP-01 programozása
Az ESP-01 programozása

Az ESP-01 firmware-jének felvillanásához építhet egy kis szerelvényt, vagy vásárolhat (majdnem) komplett programozót körülbelül 1 euróért.

Hardvereszközök programozása

Építsen egy kis szerelvényt ismét két női fejjel az ESP-01 számára. Ezenkívül szüksége van egy USB soros modulra, amely 3,3 volt feszültséget biztosít. Ne feledje, hogy az ESP8266 chip nem 5 voltos edzett, így egy hiba megölheti a modult. Mindenesetre ismét a csalólap segítségével kösse be a szereléket a következőképpen:

  1. 3.3V az USBSerial modulról a Vcc, CH_PD, RST és GPIO2 hálózatra.
  2. Az USBSerial modul GND -je a GND -hez és a GPIO0 -hoz.
  3. Az USBSerial modul TXD -je RXD -re.
  4. Az USBSerial modul RDX -je TXD -re.

Előkészítés programozó

Bármennyire szórakoztató is a saját cuccok készítése, a lustább megközelítés az, hogy ESP-01 soros interfészt szerez be kedvenc aukciós webhelyéről, lásd a fenti képet. Ez sokkal egyszerűbb, kompaktabb és megbízhatóbb, mint egy szerelvény. Ezek egy része azonban nem programozó, csak soros interfész. Dróthidat kell forrasztani a GND (A1 -es érintkező) és a GPIO0 (C1 -es érintkező) között az interfész hátoldalán, lásd a második képet. Vegye figyelembe, hogy az ESP-01-t úgy kell csatlakoztatni, hogy az antenna az USB-csatlakozó felé nézzen, és nem fordítva!

Megjegyzés: kapcsolóval is léteznek, lásd a harmadik képet, nagyon szép.

Töltse be a firmware -t

Feltételezve, hogy az Arduino IDE értéke 1.8.3 vagy újabb, válassza az Eszközök> Tábla lehetőséget, és válassza ki a kívánt táblát. Az általam használt ESP-01 esetében válassza az "Általános ESP8266 modul" lehetőséget, és állítsa be a következő beállításokat (ez legyen az összes alapértelmezett beállítás):

  1. Vaku mód: DIO
  2. Vaku frekvencia: 40MHz
  3. CPU frekvencia: 80MHz
  4. Vaku mérete: 512 KB (64 KB SPIFFS) Megjegyzés: ha fekete ESP-01 lapot használ, válassza az 1 MB (64 KB SPIFFS) lehetőséget
  5. Hibakeresési port: Letiltva
  6. Hibakeresési szint: Nincs
  7. Visszaállítás módja: ck
  8. Feltöltési sebesség 115200
  9. Port: válassza ki az USB soros interfészhez csatlakoztatott portot. Az Ubuntu PC -m esetében a /dev /ttyUSB0 volt

Csatlakoztassa a berendezést/programozót, töltse be a Sketch -et, amelyet itt talál: https://gitlab.com/jeroenmeijer/Mailbox.git. Adja meg WiFi és MQTT közvetítői hitelesítő adatait, valamint IP -konfigurációját a config.h -ban, és válassza a Feltöltés lehetőséget.

5. lépés: Összeszerelés

Összeszerelés
Összeszerelés

Lyukat fúrtam a műanyag csőhöz a postaládám belső fedelében, a csuklópánthoz lehető legközelebb, majd a fedél aljára melegen ragasztottam az elemdobozt. Ezután vastag gyufát használtam dugattyúként. Egy csipesszel vágtam a gyufát hosszúra, hogy a kapcsoló kinyíljon, ha a külső fedél zárva van. A csatlakozást úgy ellenőriztem, hogy kinyitottam a fedelet, miközben a mosquitto_sub futtatása közben figyeltem az MQTT üzeneteket (az mqttbroker, a felhasználó és a jelszó cseréje az MQTT konfigurációra):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u felhasználó -P jelszó

Körülbelül hat másodperccel a külső fedél kinyitása után a következő MQTT üzenet jelenik meg. Az idő arra szolgál, hogy felébressze a mikrovezérlőt, és létrehozza a WiFi és a közvetítői kapcsolatot.

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

Ez idő alatt a mikrovezérlő körülbelül 70 mA-t használt. Ha elkészült, mély álomba merül, és az én esetemben kevesebb, mint 20uA -t használt. A "csappantyú" mindig igaz, a "vcc" az akkumulátor feszültségét mV -ban adja meg, és a "prev" értéknek 0 -nak kell lennie. Ha 1 vagy 2, az azt jelenti, hogy a postafiók korábban nem tudott üzenetet küldeni, mert nem tudott csatlakozni a WiFi, vagy mert nem tudott csatlakozni az MQTT brókerhez. Az "RSSI" a WiFi jel erőssége. Mindkettő nagyon hasznos a problémák diagnosztizálásához.

Érdemes néhány napig figyelemmel kísérni az akkumulátor feszültségét, hogy az eszköz rendeltetésszerűen működjön, és valamilyen okból nem meríti le az akkumulátort.

A firmware képes frissíteni magát az éteren keresztül (OTA) is, de ez egy kicsit túlmutat ezen utasítás keretein. Az érdeklődők számára az OTA konfiguráció a config.h -ban is megtalálható.

6. lépés: A Node-RED használata az MQTT üzenetben való cselekvéshez

A Node-RED használata az MQTT üzenet kezeléséhez
A Node-RED használata az MQTT üzenet kezeléséhez

Végül létrehoztam egy egyszerű folyamatot a Node-RED-ben. Az első csomópont feliratkozik a postafiók témájára (stat/postbox/trigger). Amikor üzenet érkezik, a második csomópont formáz egy e -mailt *). Az utolsó csomópont elküldi a gmail címemre, a gmail -t használva SMTP szerverként. A telefonom ekkor értesít az új levelekről.

Hozzáadtam a Node-RED folyamatot egy gitlab kódrészlethez, így importálhatja azt a Node-RED folyamatokba.

Természetesen további csomópontokat is hozzáadhat, például a postafiók eseményeinek naplózásához a MariaDb vagy az SqlLite szolgáltatásba, vagy további riasztásokat hozhat létre, ha az akkumulátor feszültsége 2,7 volt alá csökken.

Boldog levélvadászatot!

*) Lásd a következő oldalt, most a PushBullet -t használom e -mail helyett.

7. lépés: Utógondolatok

Mindig ez az érzés, hogy a dolgokat lehetett volna jobban is csinálni.

Kapcsoló

Legszívesebben egy (szuper) mágnest és egy nádérintkezőt használtam volna a kissé ügyetlen dugattyús megközelítés helyett. Ennek két oka volt. Az egyik az, hogy semmiképpen sem tudtam ezt a munkát elvégezni, amikor a doboz kinyitásakor zárva volt az érintkező, és ha mindig zárva volt, az azt jelentette, hogy mindig kis áram folyik. Utólag a 4M7 ellenálláson átáramló kevesebb, mint 1uA nem lett volna nagy baj az akkumulátor élettartamát tekintve. A másik praktikusabb volt. Szombaton kitaláltam ezt a projektet, és megírtam a szoftvert, vasárnap építsem meg mindazt, ami körülötte volt. Egyszerűen nem volt nádas érintkezőm a szemétládában.

Megjegyzés: ahogy a diy_bloke megjegyezte, a nádas érintkezők hajlamosak ragadósodni, ha hosszú ideig mágnesezik őket, így talán a dugattyú egyáltalán nem volt olyan rossz ötlet. Meglátjuk. *)

Üzenet a kiürítésről

A postaláda üzenetet küld ürítéskor is. Ez nem nagy dolog, de ha többen kapják a figyelmeztetést a házban, az ember egy ciklusba kerülhet, és ellenőrzi a postaládát, dacolva a céljaival! Ennek néhány módja van, például ellenőrizheti, hogy a belső fedél felemelkedett -e, és ha igen, ne küldjön üzenetet. Vagy a fedélkapcsoló használata helyett telepítsen érzékelőt a postafiók aljára. Vagy egy kis reset gombot, amelyet le kell nyomni ürítéskor. Mindez azonban bonyolítja a dolgokat, és valószínűleg rontja a megbízhatóságot.

Üzenetek

Az e -mail küldése meglehetősen hatékony, de durva módja a figyelmeztetésnek. Egy elegánsabb módszer egy telefonos alkalmazás lenne, de nem találtam olyan Android MQTT irányítópult -alkalmazást, amely konfigurálható úgy, hogy egy operációs rendszer riasztását aktiválja egy bizonyos üzenet érkezésekor. Ha van ilyen a környéken, kérjük, tegye hozzá a megjegyzésekhez. **)

*) Több mint egy év működés után kiderül, hogy az általam használt nyalókás bot, alapvetően kemény hengerelt papír, hajlamos rövidülni a kapcsolórugó állandó nyomása alatt. Némi hibaelhárítás után kicseréltem egy fapálcára.

**) PushBullet -et használok most push üzenetekhez, külön az MQTT műszerfaltól. Egy apró Node-RED alacsony interfész az API-hoz itt található. Győződjön meg arról, hogy megadta a hozzáférési jogkivonatot a "Készülj fel a pushbullet" csomópontra, és az e -mail címét az "Újrapróbálkozás" csomópont tartalék célokra.

Ajánlott: