Cuprins:

Controler de pornire DOL bazat pe IOT pentru pompă de irigare: 6 pași
Controler de pornire DOL bazat pe IOT pentru pompă de irigare: 6 pași

Video: Controler de pornire DOL bazat pe IOT pentru pompă de irigare: 6 pași

Video: Controler de pornire DOL bazat pe IOT pentru pompă de irigare: 6 pași
Video: SENZORI NIVEL APA - Variante simple | Partea 1 2024, Noiembrie
Anonim
Controler de pornire DOL bazat pe IOT pentru pompă de irigare
Controler de pornire DOL bazat pe IOT pentru pompă de irigare
Controler de pornire DOL bazat pe IOT pentru pompă de irigare
Controler de pornire DOL bazat pe IOT pentru pompă de irigare

Bună prieteni

Acest instructable este despre cum să monitorizați și să controlați de la distanță o pompă de irigare setată pe internet.

Poveste: în ferma mea primesc sursa de alimentare de la rețeaua locală doar timp de aproximativ 6 ore pe zi. Programul nu este regulat, disponibilitatea energiei poate fi dimineața devreme sau târziu seara sau chiar miezul nopții. De fiecare dată când mergea la locația sondei pentru a verifica disponibilitatea de alimentare, pornirea sau oprirea motorului a fost un proces foarte dureros. De asemenea, a trebuit să mă asigur că motorul funcționează cel puțin 2-3 ore în fiecare zi pentru a furniza apă adecvată sistemului de picurare. Am explorat destul de mult timp opțiunile pentru a rezolva această problemă prin acționarea de la distanță a motorului și, de asemenea, cunosc starea. Există dispozitive disponibile pe piață care vor porni motorul imediat ce există o sursă de alimentare, dar nu au caracteristica de a opri motorul oricând dorim. Și, de asemenea, nu există nicio modalitate de a cunoaște starea motorului pornit / oprit în orice moment al timpului. Acest lucru duce de obicei la irigare excesivă, ducând la pierderea fertilității solului și, de asemenea, la risipa de energie electrică. În cele din urmă, am construit eu însăși o soluție în care pot porni și opri motorul de la distanță de pe mobil / tabletă / PC ORICÂND ORIUNDE … !!. De asemenea, pot monitoriza disponibilitatea sursei de alimentare de la centură, precum și starea motorului (PORNIT / OPRIT) tot timpul. Sper că îi va ajuta pe proprietarii de ferme din țară să își gestioneze sistemele de irigații fără a fi nevoie să meargă tot timpul la locul de pornire.

Provizii

Condiții preliminare:

Locația în care doriți să instalați acest dispozitiv trebuie să aibă disponibilitate la internet (bandă largă cu wifi / internet mobil)

Lucruri de care ai nevoie:

  1. NodeMCU / ESP12
  2. Releu cu două canale
  3. WCS1700 - Senzor de curent
  4. Modul de încărcare a bateriei TP4056
  5. LD313, condensator - 1000uF Register - Două registre de 5k ohm
  6. Orice smartphone (vechi) cu hotspot / internet.

Cum functioneaza:

Este o soluție IOT simplă bazată pe cloud folosind NodeMCU / ESP12 și broker MQTT de la distanță. NodeMCU funcționează ca un gateway IOT, controlează și starterul DOL. Se conectează la brokerul MQTT la distanță prin internet. O aplicație care rulează pe un telefon Android se conectează la broker prin intermediul căreia putem monitoriza și controla setul nostru de pompe de irigare tot timpul. Am folosit broker MQTT disponibil gratuit de la Adafruit IO. Există mulți brokeri disponibili, cum ar fi mosquitto, cloudmqtt etc. Puteți alege orice broker, cu condiția să schimbați serverul și numărul portului din cod. NodeMCU se conectează la internet utilizând WiFi de la hotspotul mobil. Puteți utiliza orice telefon mobil vechi sau low-cost pentru a oferi acces wifi prin hotspot sau orice alt mijloc de furnizare a internetului prin wifi. Mobilul ar trebui să fie conectat la încărcător, așa cum ar trebui să fie pe 24X7.

