9 de julio de 2026 · 9 min
Riego automático con Arduino: que las plantas se rieguen solas
Sensor de humedad de suelo, un relé y una bomba de 5 V: el proyecto útil por excelencia. Por qué el sensor capacitivo vale la diferencia, cómo calibrarlo bien y el código con histéresis para no ahogar la planta.
De todos los proyectos de esta serie, este es el que más termina instalado de verdad en una casa. No es un juguete de escritorio: es la maceta que sobrevive a tus vacaciones. Y es también el proyecto donde más gente compra el sensor equivocado — arranquemos por ahí.
Capacitivo vs resistivo: comprá el correcto
Hay dos tipos de sensor de humedad de suelo y se ven parecidos:
- Resistivo (dos púas doradas separadas): mide conductividad entre las púas. Es más barato, pero las púas están expuestas y se corroen por electrólisis en semanas. En un proyecto de clase sirve; enterrado en una maceta de verdad, muere.
- Capacitivo (una sola paleta con la electrónica cubierta): mide el cambio de capacitancia del suelo. No tiene metal expuesto, así que dura años enterrado. Vale un poco más y es la única opción seria para riego real.
Para este proyecto: capacitivo, sin discusión. Vela en la tienda.
Lista de compra
| Componente | Cantidad | Nota |
|---|---|---|
| Arduino Nano | 1 | Sobra con un Nano |
| Sensor humedad de suelo capacitivo | 1 | v1.2 o similar |
| Módulo relé 1 canal 5V | 1 | Con optoacoplador |
| Mini bomba de agua sumergible 5V | 1 | + manguera |
| Fuente 5V 2A | 1 | Alimenta todo el sistema |
| Cables dupont | 1 juego | |
| Recipiente para agua | 1 | Balde, bidón cortado, lo que haya |
Conexionado
Sensor capacitivo: AOUT → A0, VCC → 5V, GND → GND. Módulo relé: IN → pin 7, VCC → 5V, GND → GND. Bomba: un cable al (+) de la fuente, el otro pasa por los bornes COM y NO (normal abierto) del relé, y vuelve al (−). La bomba va sumergida en el recipiente, con la manguera apuntando a la maceta.
Importante: la bomba NO se alimenta desde el pin 5V del Arduino — los picos del motor lo resetean. Fuente de 5 V 2 A para todo: la bomba por el relé, y el Arduino por su pin 5V o USB. Si dudás con la alimentación, tenemos una guía completa de fuentes y reguladores.
Primero: calibrar el sensor
Los sensores capacitivos no dan “porcentaje de humedad” — dan un número crudo que depende de tu sensor, tu suelo y tu cableado. Cargá esto primero y anotá dos valores:
void setup() { Serial.begin(9600); }
void loop() {
Serial.println(analogRead(A0));
delay(500);
}
- Sensor al aire (seco total): anotá el valor. Típico: ~590.
- Sensor en un vaso de agua (sin pasar la línea marcada): anotá. Típico: ~270.
Con esos dos números, el código principal mapea a porcentaje real.
El código con histéresis
¿Por qué histéresis? Si regás “cuando humedad < 40%”, el valor oscila alrededor de 40 y el relé traquetea prendido-apagado como castañuela. La solución: regar cuando baja de 35% y cortar recién cuando supera 55%. Dos umbrales, cero traqueteo.
const int PIN_SENSOR = A0;
const int PIN_RELE = 7;
// TUS valores de calibracion (paso anterior):
const int VALOR_SECO = 590;
const int VALOR_AGUA = 270;
const int UMBRAL_REGAR = 35; // % - arranca el riego
const int UMBRAL_CORTAR = 55; // % - lo corta
const unsigned long RIEGO_MAX_MS = 30000; // seguridad: 30 s maximo
// La mayoria de los modulos rele son ACTIVO-BAJO:
const int RELE_ON = LOW;
const int RELE_OFF = HIGH;
bool regando = false;
unsigned long inicioRiego = 0;
void setup() {
pinMode(PIN_RELE, OUTPUT);
digitalWrite(PIN_RELE, RELE_OFF);
Serial.begin(9600);
}
int humedadPorcentaje() {
// promedio de 10 lecturas para estabilidad
long suma = 0;
for (int i = 0; i < 10; i++) { suma += analogRead(PIN_SENSOR); delay(10); }
int crudo = suma / 10;
int pct = map(crudo, VALOR_SECO, VALOR_AGUA, 0, 100);
return constrain(pct, 0, 100);
}
void loop() {
int hum = humedadPorcentaje();
Serial.print("Humedad: "); Serial.print(hum); Serial.println("%");
if (!regando && hum < UMBRAL_REGAR) {
regando = true;
inicioRiego = millis();
digitalWrite(PIN_RELE, RELE_ON);
Serial.println(">> Riego ON");
}
if (regando) {
bool humedaOk = (hum >= UMBRAL_CORTAR);
bool timeout = (millis() - inicioRiego > RIEGO_MAX_MS);
if (humedaOk || timeout) {
regando = false;
digitalWrite(PIN_RELE, RELE_OFF);
Serial.println(timeout ? ">> Riego OFF (timeout!)" : ">> Riego OFF");
}
}
delay(2000);
}
El RIEGO_MAX_MS es el seguro de vida del sistema: si el sensor se desconecta o la manguera se sale de la maceta, la bomba no queda prendida inundando el living. Nunca instales un riego automático sin timeout.
Errores comunes
- Relé al revés: la mayoría de los módulos son activo-bajo (LOW = prendido). Si tu bomba arranca prendida y se apaga al “activar”, invertí
RELE_ON/RELE_OFF. - Sensor enterrado hasta el conector: la línea blanca del sensor marca el máximo. Si el agua llega a la electrónica, se termina el proyecto.
- Bomba en seco: las bombas sumergibles se refrigeran con el agua que mueven. Sin agua en el recipiente, se queman. Bonus: un sensor de nivel o un flotador resuelve el aviso de “recargar bidón”.
- Regar a chorro una maceta chica: 30 segundos de bomba pueden ser mucho. Ajustá
RIEGO_MAX_MSal tamaño de tu maceta (empezá con 5–10 s).
Para llevarlo más lejos
- Cambiá el Nano por un ESP32 y mirá la humedad desde el celular, con historial.
- Sumá un DS18B20 y evitá regar con agua helada al mediodía de enero.
- Escalalo: con un relé de 4 canales y 4 sensores, un solo Arduino riega toda la galería.
El kit de riego completo
Sensor capacitivo, relé, bomba, fuente y Nano: todo en electronicabyp.com.ar con envío a toda Argentina. ¿Proyecto más grande — invernadero, vivero, huerta? Contanos por WhatsApp y lo dimensionamos juntos.
¿Necesitás los componentes de esta guía? Los encontrás en electronicabyp.com.ar — hacemos envíos a toda Argentina. Para cotizaciones por cantidad, escribinos por WhatsApp.