Sistema de riego Arduino paso a paso

Un sistema de riego Arduino tiene muchas ventajas, es económico, flexible, te permite un control absoluto sobre como quieres regar tus plantas, pudiendo adaptarlo a las necesidades de cada una.
En este artículo te voy a contar como montarlo de dos formas, con agua del grifo y una electrovalvula o con deposito y una bomba, ambos usaran el riego por goteo.
Existen otras muchas posibilidades formas, para montar un riego automatizado Arduino, tanto para el método con el que llevar el agua a las plantas como para regar, por ejemplo podríamos cambiar el riego por goteo por cualquier otro sistema de riego

Índice

Sistema de riego Arduino usando agua corriente y electroválvula

Que harémos, muy simple conectamos sistema de riego a un grifo y entre esté y nuestras plantas situaremos la electrovalvula o valvula selenoide que se encargará de dejar pasar o no el agua cuando le indiquemos (nivel de humedad, intervalor horario)

Componentes necesarios

Lista de componentes y materiales que vamos a necesitar para llevarlo a cabo.

  • Arduino
  • Podemos usar el que nos apetezca, arduino uno, arduino nano, adruino mega….

  • Electrovalcula o válvula solenoide
  • Yo he usado esta pero puedes usar cualquier otra sólo teines que tener en cuenta el voltaje para alimentarla y si es normalmente cerrada o abierta, mejor cerrada que no se nos escape el agua si falla algo.

  • Un rele, como este
  • Alimentación
  • Si nuestra eletrovalvula es de 12V necesitamos o pilas como estas o una batería como estas

  • Cables conexión
  • Podemos sacarlos de cualquier cable que tengamos por casa (usb, red,audio) o podemos comprarlo

Esquema de conexiones

Para conectar electrovalvula a arduino vamos a hacerlo a través de un relé, aquí tienes las diferentes conexiones
Las conexiones que van del Arduino al Relé
Cable Rojo: De una salida de 5V (puede ser la del arduino) a la patilla de VCC del rele
Cable Negro: De tierra (GND del arduino) a la patilla de GND del rele
Cable Verde: De una entrada digital arduino (D7 en este caso) a la patilla IN del rele
Las conexiones que van del Relé a la electrovalvula y batería
Cable Rojo: Del positivo de la batería al COM (Comun) del rele y del NOC (Normalmente cerrado) de este al negativo de la electrovalvula
Cable Negro: De negativo de la batería al positivo de la electrovalvula
Una imagen vale más que mil palabras.

Funcionamiento

El funcionamiento es bastante sencillo, conectamos una tubería desde nuestro grifo a nuestra valvula solenoide o electrovalvula y de ahí a nuestro sistema de riego (en mi caso usé goteo)
Dejamos el grifo abierto y cando queremos que pase el agua enviamos un HIGH al pin digiatal donde conectes el rele (en este caso el D7) esto hará que se active la valvula y deje pasar el agua, si queremos cortar enviamos un LOW y se cerrará.

Código

El código es sencillísimo, la complegidad está lo que queramos hacer en la función que decide si encender el riego o pararlo encenderRiego si esta devuelve enviamos un HIGH (1) al pin del rele D7 y enciendo la electrovalvula, si devolve false enviamos LOW (0) y para la electrovalvula
La chicha del programa estará en hacer que la función encenderRiego lea la humedad del suelo y si es menor que un número encienda el riego y sino lo apague.

//Pin que nos da el nivel
int pinRele = 7;
//Tiempo que debe esperar para la siguiente iteración del bucle
int tiempoEspera = 2000;//2 segundo
boolean estadoRiego = false;

void setup()
{
//Iniciamos el pin el pin que nos da el nivel
pinMode(pinRele, OUTPUT);
//Nicializa el serial
Serial.begin(9600);
}
//Esta funcion debería decidir cuando queremos o no encender el riego
// Por ejemplo cuando la tierra esta seca
boolean encenderRiego(){
boolean salida = false;
if (estadoRiego){
salida = false;
}else{
salida = true;
}
return salida;
}

void loop()
{
// Leermos el pin que nos da el nivel
estadoRiego = encenderRiego();
//Dependiendo del estado del riegoestado muestra un mensaje u otro.
if (estadoRiego) {
Serial.println(“Se enciende el riego”);
digitalWrite(pinRele, HIGH);
} else {
Serial.println(“Se apaga el riego.”);
digitalWrite(pinRele, LOW);
}
delay(tiempoEspera); //Espera el tiempo indicado
}

Conclusiones

Con esto tendremos un sistema sencillo que enciende y apaga el riego, pero para hacerlo bien hay que tenga sentido, necesitamos encender el riego de forma eficiente, por ejemplo cuando baja el nivel de humedad, te recomiendo leer el artículo sobre como detectar el nivel de humedad del suelo

Deposito y bomba

Estoy terminando de redactarlo y probarlo, en unos días estará listo.

6 opiniones en “Sistema de riego Arduino paso a paso”

  1. Hola estoy haciendo un sistema de riego pero no se como ampliarlo para poder conectar mas sensores este es el codigo solo para un sensor :
    /* ==== Defines – Constantes ==== */
    #define SERIAL_BAUD 9600 // Configuracion de conexion serie

    #define PIN_HUMEDAD_SUELO A1
    #define PIN_POTENCIOMETRO A0

    #define PIN_RELE 10

    #define ESPERA 1000
    /* ==== END Defines ==== */

    /* ==== Setup – Configuracion ==== */
    void setup() {
    Serial.begin(SERIAL_BAUD);
    pinMode(PIN_RELE,OUTPUT);
    }
    /* ==== END Setup ==== */

    /* ==== Loop – Codigo que se repite==== */
    void loop() {

    int iHumedad=1023-analogRead(PIN_HUMEDAD_SUELO);
    int iPotenciometro=analogRead(PIN_POTENCIOMETRO);

    Serial.print(“Potenciometro:”);
    Serial.print(iPotenciometro);
    Serial.print(” Humedad:”);
    Serial.println(iHumedad);

    if(iPotenciometro>iHumedad){
    enciendeRiego();
    }else{
    apagaRiego();
    }
    delay(ESPERA);
    }
    /* ==== End Loop ==== */

    /* ==== Funciones ==== */
    void enciendeRiego(){
    digitalWrite(PIN_RELE,HIGH);
    Serial.println(“Riego encendido”);
    }

    void apagaRiego(){
    digitalWrite(PIN_RELE,LOW);
    Serial.println(“Riego apagado”);
    }
    /* ==== END Functions ==== */

    1. Buenas Abel disculpa la tardanza
      ¿Cuál sería el comportamiento que quieras conseguir? Ejemplo que haya dos Tomás de riego y que cada sensor encienda su toma o que si uno de los sensores baja de un nivel se encienda una única toma.
      Si me lo dices te hago un código para poder hacerlo

    2. Buenos días Abel.
      Sería tan sencillo como tener diferentes sensores de humedad y bombas como queramos, en pares.
      Te pongo un ejemplo, supon que quieres regar tomates y lechugas de forma diferente, en este caso tendríamos
      Para las lechugas:
      sensor humedad pinHumedadLechugas(A1) (almacena humedad en iHumedadLechugas) y rele bomba pinReleLechugas(10)
      Para los tomates
      sensor humedad pinHumedad(A2) (almacena humedad en iHumedadTomates) rele bomba (11)

      An inicio del bucle leeríamos los datos de ambas humedades

      //miramos el estado de las lechugas
      if (iHumedadLechugas

      Si no te queda claro lo explico más detalladamente sin problema

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.