Sommario:

Controller di avviamento DOL basato su IOT per pompa di irrigazione: 6 passaggi
Controller di avviamento DOL basato su IOT per pompa di irrigazione: 6 passaggi

Video: Controller di avviamento DOL basato su IOT per pompa di irrigazione: 6 passaggi

Video: Controller di avviamento DOL basato su IOT per pompa di irrigazione: 6 passaggi
Video: IoT Based Water Level Control & Monitoring System with ESP8266 & Blynk 2024, Dicembre
Anonim
Controller di avviamento DOL basato su IOT per set di pompe per irrigazione
Controller di avviamento DOL basato su IOT per set di pompe per irrigazione
Controller di avviamento DOL basato su IOT per set di pompe per irrigazione
Controller di avviamento DOL basato su IOT per set di pompe per irrigazione

Ciao amici

Questa istruzione riguarda come monitorare e controllare in remoto un set di pompe di irrigazione su Internet.

Storia: Nella mia fattoria ricevo energia dalla rete locale solo per circa 6 ore al giorno. Gli orari non sono regolari, la disponibilità di energia può essere la mattina presto o la sera tardi o addirittura la mezzanotte. Ogni volta che andare nella posizione del pozzo di perforazione per verificare la disponibilità di energia, avviare o arrestare il motore era un processo molto doloroso. Inoltre dovevo garantire che il motore funzionasse almeno 2-3 ore al giorno per fornire acqua adeguata al sistema di gocciolamento. Da tempo stavo esplorando le opzioni per risolvere questo problema azionando il motore in remoto e conoscendo anche lo stato. Ci sono dispositivi disponibili sul mercato che avvieranno il motore non appena c'è un alimentatore, ma non hanno la funzione per fermare il motore quando vogliamo. E inoltre non c'è modo di conoscere lo stato del motore ON/OFF in qualsiasi momento. Questo di solito porta a un'irrigazione eccessiva, che porta alla perdita di fertilità del suolo e anche allo spreco di elettricità. Alla fine ho creato io stesso una soluzione in cui posso avviare e arrestare il motore in remoto da cellulare/tablet/PC IN QUALSIASI MOMENTO OVUNQUE…!!. Inoltre posso monitorare sempre la disponibilità dell'alimentazione dalla rete e lo stato del motore (ON/OFF). Spero che aiuterà i proprietari di aziende agricole in campagna a gestire i loro sistemi di irrigazione senza la necessità di recarsi continuamente nel luogo di partenza.

Forniture

Prerequisiti:

La posizione in cui si desidera installare questo dispositivo deve avere disponibilità di Internet (banda larga con Wi-Fi/Internet mobile)

Cose di cui hai bisogno:

  1. NodoMCU /ESP12
  2. Relè a due canali
  3. WCS1700 – Sensore di corrente
  4. Modulo di ricarica della batteria TP4056
  5. LD313, Condensatore – Registro 1000uF – Due registri da 5k ohm
  6. Qualsiasi (vecchio) smartphone con hotspot/internet.

Come funziona:

È una semplice soluzione IOT basata su cloud che utilizza NodeMCU/ESP12 e un broker MQTT remoto. NodeMCU funziona come gateway IOT, controlla anche l'avviatore DOL. Si connette al broker MQTT remoto su Internet. Un'app in esecuzione su un dispositivo mobile Android si connette al broker attraverso il quale possiamo monitorare e controllare il nostro set di pompe di irrigazione in ogni momento. Ho utilizzato il broker MQTT gratuito disponibile da Adafruit IO. Ci sono molti broker gratuiti disponibili come mosquitto, cloudmqtt ecc. Puoi scegliere qualsiasi broker a condizione che tu cambi il server e il numero di porta nel codice. NodeMCU si connette a Internet utilizzando il WiFi dall'hotspot mobile. Puoi utilizzare qualsiasi cellulare vecchio o a basso costo per fornire accesso Wi-Fi tramite hotspot o qualsiasi altro mezzo per fornire Internet tramite Wi-Fi. Il cellulare deve essere collegato al caricabatterie come dovrebbe essere 24X7.

NodeMCU è interfacciato con due relè per controllare l'avvio e l'arresto del funzionamento del motore. Per rilevare la corrente nel motore ho usato il sensore di corrente WCS1700. L'uscita analogica del sensore viene utilizzata per sapere che il motore è ON o OFF. Rileva anche la disponibilità di energia dalla rete e la pubblica sul broker in modo che possiamo conoscere lo stato della rete in qualsiasi momento. Il dispositivo sottoscrive due feed per ricevere la richiesta di motore ON e motore OFF. Inviando valori specifici a questi feed possiamo comandare il motore in START o STOP.

