Cuprins:

DIY - Irigare automată pentru grădină - (Arduino / IOT): 9 pași (cu imagini)
DIY - Irigare automată pentru grădină - (Arduino / IOT): 9 pași (cu imagini)

Video: DIY - Irigare automată pentru grădină - (Arduino / IOT): 9 pași (cu imagini)

Video: DIY - Irigare automată pentru grădină - (Arduino / IOT): 9 pași (cu imagini)
Video: Dorian este speriat de un interlop când face poze 😱🥊🤣 #timisoara #dorianpopa #cluj #bucuresti 2024, Noiembrie
Anonim
DIY - Irigare automată pentru grădină - (Arduino / IOT)
DIY - Irigare automată pentru grădină - (Arduino / IOT)
DIY - Irigare automată pentru grădină - (Arduino / IOT)
DIY - Irigare automată pentru grădină - (Arduino / IOT)
DIY - Irigare automată pentru grădină - (Arduino / IOT)
DIY - Irigare automată pentru grădină - (Arduino / IOT)

Acest proiect vă va arăta cum să construiți un controler de irigare pentru o grădină de acasă. Capabil să măsoare citirile umidității solului și să activeze irigarea de la robinetul de grădină dacă solul devine prea uscat. Controlerul include, de asemenea, un senzor de temperatură și umiditate. Controlerul nu va activa robinetul de grădină dacă temperatura este prea scăzută. Citirile senzorilor și statisticile despre utilizarea apei / timpii de funcționare sunt înregistrate pe ThingsBoard IOT pentru vizualizare și analiză. Alertele și e-mailurile sunt declanșate dacă controlerul de irigații nu mai transmite date, solul devine prea uscat sau prea saturat.

Condiții prealabile

  • Cunoștințe despre Arduino, incluzând cel puțin codarea de bază pentru Arduino și lipire.
  • 1x robinet de grădină presurizat

Proiect de lege de materiale

  • Pipă de irigare pentru grădină, jeturi, picuratoare etc.
  • Temporizator electronic cu două cadrane (de exemplu: Aqua Systems Electronic Digital Temporizator)
  • Reductor de presiune la robinet 300kpa
  • Arduino Uno
  • Lora Arduino Shield
  • Lora Gateway (Nu este necesar dacă aveți un gateway local de rețea Things)
  • Senzor de umiditate a temperaturii DHT11
  • Releu 5v
  • Cablu telefonic
  • Legaturi de cablu
  • Tuburi ondulate pentru automobile
  • Benzi de conectare terminale auto
  • 2x cuie zincate
  • 1x rezistor
  • Silicon / Caulk
  • Ciment din PVC
  • Grund din PVC
  • Țeavă PVC 32 mm lățime x 60 mm lungime
  • Țeavă PVC 90 mm lățime x 30 cm lungime
  • 3x Capace de împingere din PVC 90mm
  • 1x capac cu șurub din PVC 90mm
  • 1x racord filetat din PVC 90mm
  • 1x capace de împingere din PVC 32mm
  • 1x sursă de alimentare de 3,2V (cronometru tap) [baterii, adaptor multivolt CA]
  • 1x sursă de alimentare 6-12V (arduino) [baterii, USB, adaptor USB la CA]
  • bandă de etanșare a firului
  • bandă electrică

Pasul 1: Instalați irigarea grădinii

Instalați irigarea grădinii
Instalați irigarea grădinii
Instalați irigarea grădinii
Instalați irigarea grădinii

Dispuneți o țeavă poli, adaptați jetoanele, liniile de picurare și picurătoarele. Controlerul de irigare va funcționa cu orice echipament de irigare. În centrul său, este măsurarea citirilor de umiditate a solului și activarea cronometrului robinetului dacă și când solul este prea uscat. Controlerul poate fi calibrat pentru a seta punctul scăzut pentru saturație, pentru cât timp trebuie activat temporizatorul de atingere și cât de des controlerul ar trebui să verifice saturația.

Aceste setări pot fi modificate pe arduino și stocate în memoria EPROM. Setările pot fi, de asemenea, actualizate prin integrarea IOT. Acest proiect va rula controlerul la fiecare patru ore și va activa robinetul timp de 3 minute dacă solul este prea uscat. Poate rula de câteva ori la rând dacă este uscat / fierbinte sau o dată pe zi sau două altfel.

