Innehållsförteckning:

Vattenläckagesensor på ESP8266 + Micropython + Domoticz: 16 steg (med bilder)
Vattenläckagesensor på ESP8266 + Micropython + Domoticz: 16 steg (med bilder)

Video: Vattenläckagesensor på ESP8266 + Micropython + Domoticz: 16 steg (med bilder)

Video: Vattenläckagesensor på ESP8266 + Micropython + Domoticz: 16 steg (med bilder)
Video: Kopplar ihop brandvarnarna med lamporna via Wiser 2024, November
Anonim
Vattenläckagesensor på ESP8266 + Micropython + Domoticz
Vattenläckagesensor på ESP8266 + Micropython + Domoticz
Vattenläcksensor på ESP8266 + Micropython + Domoticz
Vattenläcksensor på ESP8266 + Micropython + Domoticz

För en tid sedan bad min fru mig att göra en vattenläckagesensor. Hon var rädd att slangen i pannrummet kan läcka, och vattnet skulle översvämma det nylagda trägolvet. Och jag som en sann ingenjör åtog mig en sådan sensor att göra.

Från min 15 års erfarenhet som medicinsk ingenjör vet jag att det enklaste sättet att upptäcka vatten är metallnålar som är kortslutna av vatten. Principen för drift av de enklaste sensorerna är att vatten måste korta två (eller fler) metallnålar, och så snart det händer larmas det.

Steg 1: Hårdvara

Hårdvara
Hårdvara

För detta projekt behöver vi:

1. ESP8266 - 01 modul

2. HT7333 3.3V MS Low Dropout Linear Regulator Power Supply modu

Vi behöver denna modul för att minska spänningen från batteriet till den acceptabla nivån för ESP8266. Enligt datablad bör det finnas 3V till 3,6V ingång. Denna modul ger oss 3,3V.

3. Batteri. Jag använder 3, 7V Li-ion 400mAh batteri. Egentligen kan du använda vilken annan lämplig strömkälla som helst. 18650 batteri är också ett bra val. När du väljer ett batteri, kom ihåg att ESP "äter" cirka 200 mA när du ansluter till WiFi -nätverket, och cirka 60 mA används när kortet laddar upp data till servern.

4. TP4056 Lipo batteriladdningskort.

5. Pololu mini tryckknapp Strömbrytare Mycket intressant liten bräda. Det låter oss bara byta ESP -modul när vatten detekteras. Du behöver inte hålla ESP ON. Så det är bra för att spara laddning av batteriet.

6. Bostäder7. Dubbel mikrobrytare PÅ-AV. En rad tjänar till att slå på enheten. Andra raden är för testning - den kortsluter krets utan vatten, bara för att meddela oss att enheten fungerar eller inte.

8. Raspberry Pi mikrodator

Jag använder Raspberry Pi Zero. Det är tillräckligt kraftfullt för att köra Domoticz -server.

Steg 2: Programvara

På din dator:

1. esptool installerat, för radering av moduler och blinkande firmware

2. Ampy installerad, för att blinka ditt program

3 Python 3.6 eller högre rekommenderas

4. Vilken kodredigerare du vill. Enklast - Python IDLE som normalt installeras med Python. Jag använder Pycharm / Atom eller Anaconda Spyder på hallon Pi

5. Domoticz -server installerad på Raspberry Pi (eller vanlig dator under Windows eller Linux)

Steg 3: Förbered Raspberry Pi - Installera Domoticz

Så ta din RPi och installera ett operativsystem som är lämpligt för att köra Domoticz -server.

Du kan följa dessa instruktioner.

Jag använder Raspbian Stretch med Desktop härifrån:

Nästa steg är att installera Domoticz -servern på din dator. Du kan använda instruktioner här eller här:). Var inte rädd, det är inte så svårt. Uppenbarligen måste du köra i din terminal:

curl -L install.domoticz.com | sudo bash

Och det är det:) mer eller mindre. Domoticz -installation

Nu när vår server är klar kan vi komma åt den från vilken webbläsare som helst, inklusive från en surfplatta genom att ange följande URL: https:// IP_domoticz: 8080

Steg 4: Domoticz -installation

Domoticz -installation
Domoticz -installation

Nu när vår server är klar kan vi komma åt den från vilken webbläsare som helst, inklusive från en surfplatta genom att ange följande URL: https:// IP_domoticz: 8080

Steg 5: Justera programinställningarna

Justera programinställningar
Justera programinställningar
Justera programinställningar
Justera programinställningar

Det finns olika programinställningar som kan ställas in via inställningen | Inställningsmeny.

Inställningsmenyn med olika flikar låter dig ange personliga parametrar som är nödvändiga för en bättre systemfunktion. När du har angett data i fälten måste du spara dem genom att trycka på den röda knappen "Apply Settings". Efter denna åtgärd kommer alla lösenordsfält, som var tomma vid den första åtkomsten, att visas med en lång sträng asterisker, även om de inte har använts.

När du har gjort huvudinställningen på "System" -sidan klickar du på "Meddelanden". Här måste vi justera vilken typ av meddelanden vi ska använda.

Steg 6: Installera aviseringar

Konfigurera aviseringar
Konfigurera aviseringar

Meddelanden kan skickas till exempel när en omkopplare trycks in, elanvändningen är för hög, temperaturen till hög och för många fler alternativ.

I vårt fall måste aviseringar skickas så snart vatten detekterats av sensorn. Så bara slå på dem, du vill använda. Normalt behöver du också API -nyckel för att avisering ska fungera. När jag springer lite framåt kommer jag att säga att jag försökte Pushover, Pushsafer och Pushbullet. Och jag stannade hos Pushover. Senare ska jag berätta varför.

Några ord om hur aviseringar fungerar. Du måste ha ett konto på Pushbullet, Pushover eller andra sidor du vill använda. Du behöver också en app på din mobiltelefon eller dator.

Skaffa API -nyckel och sätt in den på sidan ovan. Du kan testa meddelandet genom att klicka på "Testa". Om API -nyckeln är korrekt bör du få ett testmeddelande till din mobiltelefon.

Så snart sensorn känner av vatten slås ESP på och skickar förfrågan till Domoticz -servern i JSON -format. Än om villkoren för att utlösa en händelse (skicka avisering till din mobiltelefon) är uppfyllda, skickar Domoticz meddelandet.

Senare kommer jag tillbaka till "evenemang".

Steg 7: Konfigurera kommunikationen till maskinvaruenhet (er)

Konfigurera kommunikationen till maskinvaruenhet (er)
Konfigurera kommunikationen till maskinvaruenhet (er)
Konfigurera kommunikationen till maskinvaruenhet (er)
Konfigurera kommunikationen till maskinvaruenhet (er)
Konfigurera kommunikationen till maskinvaruenhet (er)
Konfigurera kommunikationen till maskinvaruenhet (er)

Innan du kan använda Domoticz -programmet för att styra enheter eller läsa sensorer måste du konfigurera kommunikationen till hårdvaruenhet (er). Välj Setup | Hardware för att lägga till hårdvara. Enheter kommer inte att dyka upp förrän rätt hårdvara har lagts till.

Domoticz -applikationen stöder många maskinvaruenheter inbyggt. För att kunna läsa vår översvämningssensor måste vi lägga till så kallad "Dummy" -hårdvara från maskinvarulistan.

När hårdvara läggs till kommer översikten över all definierad hårdvara att visas. Hårdvara kan inaktiveras eller tas bort.

Den nya hårdvaran ska finnas i listan och det ska finnas en knapp "Skapa virtuella sensorer".

Klicka på den här knappen och välj Sensortyp "Alert". Nu måste vi lägga till enheten i Domoticz för att bli aktiv.

Steg 8: Lägg till enheten i Domoticz för att bli aktiv

Lägg till enheten i Domoticz för att bli aktiv
Lägg till enheten i Domoticz för att bli aktiv
Lägg till enheten i Domoticz för att bli aktiv
Lägg till enheten i Domoticz för att bli aktiv
Lägg till enheten i Domoticz för att bli aktiv
Lägg till enheten i Domoticz för att bli aktiv

Observera numret nedanför "IDX". Detta är den unika referensen till den här enheten och vi behöver den senare i vårt Python -skript för att hantera aviseringar. I detta fall är IDX -numret 1.

Aktivera enheten genom att klicka på den gröna pilen till vänster (på min bild nedan är den blå på grund av att enheten är aktiverad).

Fyll i enhetens namn och klicka på "lägg till".

