Sommario:

Sensore WIFI MQTT/Google Home per allagamento/acqua con ESP-01: 7 passaggi
Sensore WIFI MQTT/Google Home per allagamento/acqua con ESP-01: 7 passaggi

Video: Sensore WIFI MQTT/Google Home per allagamento/acqua con ESP-01: 7 passaggi

Video: Sensore WIFI MQTT/Google Home per allagamento/acqua con ESP-01: 7 passaggi
Video: SENSORE PIOGGIA PR3000 RS485 COLLEGAMENTO SONOFF MINI R2 EWELINK SCENE PER TAPPARELLE 2024, Dicembre
Anonim
Sensore WIFI MQTT/Google Home per allagamento/acqua con ESP-01
Sensore WIFI MQTT/Google Home per allagamento/acqua con ESP-01

In questo tutorial, ti mostrerò come costruire un sensore di allagamento/acqua wifi con un costo minimo. L'intero progetto mi costa meno di $ 8 per le parti che acquisto da ebay e i miei pezzi di ricambio esistenti.

In questo progetto, utilizzeremo ESP-01 per fornire Wi-Fi e client MQTT per rilevare la presenza di acqua e, facoltativamente, utilizzeremo altoparlanti/cicalini collegati direttamente per fornire un allarme localizzato.

La mia applicazione specifica per il progetto è quella di rilevare allagamenti/acqua all'interno del pozzo della mia pompa di pozzetto, in caso di guasto della pompa di pozzetto. Quando l'acqua viene rilevata da 2 fili aperti, invierà un messaggio al broker MQTT. Il broker MQTT invierà quindi il messaggio a NodeRED. Dopo aver ricevuto il messaggio MQTT, NodeRED invierebbe l'annuncio a più dispositivi Google Home e, facoltativamente, invierà un messaggio al cellulare/browser tramite pushbullet

Ora, ovviamente, questo progetto funzionerebbe solo se l'elettricità domestica è ATTIVA. Nella prossima istruzione integrerò il circuito di backup della batteria. Ma se fai l'alimentatore come ho fatto io, puoi semplicemente collegare un power bank USB per il backup della batteria. Se disponi di un power bank che ti consente di caricare e fornire energia allo stesso tempo, sei pronto.

Uso RaspberryPi ZeroW per ospitare il server Mosquitto MQTT e NodeRED. Funziona da più di un anno senza alcun problema.

Riferimenti:Raspberry Pi:https://www.switchdoc.com/2016/02/tutorial-installi…Installa NodeRED su Raspberry Pi:

Passaggio 1: parti di cui avrai bisogno

Parti di cui avrai bisogno
Parti di cui avrai bisogno
Parti di cui avrai bisogno
Parti di cui avrai bisogno
Parti di cui avrai bisogno
Parti di cui avrai bisogno

Elenco delle parti:

(1) ESP-01

(2) Resistenza da 10K ohm

(1) transistor NPN generico a piccolo segnale (ho usato 2N3904)

(2) fili lunghi

(1) Alimentazione generica 5V (questo circuito richiede una corrente inferiore a 300mA)

(1) Modulo regolatore 3.3V AMS1117

(1) Adattatore da micro-USB a DIP Connettore femmina Convertitore PCB Kit fai da te

(1) Cavo da USB-A a MicroUSB.

(1) Presa IC a 8 pin - può essere omessa se si desidera saldare ESP-01 direttamente al circuito. Taglia i ponti di plastica che creano lo spazio tra le file, quindi incolla le 2 file insieme, vedi foto.

(1) Piccolo recinto per il progetto

Di seguito sono riportate le parti opzionali se è necessario un allarme localizzato tramite altoparlante/cicalino

(1) Transistor PNP generico, scegliere in base ai requisiti di corrente/wattaggio dell'altoparlante/cicalino. Nel mio caso uso 2N2907 poiché il mio altoparlante è solo 0,3 W (8 ohm), fornirebbe energia sufficiente per pilotare l'altoparlante. Puoi scegliere un transistor e un altoparlante più grandi se vuoi un suono più forte.

(1) Altoparlante, vedere la nota sul transistor PNP sopra

(1) Resistenza da 100 - 110 ohm

Passaggio 2: schema elettrico

Schema elettrico
Schema elettrico

Il primo passo sarebbe creare il circuito mostrato nel diagramma.

Ho costruito l'alimentatore da 3,3 V CC utilizzando un vecchio caricatore per cellulare da 5 V accoppiato con il regolatore AMS1117 da 3,3 V CC. Per la presa ESP-01, utilizzo una presa IC standard a 8 pin e taglio i ponti di plastica che creano lo spazio tra le file, quindi incollo le 2 file insieme.

Il circuito che ho progettato è quello di rilevare la presenza di acqua tra i due fili. Quando l'acqua raggiunge la punta di entrambi i fili, creerebbe una resistenza da circa 10K a 20K ohm. Quindi in serie con il 10K ohm R1, fornisce una piccola corrente alla base del Q1 causando la saturazione di Q1, bloccando il GPIO-2 a terra. R1 è necessario per fornire protezione a Q1 in caso di cortocircuito accidentale sui fili di rilevamento.

R2 è un resistore di pull-up per consentire a ESP-01 di avviarsi da flash.

Ora per l'altoparlante/cicalino opzionale, se hai solo bisogno di ESP-01 per parlare MQTT e non vuoi implementare questo allarme localizzato, puoi rimuovere R2, Q2, Altoparlante e posizionare un resistore di pull-up da 10K tra GPIO-0 e VCC.

Se non senti la necessità di utilizzare l'adattatore da Micro-USB a DIP femmina, puoi saldare i fili tra il PS 5V al modulo regolatore da 3,3V. Preferisco utilizzare l'adattatore MicroUSB femmina in modo da poter utilizzare qualsiasi caricabatterie per cellulare generico e cavo MicroUSB.

