Sistema di irrigazione automatico con Arduino per le tue piante, frutteto o giardino

Annaffiatoio annaffiare le piante

L'estate è un periodo in cui molti tendono ad andare in vacanza all'aperto e le piante sono un problema, poiché non possono esserlo annaffia quei giorni in cui non sei a casa. Inoltre, i negozi di giardinaggio di solito vendono una sorta di gel che idrata e nutre la pianta per circa un mese. Ma con il caldo che è o se parti per più di un mese, allora avrai bisogno di un sistema un po 'migliore in modo che al tuo ritorno continuino ad essere vivi e vigorosi.

Affinché ciò sia possibile, la soluzione che esiste è acquistare un file impianto di irrigazione automatico che puoi programmare o se sei un maker e ti piace il fai da te, puoi farlo da solo con Arduino. I materiali di cui hai bisogno, a parte la scheda Arduino, sono facili da trovare e abbastanza economici, quindi non comportano una spesa eccessiva. Inoltre, per alcuni elementi come il serbatoio dell'acqua, ecc., Potresti utilizzare materiali riciclati ...

Se navighi un po 'sul web troverai vari progetti di questo tipo, ma forse il più interessante è giardino. In questo mi ispirerò per questo progetto, poiché ritengo che altri sistemi di irrigazione che utilizzano solo sensori di umidità e nient'altro non siano così completi.

Di cosa hai bisogno?

I materiali necessari per il tuo sistema di irrigazione automatico sono:

  • Nessun prodotto trovato., anche se ne varrebbero altri.
  • tagliere o PCB se vuoi saldarlo e renderlo permanente.
  • Sensore di temperatura e umidità Nessun prodotto trovato.
  • Cablaggio
  • Sensore YL-69 umidità a terra con un igrometro da attaccare al vaso o al terreno.
  • Minipompa Acqua sommergibile 3V e una portata approssimativa di 120 l / h.
  • Diodo 1N4007
  • Transistor bipolare PN2222
  • 3 resistenze: 1x 220 ohm, 1x 1k, 1x fotoresist LDR
  • Serbatoio d'acqua, che può essere un fusto o una bottiglia da 5 o più litri, ecc.
  • Tubo da collegare alla minipompa e portare all'impianto / i

Como idee alternative, Ti direi che potresti anche utilizzare un sonoff o un modulo WiFi per attivarlo su Internet da qualsiasi luogo ti trovi, oppure migliorarlo aggiungendo anche una valvola automatica al rubinetto per programmare il riempimento del serbatoio dell'acqua quando si svuota , eccetera.

Come impostare il sistema di irrigazione automatica

Schema dell'assemblea a Fritzing

L'assemblaggio è abbastanza semplice. Potresti utilizzare lo schema di cui sopra per effettuare tutti i collegamenti. Dovresti posizionare il tuo impianto in un punto vicino alla finestra o dove si trova la pianta che vuoi annaffiare e incollare le due punte del sensore di umidità nel terreno della pianta, vicino al fusto.

Il sistema di irrigazione automatico con Arduino annaffierà ogni volta che rileva un file serie di condizioni ambientali. Ad esempio, quando rileva poca luce o oscurità, la temperatura dell'aria è quella concreta che configureremo nello sketch IDE di Arduino e l'umidità sul terreno è bassa. In quel momento avrebbe attivato il motore per irrigare la pianta.

Si consiglia di annaffiare le piante di notte, quando fa meno caldo, poiché farlo durante giornate calde intense potrebbe nuocere più che giovare ...

Ricorda che dovresti introdurre la minipompa sott'acqua nella vasca che hai destinato all'irrigazione, e che dovrebbe avere una capacità sufficiente per contenere i giorni che non ci sei. Puoi fare dei test precedenti per sapere quanto dura e dovresti lasciare un po 'più di acqua nel caso evapori con il caldo intenso ...

Inutile dire che il tubo deve essere fissato alla pianta in modo che non si muova con il vento o l'acqua possa fuoriuscire ed essere sprecata. E penso che non sarebbe necessario ricordare che devi mantenere una corrente di alimentazione alla scheda Arduino perché funzioni ...

programmazione

Ora è quando dovresti scrivere il file codice necessario nell'IDE di Arduino per poter programmare il microcontrollore che gestisce l'hardware che hai utilizzato. Questo è il momento di adattare i valori di temperatura, umidità e luce appropriati all'acqua nella tua zona, poiché possono variare a seconda di dove ti trovi. Ma l'esempio che puoi usare come base è (ho lasciato commenti in cui potresti modificare i valori, il resto puoi lasciarlo così):

Scarica il codice da codice-irrigazione-autoirrigazione automatica per il tuo giardino

#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
}

Maggiori informazioni - Corso di programmazione Arduino (PDF gratuito)

Fonti

Maggiori informazioni - giardino


36 commenti, lascia il tuo

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   ROGER FERNANDO ASTO BONIFACIO suddetto

    PERCHÉ USCIRE dallo stato di uscita 1
    #include prevede "FILENAME" o ESO AL CARICO

    1.    Isaac suddetto

      Ciao,
      Questo errore è dovuto a qualche problema di sintassi nel codice. Ci sono passato e ho riscontrato un errore. Ora dovrebbe andare bene.
      Un saluto!

  2.   noe fonti suddetto

    Ciao, buon pomeriggio, anche io ho lo stesso problema:
    progetto: 3:10: errore: #include prevede "FILENAME" o

    #include <DHT semplice.h>

    ^

    progetto: 4:10: errore: #include prevede "FILENAME" o

    #includi <SPI.h>

    ^

    stato di uscita 1
    #include prevede "FILENAME" o

  3.   Kevin suddetto

    Ciao, scusami, puoi aiutarmi con un errore che si verifica nel codice

  4.   samanta suddetto

    Allo stesso modo mi viene presentato un errore nel codice, potresti aiutarmi con questo problema per favore

    1.    Isaac suddetto

      Ciao,
      Per favore lascia le informazioni sull'errore che hai in modo che io possa aiutarti. Se non conosco il contenuto dell'errore, è difficile per me aiutarti o individuare dove si trova il problema ...
      saluti

  5.   samantha vega ama suddetto

    Ciao, appare questo errore, come posso risolverlo?

    errore: SimpleDHT.h: nessun file o directory di questo tipo

    #includere

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

    compilazione terminata.

    stato di uscita 1
    SimpleDHT.h: nessun file o directory di questo tipo

    1.    Isaac suddetto

      Ciao Samantha,
      Questo errore è dovuto al fatto che l'IDE di Arduino non sembra rilevare la libreria SimpleDHT.h. Lo hai installato correttamente? Nel caso in cui ce l'hai, prova a utilizzare una versione più recente di Arduino IDE se è più vecchia ...
      Puoi visualizzare ulteriori informazioni qui:
      https://www.arduino.cc/en/Guide/Libraries
      E scarica la libreria da qui:
      https://github.com/adafruit/DHT-sensor-library
      Un saluto!

  6.   Pepe suddetto

    Innanzitutto grazie per il post che è molto interessante e molto valido, ma ho letto questo:

    "Si consiglia di annaffiare le piante di notte, quando fa meno caldo, poiché farlo durante giornate calde intense potrebbe nuocere più che giovare ..."

    L'ho sentito molte volte, ma vorrei che qualcuno mi spiegasse chiaramente come fa loro male…. Allevo piante da più di 20 anni e quando fa molto caldo non c'è niente che apprezzino più di una buona annaffiatura e poter stare con un irrigatore a bagnare le foglie.

    Questo è un mito che tutto ciò che fa è far soffrire le piante ... Quando hai caldo e hai sete, aspetti fino a notte per bere? ... pensaci

    Grazie per il post !!!

    1.    Isaac suddetto

      Ciao Pepe,
      Grazie per il tuo contributo. Vivo in campagna ea volte, quando il caldo è molto intenso, annaffiare le piante nelle ore calde può ucciderle. L'ho controllato io stesso (inoltre non è lo stesso a seconda della zona geografica in cui ti trovi, nella mia terra fa molto caldo). Può essere per diversi motivi:
      1-Perché le gocce d'acqua sulle foglie agiscono come un vetro, bruciandole con la luce solare come farebbe una lente d'ingrandimento.
      2-Le piante hanno stomi che si chiudono per non disidratarsi quando c'è il sole. Se li innaffi, si aprono e possono disidratarli.
      3-Se sono in un vaso di plastica, l'effetto potrebbe essere anche peggiore.
      Un saluto!

  7.   Andres Caro suddetto

    Ciao !!
    Mi è piaciuto molto il progetto elaborato, ho il mio giardino e sto testando questo progetto come esperienza personale, senza ottenere un vantaggio lucrativo, volevo solo chiederti se mi aiutavi con il codice, dato che mi dà un errore , Ho la libreria DHT ma durante la verifica mi viene visualizzato un errore alla fine del codice: {Serial.println ("Watering STOP");} e mi dice che è: stray '\ 342' nel programma.
    Ho pochissima conoscenza della questione e ho indagato e non sono riuscito a risolverla.
    Apprezzerei se mi aiutassi. Grazie 😀

    1.    Isaac suddetto

      Ciao,
      Il codice è corretto? Cioè, non ha errori di battitura?
      D'altra parte, puoi controllare di più su quell'errore qui:
      https://forum.arduino.cc/index.php?topic=386225.0
      saluti

  8.   José Arredondo suddetto

    Ciao Buon pomeriggio, scusa, non so se c'è un modo per contattarti, è che mi sta dando molti errori con questo codice nell'arduino

    1.    Isaac suddetto

      Ciao a tutti,
      Ho ripulito il codice e l'ho riscritto, per vedere se c'era un errore per qualsiasi motivo nel codice visualizzato sul web. Affinché possa essere scaricato, ho lasciato il nuovo codice in un link per il download appena prima del codice che appare sul web. Se fai clic lì puoi scaricarlo in formato testo. Spero non ci siano più problemi.
      Un saluto!

  9.   Chaki suddetto

    Come posso aggiungere il modulo wifi? e sarebbe possibile controllarlo facendo un'applicazione?

  10.   Chaki suddetto

    Com'è anche il cibo: c?

    1.    Luis Alberto Alvarado suddetto

      Ciao Chaqui! Sto cercando di fare come te, potresti aiutarmi se hai finito il tuo codice ????

  11.   Nerea suddetto

    Una domanda quale componente sarebbe quello tra la scheda Arduino e il sensore DHT11?
    Grazie!

    1.    Isaac suddetto

      Ciao Nerea,
      Intendi diodo e resistenza? Si noti che nella sezione prima del diagramma c'è un elenco di tutti i componenti ...
      Un saluto!

  12.   Jannet suddetto

    Ciao, hai un video di come era il tuo sistema di irrigazione.?

  13.   Alejandro Barros suddetto

    scusami funziona solo per arduino uno o anche per arduino mega

  14.   Emmanuel suddetto

    Ciao buongiorno, scusa volevo fare una domanda perché quando apro il monitor ide di Arduino, ottengo una lettura del sensore dht11 non riuscita?
    L'intero programma è stato compilato bene e caricato bene, il dettaglio è quando apro il monitor e appare quella legenda.
    Cosa può essere?

  15.   DANIELE ALFREDO RIVAS MEDINA suddetto

    CIAO AMICO GRANDE LAVORO MA MI RICEVO ERRORE IN QUESTA PARTE Nessun file o directory

    #includere
    COSA SARÀ? Apprezzerei il tuo aiuto

  16.   Isabell suddetto

    CIAO, QUESTO È PUBBLICO, MA NON IMPORTA, VOGLIO VERAMENTE RINGRAZIARE LA PERSONA O LE PERSONE CHE HANNO PARTECIPATO ALLO SVILUPPO DI QUESTO PROGETTO, FORSE PER MOLTI È SCIOCCO, MA MI HAI SALVATO LA VITA, QUINDI TI RINGRAZIO MOLTO SCUOLA A CUI NON VOGLIO APPARTENERE E LA VERITÀ NON MI DISPIACE L'HO IMPARATA, GRAZIE PER LA TUA PAGINA, TI AUGURO IL MEGLIO.

  17.   Ayelen suddetto

    Come posso aggiungere il modulo wifi? e sarebbe possibile controllarlo facendo un'applicazione?

  18.   Brian suddetto

    #include "DHT.h"
    DHT dht (2, DHT11);
    int valueLDR;
    intpinLDR = A5;
    int MOTORE = 8;
    // —————————————————————————————————————————————-
    void setup ()
    {
    Serial.begin (9600);
    valueLDR = 0;
    Serial.begin (9600);
    Serial.println ("TEST SISTEMA IRRIGAZIONE");
    dht.begin ();
    pinMode (MOTOR, OUTPUT);
    Serial.println ("Valore del sensore di umidità");
    }
    // —————————————————————————————————————————————-
    void loop ()
    {
    Serial.println («============================================ = ========================= »);
    int umidità = analogRead (A0);
    Serial.print ("Leggi:");
    Serial.println (umidità);
    if (umidità> = 0 & umidità> = 1000) {
    Serial.println ("Sensore nel suolo asciutto");
    } altrimenti se (umidità> 500 e umidità <= 1000) {
    Serial.println ("Sensore in terreno umido");
    } altrimenti se (umidità <= 500) {
    Serial.println ("Sensore nell'acqua");
    }
    valueLDR = analogRead (pinLDR);
    Serial.print ("LIGHT (");
    Serial.print (valueLDR);
    Serial.println (")");
    ritardo (2000);
    float h = dht.readHumidity ();
    float t = dht.readTemperature ();
    if (isnan (h) || isnan (t)) {
    Serial.println ("Impossibile leggere il sensore DHT11!");
    ritorno;
    }
    Serial.print ("Umidità:");
    Serial.print (h);
    Serial.print ("%");
    Serial.print ("Temperatura:");
    Serial.print (t);
    Serial.println ("* C");
    if (h <= 50 && LDRvalue <70 && t = 1000) {
    digitalWrite (MOTOR, HIGH);
    Serial.println ("Must water");
    }
    altro {
    digitalWrite (MOTOR, LOW);
    Serial.println ("non dovrebbe annaffiare");
    }
    ritardo (1000);
    }

    Ho usato solo il file
    -DTH di temperatura e umidità sul pin 2
    -il fotoresist LDR sul pin A5
    -motore sul pin 8
    -sensore di umidità del suolo sul pin A0
    questo è il mio codice spero e funzioni per te

    -sensore di umidità per il suolo

  19.   Jose L. suddetto

    Buongiorno, ho problemi con il codice, ottengo questo e sto usando il software più recente:

    sketch_nov12c: 1:10: errore irreversibile: SimpleDHT.h: nessun file o directory di questo tipo

    #includere

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

    compilazione terminata.

    stato di uscita 1

    SimpleDHT.h: nessun file o directory di questo tipo

    Vorrei che mi aiutaste a risolvere questo problema, dato che sono nuovo a questo non so come funzioni molto bene. Grazie.

  20.   Giovanni suddetto

    Ciao, potresti lasciare un'immagine migliore di come è collegato il circuito? Non si apprezza bene, con quale tensione di alimentazione viene alimentato? Grazie

  21.   Brian suddetto

    #include "DHT.h"
    DHT dht (2, DHT11);
    int valueLDR;
    intpinLDR = A5;
    int MOTORE = 8;
    // —————————————————————————————————————————————-
    void setup ()
    {
    Serial.begin (9600);
    valueLDR = 0;
    Serial.begin (9600);
    Serial.println ("TEST SISTEMA IRRIGAZIONE");
    dht.begin ();
    pinMode (MOTOR, OUTPUT);
    Serial.println ("Valore del sensore di umidità");
    }
    // —————————————————————————————————————————————-
    void loop ()
    {
    Serial.println («============================================ = ========================= »);
    // —————————————————————————————–
    // ———– Sensore umidità, suolo —————————————————–
    int umidità = analogRead (A0);
    Serial.print ("Leggi:");
    Serial.println (umidità);
    if (umidità> = 0 & umidità> = 1000) {
    Serial.println ("Sensore nel suolo asciutto");
    } altrimenti se (umidità> 500 e umidità <= 1000) {
    Serial.println ("Sensore in terreno umido");
    } altrimenti se (umidità <= 500) {
    Serial.println ("Sensore nell'acqua");
    }
    // —————————————————————————————–
    // ————— Resistenza foto ———————————————————-
    valueLDR = analogRead (pinLDR);
    Serial.print ("LIGHT (");
    Serial.print (valueLDR);
    Serial.println (")");
    ritardo (2000);
    // —————————————————————————————–
    // ————— Sensore DTH11 di temperatura e umidità nell'aria —————————–
    float h = dht.readHumidity ();
    float t = dht.readTemperature ();
    if (isnan (h) || isnan (t)) {
    Serial.println ("Impossibile leggere il sensore DHT11!");
    ritorno;
    }
    Serial.print ("Umidità:");
    Serial.print (h);
    Serial.print ("%");
    Serial.print ("Temperatura:");
    Serial.print (t);
    Serial.println ("* C");
    // —————————————————————————————–
    // ———— Condizione per irrigare o non per irrigare ———————————————-
    // (AirHumidity) (Photoresist) (Temperature) (EarthHumidity)
    if (h <= 50 && LDRvalue <70 && t = 1000) {
    digitalWrite (MOTOR, HIGH);
    Serial.println ("Must water");
    }
    altro {
    digitalWrite (MOTOR, LOW);
    Serial.println ("non dovrebbe annaffiare");
    }
    ritardo (1000);
    }

    // non appena i pin controllano solo che la pompa sia un pin pwm e
    // quello del photoresist LDR è analogico e anche quello dell'umidità del suolo è uguale a uno spillo
    // analogici e quelli del dth11 del sensore di temperatura e umidità dell'aria qualunque
    // i pin digitali possono ancora essere basati sul codice originale di questa pagina
    // per collegare i pin
    // funziona con 5v

  22.   Erick suddetto

    Ottengo un errore in questa parte del codice »empty loop () {» potrebbe aiutarmi

  23.   Andrea P. suddetto

    Ciao, potresti dirmi quali librerie o come si chiamano per installarle da quando incollo il codice mi dice che ho bisogno della libreria DTH

  24.   Andres Guzman suddetto

    Ciao, il sistema sembra molto buono. Ho provato a ricrearlo ma al momento di includere il codice e la libreria corrispondente appare quanto segue.

    Nel file incluso da 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: errore fatale: Adafruit_Sensor.h: nessun file o directory di questo tipo
    #includere
    ^ ~~~~~~~~~~~~~~~~~~
    compilazione terminata.
    stato di uscita 1
    Errore di compilazione per la scheda Arduino Uno.

    Non sono sicuro di aver bisogno di un'altra libreria se qualcuno mi può aiutare per favore.

  25.   PEPE GONZALES suddetto

    Ottimo progetto, tuttavia dopo aver verificato il codice, compilato e caricato, l'unica cosa che appare sul monitor seriale è "Lettura DHT11 fallita" non va oltre quel punto

  26.   Rouss suddetto

    Ciao, ho diversi problemi, potresti aiutarmi e se qualcuno ha un video o ho trovato un video dettagliato che posso vedere

  27.   Sebastian suddetto

    Ho una domanda, dove mettere la corrente e che tipo di corrente può essere utilizzata.

  28.   Adrian suddetto

    Puoi aggiungere uno schema a risoluzione più alta? alcune connessioni non sono chiaramente visibili