Avtomatski sistem za zalivanje z Arduino za vaše rastline, sadovnjak ali vrt

Zalivanje zalivanje rastlin

Poletje je čas, ko se mnogi pogosto odpravijo na dopust zunaj, rastline pa so problem, saj tega ne morejo biti zalivajte tiste dni, ko vas ni doma. Poleg tega vrtne trgovine običajno prodajajo nekakšen gel, ki približno mesec dni rastlino hidrira in neguje. Toda ob vročini ali če odidete več kot mesec dni, boste potrebovali nekoliko boljši sistem, da bodo po vrnitvi še vedno živi in ​​živahni.

Da bi bilo to mogoče, je obstoječa rešitev nakup a avtomatski namakalni sistem ki ga lahko programirate, ali če ste izdelovalec in vam je všeč DIY, lahko to storite sami z Arduinom. Potrebne materiale je poleg plošče Arduino enostavno najti in precej poceni, zato ne vključujejo prevelikih stroškov. Za nekatere elemente, kot je rezervoar za vodo itd., Lahko uporabite reciklirane materiale ...

Če malo brskate po spletu, boste našli različni projekti te vrste, ampak morda najbolj zanimivo je vrt. Pri tem bom navdihnjen za ta projekt, saj menim, da drugi namakalni sistemi, ki uporabljajo samo senzorje vlažnosti in nič drugega, niso tako popolni.

Kaj potrebuješ

P materiali, potrebni za vaš samodejni namakalni sistem Zvok:

  • Ni najdenih izdelkov, čeprav bi bilo vredno drugih.
  • Breadboard ali PCB če ga želite spajkati in narediti trajnega.
  • Senzor temperature in vlažnosti Ni najdenih izdelkov
  • Kabli
  • Senzor YL-69 vlaga na tleh s higrometrom, da se zatakne v lonec ali tla.
  • Minipump 3V potopna voda in približni pretok 120 l / h.
  • Dioda 1N4007
  • Bipolarni tranzistor PN2222
  • 3 upori: 1x 220 ohmov, 1x 1k, 1x fotorezist LDR
  • Rezervoar za vodo, ki je lahko boben ali steklenica s 5 ali več litri itd.
  • Cev za priključitev na mini črpalko in odhod do obrata / obratov

Como alternativne ideje, Povedal bi vam, da bi ga lahko uporabili tudi sonoff ali modul WiFi, da ga aktivirate prek interneta, kjer koli že ste, ali pa ga izboljšate tako, da na pipo dodate samodejni ventil za programiranje polnjenja rezervoarja za vodo, ko se izprazni itd.

Kako nastaviti samodejni namakalni sistem

Shema sklopa v Fritzingu

Montaža je povsem preprosta. Ti lahko uporabite zgornjo shemo za vse povezave. Sistem naj bo nameščen na mestu blizu okna ali tam, kjer je rastlina, ki jo želite zalivati, in dva konica senzorja vlažnosti prilepite v tla rastline blizu stebla.

Avtomatski sistem za zalivanje z Arduino bo zalival, kadar zazna a vrsto okoljskih razmer. Na primer, ko zazna šibko svetlobo ali temo, je temperatura zraka konkretna, ki jo bomo nastavili na skici Arduino IDE, vlaga na tleh pa je nizka. Takrat bi aktiviral motor za zalivanje rastline.

Rastline je priporočljivo zalivati ​​ponoči, ko je manj vroče, saj bi to lahko v močnih vročih dneh škodilo več kot koristilo ...

Ne pozabite, da morate uvedite mini črpalko pod vodo v rezervoarju, ki ste mu namenjeni za namakanje, in ki bi moral imeti dovolj zmogljivosti, da zadrži dneve, ko vas ni. Lahko naredite predhodne teste, da ugotovite, kako dolgo traja, in pustite malo več vode, če izpari ob močni vročini ...

Samoumevno je, da je treba cev pritrditi na rastlino, tako da se ne premika z vetrom ali pa lahko voda izpade in zapravi. In mislim, da se ne bi bilo treba spomniti, da morate vzdrževati trenutno oskrbo plošče Arduino, da bo delovala ...

programiranje

Zdaj je čas, ko bi morali napisati koda, potrebna v Arduino IDE da lahko programirate mikrokrmilnik, ki upravlja strojno opremo, ki ste jo uporabili. To je čas, da prilagodite vrednosti temperature, vlažnosti in svetlobe vodi na svojem območju, saj se lahko razlikujejo glede na to, kje ste. Toda primer, ki ga lahko uporabite kot osnovo, je (pustil sem komentarje, kjer lahko spremenite vrednosti, ostale pa lahko pustite tako):

Prenesite kodo iz koda-namakanje-samodejnozalivanje-avto za vaš vrt

#include <SimpleDHT.h>
#include <SPI.h>
#define humidity_sensor_pin A0
#define ldr_pin A5
//Bibliotecas para los módulos sensores usados necesarias
//Y definición de variables para los sensores de humedad y LDR en los pines A0 y A5

int pinDHT11 = 2;
SimpleDHT11 dht11;
int ldr_value = 0;
int water_pump_pin = 3;
int water_pump_speed = 255;
//Aquí puedes dar valores desde 0 a 255 para la velocidad a la que trabajará la minibomba
//Haz pruebas previas del caudal y configura la. Yo he //elegido 255 pero ustedes pueden elegir la que estimen conveniente. A más velocidad, mayor //bombeo de agua
void setup() {
  Serial.begin(9600);
}
void loop() {
// Mide la temperatura y humedad relativa y muestra resultado
  Serial.println(“*******************************”);
  Serial.println(“Muestra DHT11…”);
  
  byte temperature = 0;
  byte humidity_in_air = 0;
  byte data[40] = {0};
  if (dht11.read(pinDHT11, &temperature, &humidity_in_air, data)) {
    Serial.print(“Lectura del sensor DHT11 fallida”);
    return;
  }
  
  Serial.print(“Muestra RAW Bits: “);
  for (int i = 0; i < 40; i++) { Serial.print((int)data[i]); if (i > 0 && ((i + 1) % 4) == 0) {
      Serial.print(‘ ‘);
    }
  }
  Serial.println(“”);
  
  Serial.print(“Muestra OK: “);
  Serial.print(“Temperatura: “);Serial.print((int)temperature); Serial.print(” *C, “);
  Serial.print(“Humedad relativa en aire: “);Serial.print((int)humidity_in_air); Serial.println(” %”);
  
  int ground_humidity_value = map(analogRead(humidity_sensor_pin), 0, 1023, 100, 0);
  Serial.print(“Humedad en suelo: “);
  Serial.print(ground_humidity_value);
  Serial.println(“%”);

  int ldr_value = map(analogRead(ldr_pin), 1023, 0, 100, 0);
  Serial.print(“Luz: “);
  Serial.print(ldr_value);
  Serial.println(“%”);
   Serial.println(“*******************************”);

//**************************************************************
// Condiciones de riego 
// Si la humedad en el suelo es igual o inferior al 60%, si la luminosidad es inferior al 30%,
// Si la temperatura es inferior al 35%, entonces el sistema de riego riega. 
// En caso de que no se  cumpla alguno o ninguno de los 3 requisitos anteriores,
// el sistema de riego no riega
//**************************************************************
//Aquí puedes variar los parámetros que necesites de 60, 35 y 30, e incluso usar otros operandos <>=...
 if( ground_humidity_value <= 60 && ldr_value<30 && temperature<35) {
 digitalWrite(water_pump_pin, HIGH);
 Serial.println(“Irrigación”);
 analogWrite(water_pump_pin, water_pump_speed);

 }
 else{
 digitalWrite(water_pump_pin, LOW);
 Serial.println(“Riego detenido”);

 }
 delay (2000); 
// Ejecuta el código cada 2000 milisegundos, es decir, 2 segundos. Puedes variar la frecuencia de muestreo
}

Več informacij - Tečaj programiranja Arduino (brezplačna PDF)

Fuentes

Več informacij - vrt


36 komentarja, pustite svojega

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   ROGER FERNANDO ASTO BONIFACIO je dejal

    ZAKAJ IZHODIM izhodni status 1
    #include pričakuje "FILENAME" ali ESO ON LOAD

    1.    Isaac je dejal

      Pozdravljeni,
      Ta napaka je posledica težave s sintakso v kodi. Šel sem skozi to in imel napako. Zdaj bi moralo biti v redu.
      Lep pozdrav!

  2.   noe virov je dejal

    Pozdravljeni, dober dan, tudi jaz imam isti problem:
    projekt: 3:10: napaka: #include pričakuje "FILENAME" oz

    #include <SimpleDHT.h>

    ^

    projekt: 4:10: napaka: #include pričakuje "FILENAME" oz

    #vključi <SPI.h>

    ^

    izhodni status 1
    #include pričakuje "FILENAME" oz

  3.   kevin je dejal

    Pozdravljeni, oprostite, mi lahko pomagate pri napaki, ki se pojavi v kodi

  4.   Samanta je dejal

    Na enak način imam napako v kodi, ali mi lahko prosim pomagate pri tej težavi

    1.    Isaac je dejal

      Pozdravljeni,
      Prosim, pustite podatke o napaki, ki jo imate, da vam lahko pomagam. Če vsebine napake ne poznam, vam težko pomagam ali poiščem, kje je težava ...
      pozdrav

  5.   samantha vega ljubi je dejal

    Pozdravljeni, pojavi se ta napaka, kako jo lahko odpravim?

    napaka: SimpleDHT.h: Takšne datoteke ali imenika ni

    #include

    ^ ~~~~~~~~~~~~

    prevajanje zaključeno.

    izhodni status 1
    SimpleDHT.h: Takšne datoteke ali imenika ni

    1.    Isaac je dejal

      Pozdravljena Samantha,
      Ta napaka je v tem, ker se zdi, da Arduino IDE ne zazna knjižnice SimpleDHT.h. Ali je pravilno nameščen? Če ga imate, poskusite uporabiti novejšo različico Arduino IDE, če je starejša ...
      Več informacij si lahko ogledate tukaj:
      https://www.arduino.cc/en/Guide/Libraries
      In poiščite knjižnico od tukaj:
      https://github.com/adafruit/DHT-sensor-library
      Lep pozdrav!

  6.   Pepe je dejal

    Najprej hvala za prispevek, ki je zelo zanimiv in zelo veljaven, vendar sem prebral tole:

    "Priporočljivo je, da rastline zalivamo ponoči, ko je manj vroče, saj lahko to v močnih vročih dneh škodi več kot koristi ..."

    To sem že velikokrat slišal, vendar bi rad, da mi nekdo jasno razloži, kako jih boli…. Rastline gojim že več kot 20 let in ko je zelo vroče, ničesar ne cenijo bolj kot dobro zalivanje in možnost, da lahko s škropilnico zmočijo liste.

    To je mit, da rastline trpijo ... Ko ste vroči in žejni, ali počakate do noči, da pijete? ...

    hvala za prispevek !!!

    1.    Isaac je dejal

      Živjo Pepe,
      Hvala za vaš prispevek. Živim na podeželju in včasih, ko je vročina zelo močna, jih zalivanje rastlin v vročih urah lahko ubije. Sam sem ga preveril (tudi ni enako, odvisno od geografskega območja, kjer ste, v moji deželi je zelo vroče). To je lahko iz več razlogov:
      1-Ker kapljice vode na listih delujejo kot kozarec, jih s sončno svetlobo sežgejo kot povečevalno steklo.
      2-Rastline imajo ožilje, ki se zaprejo, da ne bi dehidrirale, ko je sončno. Če jih zalivate, se odprejo in lahko povzročijo dehidracijo.
      3-Če so v plastičnem loncu, bi bil učinek lahko še slabši.
      Lep pozdrav!

  7.   Andres Caro je dejal

    HOLA !!
    Izdelan projekt mi je bil zelo všeč, imam svoj vrt in ta projekt preizkušam kot osebno izkušnjo, ne da bi si priskrbel donosno ugodnost, želel sem vas le vprašati, ali mi boste pomagali s kodo, saj mi daje napako , Knjižnico DHT imam, vendar pri preverjanju I na koncu kode prikaže napako: {Serial.println ("Zalivanje ustavljeno");} in mi pove, da je v programu: zalutalo '\ 342'.
    O tej zadevi imam zelo malo znanja, raziskoval sem in je nisem mogel rešiti.
    Hvaležen bi bil, če mi pomagate. Hvala 😀

    1.    Isaac je dejal

      Pozdravljeni,
      Ali je koda pravilna? Se pravi, da nima natipkanih črk?
      Po drugi strani pa lahko več o tej napaki preverite tukaj:
      https://forum.arduino.cc/index.php?topic=386225.0
      pozdrav

  8.   Joseph Arredondo je dejal

    Pozdravljeni, dober dan, oprostite, ne vem, če obstaja način, da stopim v stik z vami, ker mi povzroča veliko napak s to kodo v arduinu

    1.    Isaac je dejal

      Pozdravljeni vsi,
      Kodo sem očistil in jo znova napisal, da vidim, ali je v kodi, ki je prikazana v spletu, iz kakršnega koli razloga prišlo do napak. Da jo lahko prenesete, sem novo kodo pustil v povezavi za prenos tik pred kodo, ki se pojavi v spletu. Če kliknete tam, ga lahko prenesete v besedilni obliki. Upam, da ni več težav.
      Lep pozdrav!

  9.   Chaki je dejal

    Kako lahko dodam wifi modul? in ali bi ga bilo mogoče nadzorovati z oddajo vloge?

  10.   Chaki je dejal

    Kako je tudi s hrano: c?

    1.    Luis Alberto Alvarado je dejal

      Živjo Chaqui! Poskušam narediti enako kot vi, ali mi lahko pomagate, če ste končali svojo kodo ????

  11.   Nerea je dejal

    Vprašanje, katera komponenta bi bila tista med ploščo Arduino in senzorjem DHT11?
    Najlepša hvala!!

    1.    Isaac je dejal

      Živjo Nerea,
      Mislite na diodo in upor? Upoštevajte, da je v razdelku pred diagramom seznam vseh komponent ...
      Lep pozdrav!

  12.   Jannet je dejal

    Pozdravljeni, imate video o tem, kako je bilo z vašim namakalnim sistemom.?

  13.   Alejandro Barros je dejal

    oprostite, deluje samo za arduino uno ali tudi za arduino mega

  14.   Emmanuel je dejal

    Pozdravljeni, dobro jutro, oprosti. Želel sem zastaviti vprašanje, zakaj, ko odprem monitor Arduino ide, dobim napačno branje senzorja dht11?
    Celoten program je bil dobro sestavljen in dobro naložen, podrobnosti so, ko odprem monitor in se prikaže ta legenda.
    Kaj je lahko?

  15.   DANIEL ALFREDO RIVAS MEDINA je dejal

    POZDRAVLJEN PRIJATELJ ODLIČNO DELO, VENDAR SE NAM NAPAKI

    #include
    KAJ BO? Cenil bi vašo pomoč

  16.   Isabell je dejal

    POzdravljeni, TO JE JAVNO, AMPAK NI POMEMBNO, RES ZELIM ZAHVALITI OSEBI ALI LJUDEM, KI SO SODELOVALI V RAZVOJU TEGA PROJEKTA, MORDA ZA MNOGO JE NESREČNO, AMPAK TI SI MI REŠIL ŽIVLJENJE ŠOLA, KI JIH NE ŽELIM PRIPADATI IN RESNICO, KI SE ŽALI NISAM NAUČILA, HVALA ZA STRAN, ŽELIM VAM NAJBOLJŠE.

  17.   Ayelen je dejal

    Kako lahko dodam wifi modul? in ali bi ga bilo mogoče nadzorovati z oddajo vloge?

  18.   Brian je dejal

    #include "DHT.h"
    DHT dht (2, DHT11);
    int valueLDR;
    int pinLDR = A5;
    int MOTOR = 8;
    // —————————————————————————————————————————————-
    void setup ()
    {
    Serial.begin (9600);
    vrednostLDR = 0;
    Serial.begin (9600);
    Serial.println ("PRESKUS NAMIGALNEGA SISTEMA");
    dht.begin ();
    pinMode (MOTOR, IZHOD);
    Serial.println ("Vrednost senzorja vlažnosti");
    }
    // —————————————————————————————————————————————-
    void loop ()
    {
    Serial.println («============================================== = ========================= »);
    int vlažnost = analogRead (A0);
    Serial.print ("Preberi:");
    Serial.println (vlažnost);
    če (vlažnost> = 0 in vlaga> = 1000) {
    Serial.println ("Senzor v suhi zemlji");
    } sicer če (vlažnost> 500 in vlažnost <= 1000) {
    Serial.println ("Senzor v mokri zemlji");
    } sicer če (vlažnost <= 500) {
    Serial.println ("Senzor v vodi");
    }
    valueLDR = analogRead (pinLDR);
    Serial.print ("LIGHT (");
    Serial.print (valueLDR);
    Serial.println (")");
    zakasnitev (2000);
    float h = dht.readHumidity ();
    float t = dht.readTemperature ();
    if (isnan (h) || isnan (t)) {
    Serial.println ("Ni uspelo prebrati senzorja DHT11!");
    vrnitve;
    }
    Serial.print ("Vlažnost:");
    Serial.print (h);
    Serial.print ("%");
    Serial.print ("Temperatura:");
    Serial.print (t);
    Serial.println ("* C");
    če (h <= 50 && LDRvrednost <70 && t = 1000) {
    digitalWrite (MOTOR, HIGH);
    Serial.println ("Must water");
    }
    drugače {
    digitalWrite (MOTOR, LOW);
    Serial.println ("NE SME zalivati");
    }
    zakasnitev (1000);
    }

    Uporabil sem samo
    -DTH temperature in vlažnosti na zatiču 2
    -LDR fotorezist na zatiču A5
    -motor na zatiču 8
    -senzor za vlago v tleh na zatiču A0
    upam, da je to moja koda in da deluje pri vas

    -senzor vlage za tla

  19.   Jose L. je dejal

    Dobro jutro, imam težave s kodo, dobim to in uporabljam najnovejšo programsko opremo:

    sketch_nov12c: 1: 10: usodna napaka: SimpleDHT.h: Takšne datoteke ali imenika ni

    #include

    ^ ~~~~~~~~~~~~

    prevajanje zaključeno.

    izhodni status 1

    SimpleDHT.h: Takšne datoteke ali imenika ni

    Prosim vas, da mi pomagate, kako to rešiti, prosim, ker sem v tem nov in ne vem, kako to deluje zelo dobro. Hvala vam.

  20.   John je dejal

    Pozdravljeni, bi lahko pustili boljšo sliko o tem, kako je vezje povezano? Ni dobro cenjeno, s kakšno napajalno napetostjo se napaja? Hvala

  21.   Brian je dejal

    #include "DHT.h"
    DHT dht (2, DHT11);
    int valueLDR;
    int pinLDR = A5;
    int MOTOR = 8;
    // —————————————————————————————————————————————-
    void setup ()
    {
    Serial.begin (9600);
    vrednostLDR = 0;
    Serial.begin (9600);
    Serial.println ("PRESKUS NAMIGALNEGA SISTEMA");
    dht.begin ();
    pinMode (MOTOR, IZHOD);
    Serial.println ("Vrednost senzorja vlažnosti");
    }
    // —————————————————————————————————————————————-
    void loop ()
    {
    Serial.println («============================================== = ========================= »);
    // —————————————————————————————–
    // ———– Vlaga, senzor zemlje —————————————————–
    int vlažnost = analogRead (A0);
    Serial.print ("Preberi:");
    Serial.println (vlažnost);
    če (vlažnost> = 0 in vlaga> = 1000) {
    Serial.println ("Senzor v suhi zemlji");
    } sicer če (vlažnost> 500 in vlažnost <= 1000) {
    Serial.println ("Senzor v mokri zemlji");
    } sicer če (vlažnost <= 500) {
    Serial.println ("Senzor v vodi");
    }
    // —————————————————————————————–
    // ————— Foto odpornost———————————————————-
    valueLDR = analogRead (pinLDR);
    Serial.print ("LIGHT (");
    Serial.print (valueLDR);
    Serial.println (")");
    zakasnitev (2000);
    // —————————————————————————————–
    // ————— Senzor DTH11 za temperaturo in vlago v zraku —————————–
    float h = dht.readHumidity ();
    float t = dht.readTemperature ();
    if (isnan (h) || isnan (t)) {
    Serial.println ("Ni uspelo prebrati senzorja DHT11!");
    vrnitve;
    }
    Serial.print ("Vlažnost:");
    Serial.print (h);
    Serial.print ("%");
    Serial.print ("Temperatura:");
    Serial.print (t);
    Serial.println ("* C");
    // —————————————————————————————–
    // ———— Stanje vode ali ne vode ———————————————-
    // [Zračna vlažnost] [Fotoresist] [Temperatura] (Zračna vlažnost)
    če (h <= 50 && LDRvrednost <70 && t = 1000) {
    digitalWrite (MOTOR, HIGH);
    Serial.println ("Must water");
    }
    drugače {
    digitalWrite (MOTOR, LOW);
    Serial.println ("NE SME zalivati");
    }
    zakasnitev (1000);
    }

    // takoj ko zatiči samo preverijo, ali je črpalka pwm zatič in
    // LDR fotorezist je analogen in tudi vlaga v tleh enaka zatiču
    // analogni in tisti iz dth11 senzorja temperature in vlažnosti zraka kakršen koli
    // digitalni zatiči lahko še vedno temeljijo na izvirni kodi te strani
    // za povezavo zatičev
    // deluje s 5v

  22.   Erick je dejal

    V tem delu kode se prikaže napaka »prazna zanka () {» mi lahko pomaga

  23.   Andrew P. je dejal

    Pozdravljeni, mi lahko poveste, katere knjižnice ali kako se imenujejo, da jih namestim, saj ko prilepim kodo, mi pove, da potrebujem knjižnico DTH

  24.   Andres Guzman je dejal

    Pozdravljeni, sistem se zdi zelo dober. Poskušal sem ga ponovno ustvariti, toda ob vključitvi kode in ustrezne knjižnice se prikaže naslednje.

    V datoteki iz C: \ Users \ User \ Documents \ Arduino \ TEST_1 \ TEST_1.ino: 5: 0:
    C: \ Program Files (x86) \ Arduino \ libraries \ DHT-sensor-library-master / DHT_U.h: 36:10: usodna napaka: Adafruit_Sensor.h: Takšne datoteke ali imenika ni
    #include
    ^ ~~~~~~~~~~~~~~~~~~
    prevajanje zaključeno.
    izhodni status 1
    Napaka pri prevajanju za kartico Arduino Uno.

    Nisem prepričan, ali rabim še kakšno knjigarno, če mi lahko kdo pomaga.

  25.   PEPE GONZALE je dejal

    Zelo dober projekt, toda po preverjanju kode, sestavljanju in nalaganju se na serijskem monitorju prikaže le "DHT11 branje ni uspelo", vendar ne presega te točke

  26.   Rouss je dejal

    Pozdravljeni, imam več težav. Prosim, če mi lahko pomagate in če ima kdo videoposnetek ali pa sem našel podroben video, ki ga lahko vidim

  27.   Sebastian je dejal

    Imam vprašanje, kam postaviti tok in kakšen tok se lahko uporablja.

  28.   Adrian je dejal

    Ali lahko dodate oris z višjo ločljivostjo? nekatere povezave niso jasno vidne