Sistema de Detección Temprana de Inundaciones con Arduino – Código Fuente y Diseño Circuito
Sistema de Monitorización Temprana de Inundaciones – Circuito y Código Fuente del Proyecto
En países en desarrollo y desarrollados, las inundaciones son desastres naturales masivos que causan pérdida de vidas humanas, animales y propiedades. Inundaciones por terremotos en océanos, huracanes, lluvias y otros desastres ocurren en muchas partes del mundo cada año.
Durante lluvias, sistemas de drenaje no gestionados en diversas regiones geográficas provocan inundaciones y pérdida de vidas. Si tuviéramos un sistema que alertara tempranamente sobre inundaciones, podríamos salvar vidas. Un sistema que use tecnología para detectar aumento nivel agua y alertar a personas antes para evacuación.
En este proyecto presentamos un prototipo para detectar nivel agua en estanque, presa o embalse y enviar alerta mediante zumbador. Es prototipo a pequeña escala usando Arduino UNO, sensor ultrasónico, zumbador, LCD y cables conexión.
Proyectos Relacionados:
- Sistema Riego y Riego Automático de Plantas – Circuito, Código e Informe Proyecto
- Alarma Lluvia – Detector Nieve, Agua y Lluvia Proyecto
Diagrama Circuito para Detección Temprana Inundaciones

Componentes Requeridos
- Arduino UNO
- Sensor Ultrasónico HC-SR04
- Zumbador (Buzzer)
- Pantalla LCD 16×2
- Cables puente o de conexión
Proyectos Relacionados:
- Medición Distancia con Arduino y Sensor Ultrasónico
- Fuente Alimentación Variable con Arduino UNO – Circuito y Código
Ahora, conozcamos los componentes usados en este circuito básico uno por uno.
Arduino UNO
Arduino es plataforma código abierto para desarrollar proyectos electrónicos. Se programa, borra y reprograma fácilmente en cualquier momento. Hay muchas placas Arduino: UNO, Nano, Mega, Lilypad, etc. con especificaciones diferentes según uso.
En este proyecto usamos Arduino UNO para controlar electrodomésticos automáticamente. Tiene microcontrolador ATmega328 a 16MHz. Trabaja con protocolos USART, I2C y SPI.
Se programa usualmente con software Arduino IDE mediante cable micro USB. ATmega328 viene con gestor de arranque preprogramado facilitando carga código sin hardware externo. Amplias aplicaciones en proyectos/productos electrónicos. Lenguajes C y C++ usados para programar, muy fáciles de aprender.
Proyectos Relacionados:
- Circuito Indicador Nivel Agua – Dos Proyectos Simples
- Controlador Automático Nivel Agua Completo con SRF04
Arduino IDE facilita programación separando código en dos partes: void setup() y void loop(). setup() ejecuta una vez para iniciar procesos; loop() contiene código que se ejecuta continuamente.
Este modelo tiene 6 pines entrada analógica y 14 pines GPIO digitales (6 con salida PWM) usando pinMode(), digitalWrite(), digitalRead() y analogRead(). 6 canales analógicos pines A0-A5 con resolución 10 bits.
La placa se alimenta por USB (5V) o conector DC (7-20V). Regulador voltaje integrado genera 3.3V para dispositivos baja potencia.
ATmega328 usa USART, SPI e I2C: pines 0 (Rx) y 1 (Tx) para USART; SDA (A4) y SCL (A5) para I2C; SS (10), MOSI (11), MISO (12), SCK (13) para SPI.
Proyectos Relacionados:
- Timbre Automático con Detección Objeto por Arduino
- Lámpara Nocturna Automática con Arduino
Sensor Ultrasónico HC-SR04
HC-SR04 es sensor ultrasónico que mide distancias sin contacto humano. Funciona con principio similar a RADAR y SONAR, midiendo distancias de forma precisa.
Teóricamente mide hasta 450 cm, pero prácticamente 2 cm a 80 cm con precisión 3 mm. Funciona a 5V, corriente <15mA y frecuencia 40 Hz.

HC-SR04 tiene un transmisor y un receptor. La distancia se calcula con fórmula básica velocidad, distancia, tiempo:
Distancia = Velocidad × Tiempo
El transmisor emite onda ultrasónica al aire. Si onda refleja en objeto dentro del rango, el receptor la recibe. Para calcular distancia necesitamos velocidad y tiempo.
Velocidad onda ultrasónica ≈ 330 m/s. Tiempo medido por circuito en microcontrolador. Pin Echo se pone HIGH durante el tiempo que tarda la onda en regresar al receptor. Así calculamos distancia entre objeto y sensor HC-SR04.
Proyectos Relacionados:
- Sistema Control Automático Barrera Ferroviaria – Circuito y Código Fuente
- Detector Velocidad Coche – Funcionamiento y Código Fuente
Interfaz HC-SR04 con Arduino UNO
HC-SR04 puede usarse con microcontroladores como Arduino, PIC, Raspberry Pi, etc. En este proyecto interfaz HC-SR04 con Arduino UNO. Módulo HC-SR04 tiene 4 pines: VCC, GND, Trig y Echo.
Alimentamos HC-SR04 con 5V y GND a Arduino UNO. Pines Trigger y Echo son entrada/salida, así que conectan a pines entrada/salida Arduino. Para medir distancia, ponemos pin trigger HIGH 10 microsegundos y luego LOW.
Esto genera onda ultrasónica 40 kHz que va al objeto y refleja al receptor. Si detecta objeto, retorna inmediatamente al receptor y pin Echo se pone HIGH por el tiempo de retorno.
Este tiempo multiplicado por velocidad onda (330 m/s) da distancia entre módulo HC-SR04 y objeto.
Publicación Relacionada:
- Sistema Automatización Hogar Inteligente – Circuito y Código Fuente
- Programación PWM Arduino y sus funciones
Pantalla LCD 16×2
Interfaz LCD 16×2 con Arduino UNO es sencilla. Hay varios tipos LCD pero usamos 16×2: dos filas, 16 caracteres cada una.
Este módulo tiene controlador HD44780 de Hitachi para interfaz y comunicación con microcontroladores. Funciona en modo 4 bits (4 pines datos) y 8 bits (8 pines datos). Usaremos modo 4 bits por requerir menos cables y simplificar circuito.

Descripción Pines Módulo LCD 16×2:
| Pin en LCD | Descripción |
|---|---|
| VSS | Pin Tierra (Ground) |
| VCC | Alimentación +5V |
| VEE | Pin para ajustar contraste LCD |
| RS | Selección Registro: Modo Datos o Comando |
| RW | Modo Lectura o Escritura |
| E | Habilitar LCD |
| DB0-DB7 | Pines para datos y comandos |
| LED+ | Ánodo LED retroiluminación |
| LED- | Cátodo LED retroiluminación |
Este LCD no tiene luz propia; hay LED detrás de pantalla que actúa como retroiluminación. Interfaz con Arduino UNO es fácil gracias a librería LiquidCrystal de Arduino IDE con funciones integradas para inicializar e imprimir en pantalla. Funciones LCD usadas principalmente:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
Funcionamiento Sistema Detección Temprana Inundaciones y Código Fuente
Un sensor ultrasónico se coloca en nivel base de forma que transmisor y receptor miren hacia nivel agua. Arduino UNO mide distancia entre sensor y nivel agua.
El LCD muestra la distancia. Establecemos umbral para nivel inundación y cuando agua alcance ese umbral, ponemos zumbador HIGH y LCD muestra texto alertando sobre inundación.
Explicación Código
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
lcd.begin(16,2);
Se incluye librería integrada para LCD. Función LiquidCrystal lcd() toma números pin datos conectados a Arduino UNO. Lcd.begin() inicia LCD 16×2.
pinMode(18, OUTPUT); // pin trigger
pinMode(19, INPUT); // pin echo
pinMode(20, OUTPUT); // zumbador
Pines 18 y 20 configurados salida para trigger y zumbador; pin 19 entrada para echo.
t = pulseIn(19, HIGH);
dist = t * 340 / 20000;
Variable tiempo 't' detecta tiempo hasta pin trigger HIGH, usado para calcular distancia en centímetros almacenada en 'dist'.
if (dist < 40) {
digitalWrite(20, HIGH);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Nivel agua subiendo. Evacuen");
delay(2000);
} else {
digitalWrite(20, LOW);
delay(2000);
}
Condición inundación: distancia entre nivel agua y sensor ultrasónico ≤ 40cm. Al alcanzar 40cm o menos, zumbador HIGH para alerta y LCD muestra mensaje evacuación.
Código Fuente Completo:
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
float t = 0;
float dist = 0;
void setup() {
lcd.begin(16,2);
pinMode(18, OUTPUT); // trigger
pinMode(19, INPUT); // echo
pinMode(20, OUTPUT); // buzzer
lcd.setCursor(0,1);
lcd.print(" Detector Nivel Agua");
delay(2000);
}
void loop() {
lcd.clear();
digitalWrite(20, LOW);
digitalWrite(18, LOW);
delayMicroseconds(2);
digitalWrite(18, HIGH);
delayMicroseconds(10);
digitalWrite(18, LOW);
delayMicroseconds(2);
t = pulseIn(19, HIGH);
dist = t * 340 / 20000;
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Distancia: ");
lcd.print(dist/100);
lcd.print(" m");
delay(1000);
if (dist < 40) {
digitalWrite(20, HIGH);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Nivel agua subiendo. Evacuen");
delay(2000);
} else {
digitalWrite(20, LOW);
delay(2000);
}
}
Proyectos Relacionados:
- Control Semáforo Proyecto Electrónico con CI 4017 y Temporizador 555
- Circuito Cargador Celular Simple – 5V desde 230V CA
- Circuito Relé Electrónico – Conmutadores NPN, PNP, Canal N y P
- Circuito Ruleta LED con Temporizador 555 y Contador 4017
- Interruptor Automático Electrónico – Esquemático y Funcionamiento
- Circuito Detector Movimiento Infrarrojo
- Circuito Interruptor Táctil Sensible Simple
- Circuito Duplicador Voltaje Básico con CI 555
- Circuito Fuente Alimentación Dual – 230VCA a ±12VCC
- Circuito Cargador Celular Simple – 5V desde 230V CA
Tecnología Industrial
- Sistema de control de temperatura basado en LM35 con microcontrolador AT89S52
- Construye un Decodificador DTMF Solo con Arduino – Sin CI Externos
- Sistema de Asistencia RFID Fiable con Arduino y Python
- Robot de Detección Humana con Arduino Uno: Integración de Sensores Paso a Paso
- SERENA: Sistema de Alarma Personalizado Arduino Mega 2560 con Pantalla TFT LCD Táctil
- Sistema de monitorización de incendios forestales en tiempo real con alertas SMS
- Sistema Avanzado de Detección de Caídas con Arduino, Windows IoT y Azure Cloud
- Sistema Avanzado de Alerta de Colisión con Arduino – Alertas Visuales y Sonoras para Seguridad Vehicular
- Symphony Link: Detección fiable de fugas de agua para centros de datos
- Por Qué la Detección de Fugas de Agua IoT de Biz4Intellia Impulsa la Eficiencia Industrial – 5 Ventajas Clave
- Dominando las Sentencias Using en C#: Importaciones, Alias y Directivas Estáticas