13. Riego automático de plantas
Mide la humedad de la tierra y activa una bomba de agua cuando la planta tiene sed. Tu primer proyecto con relé y carga real.
🧰 Lista de materiales
🎯 Qué vas a aprender
El patrón sensor → decisión → actuador de potencia, que es la base de la automatización. Aprenderás a usar un relé para que un pin de 5 V controle una carga que el Arduino no podría alimentar directamente, y por qué las cargas inductivas (motores, bombas) deben alimentarse aparte.
📚 Teoría: relé y alimentación separada
Un relé es un interruptor electromecánico: una pequeña corriente en su bobina (controlada por el Arduino) cierra unos contactos que manejan un circuito mucho más potente, eléctricamente aislado. Así el Arduino «da la orden» sin que la corriente de la bomba pase por él.
El módulo relé HW-482 suele ser activo a nivel bajo: se activa poniendo IN en LOW. Lo tendremos en cuenta en el código.
🔌 Conexiones
| Componente | Conexión |
|---|---|
| Sensor humedad VCC/GND | 5 V / GND del Arduino |
| Sensor humedad AO | A0 |
| Relé VCC/GND | 5 V / GND del Arduino |
| Relé IN | D7 |
| Bomba (+) | Pack pilas (+) → contacto COM del relé |
| Relé NO → bomba | contacto NO al cable de la bomba |
| Bomba (−) | Pack pilas (−), unido a GND del Arduino |
💻 Código completo
// Riego automático con sensor de humedad y bomba por relé
const int PIN_HUM = A0;
const int PIN_RELE = 7; // activo a nivel BAJO
// Calibra: SECO da lectura ALTA, HÚMEDO da lectura BAJA
const int UMBRAL_SECO = 600; // por encima => regar
const int UMBRAL_HUMEDO = 400; // por debajo => parar (histéresis)
const unsigned long RIEGO_MS = 4000; // pulso de riego
bool regando = false;
void bomba(bool on) {
// relé activo-bajo: LOW = bomba ON
digitalWrite(PIN_RELE, on ? LOW : HIGH);
}
void setup() {
pinMode(PIN_RELE, OUTPUT);
bomba(false);
Serial.begin(9600);
}
void loop() {
int h = analogRead(PIN_HUM);
Serial.print("Humedad cruda: "); Serial.println(h);
if (!regando && h > UMBRAL_SECO) {
Serial.println("Tierra seca -> riego");
regando = true;
bomba(true);
delay(RIEGO_MS); // riega un pulso controlado
bomba(false);
regando = false;
delay(60000); // espera 1 min a que se absorba antes de re-medir
}
delay(2000);
}RIEGO_MS al tamaño de tu maceta.🛠️ Montaje paso a paso
- Clava la sonda del sensor en la tierra y conecta el módulo a A0.
- Cablea el relé (VCC, GND, IN→D7).
- Conecta la bomba en serie con el relé y su pack de pilas propio.
- Une las masas: GND del Arduino con el (−) del pack.
- Calibra umbrales con tierra seca y húmeda en el Monitor Serie.
🧩 Resolución de problemas
| Síntoma | Causa | Solución |
|---|---|---|
| Bomba siempre ON | Relé activo-bajo no contemplado | Confirma lógica en bomba() |
| No bombea | Pack de pilas flojo / masas no unidas | Une GND y revisa pilas |
| Riega sin parar | Sin histéresis | Usa los dos umbrales y la espera |
🚀 Para ir más lejos
- Añade el sensor de lluvia para no regar si ya llueve.
- Muestra el estado en LCD u OLED.
- Convierte el sistema en un nodo IoT con la Pico (proyecto 26).