Arduino Nano ESP32 - Sensor de Água

Este tutorial mostra como usar o Arduino Nano ESP32 e o sensor de água para detectar chuva, vazamento de água, transbordamento de tanque e medir o nível de água.

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×Water level sensor
1×Protoboard
1×Fios Jumper
1×(Opcional) Conector de Alimentação DC
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 Nível de Água

Pinagem do Sensor de Nível de Água

O sensor de nível de água inclui 3 pinos:

  • Pino S (Signal): este pino fornece uma tensão analógica proporcional ao nível de água. Este pino deve ser conectado a um pino de entrada analógica do Arduino Nano ESP32.
  • Pino + (VCC): conecte este pino a 3.3V ou 5V.
  • Pino - (GND): conecte este pino ao GND.
pinagem do sensor de água

Como o Sensor de Nível de Água Funciona

Simplificando, quanto mais o sensor é mergulhado na água, maior é a tensão de saída no pino S. Medindo a tensão, podemos saber o nível de água.

Diagrama de Ligação

Em teoria, podemos alimentar o sensor de água conectando os pinos VCC e GND do sensor aos pinos 3.3V e GND do ESP32, respectivamente.

No entanto, essa forma não é recomendada na prática. Se alimentarmos o sensor de água constantemente, ele sofre corrosão eletroquímica mais rápido por causa do ambiente úmido ⇒ É melhor alimentar o sensor de água somente quando for ler o valor do sensor. Para isso, podemos conectar o pino VCC do sensor a um pino digital do ESP32 e programar o pino do ESP32 para HIGH antes da leitura e LOW depois da leitura.

Diagrama de ligação do Sensor de Água com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código para Arduino Nano ESP32 - Lendo o Valor do Sensor de Água

/* * 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-water-sensor */ #define POWER_PIN D4 // Arduino Nano ESP32 pin D4 connected to sensor's VCC pin #define SIGNAL_PIN A0 // Arduino Nano ESP32 pin A0 connected to sensor's signal pin int value = 0; // variable to store the sensor value void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(POWER_PIN, OUTPUT); // Configure pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF Serial.print("The water sensor value: "); Serial.println(value); delay(1000); }

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 cole no Arduino IDE.
  • Compile e faça o upload do código para a placa Arduino Nano ESP32 clicando no botão Upload do Arduino IDE
  • Mergulhe lentamente o sensor na água (um copo de água).
  • Confira o resultado no Serial Monitor. Ele se parece com o abaixo:. O valor 0 aparece quando o sensor não está tocando em nada.
∞
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 water sensor value: 0 The water sensor value: 0 The water sensor value: 0 The water sensor value: 25 The water sensor value: 196 The water sensor value: 587 The water sensor value: 625 The water sensor value: 1434 The water sensor value: 1449 The water sensor value: 1454 The water sensor value: 1469 The water sensor value: 2525 The water sensor value: 2526 The water sensor value: 2558
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

※ Nota:

O sensor de água não foi projetado para ser totalmente submerso; somente as trilhas expostas da PCB podem ficar dentro da água. Tenha cuidado ao instalá-lo.

Como Detectar Vazamento de Água

Para detectar vazamento de água, chuva e transbordamento de tanque, basta comparar o valor do sensor com um limite. O limite é determinado na parte de calibração deste tutorial.

Vamos fazer o Arduino Nano ESP32 acender um LED se o vazamento de água for detectado.

Diagrama de Ligação

Diagrama de ligação do Sensor de Água com LED e o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código para Arduino Nano ESP32 - Detectando Vazamento de Água

/* * 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-water-sensor */ #define LED_PIN D9 // Arduino Nano ESP32 pin D9 connected to LED pin #define POWER_PIN D4 // Arduino Nano ESP32 pin D4 connected to sensor's VCC pin #define SIGNAL_PIN A0 // Arduino Nano ESP32 pin A0 connected to sensor's signal pin #define THRESHOLD 1000 int value = 0; // variable to store the sensor value void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(LED_PIN, OUTPUT); // Configure pin as an OUTPUT pinMode(POWER_PIN, OUTPUT); // Configure pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF digitalWrite(LED_PIN, LOW); // turn LED OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // turn LED ON } else { digitalWrite(LED_PIN, LOW); // turn LED OFF } }

Como Medir o Nível de Água

O código abaixo divide o nível de água em 4 níveis.

/* * 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-water-sensor */ #define LED_PIN D9 // Arduino Nano ESP32 pin D9 connected to LED pin #define POWER_PIN D4 // Arduino Nano ESP32 pin D4 connected to sensor's VCC pin #define SIGNAL_PIN A0 // Arduino Nano ESP32 pin A0 connected to sensor's signal pin #define THRESHOLD 1000 int value = 0; // variable to store the sensor value void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(LED_PIN, OUTPUT); // Configure pin as an OUTPUT pinMode(POWER_PIN, OUTPUT); // Configure pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF digitalWrite(LED_PIN, LOW); // turn LED OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // turn LED ON } else { digitalWrite(LED_PIN, LOW); // turn LED OFF } }

※ Nota:

  • SENSOR_MIN e SENSOR_MAX são determinados pelo processo de calibração.
  • O método de mapeamento acima não é preciso. No entanto, ele é aceitável em muitas aplicações.

Calibração do Sensor de Nível de Água

Veja como calibrar o sensor de nível de água

※ 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!