Arduino Nano ESP32 - Sensor de Chuva

O sensor de chuva é capaz de detectar e medir o nível de chuva/neve. O sensor de chuva fornece duas saídas: uma saída digital (LOW/HIGH) e uma saída analógica.

Neste tutorial, vamos aprender a usar um Arduino Nano ESP32 e um sensor de chuva para detectar e medir a chuva. Especificamente, vamos abordar o seguinte:

esp32 sensor de chuva

Depois, você pode modificar o código para ativar um motor ou um aviso quando ele detectar chuva./neve

Hardware Necessário

1×Arduino Nano ESP32
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×Sensor de Chuva
1×Protoboard
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Sobre o Sensor de Chuva

O sensor de chuva pode ser usado para detectar a presença de chuva ou medir o nível de água que a chuva deixou cair. O sensor de chuva oferece duas opções, por meio de um pino de saída digital e de um pino de saída analógica.

O sensor de chuva inclui duas partes:

  • A placa sensora
  • O módulo eletrônico
Pinagem do Sensor de Chuva
image source: diyables.io

A placa sensora

A placa sensora fica do lado de fora, onde pode enfrentar a chuva/neve (por exemplo, o telhado). A placa sensora tem uma série de trilhas de cobre expostas, divididas em dois grupos: trilhas de alimentação e trilhas de sensoriamento. Essas trilhas de alimentação e de sensoriamento não estão conectadas, a menos que sejam unidas por água ou neve. Não há diferença entre a trilha de alimentação e a trilha de sensoriamento. Você pode escolher uma como trilha de alimentação e a outra será a trilha de sensoriamento

O módulo eletrônico

O módulo eletrônico do sensor de chuva converte o sinal da placa sensora em um valor analógico ou digital que pode ser lido pelo Arduino Nano ESP32. Ele inclui quatro pinos:

  • Pino VCC: precisa ser conectado ao VCC (3.3V a 5V).
  • Pino GND: precisa ser conectado ao GND (0V).
  • Pino DO: é um pino de saída digital. Ele fica em HIGH se a chuva não é detectada e em LOW se é detectada. O valor de limite para a detecção de chuva pode ser ajustado usando um potenciômetro embutido.
  • Pino AO: é um pino de saída analógica. O valor de saída diminui conforme a água na placa sensora aumenta, e aumenta conforme a água na placa sensora diminui.

Além disso, ele tem dois indicadores de LED:

  • Um indicador PWR-LED para a alimentação.
  • Um indicador DO-LED para o estado da chuva no pino DO: ele fica aceso quando há chuva.

Como Funciona

Para o pino DO:

  • O módulo tem um potenciômetro embutido para definir o limite (sensibilidade).
  • Quando a intensidade está acima do valor de limite, a chuva é detectada, o pino de saída do sensor fica em LOW e o DO-LED acende.
  • Quando a intensidade está abaixo do valor de limite, a chuva NÃO é detectada, o pino de saída do sensor fica em HIGH e o DO-LED apaga.

Para o pino AO:

  • Quanto mais água na placa sensora, menor o valor lido no pino AO.
  • Quanto menos água na placa sensora, maior o valor lido no pino AO.

Note que o potenciômetro não afeta o valor no pino AO.

Diagrama de Ligação

Como mencionado acima, o pino VCC do sensor deve ser conectado a 3.3V ou 5V. Se conectarmos este pino diretamente ao pino de 3.3V ou 5V do ESP32, a vida útil do sensor será reduzida por causa da corrosão eletroquímica. A melhor forma é conectar o pino VCC do sensor de chuva a um pino de saída do ESP32. Podemos programar esse pino para alimentar o sensor de chuva somente durante a leitura. Isso pode minimizar o impacto da corrosão eletroquímica.

Como o módulo do sensor de chuva tem duas saídas, você pode escolher usar uma ou as duas, dependendo do que precisar.

  • O diagrama de ligação entre o Arduino Nano ESP32 e o sensor de chuva ao usar somente o DO.
Diagrama de ligação do sensor de chuva com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

  • O diagrama de ligação entre o Arduino Nano ESP32 e o sensor de chuva ao usar somente o AO.
Diagrama de ligação da detecção de chuva com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

  • O diagrama de ligação entre o Arduino Nano ESP32 e o sensor de chuva ao usar o AO e o DO.
Diagrama de ligação do detector de chuva com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código para Arduino Nano ESP32 - Ler o valor do pino DO

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-rain-sensor */ #define POWER_PIN D5 // The Arduino Nano ESP32 pin that provides the power to the rain sensor #define DO_PIN D9 // The Arduino Nano ESP32 pin connected to DO pin of the rain sensor void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); // initialize theArduino Nano ESP32 pin as an input pinMode(POWER_PIN, OUTPUT); // Configure the power pin pin as an OUTPUT pinMode(DO_PIN, INPUT); } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the rain sensor's power ON delay(10); // wait 10 milliseconds int rain_state = digitalRead(DO_PIN); digitalWrite(POWER_PIN, LOW); // turn the rain sensor's power OFF if (rain_state == HIGH) Serial.println("The rain is NOT detected"); else Serial.println("The rain is detected"); delay(1000); // pause for 1 sec to avoid reading sensors frequently to prolong the sensor lifetime }

Passos Rápidos

  • Se esta é a primeira vez que você usa o Arduino Nano ESP32, veja como configurar o ambiente para o Arduino Nano ESP32 no Arduino IDE
  • Copie o código acima e abra com o Arduino IDE
  • Clique no botão Upload do Arduino IDE para fazer o upload do código para o Arduino Nano ESP32
  • Pingue um pouco de água no sensor de chuva
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
The rain is NOT detected The rain is NOT detected The rain is NOT detected The rain is detected The rain is detected The rain is detected The rain is detected The rain is detected The rain is NOT detected The rain is NOT detected The rain is NOT detected
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Tenha em mente que, se você notar que o LED fica aceso o tempo todo, ou apagado mesmo quando o sensor está voltado para a chuva, você pode ajustar o potenciômetro para regular a sensibilidade do sensor.

Código para Arduino Nano ESP32 - Ler o valor do pino AO

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-rain-sensor */ #define POWER_PIN D5 // The Arduino Nano ESP32 pin that provides the power to the rain sensor #define AO_PIN A0 // The Arduino Nano ESP32 pin connected to AO pin of the rain sensor void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(POWER_PIN, OUTPUT); // Configure the power pin pin as an OUTPUT } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the rain sensor's power ON delay(10); // wait 10 milliseconds int rain_value = analogRead(AO_PIN); digitalWrite(POWER_PIN, LOW); // turn the rain sensor's power OFF Serial.println(rain_value); // print out the analog value delay(1000); // pause for 1 sec to avoid reading sensors frequently to prolong the sensor lifetime }

Passos Rápidos

  • Copie o código acima e abra com o Arduino IDE
  • Clique no botão Upload do Arduino IDE para fazer o upload do código para o Arduino Nano ESP32
  • Pingue um pouco de água no sensor de chuva
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
225 2426 236 563 687 959 975 1009 1017 1053 1078 841 743 440 279
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

※ Nota:

Este tutorial usa a função analogRead() para ler valores de um ADC (Conversor Analógico-Digital) conectado a um sensor ou componente. O ADC do Arduino Nano ESP32 é adequado para projetos que não exigem alta precisão. No entanto, para projetos que precisam de medições precisas, tenha em mente o seguinte:

  • O ADC do Arduino Nano ESP32 não é perfeitamente preciso e pode exigir calibração para resultados corretos. Cada placa Arduino Nano ESP32 pode variar um pouco, então a calibração é necessária para cada placa individual.
  • A calibração pode ser difícil, especialmente para iniciantes, e nem sempre pode dar os resultados exatos que você quer.

Para projetos que exigem alta precisão, considere usar um ADC externo (por exemplo, ADS1115) com o Arduino Nano ESP32 ou usar outro Arduino, como o Arduino Uno R4 WiFi, que tem um ADC mais confiável. Se você ainda quiser calibrar o ADC do Arduino Nano ESP32, consulte o ESP32 ADC Calibration Driver.

Vídeo

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!