MÓDULO SENSOR DE CHUVA: DETECTANDO LIQUIDO
Neste tutorial vamos ensinar a utilizar o sensor de chuva com arduino para projetos que precisam da detecção de água. Antes de mais nada utilizaremos um sensor de chuva para atuar na detecção de partículas liquidas.
O que é o módulo sensor de chuva?
Este sensor como todos os outros trabalha com os conceitos físicos.
— Funcionamento
Precipuamente, o sensor de chuva usa da reflexão e refração da luz infravermelha para seu funcionamento que como por exemplo em um para-brisa a propriedade de reflexão é aplicada a ele e o sensor de chuva inicia seu trabalho. Quando há a presença de partículas de chuva no para-brisa o recebimento da luz infravermelho diminui, ou seja, quando há presença de algum líquido, a quantidade de luz recebida pelo sensor diminui, alterando a leitura desse infravermelho do sensor. Então, o sensor de chuva consegue detectar essa diferença na reflexão.
– Os terminais deste sensor são:
- VCC(+) – Tensão de entrada, entre 3,3 a 5 volts
- GND(-) – O pino de O V do módulo, conectado ao GND do Arduino ou fonte
- Saida Analogica(A0) – Pino de saída analogica (retorna o valor da intensidade do som captado)
- Saída Digital(D0)– Pino de saída digital (retorna HIGH ou LOW)
Módulo do sensor de chuva
Mãos à obra — Configurando um sensor de chuva
Componentes Necessários
- 1 x Arduino Uno R3
- 1 x Módulo sensor de chuva
- 1 x Protoboard
- 1 x LED
- 1 x Resistor de 150Ohms
- Jumpers Macho x Macho
- Jumpers Macho x Fêmea
- Jumpers Femea x Fêmea (Já vem com o sensor)
– Montando o projeto:
A princípio vamos utilizar os jumpers que vem com a placa sensora para conectar ela ao módulo de leitura. Já os jumpers não possuem distinção, ou seja, podem ser conectados de ambos os lados. Ligue ao módulo de leitura. Conectaremos o VCC do módulo no 5V do arduino, o GND do módulo no negativo(-) da protoboard e o pino D0 do módulo no pino digital 3 do arduino. Na protoboard vamos conectar o LED sendo que a perna menor do LED será conectada ao negativo(-) da protoboard e a perna maior no resistor de 150ohms. Por outro lado, a outra extremidade do resistor este será conectada ao pino digital 12 do arduino. Enfim, o GND do arduino ao negativo(-) da protoboard para assim fechar o circuito. Veja o circuito abaixo:
Diagrama de montagem do sensor de chuva
– Programando o Arduino:
Agora vamos conectar o arduino no computador e abrir a IDE arduino. Escreva o programa abaixo na IDE e compile o programa para o seu arduino.
Antes de carregar o programa, você precisa selecionar qual porta você deseja usar para fazer o carregamento do seu programa no Arduino (upload). Dentro do Arduino IDE, clique no menu Ferramentas (tools) e abra o submenu Porta(Port). Clique na porta que seu Arduino está conectado, tal como COM3 ou COM4. Geralmente aparece o nome da placa Arduino : “COM3 (Arduino/Genuino Uno)”.
#define pinoLed 12 //PINO DIGITAL UTILIZADO PELO LED #define pinoSensor 3 //PINO DIGITAL UTILIZADO PELO SENSOR int lersensor = 0;// DECLARA UMA VARIAVEL CHAMADA lersensor E ATRIBUA A ELA O VALOR 0 void setup(){ pinMode(pinoSensor, INPUT); //DEFINE O PINO COMO ENTRADA pinMode(pinoLed, OUTPUT); //DEFINE O PINO COMO SAÍDA } void loop(){ lersensor = digitalRead(pinoSensor); if(lersensor == LOW){ //SE A LEITURA DO PINO FOR IGUAL A LOW, FAZ digitalWrite(pinoLed, HIGH); //ACENDE O LED }else//SENÃO, FAZ { digitalWrite(pinoLed, LOW); //APAGA O LED }
Enfim, quando tudo estiver correto o sensor de chuva ficará constantemente em nível lógico alto (HIGH) enquanto a placa sensora estiver seca. Quando ela começa a receber pingos, o nível lógico vai para baixo (LOW). Caso queira ou aja necessidade também é possível realizar a leitura analógica dos valores lidos e assim poder agir gradativamente conforme a chuva.
ATENÇÃO: não esqueça de definir a placa e a porta que esta utilizando para carregar o programa.
Imagem do circuito do sensor de chuva funcionando
Como resultado temos que ao detectar uma quantidade de líquido pre-determinado, ajustando a sensibilidade no potenciômetro(trimpot), o LED acenderá.
Potenciômetro do sensor para a regulação de sensibilidade
Entendendo a fundo:
Software
— Definições e variáveis utilizadas no projeto do sensor de chuva com arduino
A instrução #define apenas associa as portas dos pinos do arduino a nomes referente aos componentes conectados nestes pinos. Logo depois as variáveis declaradas com o tipo int são atribuídas a elas valores escolhidos pelo programador.
#define pinoLed 12 //PINO DIGITAL UTILIZADO PELO LED #define pinoSensor 3 //PINO DIGITAL UTILIZADO PELO SENSOR int lersensor = 0;// DECLARA UMA VARIÁVEL CHAMADA "lersensor" E ATRIBUI-LHE O VALOR "0"
— Função Setup – Definindo pinos do sensor de chuva com arduino
A função setup é aquela que ira rodar apenas uma vez quando nosso programa for iniciado. Ela é do tipo void, ou seja, não tem retorno e também não tem parâmetros de entrada. A função pinMode define que o pino do sensor será uma entrada e o pino do led será uma saída.
void setup(){ pinMode(pinoSensor, INPUT); //DEFINE O PINO COMO ENTRADA pinMode(pinoLed, OUTPUT); //DEFINE O PINO COMO SAÍDA }
— Função Loop – Leitura do nosso sensor de chuva com arduino e Estruturas de decisão
Em analogia, a função loop ao contrário da setup roda tudo que estiver dentro dela varias vezes em um loop constante até que seja reiniciado ou parado o programa. Na variável lersensor será atribuído a leitura do pino digital 3 que está o sensor. Logo apos, temos a estrutura de decisão if. Primeiramente, caso a variável lersensor seja igual ao nível logico baixo, já que o sensor não está detectando a luz infravermelha, então será executado a função no if. Em contrapartida, se a variável lersensor for igual ao nível logico alto significa que o sensor está detectando a luz infravermelha e que a condição dentro do if é falsa, então não possui liquido sobre o sensor. Assim sendo, será executado o else.
A função digitalWrite irá escrever no pino digital 12 onde está o LED (declarado anteriormente como saída), nível logico alto ou nível logico baixo dependendo se a condição dentro dos parenteses da estrutura de decisão if for verdadeira ou falsa.
void loop(){ lersensor = digitalRead(pinoSensor); if(lersensor == LOW){ //SE A LEITURA DO PINO FOR IGUAL A LOW, FAZ digitalWrite(pinoLed, HIGH); //ACENDE O LED }else//SENÃO, FAZ { digitalWrite(pinoLed, LOW); //APAGA O LED }
Hardware
— Trimpot:
No módulo de leitura existe um potenciômetro(trimpot) para o ajustar de quando o sensor entenderá como chuva ou seco. Dependendo da intensidade da chuva que você pretende sentir.
Considerações finais:
Neste tutorial mostramos como funciona e como utilizar o sensor de chuva. Semelhantemente a ele tem o sensor de umidade, esperamos que você continue nos acompanhando e sinta-se à vontade para nos dar sugestões, críticas ou elogios. Lembre-se de deixar suas dúvidas nos comentários abaixo.