Em nosso departamento de telemetria, buscamos fazer uso dos dados coletados no veículo de modo que possam ter alguma aplicabilidade prática, além de toda a análise de dados comuns. Com isso, desenvolvemos uma maneira de se utilizar o sensor de chuva e de água para realizar um projeto de limpador de para-brisa autônomo, fazendo uso de um sensor de chuva ou um sensor de água e de um servomotor.
Utilização do sensor de chuva
O sensor de chuva HW-028 pode ser utilizado para detectar quando a água entra em contato com sua superfície. Ele possui um módulo que é diretamente conectado a ele, o módulo possui os pinos GND, VCC, A0 e D0, há também dois LEDS e um potenciômetro, sendo um dos LEDS usado para indicar que o sensor está ligado e o outro para quando o sinal enviado pelo sensor de chuva é menor que o definido utilizando o potenciômetro.

O funcionamento do sensor é bem simples, quando completamente seco ele transmite pela saída analógica o valor numérico 1023, e conforme sua superfície vai sendo coberta por água o sinal diminui. Esse sensor nos dá dois caminhos diferentes de trabalho, cada um ideal para objetivos específicos.
Utilizando o potenciômetro: por meio dele podemos definir um valor X para que, no momento que a tensão enviada pelo sensor de chuva seja menor que ele, o sinal da saída digital seja baixo. Isso permite especificar um valor para definir as condições de chuva desejadas, entretanto, a precisão é baixa, ideal caso, no seu projeto, o intuito principal seja somente especificar a presença de água.
Utilizando a saída analógica: nos permite mais precisão, pois podemos programar o arduino para enviar diferentes comandos de acordo com a intensidade da tensão analógica, possibilitando, por exemplo, mudar automaticamente a velocidade do limpador de pára-brisa de acordo com a intensidade da chuva.
Abaixo seguem gráficos de testes feitos com o sensor de chuva:

Esses gráficos foram gerados utilizando o Serial- plotter, ferramenta presente no IDE do arduino, durante os testes posicionamos o sensor no chão enquanto chovia. No começo do teste, a chuva estava mediana; ao fim do teste, ela estava mais amena.
Aplicação no nosso projeto
No nosso projeto, implementamos o sensor de chuva em conjunto com o servo motor do limpador de pára-brisa, de modo que, ao cair água no sensor, o arduino irá enviar um sinal positivo para o servo motor, ativando assim o limpador de pára-brisa de forma automática.
A seguir temos um exemplo de código para utilizar a saída analógica do sensor de chuva em conjunto com o LED do próprio arduino:
int sensorA = A0, sensorD = 3, LED = 13, chuva, chuvaD; void setup() { Serial.begin(9600); pinMode(sensorA, INPUT); pinMode(sensorD, INPUT); pinMode(LED,OUTPUT); } void loop() { chuva = analogRead(sensorA); chuvaD = digitalRead(sensorD); Serial.println(chuva); if(chuva < 800){ digitalWrite(LED,HIGH); } else{ digitalWrite(LED,LOW); } delay(500); }
Sensor de água
Testamos também um sensor de água HW-038 para o projeto de limpador de pára-brisa. Entretanto, por ser menos preciso que o sensor de chuva, decidimos substituí-lo. Ainda sim, mostraremos suas aplicações e alguns detalhes mais técnicos, pois para determinados projetos ele pode ser mais adequado.

Esse sensor de água é normalmente utilizado para medir o nível de água armazenada ou o nível de água em algum canal de escoamento; entretanto, devido a sua alta sensibilidade, é possível utilizá-lo como um sensor de chuva. Seu princípio de funcionamento é bem simples, conforme seu corpo vai sendo mergulhado em água o sinal analógico que ele transmite através da saída aumenta, basta uma gota cair na sua superfície para ele emitir um sinal.
A seguir temos alguns gráficos que mostram o funcionamento do sensor durante uma chuva:

Esses gráficos também foram gerados utilizando o Serial – Plotter, posicionando o sensor no exterior do carro durante uma chuva fraca e também durante uma chuva forte. Acompanhando os valores, é possível perceber a instabilidade dos sinais analógicos durante a chuva e também a alta sensibilidade do sensor.
Um exemplo simples de código segue abaixo:
const int pinoSensor = A0; const int pinoSaida = 13; void setup(){ Serial.begin(9600); pinMode(pinoSensor, INPUT); pinMode(pinoSaida, OUTPUT); } void loop(){ Serial.println(analogRead(pinoSensor)); if (analogRead(pinoSensor)> 400 ){ digitalWrite(pinoSaida, HIGH); } else{ digitalWrite(pinoSaida, LOW); } delay(1000); }
Servomotor
Para esse projeto de limpador de pára-brisa, utilizaremos um servo motor 6221 MG, que possui capacidade de 20kg de força. Esse modelo de servo possui 3 fios de entrada, sendo 2 de alimentação e outro de informação.

Protótipo simulando a ligação
Fio central (de informação) – ligado em um pino qualquer do arduino
Fio marrom (negativo) – ligado no gnd
Fio vermelho (positivo) – ligado a entrada de 5V do microcontrolador
É necessário ressaltar que a corrente elétrica para o servo é maior do que a fornecida pelo próprio microcontrolador, logo, foi necessário colocar de forma paralela uma fonte de energia de mesma tensão fornecida pelo arduíno que conseguisse fornecer a corrente necessária para que o servo funcionasse corretamente. Para esse modelo o ideal seria 6V e 3A, mas se utilizarmos 5V e tivermos uma corrente próxima a do valor estipulado o sistema também irá funcionar.
Para a parte de programação, utilizamos a biblioteca <Servo.h>, que nos é bem útil e facilita a interação com o servo motor. Nela, apenas definimos o pino de informação e o que desejamos que seja feito. O servo trabalha com definições de posição (de 0 á 180), então é necessário dizer a posição que ele deve estar e então ele se moverá. Aqui está um exemplo de código que foi usado nesse projeto:
#include <Servo.h> Servo myServo; // cria objeto do servo int position = 0; // posição do servo void setup(){ myServo.attach(3); // conecta servo ao pino do objeto do servo } void loop(){ for (position = 0; position <= 180; position += 1){ // graus myServo.write(position); delay(7); // espera servo chegar na posição } for (position = 180; position >= 0; position -= 1){ // graus myServo.write(position); delay(7); // espera servo chegar na posição } }
Esse post é resultado da parceria da MakerHero com a equipe Ecocar UNICAMP. Curtiu o conteúdo? Então deixe seu comentário abaixo!
E não esqueça de acompanhar a Ecocar nas redes sociais.