Sistema de reg automàtic amb Arduino per a les plantes, hort o jardí

Regadera regant plantes

L'estiu és una època en la qual molts solen anar-se'n de vacances fora i les plantes suposen un problema, ja que no es poden regar aquests dies en què no et trobes a casa. A més, a les botigues de jardineria solen vendre una mena de gel que permet hidratar i nodrir la planta durant un mes aproximadament. Però amb la calor que fa o si et vas per més d'un mes, llavors necessitaràs un sistema força millor perquè quan tornis segueixin vives i vigoroses.

Perquè això sigui possible, la solució que existeix és comprar un sistema de reg automàtic que puguis programar o si ets un maker i t'agrada el DIY, pots fer-ho tu mateix amb Arduino. Els materials que necessites, a part de la placa d'Arduino, són fàcils de trobar i bastant barats, així que no suposen una despesa massa gran. A més, per a alguns elements com el tanc d'aigua, etc., podries fer servir materials reciclats ...

Si navegues una mica per la xarxa trobaràs diversos projectes d'aquest tipus, Però potser el més interessant sigui Jarduí. En aquest em inspiraré per a aquest projecte, ja que considero que altres sistemes de reg que només fan servir sensors d'humitat i res més no són tan complets.

Què necessites?

Els materials necessaris per al teu sistema de reg automàtic són:

  • No s'ha trobat cap producte., Tot i que valdrien altres.
  • protoboard o PCB si vols soldar i fer-ho permanent.
  • Sensor de temperatura i humitat No s'ha trobat cap producte.
  • cables
  • sensor YL-69 d'humitat en terra amb higlómetro per clavar en el teu / s test / so terra.
  • minibomba d'aigua submergible de 3V i cabal aproximat de 120 l / h.
  • díode 1N4007
  • transistor bipolar PN2222
  • 3 Resistències: 1x 220 ohms, 1x 1k, 1x fotoresistència LDR
  • Tanc d'aigua, que pot ser un bidó o una ampolla de 5 o més litres, etc.
  • tub per connectar a la minibomba i portar fins a la / planta / s

Com que idees alternatives, Et diria que podries també utilitzar un sonoff o un mòdul WiFi per activar per Internet des d'on et trobis, o millorar-agregant també a l'aixeta una vàlvula automàtica per programar l'ompliment de l'tanc d'aigua quan es vagi buidant, etc.

Com muntar el sistema de reg automàtic

Esquema de el muntatge en Fritzing

El muntatge és bastant senzill. pots utilitzar l'esquema anterior per fer totes les connexions. Hauràs posicionar el teu sistema en un lloc proper a la finestra o on es trobi la planta que vols regar i clavar les dues puntes de l'sensor d'humitat a la terra de la planta, a prop de la tija.

El sistema de reg automàtic amb Arduino regarà sempre que detecti una sèrie de condicions ambientals. Per exemple, quan detecta poca llum o foscor, la temperatura de l'aire és una concreta que configurarem al sketch d'Arduino IDE, i la humead a terra és baixa. En aquest moment s'activaria el motor per regar la planta.

És recomanable regar les plantes de nit, en el moment de menys calor, ja que fer-ho durant els dies intensos de calor podria perjudicar més que beneficiar ...

Recorda que hauràs introduir la mini bomba sota l'aigua en el tanc que hagis destinat per al reg, i que hauria de tenir una capacitat suficient com per aguantar els dies que no hi siguis. Pots fer proves prèvies per saber quant dura i has de deixar una mica més d'aigua per si s'evapora amb la intensa calor ...

No cal dir que el tub l'has fixar a la planta perquè no es mogui amb el vent o pugui caure fora l'aigua i sigui desaprofitada. I crec que tampoc caldria recordar que has de mantenir un subministrament de corrent a la placa Arduino perquè funcioni ...

programació

Ara és quan has d'escriure el codi necessari en Arduino IDE per poder programar el microcontrolador que gestioni el maquinari que has utilitzat. Aquí és el moment d'adaptar els valors de temperatura, humitat i llum adequats per regar a la teva zona, ja que pot variar segons on et trobis. Però l'exemple que pots fer servir com a base és (he deixat comentaris on podries modificar els valors, la resta pots deixar-ho així):

Descarregar el codi de codi-reg-autoreg-acte per al teu jardí

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

Més informació - Curs de programació Arduino (PDF gratuït)

Fonts

Més informació - Jarduí


36 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   ROGER FERNANDO Asto BONIFACIO va dir

    PER QUE EM SURT exit status 1
    #include expects «FILENAME» or ESO A EL CARREGAR

    1.    Isaac va dir

      Hola,
      Aquest error es dóna per algun problema de sintaxi de el codi. Ho he repassat i tenia un error. Ara ja hauria d'estar bé.
      Una salutació!

  2.   noe fonts va dir

    hola bona tarda també tinc el mateix problema:
    projecte: 3: 10: error: #include expects «FILENAME» or

    #include &lt;SimpleDHT.h&gt;

    ^

    projecte: 4: 10: error: #include expects «FILENAME» or

    #inclou <SPI.h>

    ^

    estat de sortida 1
    #include espera "FILENAME" o

  3.   Kevin va dir

    Hola, disculpi em pot ajudar amb un error que es presenta en el codi

  4.   samantha va dir

    De la mateixa manera es em presenta un error en el codi podria ajudar-me amb aquest problema siusplau

    1.    Isaac va dir

      Hola,
      Si us plau, deixa informació sobre l'error que has perquè pugui ajudar. Si no sé el contingut de l'error, és complicat que et pugui ajudar o localitzar on és el problema ...
      una salutació

  5.   Samantha vega Amors va dir

    hola em aparese aquest error com puc solucionar-ho

    error: SimpleDHT.h: no hi ha cap fitxer o directori

    #include

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

    la compilació ha finalitzat.

    estat de sortida 1
    SimpleDHT.h: no hi ha cap fitxer o directori

    1.    Isaac va dir

      Hola Samantha,
      Aquest error és perquè Arduino IDE no sembla detectar la biblioteca SimpleDHT.h. ¿La tens ben instal·lat? En cas que la tinguis, intenta usar una versió més actual d'Arduino IDE si és més antiga ...
      Pots veure més informació aquí:
      https://www.arduino.cc/en/Guide/Libraries
      I obtenir la biblioteca d'aquí:
      https://github.com/adafruit/DHT-sensor-library
      Una salutació!

  6.   Pepe va dir

    Primer gràcies pel post que és molt interessant i molt valgut, però he llegit això:

    «És recomanable regar les plantes de nit, en el moment de menys calor, ja que fer-ho durant els dies intensos de calor podria perjudicar més que beneficiar ...»

    He escoltat això moltes vegades, però m'agradaria que algú m'expliqués clarament en què les perjudica .... Porto criant plantes més de 20 anys i quan fa molta calor no hi ha res agraeixin mes que un bon reg i si pot ser amb aspersor mullant les fulles.

    Això és un mite que l'únic que fa és fer patir a les plantes ... Quan tu tens calor i set, ¿esperes a la nit per beure? ... pensa-ho

    gràcies pel post !!!

    1.    Isaac va dir

      Hola Pep,
      Gràcies per la teva aportació. Jo visc al camp i en ocasions, quan la calor és molt intens, regar les plantes en hores de calor pot acabar amb elles. Ho he comprovat jo mateix (a més, no és el mateix depenent de la zona geogràfica on et trobis, a la meva terra fa moltíssima calor). Pot ser per diverses causes:
      1-Perquè les gotes d'aigua sobre les fulles actuen com un vidre, cremant amb la llum de el sol com ho faria una lupa.
      2-Les plantes tenen estomes que es tanquen per no deshidratar-se quan fa molt de sol. Si les regues s'obren i pot fer que es deshidratin.
      3-Si estan en un test de plàstic, l'efecte podria ser encara pitjor.
      Una salutació!

  7.   Andres car va dir

    HOLA !!
    Em va agradar molt el projecte elaborat, tinc la meva pròpia horta i estic provant aquest projecte com a experiència personal, sense obtenir un benefici lucratiu, només volia preguntar-te si em ajudaries en el codi, ja que em dóna error, tinc la llibreria de l'DHT però alverificarlo em llança un error a la fi de el codi: {Serial.println ( "Reg detingut");} i em diu que és: stray '\ 342' in program.
    tinc molt poc conosimiento de la matèria i he investigat i no he pogut solucionar-ho.
    agrairia si em ajudaras. gràcies 😀

    1.    Isaac va dir

      Hola,
      El codi està correcte? És a dir, no té errors d'escriptura?
      D'altra banda, pots consultar més sobre aquest error aquí:
      https://forum.arduino.cc/index.php?topic=386225.0
      una salutació

  8.   José Arredondo va dir

    Hola Molt bona tarda, disculpa no sé si hi hagi manera de contactar és que em aquesta donant molts errors amb aquest codi al arduino

    1.    Isaac va dir

      Hola a tots,
      He netejat el codi i l'he tornat a escriure, a veure si hi havia algun error per algun motiu en el codi que es mostra a la web. Perquè es pugui descarregar, el nou codi ho he deixat en un enllaç de descàrrega just abans de el codi que apareix a la web. Si punxeu allà el podeu descarregar en format text. Espero que ja no de problemes.
      Una salutació!

  9.   chaki va dir

    De quina manera puc afegir el mòdul wifi? i seria possible controlar-ho fent una aplicació?

  10.   chaki va dir

    Com és l'alimentació també: c?

    1.    Luis Alberto Alvarado va dir

      Hola Chaqui! estic intentant fer el mateix que tu, em podries ajudar si és qu ja vas acabar el teu codi ????

  11.   el meu va dir

    Una pregunta que component seria el que aquesta entre la placa Arduino i el sensor DHT11?
    Moltes Gràcies !!

    1.    Isaac va dir

      Hola Nerea,
      Vols dir el díode i la resistència? Fixa't que en l'apartat anterior a l'esquema ve una llista de tots els components ...
      Una salutació!

  12.   Janet va dir

    Hola té vídeo de com va quedar el seu sistema de reg.?

  13.   alejandro Fangs va dir

    disculpi només funciona per arduino uno o també per arduino mega

  14.   Emmanuel va dir

    Hola bon dia, disculpa volia fer una pregunta de perquè a l'hora d'obrir el monitor d'Arduino ide, m'apareix Lectura de l'sensor dht11 fallida ??
    Tot el programa va compilar bé i càrrec bé, el detall és quan obro el monitor i li apareix aquesta llegenda.
    Que és el que pot ser?

  15.   DANIEL ALFREDO RIVES MEDINA va dir

    HOLA AMIC GRAN TREBALL PERÒ EM DÓNA ERROR EN AQUESTA PART No such file or directory

    #include
    ¿QUE SERA? Agrairia TEVA AJUDA

  16.   Isabell va dir

    HOLA, AIXÒ ÉS PÚBLIC, PERÒ DA IGUAL, REALMENT VULL AGRAIR A LA PERSONA O PERSONES QUE VAN PARTICIPAR EN EL DESENVOLUPAMENT D'AQUEST PROJECTE, POTSER PER MOLTS SIGUI una tonteria, però m'heu SALVAT LA VIDA, AIXÍ QUE US AGRAEIXO MOLT, ESTIC EN UN COL.LEGI A EL QUAL NO VULL PERTÀNYER I LA VERITAT NO SENTO HAVER APRÈS, Gràcies per la vostra PÀGINA, US DESITJO EL MILLOR.

  17.   Ayelen va dir

    De quina manera puc afegir el mòdul wifi? i seria possible controlar-ho fent una aplicació?

  18.   Brian va dir

    #inclou "DHT.h"
    DHT DHT (2, DHT11);
    int ldrvalue;
    int pinLDR = A5;
    int MOTOR = 8;
    // -----------------------------------------------
    configuració nul·la ()
    {
    Serial.begin (9600);
    valueldr = 0;
    Serial.begin (9600);
    Serial.println ( «PROVA DEL SISTEMA DE REG»);
    dht.begin ();
    pinMode (MOTOR, OUTPUT);
    Serial.println ( «Valor el sensor d'humitat»);
    }
    // -----------------------------------------------
    bucle buit ()
    {
    Serial.println ( «============================================= ========================== »);
    int humidity = analogRead (A0);
    Serial.print ( «Lectura:»);
    Serial.println (humidity);
    if (humidity> = 0 & humidity> = 1000) {
    Serial.println ( «Sensor en sòl sec»);
    } Else if (humidity> 500 & humidity <= 1000) {
    Serial.println ( "Sensor en sòl humit");
    } Else if (humidity <= 500) {
    Serial.println ( "Sensor en aigua");
    }
    valorLDR = analogRead (pinLDR);
    Serial.print ( "LLUM (");
    Serial.print (valorLDR);
    Serial.println ( ")");
    delay (2000);
    float h = dht.readHumidity ();
    float t = dht.readTemperature ();
    if (isnan (h) || isnan (t)) {
    Serial.println ( "Falla a l'llegir el sensor DHT11!");
    tornar;
    }
    Serial.print ( "Humitat:");
    Serial.print (h);
    Serial.print ( "%");
    Serial.print ( "Temperatura:");
    Serial.print (t);
    Serial.println ( "* C");
    if (h <= 50 && valorLDR <70 && t = 1000) {
    digitalWrite (MOTOR, HIGH);
    Serial.println ( «Ha de regar»);
    }
    else {
    digitalWrite (MOTOR, LOW);
    Serial.println ( «NO de regar»);
    }
    delay (1000);
    }

    jo només utilitzeu el
    -DTH de temperatura i humitat al pin 2
    -el LDR fotorresistencia al pin A5
    -motor al pin 8
    -Sensor per humitat a la terra al pin A0
    aquest és el meu codi espero i els funcioni

    -Sensor d'humitat per a la terra

  19.   Josep L. va dir

    Bon dia, estic presentant problemes amb el codi em surt això i estic fent servir el programari més nou:

    sketch_nov12c: 1: 10: fatal error: SimpleDHT.h: No such file or directory

    #include

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

    la compilació ha finalitzat.

    estat de sortida 1

    SimpleDHT.h: no hi ha cap fitxer o directori

    M'agradaria que m'ajudés a com resoldre això si us plau, com que sóc nou en això no sé com funciona molt bé. gràcies.

  20.   Joan va dir

    Hola, podries deixar una millor imatge de com es connecta el circuit? No s'arriba apreciar bé, ¿Amb que voltatge d'alimentació s'alimenta? gràcies

  21.   Brian va dir

    #inclou "DHT.h"
    DHT DHT (2, DHT11);
    int ldrvalue;
    int pinLDR = A5;
    int MOTOR = 8;
    // -----------------------------------------------
    configuració nul·la ()
    {
    Serial.begin (9600);
    valueldr = 0;
    Serial.begin (9600);
    Serial.println ( «PROVA DEL SISTEMA DE REG»);
    dht.begin ();
    pinMode (MOTOR, OUTPUT);
    Serial.println ( «Valor el sensor d'humitat»);
    }
    // -----------------------------------------------
    bucle buit ()
    {
    Serial.println ( «============================================= ========================== »);
    // ------------------------------
    // ---- Sensor d'humitat, terra ------------------
    int humidity = analogRead (A0);
    Serial.print ( «Lectura:»);
    Serial.println (humidity);
    if (humidity> = 0 & humidity> = 1000) {
    Serial.println ( «Sensor en sòl sec»);
    } Else if (humidity> 500 & humidity <= 1000) {
    Serial.println ( "Sensor en sòl humit");
    } Else if (humidity <= 500) {
    Serial.println ( "Sensor en aigua");
    }
    // ------------------------------
    // ----- Foto resistència --------------------
    valorLDR = analogRead (pinLDR);
    Serial.print ( "LLUM (");
    Serial.print (valorLDR);
    Serial.println ( ")");
    delay (2000);
    // ------------------------------
    // ----- Sensor DTH11 temperatura i humitat en l'aire ----------
    float h = dht.readHumidity ();
    float t = dht.readTemperature ();
    if (isnan (h) || isnan (t)) {
    Serial.println ( "Falla a l'llegir el sensor DHT11!");
    tornar;
    }
    Serial.print ( "Humitat:");
    Serial.print (h);
    Serial.print ( "%");
    Serial.print ( "Temperatura:");
    Serial.print (t);
    Serial.println ( "* C");
    // ------------------------------
    // ---- Condició per regar o no regar ----------------
    // (HumedadAire) (Fotorresistencia) (Temperatura) (HumedadTierra)
    if (h <= 50 && valorLDR <70 && t = 1000) {
    digitalWrite (MOTOR, HIGH);
    Serial.println ( «Ha de regar»);
    }
    else {
    digitalWrite (MOTOR, LOW);
    Serial.println ( «NO de regar»);
    }
    delay (1000);
    }

    // quant els pins només chequen que el de la bomba sigui un pin pwm i
    // el de la fotorresistencia LDR sigui analògic i també el d'humitat de terra igual un pin
    // analògic i als de l'dth11 de l'sensor de temperatura i humitat d'aire que sigui
    // pins digitals igual poden basar-se en el codi original d'aquesta pàgina
    // per connectar els pins
    // funciona amb 5v

  22.   Erick va dir

    Em surt un error en aquesta part de el codi »bucle buit () {» podria ajudar-me

  23.   Andreu P. va dir

    hola, em podries dir que llibreries o com es flames per instal·lar-les ja que a l'enganxar el codi em marca que que necessito la llibreria de l'DTH

  24.   Andrés Guzmán va dir

    Hola em sembla molt bo el sistema. Proveu recrear però a l'hora d'incloure el codi i la llibreria corresponent m'apareix el següent.

    In file inclòs from C: \ Users \ User \ Documents \ Arduino \ PRUEBA_1 \ PRUEBA_1.ino: 5: 0:
    C: \ Program Files (x86) \ Arduino \ libraries \ DHT-sensor-library-master / DHT_U.h: 36: 10: fatal error: Adafruit_Sensor.h: No such file or directory
    #include
    ^ ~~~~~~~~~~~~~~~~~~
    la compilació ha finalitzat.
    estat de sortida 1
    Error compilant per a la targeta Arduino Uno.

    No estic segur si cal alguna altra llibreria si algú em pot ajudar si us plau.

  25.   PEPE GONZALS va dir

    Molt bon projecte no obstant això després de verificar el codi compilar i pujar-lo l'únic que em apareix en el monitor sèrie és «lectura de DHT11 fallida» no passa d'aquest punt

  26.   Roous va dir

    Hola XNUMX:XNUMX tinc diversos problemes poguessin x favor ajudar-me i si algú té un vídeo o va trobar un vídeo detallat q pugui poder veure

  27.   Sebastià va dir

    Tinc un dubte, on es posa el corrent ia quin tipus de corrent es pot fer servir.

  28.   Adrian va dir

    Pot afegir un esquema de més resolució? algunes connexions no són clarament visibles