Ir al contenido
← Volver a Formación Arduino Principiante

10. Detector de lluvia con aviso

Avisa con luz y sonido cuando empieza a llover. Ideal para recoger la ropa del tendedero a tiempo.

Dificultad: Principiante · Tiempo: 40 min · Cerebro: Arduino Uno

🧰 Lista de materiales

Arduino Uno R3 (ATmega328P)
Arduino Uno R3 (ATmega328P)
Lee el sensor y avisa
sin foto
Módulo sensor agua/lluvia
Detecta agua sobre la placa
LED 5 mm amarillo difuso
LED 5 mm amarillo difuso
Aviso visual
sin foto
Zumbador activo TMB12A05 5 V
Aviso sonoro
sin foto
Resistencias película metálica 1/4 W
220 Ω
Breadboard 830 puntos
Breadboard 830 puntos
Montaje

🎯 Qué vas a aprender

A interpretar un sensor con salida analógica y digital a la vez, y a construir un aviso con histéresis para evitar avisos intermitentes.

📚 Teoría: sensor resistivo de agua

El módulo tiene pistas interdigitadas. El agua que cae sobre ellas las cortocircuita parcialmente, bajando su resistencia. El módulo entrega una salida analógica (AO) proporcional a la cantidad de agua y, a menudo, una digital (DO) con umbral por potenciómetro.

⚠ AtenciónLa placa sensora se expone al agua, pero la electrónica del módulo NO. Mantén el módulo y el Arduino a cubierto; solo la placa de pistas va a la intemperie.

🔌 Conexiones

ComponentePin
Sensor VCC5 V
Sensor GNDGND
Sensor AOA0
LED amarilloD9 vía 220 Ω → GND
Zumbador activo +D8
Zumbador activo −GND

💻 Código completo

// Detector de lluvia con histéresis
const int PIN_SENSOR = A0;
const int PIN_LED    = 9;
const int PIN_BUZZER = 8;

// Con la placa SECA la lectura es alta; MOJADA baja.
const int UMBRAL_LLUEVE = 500;   // empieza a llover
const int UMBRAL_SECO   = 700;   // ya está seco (histéresis)

bool lloviendo = false;

void setup() {
  pinMode(PIN_LED, OUTPUT);
  pinMode(PIN_BUZZER, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int v = analogRead(PIN_SENSOR);
  Serial.println(v);

  if (!lloviendo && v < UMBRAL_LLUEVE) lloviendo = true;
  if (lloviendo  && v > UMBRAL_SECO)   lloviendo = false;

  digitalWrite(PIN_LED, lloviendo ? HIGH : LOW);
  if (lloviendo) {
    tone(PIN_BUZZER, 1000, 200);   // pitido breve cada ciclo
  }
  delay(800);
}
💡 ConsejoUsa el Monitor Serie para ver tus valores con la placa seca y con unas gotas, y ajusta los dos umbrales. La histéresis (dos umbrales distintos) evita que el aviso parpadee en el límite.

🛠️ Montaje paso a paso

  1. Conecta el módulo (VCC, GND, AO) y la placa sensora a sus dos pines.
  2. Monta LED y zumbador en sus pines.
  3. Calibra umbrales con el Monitor Serie (seco vs. mojado).
  4. Coloca la placa sensora en horizontal donde caería la lluvia.

🧩 Resolución de problemas

SíntomaCausaSolución
Avisa siempreUmbrales invertidosRecuerda: seco = alto, mojado = bajo
No detecta gotas finasUmbral muy bajoSube UMBRAL_LLUEVE
Corrosión de la placaAlimentación continuaAlimenta el sensor solo al medir

🚀 Para ir más lejos

  • Alimenta el sensor desde un pin digital y enciéndelo solo al medir (evita corrosión).
  • Combina con la estación meteorológica (proyecto 25).
← Volver a Formación Arduino