Navigera till menyn "Verktyg" och din enhet bör listas där.

Nu måste vi programmera "event" för vår sensor. Det betyder att vi måste berätta för servern vad vi ska göra om det har fått ett meddelande från sensorn. Och det var låt oss säga det svåraste stället för mig:).

Steg 9: Det fungerar inte på det här sättet …

Det fungerar inte på det här sättet …
Det fungerar inte på det här sättet …

Jag började med att försöka programmera händelse på / enhet / sida. Det här nedan är inte mitt, men det är ok att illustrera.

Om du tror att du kommer att kryssa i några kryssrutor och det kommer att fungera har du fel:) Det fungerar inte på det här sättet. Jag antar att den här funktionen här inte är klar ännu. Glöm inte - det är programvara med öppen källkod. Ok, efter flera timmar hittade jag lösningen. Vi måste använda "Events" från "Setup" -menyn.

Efter att ha klickat på "Events" kan du skapa ditt eget event. Du kan göra det genom att skriva en kod i Python eller LUA, eller bara genom att använda något som kallas "Blockly". Jag valde att använda Blockly. Det finns två sätt att tvinga servern att göra vad du vill.

Steg 10: Bygg händelse på ett rätt sätt 1

Skapa evenemang på ett rätt sätt 1
Skapa evenemang på ett rätt sätt 1

1. Kör extern fil via "Events", med Blockly -meddelandet "Start script"

Detta fungerar perfekt för mig på Windows -maskin. Men jag lyckades inte med detta på Raspbian på min Raspberry Pi. Jag misstänker att det finns ett problem med behörigheter.

Steg 11: Bygg händelse på ett rätt sätt 2

Bygg event på ett rätt sätt 2
Bygg event på ett rätt sätt 2

2. Använd meddelandet "Skicka avisering med ämne". Det fungerar på Raspbian. Det här alternativet stöder att skicka meddelanden till Pushsafe och Pushover.

Fördelen med att använda första sättet är att det är mer flexibelt. Du kan välja ikon som ska visas på din display, ljud och så vidare. Mitt "event" visas på bilden ovan.

Låt oss sedan programmera ESP -modulen.

Steg 12: Programmering av ESP8266-01-modul

Programmering av ESP8266-01-modul
Programmering av ESP8266-01-modul

Låt oss börja med att blinka vår ESP8266 -modul. Normalt kommer dessa moduler med firmware från fabriken. det är möjligt att kommunicera med moduler med hjälp av så kallade AT -kommandon. Och även denna programvara tillåter inte att använda moduler som fristående kontroller. För att kunna använda dem som fristående styrenheter måste vi radera fabrikens firmware och installera en ny.

För att göra detta kommer vi att använda esptool. Än vi behöver ansluta vår modul till PC för att radera firmware. För att göra detta behöver du TTL -omvandlare + några ytterligare komponenter. Men det finns ett enklare sätt:). Köp bara på aliexpress eller ebay USB to ESP8266 ESP-01 Wi-Fi Adapter Module w/ CH340G Driver.

Anslut ESP8266 -modulen till TTL -omvandlaren enligt bilden och anslut den till USB -porten.