Pasul 2: Montați Tap Timer

Ajustați cronometrul de atingere
Ajustați cronometrul de atingere

Montați cronometrul de atingere și experimentați cu cadrane reglabile pentru a obține o frecvență brută și un timp de funcționare care funcționează cel mai bine pentru instalarea dvs. de irigare. Vom scoate temporizatorul și îl vom modifica pentru a funcționa cu un Arduino.

Pasul 3: Arduino Build

Arduino Build
Arduino Build
Arduino Build
Arduino Build
Arduino Build
Arduino Build
Arduino Build
Arduino Build

Utilizați schema de cablare ca ghid pentru construcție. În fotografii a fost utilizat cablarea cablului telefonic și șuruburi de benzi pentru punctele de joncțiune. Este necesară o anumită lipire.

Atingeți Modificare temporizator

Desfaceți cu atenție cronometrul de atingere. Vom conecta cu forță cele două cadrane reglabile, astfel încât acestea să poată fi controlate de arduino în loc de cadrane manuale. Cadranul de frecvență stânga va fi conectat la poziția de resetare, astfel încât cadranul drept să poată fi comutat între poziția pornit / oprit. Cadranul din dreapta va avea un fir care vine de la contactul central dreapta și contactul exterior exterior, așa cum se arată. În mod implicit, cronometrul va fi în poziția oprit. Dacă cele două fire intră în contact, temporizatorul se va porni. Cu cele două fire conectate la un releu de 5V, un arduino poate apoi închide / deschide contactul între cele două fire. Cu un fir în terminalul comun al releului și celălalt în terminalul normal închis, ne vom asigura că temporizatorul este oprit atunci când arduino-ul este oprit. Setarea pinului releului la HIGH va porni temporizatorul; setarea la LOW va opri cronometrul.

Sondă de sol

Pentru acest proiect, cele două cuie sunt lipite pe sârmă conectată la bornele cu șurub. Terminalul unui cui merge direct la sol. Celălalt se conectează la o intrare analogică în arduino și la un rezistor. Rezistorul se conectează la semnalul arduinos 5v. Afișat în diagrama de stoarcere.

Senzor de temperatură / umiditate

Senzorul de temperatură / umiditate DHT11 este conectat la arduino de 5V, la sol și la un pin digital pe arduino.

Scutul Lora

Acest proiect a folosit, de asemenea, un Dragino Lora Shield (care nu este prezentat în schema de cablare).

Baza din PVC

Baza din PVC pentru arduino utilizată în acest proiect a fost proiectată astfel încât senzorul de temperatură / umiditate să poată fi expus, păstrând în același timp toate celelalte componente fixate în interiorul carcasei impermeabile din PVC. O gaură mică este forată / tăiată pentru senzor și siliciu este folosit pentru a-l menține în loc, oprind umezeala să ajungă la arduino. Afișat în diagramă.

Pasul 4: Programare Arduino

Programare Arduino
Programare Arduino

Conectați componentele împreună printr-o placă de testare sau benzi terminale pentru programare și testare

Configurare EPROM

Mai întâi trebuie să scriem variabile de configurare în memoria EPROM. Rulați următorul cod pe arduino:

Cod disponibil pe Github

Aici DRY_VALUE este setat la 960. 1024 înseamnă că solul este complet uscat, 0 înseamnă saturație completă, 960 a fost un nivel bun de saturație pentru rezistor, lungimea cablului și cuie utilizate. Acest lucru poate varia în funcție de propria configurație.

VALVE_OPEN este setat la 180000 milisecunde (3 minute). Când / dacă cronometrul este activat, acesta va fi lăsat deschis timp de 3 minute.

RUN_INTERVAL este setat la 14400000 milisecunde (4 ore). Aceasta înseamnă că controlerul va verifica umiditatea solului la fiecare patru ore și va porni temporizatorul pentru 3 minute dacă saturația este scăzută (mai mare de 960).

Codul de mai sus poate fi modificat și aceste valori pot fi modificate în orice moment.

Codul programului

Cod disponibil pe Github

Dependențe:

  • TimedAction
  • Radio Head