NodeMCU este interfațat cu două relee pentru a controla pornirea și oprirea funcționării motorului. Pentru a detecta curentul din motor am folosit senzorul de curent WCS1700. Ieșirea analogică de la senzor este utilizată pentru a ști că motorul este pornit sau oprit. De asemenea, detectează disponibilitatea energiei din rețea și o publică către broker, astfel încât să putem cunoaște starea rețelei oricând. Dispozitivul se abonează la două fluxuri pentru a primi cererea pentru motorul pornit și motorul oprit. Trimitând valori specifice acestor fluxuri putem controla motorul pentru PORNIRE sau OPRIRE.

În cele din urmă, am instalat aplicația MQTT Dash pe telefonul meu Android și am configurat-o pentru a mă conecta la brokerul MQTT și a folosi fluxurile de pe tabloul de bord / gui-ul său. Aplicația are pictograme foarte bune cu butoane, manometru, comutator etc. pentru a crea tabloul de bord atractiv. Cu toate acestea, puteți utiliza orice aplicație mobilă de automatizare casnică IOT care acceptă protocolul mqtt.

Cum funcționează WCS1700:

WCS1700 este practic un senzor de efect Hall care va produce o tensiune de ieșire proporțională cu câmpul magnetic creat pe măsură ce curentul curge prin bobină. Bobina de aici este o linie de alimentare care va fi conectată la motor. Poate măsura curent alternativ de până la 70 Amperi. Tensiunea de funcționare este cuprinsă între 3,3 și 12 V. Consultați fișa tehnică pentru mai multe detalii. Deoarece folosesc ESP12, am folosit aceeași sursă de alimentare de 3,3V ca tensiunea de funcționare pentru WCS1700. După cum se specifică în fișa tehnică la 3,3 V, dispozitivul ar trebui să producă o tensiune diferențială de aproximativ 32 până la 38 mV per amp de curent prin bobină. Dar poate varia în funcție de dimensiunea bobinei / spațiul de aer și de variațiile dispozitivului. Prin urmare, a trebuit să-l calibrez testându-l cu Ampere Meter. Nu sunt mulțumit de acuratețea dispozitivului, dar este suficient de bun pentru a decide starea motorului ca pornit / oprit. Pinul de ieșire al WCS1700 este conectat la A0 al ESP12. Atunci când nu există curent, ESP12 ar trebui să citească valoarea în jurul valorii de 556. Pe măsură ce creșterea curentului în bobină, tensiunea poate fi pe ambele părți în funcție de modul în care cablul trece prin senzor. În cod am luat diferența de valori ca valoare absolută a (x - 556). Împărțind rezultatul cu 15 am obținut curent aproximativ care trece prin senzor. Va trebui să experimentați acest lucru pentru a obține numărul potrivit pentru dvs. Orice măsurare a curentului de către dispozitivul de peste 5 Amperi îl consider motor pornit și sub 5 Amperi, deoarece motorul este oprit. Puteți utiliza numărul potrivit pentru dispozitivul dvs. experimentând. Trebuie să schimbați WCS1700_CONST și MIN_CURRENT în cod în consecință.

Pasul 1: Construcția dispozitivului

Construcția dispozitivului
Construcția dispozitivului
Construcția dispozitivului
Construcția dispozitivului

Diagrama de mai sus oferă detalii complete despre modul de conectare a tuturor componentelor.

Sursa de alimentare: am folosit TP4056 pentru a încărca bateriile și LM313 pentru a regla 3.7V - 4.2V de ieșire a bateriei la 3.3 V pentru a alimenta NodeMCU. Folosit condensator 1000mF între Vin și solul LM313 pentru a obține o alimentare stabilă de 3,3V. Puteți utiliza încărcătorul mobil USB obișnuit pentru a alimenta TP4056. Are circuit de protecție a bateriei pentru a proteja bateria de supraîncărcare.

Detectarea sursei de alimentare cu rețea: divizorul de tensiune de 5 k ohmi va reduce 5 V la 2,5 V. Pinul D5 al NodeMCU va detecta tensiunea.

Pinul de ieșire al WCS1700 este conectat la A0 pentru a citi tensiunea analogică de la senzor. Linia de alimentare a rețelei trebuie să treacă prin gaură pentru a măsura curentul. Am folosit condensator 0,01 uF pentru a obține forma de citire stabilă WCS1700.

D1 și D2 ale NodeMCU pentru a fi conectate la IN0 și IN1 ale pinilor de intrare a releului.

Pasul 2: Conexiuni de pornire DOL

Conexiuni de pornire DOL
Conexiuni de pornire DOL
Conexiuni de pornire DOL
Conexiuni de pornire DOL

Am modificat circuitul de control al starterului DOL pentru a introduce un alt set de comutatoare START și STOP. Această modificare nu va afecta operația de pornire / oprire manuală și continuă să funcționeze așa cum este.

Prudență !!!! Deoarece starterul DOL este un dispozitiv de înaltă tensiune, asigurați-vă că întrerupătorul principal este oprit înainte de a deschide cutia. Contactul direct cu firul sub tensiune ar putea fi periculos. Dacă nu aveți încredere, luați ajutor de la electrician pentru a face conexiunile

Am folosit modulul de releu cu 2 canale 5 V ca comutator START și STOP. Aceste relee vor fi controlate de ESP12.

Releul - 0 va funcționa ca întrerupător START - cablat ca NO (în mod normal deschis).

Releul-1 va funcționa ca întrerupător STOP - cablat ca NC (În mod normal închis). Starterul va avea deja un fir de conectare de la contactorul de sus la NVC. Va trebui să îl scoateți și să îl înlocuiți cu releu -1 fire așa cum se arată.

Asigurați-vă că conexiunile dintre starter și modulele releului sunt complet izolate din punct de vedere al siguranței. Am programat ESP pentru a menține ambele relee timp de 2 secunde pentru a imita apăsarea butonului START / STOP.

Pasul 3: Creați un cont cu Adafruit IO (io.adafruit.com)

Am folosit brokerul Adafruit io mqtt, care este gratuit de utilizat cu puține limitări, dar este OK pentru utilizarea noastră. Prefer acest lucru, deoarece l-am folosit și în alte proiecte și mi s-a părut destul de fiabil și are, de asemenea, multe alte caracteristici, cum ar fi tabloul de bord cu o interfață grafică frumoasă și chiar putem folosi declanșatoare. Pentru a utiliza Adafruit io trebuie să vă creați un cont și să notați numele de utilizator și cheia activă.

Pasul 4: Construiți și instalați software-ul

Codul complet este disponibil în schiță. Trebuie să deschideți acest lucru în Arduino IDE și să faceți câteva modificări înainte de a compila și încărca firmware-ul. Alegeți tipul de placă ca NodeMCU 1.0. Instalarea IDE și a bibliotecilor conexe nu fac parte din această documentație.

Modificați următoarele linii din cod ca rezerve.

#define WLAN_SSID "xxx" // SSID-ul dvs. Hotspot WiFi mobil

#define WLAN_PASS "……" //

/ ************************* Adafruit.io Setup ******************* ************* /

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883 // utilizați 8883 pentru SSL

#define AIO_USERNAME "xyz" // Numele de utilizator al contului dvs. adafruit

#define AIO_KEY "abcd ……" // cheia dvs. activă …

Despre fluxurile MQTT: dispozitivul și clientul (aplicația mobilă) fac schimb de informații prin fluxuri de mesaje utilizând modelul sub pub prin brokerul MQTT. Orice client sau dispozitiv pentru a primi un mesaj, trebuie să se aboneze pentru un feed predefinit și trebuie să utilizeze metoda de publicare pentru a trimite un mesaj către un feed. Pentru proiectul nostru avem nevoie de aproximativ 5 fluxuri. Mai jos este explicația pentru fiecare feed, așa cum vedeți în cod și cum funcționează acestea.

Starea rețelei: disponibilitatea sursei de alimentare din rețea este publicată pe feedul /feeds/grid. Adafruit_MQTT_Publish grid_stat = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / grid");

0 indică faptul că sursa de alimentare nu este disponibilă și 1 pentru sursa de alimentare este disponibilă.

Stare motor: Dispozitivul va publica starea motorului pe feed … / feeduri / grilă.

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

Valoarea 0 pentru OFF și 1 pentru ON

Butonul Motor ON: Această alimentare este utilizată pentru a primi cererea de pornire a motorului. Dispozitivul se va abona la feed pentru a primi cererea de pornire a motorului cu valoarea = 1 și va folosi același feed pentru a publica mesajul de confirmare ca 0. În acest fel putem confirma că mesajul de solicitare de pornire a fost primit efectiv de dispozitiv.

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

Butonul Motor OFF:

Similar cu cererea de pornire, această alimentare este utilizată pentru a primi cererea de oprire a motorului. Dispozitivul se va abona la feed pentru a primi cererea de oprire cu valoarea = 1 și va folosi același feed pentru a publica mesajul de confirmare ca 0.

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

Conexiune:

Acesta este un feed special cu opțiunea „ultima voință” activată. Când dispozitivul funcționează bine la fiecare interval fix, va publica conexiunea = 1 pentru a spune utilizatorului că totul este în regulă. În cazul în care sistemul a căzut sau conexiunea se pierde, dispozitivul nu va putea comunica cu brokerul. În astfel de cazuri, brokerul MQTT însuși va publica în flux ca conexiune = 0 pentru a informa utilizatorul că a mers ceva greșit și dispozitivul nu este accesibil pe internet. Trebuie să mergem fizic și să verificăm dispozitivul. Codul este foarte simplu. Consultați documentația MQTT pentru mai multe detalii despre modul în care funcționează „Ultima voință”.

if (itr <= 0)

{

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

itr = CON_LIVE_ITR;

}

Restul codului se explică de la sine și nu sunt necesare modificări. Simțiți-vă liber să comentați în cazul în care aveți nevoie de mai multe informații.

Pasul 5: Instalați și configurați aplicația MQTT Dash pe telefonul mobil

Instalați și configurați aplicația MQTT Dash pe mobil
Instalați și configurați aplicația MQTT Dash pe mobil
Instalați și configurați aplicația MQTT Dash pe mobil
Instalați și configurați aplicația MQTT Dash pe mobil
Instalați și configurați aplicația MQTT Dash pe mobil
Instalați și configurați aplicația MQTT Dash pe mobil
  1. Instalați MQTT Dash pe telefonul dvs. Android și deschideți aplicația
  2. Faceți clic pe pictograma + din colțul din dreapta sus pentru a adăuga un dispozitiv.
  3. Așa cum se arată în prima imagine de mai sus, dați un anumit nume dispozitivului dvs. spuneți „MyFarm-IPSet”. Câmpul de adresă ca io.adafruit.com și portul ca 1883, numele de utilizator ar trebui să fie numele dvs. de utilizator adafruit și parola ar trebui să fie cheia dvs. activă de la adafruit. Lăsați restul câmpurilor așa cum este. În cele din urmă, faceți clic pe Salvați.
  4. Ați creat dispozitivul. Acum faceți clic pe acesta pentru a adăuga tabloul de bord.
  5. Faceți clic pe + și selectați tipul ca buton / comutator. După cum se arată mai sus, introduceți sys în câmpul de nume. și introduceți numele fluxului în câmpul subiect. fiecare flux ar trebui să înceapă cu numele de utilizator / fluxuri /. pentru aceasta noi / feeduri / conexiune. Asigurați-vă că Activarea publicării este dezactivată. Dând clic pe pictograma pentru a afișa, puteți alege tipul de pictogramă pe care doriți să îl arate pe tabloul de bord. Pentru valoarea 1 selectați una dintre culori (să zicem verde) și pentru valoarea 0 selectați culoarea ca gri sau roșu. În cele din urmă, faceți clic pe Salvați în colțul din dreapta sus. În mod similar, creați încă două pictograme una pentru Grid cu nume de utilizator / fluxuri / grilă ca subiect și Motor cu nume de utilizator / fluxuri / motor. Asigurați-vă că Activarea publicării este dezactivată.
  6. În cele din urmă, creați butonul Motor ON. Este din nou la fel ca tipul de buton / comutator. Subiectul ar trebui să fie / feeds / motor_on și să se asigure că Enable Publish este activat de această dată și QOS = 1. În mod similar, creați un alt buton pentru Motor OFF. Subiectul ar trebui să fie / feeeds / motor_off.

Pasul 6: Ultimul pas:-) Testare și reglare finală

  1. Pentru a fi în siguranță, trebuie să testați dispozitivul mai întâi pentru funcționările sale START și STOP înainte de a conecta releele la starterul DOL. Activați Hotspot pe mobil cu internet activat. Conectați laptopul cu mediu de dezvoltare direct la portul USB NodeMCU cu un alt încărcător conectat la TP4056 în același timp. Dacă dispozitivul este conectat cu succes la internet, ar trebui să vedeți 1 dispozitiv conectat la hotspot pe smartphone.
  2. Pe celălalt smartphone pe care ați instalat MQTT Dash, deschideți tabloul de bord al aplicației. Ar trebui să vedeți că pictograma NET în verde și pictograma Grid, de asemenea, în verde, cu valorile lor 1. Pictograma motorului trebuie să fie afișată ca motor oprit, cu valoarea 0.
  3. Când faceți clic pe butonul Motor ON, releul de pornire ar trebui să scoată două sunete de clic la un interval de două secunde. În mod similar, butonul Motor OFF este, de asemenea.
  4. Pentru siguranță, opriți alimentarea principală la starterul DOL și conectați releele la starterul DOL așa cum se arată mai sus la pasul 2. Asigurați-vă că motorul este oprit. Apăsați butonul de resetare pe NodeMCU. Din ieșirea monitorului serial, puteți vedea instrucțiunile de depanare care imprimă valorile de la senzorul WC1700, delta și curentul calculat în bobină. Cu motorul în starea oprită și „#define WCS1700_CONST 15” maxCur ar trebui să fie mai mic de 2 în mod constant. Dacă se afișează mai mare de 2, încercați cu valori mai mari de WCS1700_CONST. De fiecare dată va trebui să recompilați codul și să încărcați firmware-ul.
  5. Acum porniți motorul și căutați din nou citirile curente. Lăsați motorul pornit timp de aproximativ 10-15 minute și notați curentul stabil. Curentul poate varia între 10 și 20 Amperi aproximativ și nu trebuie să fie precis.
  6. Reveniți la cod și setați „#define MIN_CURRENT X. Unde X este 40 la sută din curentul maxim aproximat la valoarea numerică. În cazul meu am setat MIN_CURRENT la 5. Compilați și reîncărcați din nou firmware-ul pe NodeMCU.
  7. Scoateți cablul USB din NodeMCU. Opriți și porniți dispozitivul cu încărcător USB conectat la TP4056. Dacă faceți clic pe butonul Motor ON din aplicația mobilă, ar trebui să porniți motorul. Odată ce motorul este pe starea motorului, acesta ar trebui să se reflecte pe tabloul de bord al aplicației ca fiind PORNIT. Dacă faceți clic pe butonul de oprire ar trebui să opriți motorul.

Bucurați-vă !!!!

Recomandat: