Innehållsförteckning:
- Steg 1: Disposition, förutsättningar och delar
- Steg 2: Hårdvara: lådan, omkopplaren och ledningarna
- Steg 3: Hårdvara: ESP-01
- Steg 4: Programmering av ESP-01
- Steg 5: Montera allt
- Steg 6: Använda Node-RED för att agera på MQTT-meddelandet
- Steg 7: Eftertanke
Video: MQTT och Wifi Powered Mailbox Flag: 7 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Obs: uppdaterad med ny firmware, en schematisk och tips för en programmerare
Ett par år påbörjade jag mitt eget hemautomatiseringsprojekt. Det började med att bygga en serverstyrd 433 MHz sändarbyggnad med en Arduino för att byta massor av billiga PT2262 -baserade fjärrkontakter. Senare lade jag till en Arduino -baserad mottagare för min väderstation, kopplade upp kontrollkontakten för min EV -laddare, etc. Saker och ting blev allt mer sammanflätade (och komplicerade!). Så för några månader sedan bestämde jag mig för att standardisera allt baserat på MQTT för meddelanden, Node-RED för automatisering (båda körs på en enda Raspberry Pi B+) och MariaDb för loggning (körs på min Synology NAS). Senare flyttade jag MQTT-mäklaren (Mosquitto) och Node-RED över till NAS också.
Denna instruerbara beskriver ett dumt för skojs skull projekt som hakar min gatupostlåda i denna heminfrastruktur. Tanken är att om någon öppnar den staketmonterade brevlådan cirka 10 meter från ytterdörren, signalerar den mig på min telefon och eventuellt andra enheter.
Steg 1: Disposition, förutsättningar och delar
Översikt
På en hög nivå bör brevlådan, när den öppnas, skicka ett unikt MQTT -meddelande till mäklaren, så att prenumeranter på det ämnet kommer att informeras. Node-RED prenumererar också och gör lite automatisering, i det här fallet skickar det ett e-postmeddelande och/eller ett push-meddelande till min telefon.
Postlådan ska köras på batterier och köras i minst ett år, och bör göra det med mitt WiFi -nätverk. Eftersom det kan ta flera sekunder att väcka en mikrokontroller och ansluta till ett WiFi-nätverk kunde jag inte använda aktiveringsomkopplaren för att stänga av strömmen. I stället bör processorn få avsluta sin verksamhet efter att locket på brevlådan redan har stängts.
Förkunskaper
Jag antar att du har blygsamma lödningskunskaper, har arbetat lite med Arduino IDE och har installerat ESP8266 -korten med Boards Manager. Du måste också ha en 3,3 volt USB-adapter för att programmera mikrokontrollen.
Jag antar också att du har en MQTT-mäklare och en Node-RED-server som körs. Om inte, finns det många instruktioner på Internet, men jag skulle rekommendera att ta den lata vägen och använda Peter Scargills utmärkta installationsskript om du vill köra detta på någon Pi eller Ubuntu, eller använda Andreas Spiess bild för Pi Zero W (länkar i beskrivningen av den videon), vilket sparar dig några timmar med att titta på installationsskript som körs. Alternativt kan du få firmware att skicka ut ett e -postmeddelande direkt, men du kommer att förlora mycket flexibilitet när du gör det.
Delar
- 1 stängd, 3 AA batterilåda
- 2 AA -batterier
- 1 ESP8266 -modul. För detta projekt använde jag en ESP-01
- 1 mikrobrytare
- 1 47K motstånd
- 1 4M7 motstånd
- 1 2.2uF kondensator
- 1 tunn plaströr. Jag använde en penna
- 1 tjock, lång tändsticka eller slickepinne. Den ska enkelt passa och röra sig i plaströret
Steg 2: Hårdvara: lådan, omkopplaren och ledningarna
Jag började med en gammal batterilåda från en nedlagd juldekoration. Den var designad för tre AA -batterier. Eftersom ESP8266 kommer att fungera bra på 3 volt kan jag använda två batterier och använda den tredje positionen för mikrokontrollen. Lägg märke till hur lådan hade ett litet extra fack som jag kunde använda för aktiveringsomkopplaren. Jag använde en mycket vanlig typ av strömbrytare som visas på bilderna, men tog bort fjädern som låser den i på eller av -läge. Jag lödde två tunna trådar till NC -kontakterna och limmade det i lådan med en liten droppe superlim.
Därefter borrade jag ett hål i det övre locket som matchade ett plaströr taget från en kulpenna. Hålet ligger i linje med omkopplaren och styr en kolv gjord av en tjock matchpinne.
Slutligen lodde jag ytterligare två ledningar till batterikontakterna och guidade alla fyra ledningarna till positionen för det tredje batteriet, där mikrokontrollen skulle vara.
Steg 3: Hårdvara: ESP-01
Med tanke på WiFi -kravet ropar hela projektet ESP8266. Denna lilla WiFi -handkontroll har blivit den mest fina arbetshästen i pysselgemenskapen som en modul som kan köpas för 2,50 EUR och integrerar en full WiFi- och TCP/IP -stack, med mer än tillräckligt med kapacitet att driva egna program. Arduino IDE (eller Atom med PlatformIO -plugin) stöder ESP8266 fullt ut.
Jag skulle vanligtvis ta en ESP-12F, men jag hade en liten ESP-01-bräda som låg perfekt för jobbet och passar fint i batterilådan. Det enda problemet är att det är ganska komplicerat att flasha firmware i ESP-01. Mer om det i nästa steg. Det finns en ändring att göra: Du måste ta bort den röda lysdioden från kortet, eftersom den kontinuerligt drar 3mA. Med lysdioden borttagen använder modulen bara några tiotals uA i djuptömningsläge vilket gör att den håller i över ett år på två kvalitets AA -batterier.
Det visade sig att jag kunde använda två remsor med 4-stifts honhuvuden och lödning på de få extra komponenterna i fri form så att jag kunde ta bort ESP-01 för att uppdatera firmware, medan den fortfarande skulle passa i det tredje batterifacket.
Det är mycket viktigt att ansluta ESP korrekt. Använd ovanstående fuskblad, vira upp det enligt följande.
- Batteri plus till Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) och ett 47K motstånd.
- Batteri minus till GND (A1) och en ledning på omkopplaren.
- Brytarens andra ledning till en 100nF kondensator och ett 4M7 -motstånd.
- De öppna ändarna på både motstånd och kondensatorn till RST (C2).
- TXD (A2) kan förbli oansluten.
Edit: Jag var tvungen att byta ut ESP-01 eftersom jag gjorde ett dumt misstag och förstörde det. Det visade sig att till min förvåning återställdes den nya ESP-01 inte med den ursprungliga 100nF kondensatorn. Den har förmodligen en något annorlunda design. Jag bytte ut den mot en 2,2 uF och nu fungerar den igen
När det är klart kan allt monteras i lådan, men håll ut, först måste vi programmera modulen.
Steg 4: Programmering av ESP-01
För att blinka firmware på din ESP-01 kan du antingen bygga en liten rigg eller köpa en (nästan) komplett programmerare för cirka 1 euro.
Programmering av hårdvarrigigg
Bygg en liten rigg med igen två hona för ESP-01. Du behöver också en USB -seriemodul som kan leverera 3,3 volt. Observera att ESP8266 -chipet inte är 5 volt härdat, så ett misstag här kan döda din modul. Hur som helst, igen med fuskarket, kabela din rigg enligt följande:
- 3.3V från USBSerial -modulen till Vcc, CH_PD, RST och GPIO2.
- GND för USBSerial -modulen till GND och GPIO0.
- TXD för USBSerialmodulen till RXD.
- RDX för USBSerialmodulen till TXD.
Förbyggd programmerare
Roligt som det är att bygga dina egna grejer, det latare tillvägagångssättet är att få ett ESP-01-till-seriellt gränssnitt från din favorit auktionssajt, se bilden ovan. Detta är mycket lättare, mer kompakt och mer pålitligt än en rigg. Vissa av dessa är dock inte programmerare, bara seriella gränssnitt. Du måste löda en trådbro mellan GND (stift A1) och GPIO0 (stift C1) på baksidan av gränssnittet, se den andra bilden. Observera att ESP-01 ska anslutas med antennen vänd mot USB-kontakten, inte tvärtom!
Obs: de finns också med en switch, se tredje bilden, mycket snyggt.
Ladda in firmware
Om vi antar en Arduino IDE på 1.8.3 eller senare väljer du Verktyg> Kort och väljer det kort du har. För en ESP-01 som jag använde, välj "Generisk ESP8266-modul" och ställ in följande alternativ (detta bör vara alla standardvärden):
- Blixtläge: DIO
- Blixtfrekvens: 40 MHz
- CPU -frekvens: 80 MHz
- Blixtstorlek: 512KB (64KB SPIFFS) Obs! Om du använder ett svart ESP-01-kort väljer du 1MB (64KB SPIFFS)
- Felsökningsport: Inaktiverad
- Felsökningsnivå: Ingen
- Återställ metod: ck
- Uppladdningshastighet 115200
- Port: välj porten som är ansluten till ditt USB -seriella gränssnitt. För min Ubuntu -dator var det /dev /ttyUSB0
Anslut riggen/programmeraren, ladda den skiss du hittar här https://gitlab.com/jeroenmeijer/Mailbox.git. Ange dina WiFi- och MQTT -mäklaruppgifter och din IP -konfiguration i config.h och välj Ladda upp.
Steg 5: Montera allt
Jag borrade ett hål för plaströret i innerlocket på min brevlåda, så nära gångjärnet som möjligt, och sedan limmade jag batterilådan på undersidan av locket. Därefter använde jag en tjock match som en kolv. Jag använde en snip för att klippa tändstickan i längd så att omkopplaren skulle öppna om ytterlocket stängdes. Jag kontrollerade anslutningen genom att öppna locket medan jag kör mosquitto_sub för att övervaka MQTT -meddelanden (ersätt mqttbroker, användare och lösenord med din MQTT -konfiguration):
$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u användare -P lösenord
Cirka sex sekunder efter att det yttre locket öppnats publiceras följande MQTT -meddelande. Tiden används för att väcka mikrokontrollern och upprätta WiFi- och mäklaranslutningen.
stat/mailbox/trigger {"vcc": 3050, "flap": true, "prev": 0, "RSSI": 29, "version": "005"}
Under denna tid använde mikrokontrollen cirka 70mA. När det är klart går det i djup sömn och i mitt fall använde det mindre än 20uA. "flik" är alltid sant, "vcc" anger batterispänningen i mV och "föregående" ska vara 0. Om det är 1 eller 2 betyder det att brevlådan inte kunde skicka ett meddelande tidigare, antingen eftersom det inte kunde ansluta till WiFi, eller för att den inte kunde ansluta till MQTT -mäklaren. "RSSI" är styrkan i WiFi -signalen. Båda är mycket praktiska för att diagnostisera problem.
Det är en bra idé att övervaka batterispänningen i några dagar för att säkerställa att enheten fungerar som den ska och inte tömmer batteriet av någon anledning.
Firmware kan också uppdatera sig själv via luften (OTA), men det ligger lite utanför ramen för detta instruerbara. För dem som är intresserade finns OTA -konfigurationen också i config.h.
Steg 6: Använda Node-RED för att agera på MQTT-meddelandet
Slutligen skapade jag ett enkelt flöde i Node-RED. Den första noden prenumererar på ämnet för brevlådan (stat/postbox/trigger). När ett meddelande tas emot formaterar den andra noden ett e -postmeddelande *). Den sista noden skickar ut den till min gmail -adress med Gmail som SMTP -server. Min telefon kommer då att meddela mig om ny e -post.
Jag har lagt till Node-RED-flödet i ett gitlab-utdrag så att du kan importera det till dina Node-RED-flöden.
Naturligtvis kan du lägga till några fler noder, till exempel för att logga brevlådeshändelserna till MariaDb eller SqlLite, eller skapa extra larm när batterispänningen går under 2,7 volt.
Glad postjakt!
*) Se nästa sida, jag använder PushBullet nu istället för e -post.
Steg 7: Eftertanke
Det finns alltid en känsla av att saker och ting kunde ha gjorts bättre.
Växla
Jag hade föredraget att använda en (super) magnet och en vass kontakt istället för det lite klumpiga kolvmetoden. Det fanns två skäl. Det ena är att det inte fanns något sätt att jag kunde få det att fungera när kontakten stängdes när lådan öppnades, och att ha den stängd innebar att en liten ström alltid skulle flöda. I efterhand skulle det mindre än 1uA som flödar genom 4M7 -motståndet inte ha varit en stor sak när det gäller batteritid. Den andra var mer praktisk. Jag skapade det här projektet på lördagen och skrev programvaran, byggde allt på söndagen från det som låg runt. Jag hade helt enkelt inte en vasskontakt i skräpboxen.
Obs: som diy_bloke kommenterade, har vasskontakter en tendens att bli klibbiga när de magnetiseras under lång tid, så kanske kolven inte var en så dålig idé alls. Vi får se. *)
Meddelande om tömning
Postlådan skickar ut ett meddelande när du tömmer det också. Det här är ingen stor grej, men med fler människor i huset som får varningen kan man hamna i en loop och kolla brevlådan som trotsar dess hela syfte! Det finns några sätt att kringgå detta, till exempel att kontrollera om det inre locket är lyft, och i så fall inte skicka ett meddelande. Eller istället för att använda lockomkopplaren, installera en detektor längst ner i brevlådan. Eller en liten återställningsknapp som du ska trycka på när du tömmer den. Men allt skulle komplicera saker och förmodligen försämra tillförlitligheten.
Meddelanden
Att skicka e -post är ett ganska effektivt men grovt sätt att släcka varningen. Ett mer elegant sätt skulle vara en telefonapp, men jag har inte hittat en Android MQTT -instrumentpanelapp som kan konfigureras för att utlösa en operativsystemvarning när ett visst meddelande tas emot. Om det finns en, lägg till i kommentarerna. **)
*) Efter mer än ett år i drift visar det sig att slickepinnen jag använde, i princip hårdvalsat papper, har en tendens att förkortas under omkopplarfjäderns konstanta tryck. Efter lite felsökning bytte jag ut den mot en träpinne.
**) Jag använder PushBullet nu för push -meddelanden, separat från MQTT -instrumentpanelen. Ett litet Node-RED lågt gränssnitt till API finns här. Se till att du tillhandahåller åtkomsttoken i noden "Förbered dig på pushbullet" och din e -postadress för reservändamål i noden "Försök igen".
Rekommenderad:
Persienner med ESP8266, Google Home och Openhab -integration och webbkontroll: 5 steg (med bilder)
Kontroll av persienner med ESP8266, Google Home och Openhab -integration och webbkontroll: I den här instruktionsboken visar jag dig hur jag lade automatisering till mina persienner. Jag ville kunna lägga till och ta bort automatiseringen, så all installation är klämd på. Huvuddelarna är: Stegmotor Stegdrivrutinstyrd vid ESP-01 Växel och montering
Luftkvalitetsmonitor med MQ135 och extern temperatur- och fuktighetssensor över MQTT: 4 steg
Luftkvalitetsmonitor med MQ135 och extern temperatur- och fuktighetssensor över MQTT: Detta är för teständamål
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid
USA - USB: American Flag USB Memorial: 8 steg (med bilder)
USA - USB: American Flag USB Memorial: Plug and play flaggningsceremoni. PC = patriotisk dator. Relaterade foton och video här uppe. Kolla in ni9e.com för fler projekt