Passaggio 3: costruire il circuito

Costruire il circuito
Costruire il circuito
Costruire il circuito
Costruire il circuito
Costruire il circuito
Costruire il circuito

Saldare tutti i componenti e le parti nel PCB secondo lo schema elettrico nella pagina precedente e tagliare il PCB a misura.

Posiziona il PCB all'interno di un involucro che si adatti al PCB e all'altoparlante opzionale. Nel mio caso, tutte le parti si adatterebbero all'interno di una piccola scatola per la presa del telefono, anche se devo riscaldare un po' il coperchio per creare un rigonfiamento in modo che il modulo ESP-01 si adatti.

Passaggio 4: far lampeggiare l'ESP-01

In questo passaggio, lampeggeremo l'ESP-01 con lo schizzo di arduino. Se non hai mai eseguito il flashing del modulo ESP-01, puoi seguire le mie istruzioni per iniziare:

Puoi trovare il mio schizzo nella mia pagina github:

Nello schizzo, come minimo è necessario modificare le seguenti informazioni relative alla rete/configurazione domestica:

#define MQTT_SERVER "10.0.0.30"const char* ssid1 = "SSID";const char* password1 = "MYSSIDpassword";const char* ssid2 = "SSID1";const char* password2 = "MYSSIDpassword";

Nella mia rete domestica, ho 2 punti di accesso diversi che trasmettono 2 SSID diversi e questo schizzo consentirebbe la ridondanza collegandosi al SSID successivo se la comunicazione con l'AP corrente viene persa. Se hai un solo SSID, popola ssid1 e ssid2 con lo stesso valore.

Una volta apportata la modifica, carica lo schizzo in ESP-01 e collega ESP-01 alla scheda di interfaccia.

Passaggio 5: esecuzione di prova

Per verificare se il nostro progetto funziona, il modo più semplice sarebbe monitorare i messaggi MQTT nella rete. Per fare ciò, è necessario aprire una sessione SSH al broker mosquitto ed emettere il seguente comando:

mosquitto_sub -v -t '#'

Il comando precedente ci consentirebbe di vedere tutti i messaggi MQTT in arrivo nel broker.

Adesso accendi il nostro circuito, e se tutto funziona, in pochi secondi dovresti vedere almeno il seguente messaggio MQTT:

stat/SumpWaterSensor/LWT Online

Ora prova il sensore dell'acqua immergendo i 2 fili di rilevamento in una tazza d'acqua e dovresti vedere questo messaggio:

tele/SumpWaterSensor WET

E se togli i fili dall'acqua, dovresti vedere questo messaggio:

tele/SumpWaterSensor DRY

Se vedi quei messaggi, il tuo progetto è un successo.

Ho anche incluso diversi argomenti MQTT utili nello sketch che puoi usare:

"stat/SumpWaterSensorInfo": questo messaggio viene inviato ogni minuto per fornire tempi di attività e altre informazioni.

"cmnd/SumpWaterSensorInfo": ESP-01 invierà informazioni se riceve questo argomento con valore '1' (ascii=49)

"cmnd/SumpWaterSensorCPUrestart": ESP-01 si riavvierà se riceve questo argomento con valore '1' (ascii=49)

"cmnd/SumpWaterSensorBeep": ESP-01 suonerà l'altoparlante se riceve questo argomento con valore '1' (ascii=49)

"cmnd/SumpWaterSensorBeepFreq": imposta la frequenza dell'allarme dell'altoparlante, impostazione predefinita = 900 (Hz)

"cmnd/SumpWaterSensorDebug": abilita e imposta il livello di debug seriale (il valore predefinito è 0 - nessun debug)

Passaggio 6: montare il sensore

Montare il sensore
Montare il sensore
Montare il sensore
Montare il sensore

Nella mia applicazione, voglio monitorare bene il livello dell'acqua all'interno della mia pompa di pozzetto e avvisarmi se l'acqua raggiunge sopra l'interruttore a galleggiante della pompa di pozzetto, il che significa che la mia pompa di pozzetto non funziona. Ho fatto passare i fili e ho usato delle fascette per fissarlo lungo il tubo di scarico.

Passaggio 7: tocco finale

Tocco finale
Tocco finale

Ora che abbiamo il progetto funzionante e siamo in grado di pubblicare il messaggio MQTT sul broker, il passo successivo è pensare a cosa farne.

Nel mio progetto, utilizzo Node-RED per ascoltare/iscrivermi all'argomento MQTT "tele/SumpWaterSensor" e annunciare a diversi home speaker di Google se viene rilevata acqua. Oltre a ciò, ho anche collegato il flusso a un nodo pushbullet per inviare notifiche al mio telefono Android.

Ho anche creato un front-end web per vedere lo stato del sensore (on/offline, uptime, ecc.). A volte ho visto che va offline poche volte nel corso di 1 settimana, dalle statistiche, molte volte è dovuto alla disconnessione di ESP-01 dal wifi o MQTT. Ma non preoccuparti troppo, il mio schizzo ha incluso la routine per riavviare ESP-01 se continua a non riuscire a connettersi al broker WIFI e/o MQTT.

L'immagine in questo passaggio mostra il flusso Node-RED per ottenere ciò. Puoi anche incollare il flusso dalla mia pagina github nel tuo Node-RED:

L'annuncio di Google home è solo un esempio per questo progetto, ma penso che sia il più utile e pratico. Puoi sempre interfacciarti con altri ascoltatori MQTT o persino utilizzare IFTTT per guidare altri dispositivi quando viene rilevata l'acqua.

Divertiti…

Consigliato: