Sistema de Detecção Precoce de Enchentes com Arduino – Código Fonte e Projeto de Circuito
Sistema de Monitoramento de Enchentes Inicial – Circuito e Código Fonte do Projeto
Em países em desenvolvimento e desenvolvidos, enchentes são desastres naturais massivos que causam perda de vidas humanas, animais e propriedades. Enchentes devido a terremotos nos oceanos, furacões, chuvas e outros desastres naturais ocorrem em muitas partes do globo todos os anos.
Durante chuvas, sistemas de drenagem não gerenciados em várias regiões geográficas levam a enchentes e muitas vidas são perdidas. Se tivermos algum sistema que nos dê alerta precoce sobre enchentes, podemos salvar vidas. Um sistema que usa tecnologia para detectar aumento no nível da água e alertar as pessoas antecipadamente para que muitas possam ser evacuadas.
Neste projeto, trazemos um protótipo que pode detectar nível de água em lago, represa ou reservatório e enviar alerta usando um buzzer. É apenas um protótipo em pequena escala no qual usaremos Arduino UNO, sensor ultrassônico, buzzer, LCD e alguns fios de conexão.
Projetos Relacionados:
- Sistema Automático de Rega e Irrigação de Plantas – Circuito, Código e Relatório do Projeto
- Alarme de Chuva – Projeto Detetor de Neve, Água e Chuva
Diagrama de Circuito para Detecção Precoce de Enchentes

Componentes Necessários
- Arduino UNO
- Sensor Ultrassônico HC-SR04
- Buzzer
- Display LCD 16x2
- Fios jumper ou de conexão
Projetos Relacionados:
- Medição de Distância Usando Arduino e Sensor Ultrassônico
- Fonte de Alimentação Variável Usando Arduino UNO – Circuito e Código
Agora, vamos aprender sobre os componentes usados neste circuito básico um por um.
Arduino UNO
Arduino é uma plataforma de código aberto usada para desenvolver projetos eletrônicos. Pode ser facilmente programado, apagado e reprogramado a qualquer momento. Existem muitas placas Arduino disponíveis no mercado como Arduino UNO, Arduino Nano, Arduino Mega, Arduino LilyPad etc. com diferentes especificações conforme seu uso.
Neste projeto, usaremos Arduino UNO para controlar eletrodomésticos automaticamente. Ele possui microcontrolador ATmega328 que roda a 16MHz. É poderoso e pode trabalhar com protocolos de comunicação USART, I2C e SPI.
Esta placa é geralmente programada usando software Arduino IDE via cabo micro USB. ATmega328 vem com bootloader pré-programado a bordo, o que facilita o upload do código sem hardware externo. Tem vasta aplicação na criação de projetos ou produtos eletrônicos. Linguagem C e C++ é usada para programar a placa, que é muito fácil de aprender e usar.
Projetos Relacionados:
- Circuito Indicador de Nível de Água – Dois Projetos Simples
- Controlador Totalmente Automático de Nível de Água usando SRF04
Arduino IDE facilita muito a programação. Separa o código em duas partes: void setup() e void loop(). A função void setup() roda apenas uma vez e é usada principalmente para iniciar processos, enquanto void loop() contém a parte do código que deve ser executada continuamente.
Este modelo possui 6 pinos de entrada analógica e 14 pinos GPIO digitais que podem ser usados como entrada/saída, 6 dos quais fornecem saída PWM e analógica usando funções pinMode(), digitalWrite(), digitalRead() e analogRead(). 6 canais de entrada analógica são dos pinos A0 a A5 e fornecem resolução de 10 bits.
A placa pode ser alimentada via cabo USB que opera a 5 volts ou por conector DC que opera entre 7 a 20 volts. Há regulador de tensão a bordo para gerar 3.3 volts para operar dispositivos de baixa potência.
Como o ATmega328 trabalha com protocolos USART, SPI e I2C, possui pinos 0 (Rx) e 1 (Tx) para comunicação USART, SDA (A4) e SCL (A5) para I2C e SS (10), MOSI (11), MISO (12) e SCK (13) para protocolo SPI.
Projetos Relacionados:
- Campainha Automática com Detecção de Objeto por Arduino
- Lâmpada Noturna Automática Usando Arduino
Sensor Ultrassônico HC-SR04
HC-SR04 é um sensor ultrassônico que ajuda a medir distâncias em muitos locais sem contato humano. Funciona no mesmo princípio de RADAR e SONAR e fornece uma forma eficiente de medir distâncias de forma muito precisa.
Teoricamente pode medir distâncias até 450 cm, mas praticamente mede de 2 cm a 80 cm com precisão de 3 mm. Opera a 5 volts, corrente menor que 15mA e frequência de 40 Hertz.

O HC-SR04 tem um transmissor e um receptor instalados. A distância é calculada com a fórmula básica de velocidade, distância e tempo que todos estudamos na escola:
Distância = Velocidade x Tempo
O transmissor do sensor HC-SR04 transmite uma onda ultrassônica no ar. Se esta onda for refletida por algum objeto no alcance do sensor, a onda refletida é recebida pelo receptor do sensor. Para calcular a distância usando a fórmula acima, devemos conhecer a velocidade e o tempo.
Sabemos que a velocidade universal da onda ultrassônica é cerca de 330 m/s. O tempo é medido pelo circuito construído no microcontrolador. O pino echo fica alto pelo período de tempo que a onda ultrassônica leva para retornar ao receptor. Assim, podemos calcular a distância entre o objeto e o sensor ultrassônico HC-SR04.
Projetos Relacionados:
- Sistema Automático de Controle de Porta Ferroviária – Circuito e Código Fonte
- Circuito Detetor de Velocidade de Carro – Funcionamento e Código Fonte
Interface HC-SR04 com Arduino UNO
Sensor ultrassônico HC-SR04 pode ser usado com todos microcontroladores como Arduino, PIC, Raspberry Pi, etc. Neste projeto, vamos interligar sensor ultrassônico HC-SR04 com Arduino UNO. O módulo HC-SR04 tem quatro pinos: VCC, GND, Trig e Echo.
Alimentamos o módulo HC-SR04 com 5 volts e GND ao Arduino UNO. O pino trigger e Echo são pinos de entrada e saída, então devem ser conectados aos pinos de entrada e saída do Arduino UNO. Para medir a distância, primeiro definimos o pino trigger como "high" por 10 microssegundos e depois como "low".
Isso gerará uma onda ultrassônica de frequência 40 kHz que vai ao objeto e reflete de volta ao receptor do módulo. Se a onda detectar algum objeto, retorna imediatamente à parte receptora do módulo e o pino echo fica "high" pelo período de tempo que retorna ao sensor.
Agora, este período de tempo multiplicado pela velocidade da onda (330 m/s) nos dá a distância entre o módulo HC-SR04 e o objeto.
Post Relacionado:
- Sistema de Automação Residencial Inteligente – Circuito e Código Fonte
- Programação PWM Arduino e suas funções no Arduino
Display LCD 16x2
Interligar LCD 16x2 com Arduino UNO é bem fácil. Existem vários tipos de LCDs no mercado, mas o que usamos neste projeto é 16x2, o que significa que tem duas linhas e em cada linha podemos exibir 16 caracteres.
Este módulo tem driver HD44780 da Hitachi que ajuda a interligar e comunicar com microcontroladores. Este LCD pode trabalhar em modo 4 bits e 8 bits. No modo 4 bits, apenas 4 pinos de dados são necessários para estabelecer conexão entre LCD e microcontrolador, enquanto no modo 8 bits, 8 pinos de dados são necessários.
Aqui vamos usar no modo 4 bits, pois requer menos fios e simplifica o circuito. Vamos ver a descrição dos pinos do LCD 16x2.

Descrição dos Pinos do Módulo LCD 16x2:
| Pino no LCD | Descrição |
| VSS | Pino Terra |
| VCC | Alimentação +5V |
| VEE | Pino para ajustar contraste do LCD |
| RS | Seleção de Registro: Modo Dados ou Comando |
| RW | Modo Leitura ou Escrita |
| E | Habilita LCD |
| DB0-DB7 | Dados e comando são alimentados usando estes pinos |
| LED+ | Anodo do LED de backlight |
| LED- | Catodo do LED de backlight |
Este LCD não tem luz própria, então há um LED atrás da tela que atua como backlight. Interligar este LCD com Arduino UNO é fácil pois Arduino IDE fornece biblioteca LiquidCrystal com muitas funções embutidas para inicializar e imprimir no display. As funções LCD que usaremos neste projeto são:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); lcd.begin() lcd.clear() lcd.print()
Funcionamento do Sistema de Detecção Precoce de Enchentes e Código Fonte
Um sensor ultrassônico será colocado em algum nível base de forma que transmissor e receptor fiquem voltados para o nível da água. Arduino UNO medirá a distância entre sensor e nível da água.
O LCD imprimirá a distância entre eles. Definiremos um parâmetro para nível de enchente e, quando a água atingir o parâmetro, acionaremos o buzzer para 'high' e o LCD imprimirá texto alertando sobre a enchente.
Explicação do Código
#include LiquidCrystal lcd(2,3,4,5,6,7); lcd.begin(16,2);
A biblioteca embutida para display LCD é incluída. A função LiquidCrystal lcd() recebe os números dos pinos de dados conectados ao Arduino UNO. Lcd.begin() inicia o LCD 16x2.
pinMode(18,OUTPUT); //pino trigger pinMode(19,INPUT); //pino echo pinMode(20,OUTPUT); //buzzer
Pinos 18 e 20 são definidos como saída para trigger e buzzer, respectivamente, e pino 19 como entrada para echo.
t=pulseIn(19,HIGH); dist=t*340/20000;
Variável de tempo 't' detecta o tempo até o pino trigger ficar high, usado para calcular distância em centímetros e armazenar na variável 'dist'.
if(dist<40) { digitalWrite(20,HIGH); lcd.clear(); lcd.setCursor(0,1); lcd.print("Water level is rising. Kindly evacuate"); delay(2000); } else { digitalWrite(20,LOW); delay(2000); }
Neste código, definimos condição de enchente como distância entre nível da água e sensor ultrassônico se tornar 40cm. Assim, quando nível da água atingir 40 cm ou menos, o buzzer será acionado HIGH para alerta e LCD mostrará mensagem de alerta de enchente.
Código Fonte Completo:
#include LiquidCrystal lcd(2,3,4,5,6,7); float t = 0; float dist = 0; void setup() { lcd.begin(16,2); pinMode(18,OUTPUT); //pino trigger pinMode(19,INPUT); //pino echo pinMode(20,OUTPUT); //buzzer lcd.setCursor(0,1); lcd.print(" Water Level Detector"); 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("Distance : "); lcd.print(dist/100); lcd.print(" m"); delay(1000); if(dist<40) { digitalWrite(20,HIGH); lcd.clear(); lcd.setCursor(0,1); lcd.print("Water level is rising. Kindly evacuate"); delay(2000); } else { digitalWrite(20,LOW); delay(2000); } }
Projetos Relacionados:
- Projeto Eletrônico de Controle de Semáforo usando CI 4017 e Timer 555
- Diagrama de Circuito Carregador de Celular Simples – 5V de 230V CA
- Circuito Chave Relé Eletrônico – NPN, PNP, Canais N e P
- Diagrama de Circuito Roleta LED usando Timer 555 e Contador 4017
- Disjuntor Eletrônico – Esquemático e Funcionamento
- Circuito Detetor de Movimento Infravermelho
- Circuito Chave Sensível ao Toque Simples
- Diagrama de Circuito Dobrador de Tensão Básico usando CI Timer 555
- Circuito Fonte Dupla – 230VCA para ±12VCC
- Diagrama de Circuito Carregador de Celular Simples – 5V de 230V CA
Tecnologia industrial
- Dominando Declarações Using em C#: Imports, Aliases e Diretivas Estáticas
- Symphony Link: Detecção Confiável de Vazamento de Água para Data Centers
- Sistema de Controle de Temperatura Baseado em LM35 com Microcontrolador AT89S52
- Construa um Decodificador DTMF Usando Apenas um Arduino – Sem CIs Externos
- Sistema de Presença RFID Confiável com Arduino e Python
- Robô de Detecção Humana Baseado em Arduino Uno: Integração de Sensores Passo a Passo
- SERENA: Sistema de Alarme Personalizado Arduino Mega 2560 com Touchscreen TFT LCD
- Sistema de Monitoramento de Incêndio Florestal em Tempo Real com Alertas SMS
- Sistema Avançado de Detecção de Quedas com Arduino, Windows IoT e Azure Cloud
- Por que a Detecção de Vazamento de Água IoT da Biz4Intellia Impulsiona a Eficiência Industrial – 5 Vantagens Principais