Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

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:

Diagrama Circuito para Detección Temprana Inundaciones

Sistema de Detección Temprana de Inundaciones con Arduino – Código Fuente y Diseño Circuito

Componentes Requeridos

Proyectos Relacionados:

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:

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:

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.

Sistema de Detección Temprana de Inundaciones con Arduino – Código Fuente y Diseño Circuito

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:

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:

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.

Sistema de Detección Temprana de Inundaciones con Arduino – Código Fuente y Diseño Circuito

Descripción Pines Módulo LCD 16×2:
Pin en LCD Descripción
VSSPin Tierra (Ground)
VCCAlimentación +5V
VEEPin para ajustar contraste LCD
RSSelección Registro: Modo Datos o Comando
RWModo Lectura o Escritura
EHabilitar LCD
DB0-DB7Pines 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:

Tecnología Industrial

  1. Sistema de control de temperatura basado en LM35 con microcontrolador AT89S52
  2. Construye un Decodificador DTMF Solo con Arduino – Sin CI Externos
  3. Sistema de Asistencia RFID Fiable con Arduino y Python
  4. Robot de Detección Humana con Arduino Uno: Integración de Sensores Paso a Paso
  5. SERENA: Sistema de Alarma Personalizado Arduino Mega 2560 con Pantalla TFT LCD Táctil
  6. Sistema de monitorización de incendios forestales en tiempo real con alertas SMS
  7. Sistema Avanzado de Detección de Caídas con Arduino, Windows IoT y Azure Cloud
  8. Sistema Avanzado de Alerta de Colisión con Arduino – Alertas Visuales y Sonoras para Seguridad Vehicular
  9. Symphony Link: Detección fiable de fugas de agua para centros de datos
  10. Por Qué la Detección de Fugas de Agua IoT de Biz4Intellia Impulsa la Eficiencia Industrial – 5 Ventajas Clave
  11. Dominando las Sentencias Using en C#: Importaciones, Alias y Directivas Estáticas