11 junho 2014

Ligando um sensor de chuva ao Arduino

Preparado para a época de chuvas ? Não ? Que tal uma ajudinha com o Arduino ?

Utilize um sensor de chuva como esse da foto abaixo, para que você consiga fechar uma janela  quando não estiver em casa ou acionar uma bomba para armazenar água da chuva.


sensor de chuva arduino


O sensor de chuva para Arduino é um componente com duas partes : a placa do sensor, formada por várias trilhas resistentes à oxidação, que vão detectar o nível de líquido que está atingindo a placa, e o módulo com chip comparador LM393, que é o responsável por ler as informações desse sensor e enviar os dados pelas pinos A0 (analógico), ou D0 (digital - valores 0 e 1).

Esse módulo também tem um potenciômetro para ajuste de sensibilidade, um led vermelho para indicação de LIGADO, e um led verde que indica a transmissão de dados :

Sensor de chuva Arduino - Pinos e Leds

Voltando aos exemplos que eu citei no início do post, você pode utilizar um motor ligado à saída digital para abrir (sem chuva - nível HIGH) ou fechar (com chuva - nível LOW) uma janela quando for detectada chuva, e com a saída analógica você pode abrir uma válvula ou acionar uma bomba dependendo da intensidade da chuva, lendo os valores de 0 à 1023 fornecidos por essa porta.

Teste o seu módulo com apenas 3 leds e 3 resistores, montando o circuito abaixo. O módulo pode ser alimentado com tensões de 3.3 à 5 volts :

Circuito Sensor de Chuva Arduino Uno
O programa de teste lê as informações do sensor e acende os leds de acordo com o nível de líquido detectado, testando os valores lidos em uma série de comandos IF (SE), que podem ser acrescentados ou alterados de acordo com o nível de precisão desejada :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Programa : Teste sensor de chuva
// Autor : Arduino e Cia

int pino_d = 2; //Pino ligado ao D0 do sensor
int pino_a = A5; //Pino ligado ao A0 do sensor
int val_d = 0; //Armazena o valor lido do pino digital
int val_a = 0; //Armazena o valor lido do pino analogico

// Portas ligadas aos leds
int pino_led_verde = 5;
int pino_led_amarelo = 6;
int pino_led_vermelho = 7;

void setup()
{
  // Define os pinos do sensor como entrada
  pinMode(pino_d, INPUT);
  pinMode(pino_a, INPUT);

  // Define os pinos dos leds como saida
  pinMode(pino_led_verde, OUTPUT);
  pinMode(pino_led_amarelo, OUTPUT);
  pinMode(pino_led_vermelho, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  //Le e arnazena o valor do pino digital
  val_d = digitalRead(pino_d);
  //Le e armazena o valor do pino analogico
  val_a = analogRead(pino_a);
  //Envia as informacoes para o serial monitor
  Serial.print("Valor digital : ");
  Serial.print(val_d);
  Serial.print(" - Valor analogico : ");
  Serial.println(val_a);
 
  // Acende o led de acordo com a intensidade 
  if (val_a >900 && val_a <1024)
  {
    // Acende led verde - intensidade baixa
    digitalWrite(pino_led_verde, HIGH);
    digitalWrite(pino_led_amarelo, LOW);
    digitalWrite(pino_led_vermelho, LOW);
  }
  if (val_a >400 && val_a <900)
  {
    // Acende led amarelo - intensidade moderada
    digitalWrite(pino_led_verde, LOW);
    digitalWrite(pino_led_amarelo, HIGH);
    digitalWrite(pino_led_vermelho, LOW);
  }
  if (val_a > 0 && val_a <400)
  {
    // Acende led vermelho - intensidade alta
    digitalWrite(pino_led_verde, LOW);
    digitalWrite(pino_led_amarelo, LOW);
    digitalWrite(pino_led_vermelho, HIGH);
  }
  delay(1000);
}

Caso você queira testar apenas o sensor, sem montar todo o circuito, os valores também são exibidos no serial monitor :

Sensor de Chuva Arduino - Serial Monitor

O funcionamento do circuito teste você confere no vídeo abaixo :


15 comentários:

  1. Camarada, a comparação (val_a >900 && val_a >1022) tá se repetindo. val_a val_a

    ResponderExcluir
    Respostas
    1. Bom dia,

      No meu programa não tem essa linha....

      Abraço !

      Excluir
  2. Olá Arduino e Cia.

    Teria como me passar o link ou o arquivo de onde você conseguiu o fritzing das partes do sensor de chuva??

    Obrigado.
    Att,
    Wesley Ricci

    ResponderExcluir
  3. Boa noite amigo .. Queria saber se esse sensor de chuva posso instalar numa cobertura retrátil que tem um motor elétrico de portão ???

    ResponderExcluir
    Respostas
    1. Boa noite,

      Pode instalar sim. Você só vai precisar de algum circuito auxiliar (talvez um módulo relé) para acionar o motor.

      Abraço!

      Excluir
  4. irmão, bom dia, gostaria de saber como seria a programação em arduino para esse mesmo sensor, no entanto funcionando junto com um servo motor, ao inves de led, simulando quem sabe um para brisa, no momento que fosse detectado agua no sensor o servo começa - se a se mover os graus por exemplo ( 0º a 170º ) havendo ou não delay entre os angulos, abraço

    ResponderExcluir
  5. Estou fazendo um projeto, onde o varal de roupas comum, se recolhe quando estiver chovendo. Posso utiliar este comando, cm o sensor para detectar chuva, para dar um "Start" no circuito de comando do motor q retraí o varal?

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Pode usar sim, perfeitamente. Você pode usar o valor da porta de saída para acionar, por exemplo, um relé que vai ligar o motor.

      Abraço!

      Excluir
  6. Olá amigo! Gostaria de ratificar a pergunta do "Unknown"

    "Gostaria de saber como seria a programação em Arduino para esse mesmo sensor, no entanto, funcionando junto com um servo-motor que, ao invés de Leds, simulasse, por exemplo, um para-brisa. No momento que fosse detectado água no sensor, o servo atuasse de 0-90 graus e, após, 90-0 graus; Obrigado

    ResponderExcluir
  7. Em relação a pergunta do "Unknown", repito a mesma mas, seria com um motor de passo e/ou servo-motor; então, o que mudaria no código para substituir os Leds por motores? por exemplo, chovendo, o motor gira 2000 passos e, parando a chuva, o motor volta ao 0 (zero) - obrigado

    ResponderExcluir
  8. Bom dia.

    Eu estava pensando em fazer alguma coisa que medisse o nível de chuva, tipo quantos milímetros choveu no dia. Hoje usamos um recipiente que coleta a agua da chuva e no final do dia vamos com um régua e medimos o nível da água em milímetros.

    Seria possível automatizar essa medição usando um sensor desses dentro do recipiente de modo que ele registrasse a cada minuto o nível da chuva?

    ResponderExcluir
    Respostas
    1. Oi Rodrigo,

      Eu já vi alguns sensores industriais ultrassônicos que conseguem fazer esse tipo de medição de líquidos com precisão, acho que é só questão de adaptar para o Arduino.

      Abraço!

      Excluir
    2. Existe um sensor similar a este, aonde a resistência de medição de líquidos é formada por barras paralelas, e com ela é possível medir o nível de água. O sensor é o mesmo tanto a medição quanto as conexões, visto que é um sensor de umidade, o que muda é a resistência que pode ser do tipo higrômetro, chuva, nível, etc.

      http://ecx.images-amazon.com/images/I/41%2BMdkRG2tL._SY355_.jpg

      Excluir
    3. Como ligar esse sensor, Douglas?

      Excluir
  9. boa noite! gostei muito da ideia, eu queria saber, se voce ja tem o projeto para abrir a janela a partir deste, e se nao tiver, se voce poderia fazer! agredeço desde já

    ResponderExcluir