fbpx
ArduinoNovidade

Como utilizar o sensor de chuva com Arduino

O sensor de chuva é um componente eletrônico que, como o próprio nome diz, é capaz de detectar a presença de chuva ou água. Ele geralmente é usado em aplicações de automação residencial, sistemas de irrigação automática, sistemas de alerta de chuva para fechamento automático de janelas ou teto solar em veículos, e em sistemas de segurança contra inundação.

O sensor de chuva é formado por duas partes: um módulo eletrônico (à esquerda) e a placa metálica coletora (à direita), conforme a Figura 1.

Figura 1: Sensor de chuva.

O funcionamento do sensor de chuva é bem simples. A placa metálica coletora possui uma série de trilhas de cobre expostas que atuam como pontos de detecção. Quando a chuva ou respingos de água caem sobre essas trilhas, a água cria uma conexão elétrica entre elas.

O princípio por trás disso é que a água é um bom condutor de eletricidade, e quando ela está presente entre as trilhas de cobre, ela permite que a corrente elétrica flua através do circuito formado pelas trilhas. Essa corrente pode então ser detectada pela placa eletrônica conectada ao sensor.

A placa metálica coletora atua como um resistor variável, cuja resistência varia de acordo com a quantidade de água presente em sua superfície. Essa resistência é inversamente proporcional à quantidade de água. Desse modo:

  • Quanto mais água na superfície da placa coletora, melhor será sua condutividade e sua resistência será menor. Consequentemente, uma corrente elétrica mais alta fluirá pelo circuito;
  • Por outro lado, quando há menos água na superfície da placa coletora, sua condutividade será mais baixa e sua resistência elétrica será maior, resultando em uma corrente elétrica menor no circuito.
A imagem detalha o princípio de funcionamento do sensor de chuva.
Figura 2: Principio de funcionamento do sensor de chuva.

Essa mudança na corrente elétrica que circula pode ser medida e interpretada pelo módulo eletrônico associado ao sensor de chuva. Esse módulo produz uma tensão de saída de acordo com a resistência da placa metálica, que é disponibilizada no pino analógico (A0). Essa tensão também alimenta um comparador LM393, que o digitaliza e o disponibiliza no pino de saída digital (D0).

O módulo eletrônico conta com 4 pinos: VCC, GND, A0 e D0, conforme detalha a Figura 3.

Imagem do módulo eletrônico, seus pinos e especificações
Figura 3: Pinos do módulo eletrônico do sensor de chuva.
  • VCC: Pino de alimentação do módulo. Recomenda-se a utilização de uma fonte de alimentação entre 3,3V e 5V. A saída analógica irá variar dependendo da tensão fornecida;
  • GND: Pino de aterramento (GND);
  • D0: Pino de saída digital do módulo. É possível conectá-lo aos pinos digitais do microcontrolador para leitura dos dados ou diretamente a um relé de 5V ou dispositivo similar;
  • A0: Pino de saída analógica. É possível ler os dados analógicos do sensor conectando este pino a uma das entradas analógicas do microcontrolador.

O módulo conta também com um potenciômetro de ajuste de sensibilidade da saída digital (D0). Ao girar o potenciômetro no sentido horário a sensibilidade do sensor aumenta. Por sua vez, a sensibilidade diminui girando o potenciômetro no sentido anti-horário.

O módulo eletrônico conta com dois LEDs. O LED de alimentação acenderá quando o módulo for energizado. O LED da saída digital acenderá quando o sensor detectar chuva (nível lógico baixo).

Neste tutorial, exploraremos como utilizar o sensor de chuva com o Arduino. Vamos desenvolver um sistema que realizará leituras tanto analógicas quanto digitais do sensor, exibindo os dados resultantes no monitor serial. Além disso, vamos implementar indicadores visuais para informar quando o sensor detecta a presença de chuva ou não.


MATERIAIS NECESSÁRIOS


ESQUEMÁTICO DE LIGAÇÃO

Monte o circuito conforme a Figura 4 utilizando o Arduino, o sensor de chuva, a protoboard, os LEDs, os resistores e os jumpers.

Esquemático elétrico para uso do sensor de chuva em conjunto com a placa Arduino UNO. O circuito conta também com dois LEDs indicativos: O vermelho será acionado quando o sensor detectar chuva; o verde será ligado quando não estiver chovendo.
Figura 4: Circuito para utilização do sensor de chuva com o Arduino.

Ao montar seu circuito, observe os seguintes pontos:

  • O pino VCC do sensor deve ser alimentado com o 5V do Arduino;
  • O pino GND do sensor deve ser conectado ao pino GND do Arduino;
  • Conecte o pino analógico A0 do sensor à entrada analógica A5 do Arduino;
  • Conecte o pino digital D0 do sensor à porta digital 8 do Arduino;
  • Os polos negativos dos LEDs devem ser conectados ao GND do Arduino;
  • Para limitar a corrente dos LEDs utilize os resistores de 220 Ω;
  • O LED verde deve ser conectado à porta digital 4 do Arduino;
  • O LED vermelho deve ser conectado à porta digital 3 do Arduino.

ELABORANDO O CÓDIGO

Com o circuito montado, podemos proceder a programação do projeto que monitora a presença de chuva usando um sensor de chuva e indica o status através de LEDs verde e vermelho. Acompanhe os passos a seguir para melhor compreensão da lógica de programação:

1.Declarar as constantes atribuídas aos pinos de entrada e saída

Por meio da diretiva “#define” foi definido os pinos de entrada e saída do Arduino que serão utilizados na programação, sendo:

  • A porta analógica A0 atribuída à constante leituraAnalogica;
  • A porta digital 8 atribuída à constante leituraDigital;
  • A porta digital 3 atribuída à constante LedVermelho;
  • A porta digital 4 atribuída à constante LedVerde.

2. Declarar as variáveis

Serão utilizadas as variáveis valorAnalogico e valorDigital, que serão responsáveis por armazenar os dados de leitura do sensor.

3.Inicializar a comunicação serial e configurar as portas de entrada e saída

Na função setup(), inicializamos a comunicação serial por meio da instrução Serial.begin(9600);

Logo após, definimos as constantes atribuídas às portas do sensor de chuva como entrada e as constantes atribuídas às portas conectadas aos LEDs como saída.

4. Leitura analógica do sensor e exibição do valor lido

Na função loop(), realizamos a leitura analógica do sensor de chuva e armazenando o valor na variável valorAnalogico. Em seguida, a leitura será exibido no monitor serial, permitindo monitorar a intensidade percebida de chuva.

5. Leitura digital do sensor e indicador de chuva

Logo após, realizamos a leitura digital do sensor de chuva. O sensor retornará 0 (nível lógico baixo) quando o sensor detectar chuva e 1 (nível lógico alto) quando o sensor não estiver detectando chuva.

Sabendo disto, utilizamos a estrutura condicional if-else (se-senão) para verificar e exibir se está chovendo ou não, da seguinte maneira:

  • Se a leitura do sensor for igual a 0 (nível lógico baixo), a mensagem “Status: Chuva não detectada” será impressa no monitor serial e o LED indicador verde acenderá;
  • Senão (leitura do sensor igual a 1), a mensagem “Status: Chuva não detectada” será exibida no monitor serial e o LED indicador Vermelho será ligado.

Ao final, o código do monitor de chuva ficará da seguinte maneira:

/*
  ==              MONITOR DE CHUVA             ==
  ===============================================
  == BLOG DA ROBOTICA - www.blogdarobotica.com ==
  ===============================================
  Autor: Carol Correia Viana
  E-mail: contato@blogdarobotica.com
  Facebook: facebook.com/blogdarobotica
  Instagram:@blogdarobotica
  YouTube: youtube.com/user/blogdarobotica
  ===============================================
  == CASA DA ROBOTICA - www.casadarobotica.com ==
  ===============================================
  Facebook: facebook.com/casadaroboticaoficial
  Instagram:@casadarobotica
  ===============================================
*/

#define leituraAnalogica A5 //Atribui o pino A5 a variável leituraAnalogica
#define leituraDigital 8 //Atribui o pino 8 a variável leituraDigital 
#define LedVermelho 3 //Atribui o pino 3 a variável LedVermelho
#define LedVerde 4 //Atribui o pino 4 a variável LedVerde

int valorAnalogico; //Declaração da variável que armazenará o valor analógico do sensor de chuva
int valorDigital; //Declaração da variável que armazenara a saída digital do sensor de chuva

void setup() {
  Serial.begin(9600); //Incia a comunicação serial
  pinMode(leituraAnalogica, INPUT); //Define leituraAnalogica como entrada
  pinMode(leituraDigital, INPUT); //Define leituraDigital como entrada
  pinMode(LedVermelho, OUTPUT); //Define LedVermelho como saída
  pinMode(LedVerde, OUTPUT); //Define LedVerde como saída
}

void loop() {
  valorAnalogico = analogRead(leituraAnalogica); //Realiza a leitura analógica do sensor e armazena em valorAnalogico
  Serial.print("Valor analógico do sensor: "); //Imprime mensagem
  Serial.println(valorAnalogico); //Imprime no monitor serial o valor da saída analógica do sensor de chuva

  valorDigital = digitalRead(leituraDigital); //Realiza a leitura digital do sensor e armazena em valorDigital
  if (valorDigital == 0) { //Se esse valor for igual a 0, será mostrado no monitor serial que a chuva foi detectada e o led verde se acende
    Serial.println("Status: Chuva detectada");
    digitalWrite(LedVermelho, LOW);
    digitalWrite(LedVerde, HIGH);
  }
  else { // se esse valor for igual a 1, será mostrado no monitor serial que o solo está seco e o led vermelho se acende
    Serial.println("Status: Chuva não detectada");
    digitalWrite(LedVermelho, HIGH);
    digitalWrite(LedVerde, LOW);
  }
  delay(500); //Atraso de 500ms
}

O modo funcionamento deste projeto pode ser visualizado no Vídeo 1.

Espero ter ajudado,

Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!

Carol Correia Viana

Dúvidas? Deixe seu comentário

Carol Correia Viana

Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.

Deixe uma pergunta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.