Om du har samma omvandlare som jag, måste du i sig själv byta omkopplaren till "Prog" -läget. Hitta där esptool är installerat (normalt någonstans som C: / Program Files (x86) Python36-32 / Scripts. Gå till den här mappen, starta kommandotolken där. Typ: python esptool.exe --port COM5 erase_flash

Välj självklart rätt port. I mitt fall är det COM5. Du kan kontrollera porten där ESP är installerat från Kontrollpanelen - System - Enhetshanteraren.

Installera firmware (jag tog den härifrån: https://micropython.org/download#esp8266) genom att skriva:

python esptool.exe --port COM5 --baud 460800 write_flash --flash_size = detect 0 C: / path_to_firmware / esp8266-20180511-v1.9.4.bin

Ok, nu är vi redo att ladda upp mikropytonskripten till ESP8266.

Jag använder Adafruit MicroPython Tool (ampy) för detta.

Men numera finns det ett annat alternativ som heter Esplorer. Detta är en app med användargränssnitt som gör det möjligt att ladda upp filer till ESP -moduler.

Du hittar instruktioner om hur du installerar ampy här. Så sätt omkopplaren på TTL -omvandlaren till "UART" -läge. Vi kommer att behöva ladda upp filer:

  • wifimgr.py - wifi -chef för anslutning till wifi -nätverk
  • main.py - vårt huvudmanus

I kommandoraden skriver du: ampy --port COM5 lägger C: / sökväg till din fil

Slå "enter". Efter några sekunder bör du se tom kommandorad. Det betyder att filen har laddats upp. Du kan kontrollera listan över filer på ESP med kommandot ampy:

ampy --port COM5 ls

Enligt min erfarenhet är det bättre att ladda upp main.py när du har laddat upp alla nödvändiga filer. det är så, på grund av så snart du kommer att ladda upp main.py - kommer ESP8266 -modulen att starta om och börja köra main.py -filen. Så i det här fallet om du försöker ladda upp en annan fil, kommer ibland överföringsprocessen att misslyckas. Men det betyder inte att allt är förlorat:), försök bara andra gången, och du kommer att lyckas (igen, av min erfarenhet).

Alla filer för detta projekt är tillgängliga härifrån:

Steg 13: Anslut till ditt WiFi -nätverk. Få notis

Anslut till ditt WiFi -nätverk. Få notis
Anslut till ditt WiFi -nätverk. Få notis
Anslut till ditt WiFi -nätverk. Få notis
Anslut till ditt WiFi -nätverk. Få notis

om allt är ok, starta om modulen genom att sätta tillbaka TTL -omvandlaren till datorns USB -port.

När ESP startar hittar du ett nytt WiFi -nätverk som heter "Wifimanager". Anslut till den med din dator eller telefon, gå sedan till IP -adressen 192.168.4.1.. Här kan du ansluta din ESP till det lokala WiFi -nätverket. Välj WiFi -nätverk du ska använda, skriv in lösenord, tryck på "Skicka".

Om allt är korrekt ser du meddelandet "ESP har anslutits till XXXX -nätverket". Din ESP är nu ansluten till ditt WiFi -nätverk och klar. Så snart den är ansluten till WiFi kommer den att ansluta till Domoticz -servern. Shorty du måste få ett meddelande på din mobiltelefon.

Du kan spåra processen i "Setup"/"Log".

Vua lia!:) Det fungerar. Nu kan vi fortsätta att montera alla delar tillsammans, enligt blockdiagrammet nedan.

Steg 14: Block Diagram

Blockdiagram
Blockdiagram

Det finns inte så mycket att säga om detta diagram. Väldigt enkelt. Slå på strömmen med S1 -omkopplaren. Enheten står i avstängt tillstånd tills vattnet kortar "Vattensensor" -nålarna. Sedan slås "Pololu board" på och ger ström till spänningsomvandlaren. Denna kraftmodul baserad på HT7333 -chip, omvandlar spänning till stabila 3,3V för ESP8266. Nästa ESP slås på och skickar ett meddelande till Domoticz -servern.

Steg 15: Resultat och slutsatser

Resultat och slutsatser
Resultat och slutsatser
Resultat och slutsatser
Resultat och slutsatser
Resultat och slutsatser
Resultat och slutsatser
Resultat och slutsatser
Resultat och slutsatser

Det fungerar. Att skicka meddelande tog upp till 10 sekunder: anslutning till WiFi, skicka avisering, få larmmeddelande till din telefon.

Jag har programmerat sensorn för att skicka larm var 30: e om vatten upptäcktes. Sensorn kan skicka upp till 5 - 6 meddelanden tills batteriet laddas ur. Sådan anordning kan också användas för att bestämma vattennivån. Vad jag skulle vilja förbättra.

1. För att få det att fungera snabbare. Jag tror att jag kommer att försöka använda ESP-Now-teknik, som låter mig ansluta flera ESP direkt. I detta fall är strömförbrukningen under anslutningen mycket låg och den är snabbare. Så tanken är att använda en ESP som ett nav för att ansluta andra ESP.

2. Implementera batterinivåalarm. Nu kan du inte veta om det finns tillräckligt med ström för att skicka larmmeddelanden eller inte. Jag tror att i nästa generation av denna sensor kommer det att finnas en speciell knapp för att testa batteriladdning.

Användaren måste trycka på en knapp och batterinivån visas.

Rekommenderad: