
Hoy en la Buhardilla vamos a ver como podemos construir un riego automático para nuestro jardín o macetas. Con la llegada del calor, siempre se hace un poco más delicado el cuidado de nuestras plantas y si no estamos atentos, en los días de más calor estas pueden secarse rápidamente. Por esa razón a continuación vamos a ver como construir un riego automático con Arduino, que mantendrá en perfectas condiciones nuestras plantas, garantizando que siempre tengan la humedad necesaria. Sin más dilación empecemos.
Material
- Arduino
- Bomba sumergible
- Fuente de alimentación
- Modulo de relé
- Sensor humedad del suelo
A continuación podemos ver el esquema de montaje.

La fuente de alimentación se utiliza para proporcionar energía a la bomba, pero como que esta no tiene que estar funcionando las 24 h la conectamos al relé en modo normalmente abierto marcado como NO (del inglés normally open) esto ara que en el estado normal del relé la bomba esta parada y solo se pondrá en marcha una vez demos la señal de cambiar de estado del relé. Él cambió de estado del relé lo vamos a controlar con la señal procedente del pin 7 del Arduino. Dicha señal será enviada cuando la humedad del suelo esté por debajo del setpoint que marquemos (que leeremos en el pin A0). Una vez visto el montaje pasemos a ver el código del Arduino.
int rele = 7;
int sensorHumedad = A0;
int lecturaSensor;
int humedad;
int setpointHumedadBajo = 40;
int setpointHumedadAlto = 70;
void setup() {
pinMode(rele, OUTPUT);
digitalWrite(rele, LOW);
}
void loop() {
lecturaSensor = analogRead(sensorHumedad);
humedad = map(lecturaSensor, 0, 1023, 100, 0);
if (humedad < setpointHumedadBajo){
digitalWrite(rele, HIGH);
}
else if (humedad > setpointHumedadAlto){
digitalWrite(rele, LOW);
}
delay(1000);
}
En la primera parte del código definimos todas las variables que vamos a utilizar en nuestro programa. En la primera linea definimos el pin del Arduino que dará la señal de cambiar de estado del relé. En la siguiente linea definimos el pin en el que leeremos la señal del sensor. Las dos siguientes variables son las que usaremos para almacenar los valores del sensor (en el momento de inicializarlas no hace falta darles ningún valor). Para terminar tenemos las dos variables que nos definen a partir de que grado de humedad se enciende la bomba (por estar el suelo seco) y en que punto se vuelve a parar la bomba (una vez el suelo está húmedo), estos valores se pueden modificar para que el grado de humedad en las distintas plantes se mantenga dentro del rango deseado (los valores corresponden a % de humedad en el suelo).
int rele = 7;
int sensorHumedad = A0;
int lecturaSensor;
int humedad;
int setpointHumedadBajo = 40;
int setpointHumedadAlto = 70;
Una vez definidas las variables y constantes que vamos a usar, es momento de inicializar el sistema. En este caso indicamos que el pin del relé se tiene que configurar como una salida (enviaremos la señal al relé por este pin). También vamos a inicializar dicho pin en el estado LOW, de esta manera nos aseguramos que la bomba esté inicialmente parada.
void setup() {
pinMode(rele, OUTPUT);
digitalWrite(rele, LOW);
}
Para finalizar, tenemos el cuerpo del programa, la parte que se ejecutara una vez y otra indefinidamente y que controlara que el suelo siempre este dentro de los valores deseados. En primera instancia, leerá la señal procedente del sensor. A continuación convertirá la señal analógica en un valor entre 0-100% (el 0% corresponde a una lectura de 1023 y el 100% a cero). Una vez tenemos la señal convertida a porcentaje de humedad comparamos el valor leído con el setpoint de humedad baja, si la humedad del suelo esta por debajo del valor que nosotros queremos se pondrá en marcha la bomba. Esta permanecerá en funcionamiento hasta que la humedad este por encima del setpoint alto, momento en que se parara. Para no colapsar el sistema vamos a hacer una lectura cada segundo.
void loop() {
lecturaSensor = analogRead(sensorHumedad);
humedad = map(lecturaSensor, 0, 1023, 100, 0);
if (humedad < setpointHumedadBajo){
digitalWrite(rele, HIGH);
}
else if (humedad > setpointHumedadAlto){
digitalWrite(rele, LOW);
}
delay(1000);
}
Con este simple montaje seremos capaces de poder regar de manera automática muestro jardín o macetas, sin embargo soy cociente de que en algunos casos no siempre se dispone de un enchufe donde conectar nuestra bomba y Arduino, por esto motivo en futuras entradas veremos como modificar este montaje para que funcione con energía solar, y con una pequeña batería recargable seremos capaces de instalar este sistema en cualquier lugar, por remoto que sea, sin la necesidad de tener un enchufe cerca.
Saludos y hasta la próxima aventura!
Deja un comentario