Acest exemplu a folosit scutul Dragino Lora și mai exact exemplul concurent Lora cu scutul care se conectează direct la Gateway-ul Dragino Lora.

Acest lucru poate fi adaptat pentru a utiliza Rețeaua de lucruri, eliminând codul din secțiunea „ÎNCEPE: lora vars” și schimbând programul pentru a include următorul exemplu Dragino sau adaptat pentru a lucra cu alte radiouri / scuturi wifi etc.

Codul furnizat presupune că DHT11_PIN este pinul digital 4, RELAY_PIN este pinul digital 3 și pinul analogic al umidității solului este intrarea analogică 0.

O variabilă de depanare poate fi setată la adevărat, astfel încât mesajele de depanare serial să poată fi înregistrate la baudrate 9600.

Pasul 5: Construirea incintei

Construirea incintei
Construirea incintei

Tăiați conducta din PVC pentru a se potrivi cu temporizatorul de robinet și baza Arduino. Găuriți pentru racordul robinetului și furtunului. Găuriți găurile în țeavă suficient de largă pentru conducta auto, alunecați lungimile conductei de 10 cm în găuri și scoateți firele din arduino și cronometrul de la robinet. Aceasta ar trebui să includă:

De la Arduino

  • Cabluri de alimentare și / sau un cablu USB de la portul USB al arduino.
  • Cabluri de umiditate a solului (VCC, GND, A0)
  • Două fire de la bornele cu șurub NC și comune ale releului

Din cronometrul de atingere

  • Cabluri de alimentare
  • Două fire de la contactele de apelare dreapta

Pasul 6: testați controlerul înainte de lipire

Controlați testul înainte de lipire
Controlați testul înainte de lipire
Controlați testul înainte de lipire
Controlați testul înainte de lipire

Asigurați-vă că totul funcționează încă înainte de a sigila totul.

Fotografiile de mai sus arată un eșantion de montaj într-un esky unde sonda de umiditate a solului a fost plasată într-o oală și cronometrul de la robinet a fost prevăzut cu apă provenită dintr-o sticlă de băuturi răcoritoare.

Un picurator a fost atașat la cronometrul de la robinet.

Acesta a fost un mod bun de a testa dacă instalația nu a depășit sau sub apă planta.

Acest exemplu poate fi rulat atât timp cât este necesar pentru calibrarea controlerului.

Pasul 7: Adeziv / carcase impermeabile

Adeziv / Carcase impermeabile
Adeziv / Carcase impermeabile

Folosiți PVC Primer și PVC Cement pentru a asigura capace de capăt și cuplaj.

Folosiți masă de silicon / silicon pentru a umple orice goluri din jurul conductei automate și a accesoriilor de temporizare.

Aici este utilizat un capac cu șurub pe carcasa arduino pentru accesibilitate.

Pasul 8: Instalați

Instalare
Instalare
Instalare
Instalare
Instalare
Instalare

Instalați într-o zi senină. Componentele și firele vor trebui să rămână uscate înainte de a fi sigilate.

Așezați controlerul undeva centrat între locul în care se află robinetul de grădină și locul în care va fi plasată sonda de sol.

Montați cronometrul de atingere și asigurați-vă că nu este alimentat până la finalizarea instalării.

Montați sonda de sol.

Atașați bornele de bandă la fiecare componentă, apoi așezați cablul telefonului de la bornele cu șurub ale fiecărei componente, asigurându-vă că cablul este acoperit în conducta automată. Conectând totul împreună

Sigilați toate bornele și orice alte piese expuse cu bandă de etanșare a firului, apoi bandă electrică.

Sigilați toate zonele libere / expuse ale conductei divizate cu bandă de etanșare a firului, apoi bandă electrică.

Conectați temporizatorul la o sursă de alimentare de 3.2v. Fie un pachet de baterii, fie la un adaptor de curent alternativ de 3,2V DC care rulează la o priză de alimentare.

Conectați Arduino la o sursă de alimentare de 6-12V DC. Fie un pachet de baterii, fie un adaptor USB / DC-AC care rulează la o priză de alimentare.

Porniți și testați!

Pasul 9: Integrarea ThingsBoard - Monitorizare și raportare

Integrare ThingsBoard - Monitorizare și raportare
Integrare ThingsBoard - Monitorizare și raportare