Infine ho installato l'app MQTT Dash sul mio telefono Android e l'ho configurata per connettersi al broker MQTT e utilizzare i feed sulla sua dashboard/gui. L'app ha icone molto buone con pulsanti, indicatori, interruttori, ecc. per creare dashboard attraenti. Tuttavia è possibile utilizzare qualsiasi app mobile di automazione domestica IOT che supporti il protocollo mqtt.

Come funziona WCS1700:

WCS1700 è fondamentalmente un sensore ad effetto Hall che produrrà una tensione di uscita proporzionale al campo magnetico creato mentre la corrente scorre attraverso la bobina. La bobina qui è una linea di alimentazione che sarà collegata al motore. Può misurare la corrente alternata fino a 70 Ampere. La tensione di esercizio è compresa tra 3,3 e 12 V. Fare riferimento alla relativa scheda tecnica per maggiori dettagli. Poiché sto usando ESP12, ho utilizzato lo stesso alimentatore di 3,3 V come tensione operativa per WCS1700. Come specificato nella scheda tecnica a 3,3 V il dispositivo dovrebbe produrre una tensione differenziale di circa 32-38 mV per amp di corrente attraverso la bobina. Ma può variare in base alle dimensioni della bobina/traferro e alle variazioni del dispositivo. Quindi ho dovuto calibrarlo testandolo con Ampere Meter. Non sono contento della precisione del dispositivo, ma è abbastanza buono per decidere lo stato del motore come ON/OFF. Il pin di uscita di WCS1700 è collegato a A0 di ESP12. Quando non c'è corrente, l'ESP12 dovrebbe leggere il valore intorno a 556. All'aumentare della corrente nella bobina, la tensione può variare su entrambi i lati in base a come il cavo passa attraverso il sensore. Nel codice ho preso la differenza dei valori come valore assoluto di (x - 556). Dividendo il risultato per 15 ho ottenuto una corrente approssimativa che scorre attraverso il sensore. Dovrai sperimentare questo per ottenere il numero giusto per te. Qualsiasi misura di corrente da parte del dispositivo sopra i 5 Amp la considero come motore acceso e sotto i 5 Amp come motore in OFF. Puoi utilizzare il numero giusto per il tuo dispositivo sperimentando. È necessario modificare WCS1700_CONST e MIN_CURRENT nel codice di conseguenza.

Passaggio 1: costruzione del dispositivo

Costruzione del dispositivo
Costruzione del dispositivo
Costruzione del dispositivo
Costruzione del dispositivo

Lo schema sopra fornisce dettagli completi su come cablare tutti i componenti.

Alimentazione: ho usato TP4056 per caricare le batterie e LM313 per regolare i 3,7V - 4,2V di uscita della batteria a 3,3 V per alimentare NodeMCU. Utilizzato un condensatore da 1000 mF tra Vin e la terra di LM313 per ottenere un'alimentazione stabile di 3,3 V. È possibile utilizzare un normale caricatore mobile USB per alimentare TP4056. Ha un circuito di protezione della batteria per proteggere la batteria da un sovraccarico.

Rilevamento dell'alimentazione della rete: il divisore di tensione da 5k ohm ridurrà da 5 V a 2,5 V. Il pin D5 di NodeMCU rileverà la tensione.

Il pin di uscita del WCS1700 è collegato ad A0 per leggere la tensione analogica dal sensore. La linea Grid Power deve passare attraverso il foro per misurare la corrente. Ho usato un condensatore da 0,01 uF per ottenere il modulo di lettura stabile WCS1700.

D1 e D2 di NodeMCU da collegare a IN0 e IN1 dei pin di ingresso del relè.

Passaggio 2: connessioni DOL Starter

Connessioni di avviamento DOL
Connessioni di avviamento DOL
Connessioni di avviamento DOL
Connessioni di avviamento DOL

Ho modificato il circuito di controllo dell'avviatore DOL per introdurre un altro set di interruttori START e STOP. Questa modifica non influirà sull'operazione di avvio/arresto manuale e continueranno a funzionare così come sono.

Attenzione !!!! Poiché l'avviatore DOL è un dispositivo ad alta tensione, assicurarsi che l'interruttore principale sia spento prima di aprire la scatola. Il contatto diretto con cavi sotto tensione potrebbe essere pericoloso. Se non sei sicuro, fatti aiutare da un elettricista per effettuare i collegamenti

Ho usato un modulo relè a 2 canali 5 V come interruttore START e STOP. Questi relè saranno controllati da ESP12.

Relè - 0 funzionerà come interruttore START - cablato come NO (normalmente aperto).

Il relè-1 funzionerà come interruttore STOP - cablato come NC (normalmente chiuso). L'avviatore avrà già un cavo di collegamento dal contattore superiore all'NVC. Dovrai rimuoverlo e sostituirlo con i fili del relè -1 come mostrato.

Assicurarsi che le connessioni tra l'avviatore e i moduli relè siano completamente isolate per sicurezza. Ho programmato ESP per tenere entrambi i relè per 2 secondi per emulare la pressione del pulsante START/STOP.

Passaggio 3: crea un account con Adafruit IO (io.adafruit.com)

Ho usato il broker Adafruit io mqtt che è gratuito con poche limitazioni ma va bene per il nostro uso. Lo preferisco perché l'ho usato anche in altri progetti e l'ho trovato abbastanza affidabile e ha anche molte altre funzionalità come Dashboard con una bella GUI e anche noi possiamo usare i trigger. Per utilizzare Adafruit io devi creare un account e annotare il nome utente e la chiave attiva.

Passaggio 4: crea e installa il software

Il codice completo è disponibile nello schizzo. Devi aprirlo nell'IDE di Arduino e apportare alcune modifiche prima di compilare e caricare il firmware. Scegli il tipo di scheda come NodeMCU 1.0. L'installazione dell'IDE e delle relative librerie non rientra nell'ambito di questa documentazione.

Modifica le seguenti righe nel codice come maggese.

#define WLAN_SSID "xxx" // Il tuo hotspot WiFi SSID mobile

#define WLAN_PASS "……" //

/************************* Configurazione di Adafruit.io ******************** *************/

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883 // usa 8883 per SSL

#define AIO_USERNAME "xyz" // Il nome utente del tuo account adafruit

#define AIO_KEY "abcd……" // la tua chiave attiva…

Informazioni sui feed MQTT: il dispositivo e il client (app mobile) scambiano informazioni tramite feed di messaggi utilizzando il sottomodello pub tramite il broker MQTT. Qualsiasi client o dispositivo per ricevere un messaggio, deve iscriversi a un feed predefinito e deve utilizzare il metodo di pubblicazione per inviare un messaggio a un feed. Per il nostro progetto abbiamo bisogno di circa 5 feed. Di seguito è riportata la spiegazione su ciascuno dei feed come si vede nel codice e come funzionano.

Stato rete: La disponibilità di alimentazione dalla rete è pubblicata sul feed /feeds/grid. Adafruit_MQTT_Publish grid_stat = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/grid");

0 indica alimentazione non disponibile e 1 per alimentazione disponibile.

Stato Motore: Il dispositivo pubblicherà lo stato del motore su feed …/feeds/grid.

Adafruit_MQTT_Publish motor_status = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/motor")

Valore 0 per OFF e 1 per ON

Pulsante Motor ON: questo feed viene utilizzato per ricevere la richiesta di avviamento del motore. Il dispositivo sottoscriverà il feed per ricevere la richiesta di avviamento del motore con valore = 1 e utilizzerà lo stesso feed per pubblicare il messaggio di conferma come 0. In questo modo possiamo confermare che il messaggio di richiesta di avviamento è stato effettivamente ricevuto dal dispositivo.

Adafruit_MQTT_Subscribe motoronbutton = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/motor_on");

Pulsante di spegnimento del motore:

Simile alla richiesta di avvio, questo feed viene utilizzato per ricevere la richiesta di arresto del motore. Il dispositivo sottoscriverà il feed per ricevere la richiesta di arresto con valore = 1 e utilizzerà lo stesso feed per pubblicare il messaggio di conferma come 0.

Adafruit_MQTT_Subscribe motoroffbutton = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/motor_off");

Connessione:

Questo è un feed speciale con l'opzione "ultima volontà" abilitata. Quando il dispositivo funziona correttamente ad ogni intervallo fisso, pubblicherà connection=1 per dire all'utente che tutto va bene. Nel caso in cui il sistema si interrompa o la connessione venga persa, il dispositivo non sarà in grado di comunicare con il broker. In tali casi, il broker MQTT stesso pubblicherà sul feed come connection=0 per informare l'utente che qualcosa è andato storto e il dispositivo non è raggiungibile su Internet. Dobbiamo andare fisicamente e controllare il dispositivo. Il codice è molto semplice. Fare riferimento alla documentazione MQTT per maggiori dettagli su come funziona "Last Will".

if(itr <= 0)

{

mqtt.publish(AIO_USERNAME "/feeds/connection", "1", 1);

itr = CON_LIVE_ITR;

}

Il resto del codice è autoesplicativo e non sono necessarie modifiche. Sentiti libero di commentare nel caso avessi bisogno di maggiori informazioni.

Passaggio 5: installa e configura l'APP MQTT Dash sul tuo cellulare

Installa e configura MQTT Dash APP sul tuo cellulare
Installa e configura MQTT Dash APP sul tuo cellulare
Installa e configura MQTT Dash APP sul tuo cellulare
Installa e configura MQTT Dash APP sul tuo cellulare
Installa e configura MQTT Dash APP sul tuo cellulare
Installa e configura MQTT Dash APP sul tuo cellulare
  1. Installa MQTT Dash sul tuo telefono Android e apri l'app
  2. Fare clic sull'icona + nell'angolo in alto a destra per aggiungere un dispositivo.
  3. Come mostrato nella prima immagine sopra, dai un nome al tuo dispositivo dicendo "MyFarm-IPSet". Campo dell'indirizzo come io.adafruit.com e porta come 1883, il nome utente dovrebbe essere il tuo nome utente adafruit e la password dovrebbe essere la tua chiave attiva da adafruit. Lascia il resto dei campi così com'è. Infine clicca su salva.
  4. Hai creato il tuo dispositivo. Ora fai clic su di esso per aggiungere la dashboard.
  5. Fare clic su + e selezionare il tipo come interruttore/pulsante. Come mostrato sopra, inserisci sys nel campo del nome. e inserisci il nome del feed nel campo dell'argomento. ogni feed dovrebbe iniziare con username/feeds/. per questo noi /feeds/connection. Assicurati che Abilita pubblicazione sia disabilitato. Facendo clic sull'icona da visualizzare è possibile scegliere il tipo di icona che si desidera che assomigli alla dashboard. Per il valore 1 selezionare uno dei colori (diciamo verde) e per il valore 0 selezionare il colore come grigio o rosso. Infine clicca su salva nell'angolo in alto a destra. Allo stesso modo crea altre due icone una per Grid con nome utente/feed/grid come argomento e Motore con nome utente/feed/motore. Assicurati che Abilita pubblicazione sia disabilitato.
  6. Infine creare il pulsante Motor ON. È di nuovo lo stesso tipo di interruttore/pulsante. L'argomento dovrebbe essere /feeds/motor_on e assicurarsi che Enable Publish sia abilitato questa volta e QOS =1. Allo stesso modo crea un altro pulsante per Motor OFF. L'argomento dovrebbe essere /feeds/motor_off.

Passaggio 6: ultimo passaggio:-) Test e messa a punto

  1. Per sicurezza è necessario testare prima il dispositivo per le sue operazioni di START e STOP prima di collegare i relè all'avviatore DOL. Abilita Hotspot sul cellulare con Internet abilitato. Collega il laptop con l'ambiente di sviluppo direttamente alla porta USB NodeMCU con un altro caricabatterie collegato contemporaneamente a TP4056. Se il dispositivo è connesso correttamente a Internet, dovresti vedere 1 dispositivo connesso all'hotspot sullo smartphone.
  2. Sull'altro smartphone su cui hai installato MQTT Dash apri la dashboard dell'app. Dovresti vedere che l'icona NET in verde e l'icona Grid anche in verde con i loro valori come 1. L'icona del motore dovrebbe mostrare come motore spento con valore come 0.
  3. Quando si fa clic sul pulsante Motor ON, il relè di avviamento dovrebbe emettere due clic a intervalli di due secondi. Allo stesso modo anche il pulsante Motor OFF.
  4. Per sicurezza ora spegnere l'alimentazione principale all'avviatore DOL e collegare i relè all'avviatore DOL come mostrato sopra al punto 2. Assicurati che il motore sia spento. Premi il pulsante di ripristino su NodeMCU. Dall'uscita del monitor seriale, puoi vedere le dichiarazioni di debug che stampano i valori dal sensore WC1700, delta e la corrente calcolata nella bobina. Con motore spento e " #define WCS1700_CONST 15 " la maxCur dovrebbe essere costantemente inferiore a 2. Se mostra maggiore di 2, prova con valori più alti di WCS1700_CONST. Ogni volta dovrai ricompilare il codice e caricare il firmware.
  5. Ora accendi il motore e cerca nuovamente le letture correnti. Lasciare il motore acceso per circa 10 -15 minuti e annotare la lettura stabile della corrente. La corrente può variare approssimativamente tra 10 e 20 Ampere e non deve essere accurata.
  6. Torna al codice e imposta " #define MIN_CURRENT X. Dove X è il 40 percento della corrente massima approssimata al valore numerico. Nel mio caso ho impostato MIN_CURRENT su 5. Compila e ricarica nuovamente il firmware su NodeMCU.
  7. Rimuovere il cavo USB da NodeMCU. Spegnere e riaccendere il dispositivo con caricatore USB collegato a TP4056. Facendo clic sul pulsante Motor ON sull'app mobile, il motore dovrebbe essere avviato. Una volta che il motore è acceso, lo stato del motore dovrebbe riflettere sul dashboard dell'app come ON. Facendo clic sul pulsante di arresto si dovrebbe arrestare il motore.

Godere !!!!

Consigliato: