Sistema de detecção precoce de inundação usando Arduino – código fonte
Inundação Precoce Monitoramento Sistema - Circuito e Código Fonte do Projeto
Nos países em desenvolvimento e não em desenvolvimento, as inundações são o desastre natural maciço que causa a perda de vidas e propriedades humanas e animais. Inundações devido a terremotos nos oceanos, furacões, chuvas e outros desastres naturais ocorrem em muitas partes do globo todos os anos.
Durante as chuvas, o sistema de drenagem não gerenciado em várias regiões geográficas leva a inundações e muitas vidas são perdidas. Se tivermos algum sistema que possa nos alertar antecipadamente sobre enchentes, poderemos salvar vidas de pessoas. Um sistema que usa tecnologia para detectar o aumento do nível da água e alertar as pessoas com antecedência para que muitas pessoas possam ser evacuadas.
Então neste projeto trazemos um protótipo que pode ser usado para detectar o nível de água em alguma lagoa, represa ou reservatório e enviar um alerta usando uma campainha. Este é apenas um protótipo em pequena escala no qual vamos usar um Arduino UNO, sensor ultrassônico, buzzer, LCD e alguns fios de conexão.
Projetos relacionados:
- Sistema Automático de Rega e Irrigação da Planta - Circuito, Código e Relatório do Projeto
- Circuito de Alarme de Chuva - Projeto Detector de Neve, Água e Chuva
Diagrama de circuito para detecção precoce de enchentes
Componentes obrigatórios
- Arduino UNO
- Sensor ultrassônico HC-SR04
- Sinalizador
- Tela LCD 16×2
- Jumper ou fios 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 um por um sobre os componentes usados neste circuito básico.
Arduino UNO
Arduino é uma plataforma de código aberto que é usada para desenvolver projetos eletrônicos. Ele 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 especificações diferentes de acordo com seu uso.
Neste projeto vamos usar o Arduino UNO para controlar eletrodomésticos automaticamente. Ele tem um microcontrolador ATmega328 IC nele que funciona com velocidade de clock de 16MHz. É um poderoso que pode trabalhar em protocolos de comunicação USART, I2C e SPI.
Esta placa geralmente é programada usando o software Arduino IDE usando um cabo micro USB. O ATmega328 vem com um carregador de inicialização integrado pré-programado, o que facilita o upload do código sem a ajuda do hardware externo. Tem vasta aplicação na confecção de projetos ou produtos eletrônicos. A linguagem C e C++ é usada para programar a placa que é muito fácil de aprender e usar.
Projetos relacionados:
- Diagrama de circuito do indicador de nível de água - dois projetos simples
- Controlador de nível de água totalmente automático usando SRF04
A IDE do Arduino facilita muito a programação. Ele separa o código em duas partes, ou seja, void setup() e void loop(). A função void setup() é executada apenas uma vez e usada principalmente para iniciar algum processo, enquanto void loop() consiste na parte do código que deve ser executada continuamente.
Este modelo consiste em 6 pinos de entrada analógica e 14 pinos GPIO digitais que podem ser usados como saída de entrada 6 dos quais fornecem saída PWM e analógica usando pinMode(), digitalWrite(), funções 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 por um cabo USB que opera em 5 volts ou por um conector DC que opera entre 7 e 20 volts. Há um regulador de tensão a bordo para gerar 3,3 volts para operar dispositivos de baixa potência.
Uma vez que o ATmega328 funciona no protocolo de comunicação USART, SPI e I2C, possui pinos 0 (Rx) e 1(Tx) para comunicação USART, SDA (A4) e SCL (A5) pinos para I2C e SS (10), MOSI (11), MISO (12) e SCK (13) pinos para protocolo de comunicação SPI.
Projetos relacionados:
- Campinha automática com detecção de objetos por Arduino
- Lâmpada noturna automática usando Arduino
Sensor ultrassônico HC-SR04
O HC-SR04 é um sensor ultrassônico que ajuda a medir distâncias em muitos lugares sem contato humano. Funciona com o mesmo princípio do RADAR e do SONAR e fornece uma maneira eficiente de medir distâncias de maneira muito precisa.
Teoricamente pode medir distâncias de até 450 cm, mas na prática pode medir distâncias de 2 cm a 80 cm com precisão de 3 mm. É operado em 5 volts, corrente inferior a 15mA e frequência de 40 Hertz.
O HC-SR04 tem um transmissor e um receptor instalados nele. A distância é calculada com a fórmula básica de velocidade, distância e tempo que todos estudamos em nossa escola, ou seja,
Distância =Velocidade x Tempo
O transmissor do sensor HC-SR04 transmite uma onda ultrassônica no ar. Se esta onda é refletida por algum objeto no alcance do sensor, então a onda refletida no ar é recebida pelo receptor do sensor. Então, para calcular a distância usando a fórmula acima, devemos saber a velocidade e o tempo.
Sabemos que a velocidade universal da onda ultrassônica é de cerca de 330 m/s. O tempo é medido pelo circuito construído no microcontrolador. O pino de eco fica alto pelo período de tempo que a onda ultrassônica leva para retornar ao receptor. Desta forma podemos calcular a distância entre o objeto e o sensor ultrassônico HC-SR04.
Projetos relacionados:
- Sistema de Controle Automático de Portões Ferroviários – Circuito e Código Fonte
- Circuito do detector de velocidade do carro - Código de funcionamento e fonte
Interface HC-SR04 com Arduino UNO
O sensor ultrassônico HC-SR04 pode ser usado com todos os microcontroladores como Arduino, PIC, Raspberry Pi, etc. Neste projeto vamos fazer a interface do sensor ultrassônico HC-SR04 com Arduino UNO . O módulo HC-SR04 possui quatro pinos:VCC, GND, Trig e Echo.
Nós alimentamos o módulo HC-SR04 com 5 volts e GND para o Arduino UNO. O pino de disparo e o pino de eco são os pinos de entrada e saída, portanto, eles devem ser conectados aos pinos de entrada e saída do Arduino UNO. Então, para medir a distância, primeiro definimos o pino do gatilho para “alto” por 10 microssegundos e depois definimos para “baixo”.
Isto irá gerar uma onda ultrassônica de frequência de 40 kHz que vai para o objeto e reflete de volta para o receptor do módulo. Se a onda detecta algum objeto, ela retorna imediatamente para a parte receptora do módulo e o pino de eco fica “alto” pelo período de tempo em que retorna ao sensor.
Agora esse período de tempo multiplicado pela velocidade da onda que é 330 m/s nos dá a distância entre o módulo HC-SR04 e o objeto.
Postagem relacionada:
- Sistema de automação residencial inteligente – Circuito e código-fonte
- Programação PWM do Arduino e suas funções no Arduino
Tela LCD 16×2
Fazer interface de LCD 16 X 2 com Arduino UNO é bem fácil. Existem vários tipos de LCDs disponíveis no mercado, mas o que estamos usando neste projeto é 16×2, o que significa que possui duas linhas e em cada linha podemos exibir 16 caracteres.
Este módulo possui o driver HD44780 da Hitachi, que ajuda na interface e na comunicação com os microcontroladores. Este LCD pode funcionar no modo de 4 bits e no modo de 8 bits. No modo de 4 bits, apenas 4 pinos de dados são necessários para estabelecer a conexão entre o LCD e o microcontrolador, enquanto no modo de 8 bits são necessários 8 pinos de dados.
Aqui vamos usá-lo no modo de 4 bits, pois requer menos fios e simplifica o circuito. Vejamos a descrição dos pinos do LCD 16×2.
Descrição do pino do módulo LCD 16×2:
Fixar no LCD | Descrição |
VSS | Pino de aterramento |
VCC | Fonte de alimentação +5V |
VEE | Pin para alterar o contraste do LCD |
RS | Registrar Seleção:Modo de dados ou Modo de comando |
RW | Modo de leitura ou gravação |
E | Ativar LCD |
DB0-DB7 | Dados e comandos são alimentados usando esses pinos |
LED+ | Anodo do LED de luz de fundo |
LED- | Catodo do LED de luz de fundo |
Este LCD não possui luz própria, portanto, há um LED atrás da tela que atua como luz de fundo da tela. A interface deste LCD com o Arduino UNO é muito fácil, pois o Arduino IDE fornece uma biblioteca LiquidCrystal que possui muitas funções embutidas para facilitar a inicialização e a impressão de qualquer coisa na tela. As funções do LCD que vamos usar principalmente 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 básico de forma que o transmissor e o receptor fiquem voltados para o nível da água. O Arduino UNO medirá a distância entre o sensor e o nível da água.
O LCD imprimirá a distância entre eles. Vamos definir algum ponto de referência para o nível de inundação e, à medida que a água atingir o ponto de referência, definiremos a campainha para 'alto' e o LCD imprimirá o texto alertando sobre a inundação.
Explicação do código
#include
LiquidCrystal lcd(2,3,4,5,6,7);
lcd.begin(16,2);
A biblioteca embutida para display LCD está incluída. A função LiquidCrystal lcd() pega o número do pino dos dados conectados ao Arduino UNO. Lcd.begin() inicia o LCD 16×2.
pinMode(18,OUTPUT); //trigger pin
pinMode(19,INPUT); //echo pin
pinMode(20,OUTPUT); //buzzer
Os pinos 18 e 20 são definidos como pinos de saída para trigger e buzzer, respectivamente, e o pino 19 é definido como entrada para o pino de eco.
t=pulseIn(19,HIGH);
dist=t*340/20000;
variável de tempo 't' detecta a quantidade de tempo até que o pino do gatilho seja definido como alto, que é usado para calcular o tempo em centímetros e armazenar o valor 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 a condição de inundação quando a distância entre o nível da água e o sensor ultrassônico se torna 40cm. Assim, quando o nível da água atingir 40 cm ou menos, a campainha será definida como ALTO para dar alerta e o LCD imprimirá e mostrará a mensagem de alerta de inundação.
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); //trigger pin
pinMode(19,INPUT); //echo pin
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 temporizador IC 4017 e 555
- Diagrama simples do circuito do carregador de celular - 5V de 230V AC
- Circuito de comutação de relé eletrônico - Comutadores de relé de canal NPN, PNP, N &P
- Diagrama de circuito de roleta de LED usando temporizador 555 e contador 4017
- Disjuntor eletrônico - esquema e funcionamento
- Diagrama de circuito do detector de movimento infravermelho
- Circuito de comutação sensível ao toque simples
- Diagrama de circuito do dobrador de tensão básico usando 555 Timer IC
- Diagrama de circuito de fonte de alimentação dupla - 230VAC a ±12VDC
- Diagrama simples do circuito do carregador de celular - 5V de 230V AC
Tecnologia industrial
- C# usando
- Usando o Symphony Link como um sistema de detecção de vazamento de água para data centers
- Sistema de controle de dispositivo baseado em temperatura usando LM35
- Decodificador DTMF usando apenas Arduino
- Sistema de atendimento usando Arduino e RFID com Python
- Sistema de detecção de humanos usando Arduino Uno
- Sistema de alarme Arduino:SERENA
- Sistema de monitoramento e detecção de incêndios florestais (com alertas SMS)
- Um sistema de detecção de queda baseado em Arduino, Windows e Azure
- 5 vantagens de usar o sistema de detecção de vazamento de água alimentado por IoT Biz4intellias nas indústrias