Acest exemplu a folosit A Dragino Lora Shield conectat la un Gateway Dragino Lora. Indiferent dacă utilizați această configurație, o altă configurație Lora sau orice altă conectivitate IOT, datele colectate de controlerul de irigare pot fi redirecționate pe o platformă IOT precum Thingsboard. În mod implicit, programul transmite următorul șir de date în care fiecare octet de caractere este codat hexagonal:

TXXXHXXXSXXXXRX

În cazul în care T este urmat de temperatură, H este urmat de umiditate, S este urmat de nivelul de saturație și R este urmat de o singură cifră referitoare la ce acțiune a efectuat la ultimul interval de rulare. Acest lucru poate fi 0-5 în cazul în care fiecare cifră înseamnă:

0: Programul este inițializat 1: Defecțiunea senzorului de temperatură2: Temperatura a fost prea scăzută pentru a funcționa3: Umiditatea solului este prea uscată, astfel încât temporizatorul de robinet a fost activat4: Umiditatea solului este fină, astfel încât temporizatorul de robinet nu a fost activat5: Regulatorul de irigare a fost dezactivat

Există mai multe moduri de a instala o copie a Thingsboard-ului pe propriul echipament sau puteți configura un cont gratuit pe instalarea ThingsBoard aici.

Configurați dispozitivul în Thingsboard

Urmați aceste instrucțiuni pentru a adăuga un dispozitiv nou în Thingsboard numindu-l „Irrigation Controller”.

Împingeți datele de telemetrie de pe dispozitiv

Urmați aceste instrucțiuni pentru a configura o metodă de împingere a datelor telemtry de pe dispozitiv pe Thingboard prin MQTT, HTTP sau CoAp.

Pe serverul nostru, împingem următorul JSON la https://thingsboard.meansofproduction.tech/api/v1/… la fiecare patru ore când dispozitivul este rulat (cu date live):

De asemenea, împingem următoarele atribute la https://thingsboard.meansofproduction.tech/api/v1/… periodic cu date despre data la care a fost văzut ultima dată nodul:

Aceasta este utilizată pentru alertele care se declanșează dacă dispozitivul încetează să mai transmită date.

Creați un tablou de bord

Creați un tablou de bord așa cum este descris aici. Widgeturile noastre includ:

Un widget de card simplu creat din câmpul de telemetrie lastRunResult. Un indicator digital vertical pentru câmpul de telemetrie a temperaturii Un tabel Timeseries creat din câmpul de telemetrie lastRunResult care arată datele din ultimele zile. O bară orizontală care arată câmpul de telemetrie de saturație. Aceasta folosește o funcție de post-procesare a datelor:

returnează 1024-valoare;

Și setează o valoare minimă și maximă 0-100. În acest fel, nivelul de saturație poate fi exprimat ca procent. Un ghid pentru a arăta valoarea umidității. Un grafic cu bare de serie temporală care include temperatura, umiditatea și rezultatul rulării, grupate în perioade de 5 ore pentru ultima săptămână, agregate pentru a afișa valorile maxime. Acest lucru ne oferă o bară pentru un eveniment de patru ore. O funcție de post-procesare a datelor este utilizată pentru a exprima rezultatul rulării ca 0 sau 120, în funcție de faptul că a fost sau nu apă curentă. Acest lucru oferă un feedback vizual ușor pentru a vedea cât de des curge apa într-o săptămână. Un card HTML static care arată o imagine a grădinii.

Alerte prin e-mail

Am folosit reguli pentru a seta alerte prin e-mail pentru controlerul de irigații. Toți folosesc filtre de mesaje și o acțiune de trimitere a acțiunii de e-mail.

Pentru a trimite o alertă prin e-mail în cazul în care controlerul de irigare nu reușește să trimită date, am folosit „Filtru atribute dispozitiv” cu următorul filtru:

typeof cs.secondsSinceLastSeen! == 'nedefinit' && cs.secondsSinceLastSeen> 21600

Pentru a trimite un e-mail dacă solul devine prea uscat, utilizați următorul filtru de telemetrie

typeof saturation! = "undefined" && saturation> 1010

Pentru a trimite un e-mail bazat dacă solul devine prea umed, utilizați următorul filtru de telemetrie

typeof saturation! = "nedefinit" && saturation

Recomandat: