
Arduino
Sistema de Riego Automático con Arduino
Aprende a construir un sistema de riego automático utilizando un kit de riego y Arduino.
En este tutorial, aprenderás a crear un sistema de riego automático que te permitirá mantener tus plantas hidratadas sin necesidad de intervención manual. Utilizaremos un kit de riego automático junto con una placa Arduino para controlar el funcionamiento del sistema.
Materiales
- Para realizar la práctica se requieren:
- 1 Arduino Uno.
- 4 sensores de humedad del suelo.
- 4 módulos relé de 5 V.
- 4 mini bombas de agua sumergibles.
- 1 fuente externa apropiada para alimentar las bombas.
- Manguera para cada bomba.
- Cables Dupont.
- Protoboard, si es necesaria para distribuir 5 V y GND.
- Cable USB para programar y alimentar el Arduino.
- Recipiente con agua.
- 4 plantas o recipientes con tierra.
- Importante: las bombas no deben alimentarse directamente desde los pines del Arduino. Las bombas consumen una corriente superior a la que puede proporcionar un GPIO; por esta razón utilizaremos los re
Funcionamiento General
Cada planta tendrá su propio conjunto:
Sensor → Arduino → Relé → Bomba
Por ejemplo:
PLANTA 1 Sensor humedad 1 -> A0 -> ARDUINO -> D4 -> RELÉ 1 -> BOMBA 1 -> PLANTA 1
Conectar los sensores de humedad
Cada sensor dispone de un módulo electrónico con terminales como:
VCC - GND - DO - AO
Para este proyecto utilizaremos la salida AO (Analog Output), porque queremos conocer qué tan húmeda está la tierra y no simplemente obtener una señal de encendido/apagado.
Realizar las siguientes conexiones:
| Sensor | AO | VCC | GND |
|---|---|---|---|
| Sensor 1 | A0 | 5V | GND |
| Sensor 2 | A1 | 5V | GND |
| Sensor 3 | A2 | 5V | GND |
| Sensor 4 | A3 | 5V | GND |
Conectar las bombas
Conectaremos:
| Relé | IN Arduino | VCC | GND |
|---|---|---|---|
| Relé 1 | D4 | 5V | GND |
| Relé 2 | D5 | 5V | GND |
| Relé 3 | D6 | 5V | GND |
| Relé 4 | D7 | 5V | GND |
Verificar las conexiones antes de energizar
Antes de conectar la fuente, los estudiantes deben verificar:
Sensor 1 → A0
Sensor 2 → A1
Sensor 3 → A2
Sensor 4 → A3
Relé 1 → D4
Relé 2 → D5
Relé 3 → D6
Relé 4 → D7
También deben comprobar que ninguna bomba esté conectada directamente a un pin del Arduino.

/*
============================================================
SISTEMA DE RIEGO AUTOMATICO - 4 ZONAS
Arduino UNO
============================================================
Zona 1 -> Sensor A0 -> Rele D4 -> Bomba 1
Zona 2 -> Sensor A1 -> Rele D5 -> Bomba 2
Zona 3 -> Sensor A2 -> Rele D6 -> Bomba 3
Zona 4 -> Sensor A3 -> Rele D7 -> Bomba 4
*/
// ==========================================================
// CONFIGURACION
// ==========================================================
const byte NUM_ZONAS = 4;
const byte sensores[NUM_ZONAS] = {
A0, A1, A2, A3
};
const byte reles[NUM_ZONAS] = {
4, 5, 6, 7
};
/*
La mayoría de estos módulos de relé son ACTIVE LOW:
LOW = relé activado
HIGH = relé apagado
Si el tuyo funciona al contrario, intercambia estos valores.
*/
const byte RELE_ON = LOW;
const byte RELE_OFF = HIGH;
// ==========================================================
// CALIBRACION DE LOS SENSORES
// ==========================================================
/*
IMPORTANTE:
Estos valores son ejemplos.
Debes medir cada sensor:
1. Con el sensor seco.
2. Con el sensor en tierra muy húmeda.
Después reemplazar los valores.
*/
int valorSeco[NUM_ZONAS] = {
850, 850, 850, 850
};
int valorHumedo[NUM_ZONAS] = {
350, 350, 350, 350
};
// ==========================================================
// UMBRALES DE RIEGO
// ==========================================================
/*
Si humedad <= 35%:
encender bomba
Si humedad >= 55%:
apagar bomba
Entre 35% y 55% conserva el estado anterior.
Esto evita encendidos/apagados rápidos.
*/
const int HUMEDAD_ENCENDER = 35;
const int HUMEDAD_APAGAR = 55;
// Estado de las bombas
bool bombaActiva[NUM_ZONAS] = {
false, false, false, false
};
// ==========================================================
// SETUP
// ==========================================================
void setup() {
Serial.begin(9600);
Serial.println();
Serial.println("==============================");
Serial.println(" SISTEMA DE RIEGO AUTOMATICO");
Serial.println("==============================");
for (byte i = 0; i < NUM_ZONAS; i++) {
pinMode(reles[i], OUTPUT);
// MUY IMPORTANTE:
// iniciar todas las bombas apagadas
digitalWrite(reles[i], RELE_OFF);
}
delay(1000);
}
// ==========================================================
// LOOP
// ==========================================================
void loop() {
Serial.println("--------------------------------");
for (byte i = 0; i < NUM_ZONAS; i++) {
// Leer sensor varias veces para reducir ruido
int lectura = leerSensor(sensores[i]);
// Convertir lectura a porcentaje
int humedad = map(
lectura,
valorSeco[i],
valorHumedo[i],
0,
100
);
humedad = constrain(humedad, 0, 100);
// ======================================================
// CONTROL DE RIEGO
// ======================================================
// Tierra seca -> activar bomba
if (!bombaActiva[i] &&
humedad <= HUMEDAD_ENCENDER) {
bombaActiva[i] = true;
digitalWrite(
reles[i],
RELE_ON
);
}
// Tierra suficientemente húmeda -> apagar bomba
else if (bombaActiva[i] &&
humedad >= HUMEDAD_APAGAR) {
bombaActiva[i] = false;
digitalWrite(
reles[i],
RELE_OFF
);
}
// ======================================================
// MONITOR SERIAL
// ======================================================
Serial.print("Zona ");
Serial.print(i + 1);
Serial.print(" | ADC: ");
Serial.print(lectura);
Serial.print(" | Humedad: ");
Serial.print(humedad);
Serial.print("%");
Serial.print(" | Bomba: ");
if (bombaActiva[i]) {
Serial.println("ENCENDIDA");
}
else {
Serial.println("APAGADA");
}
}
Serial.println();
delay(2000);
}
// ==========================================================
// LECTURA PROMEDIADA DEL SENSOR
// ==========================================================
int leerSensor(byte pin) {
const byte MUESTRAS = 10;
long suma = 0;
for (byte i = 0; i < MUESTRAS; i++) {
suma += analogRead(pin);
delay(5);
}
return suma / MUESTRAS;
}Preguntas frecuentes
¿Qué tipo de sensor de humedad debo usar?
Puedes utilizar cualquier sensor de humedad compatible con Arduino, como el sensor capacitivo o resistivo.
¿Puedo usar una bomba de agua de 12V?
Asegúrate de que el relé que uses sea compatible con la bomba de agua y su voltaje.
Productos para realizar este proyecto
Construye este proyecto
1 componente(s) · Total aproximado: $100.000 COP
Kit Riego Automatico con Arduino
$100.000
En stock × 1
Ver producto
Comentarios y preguntas
¿Le quedó una duda o quiere compartir cómo le fue con el proyecto? Escríbanos. Publicamos las respuestas útiles para otros makers.
Aún no hay preguntas publicadas. Sea el primero en consultar.