Arduino Nano ESP32 - Sensor de Umidade do Solo

Este tutorial mostra como usar o Arduino Nano ESP32 para ler a umidade do solo de um sensor. Em detalhes, vamos aprender:

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 Capacitivo de Umidade do Solo
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.

Buy Note: Many soil moisture sensors available in the market are unreliable, regardless of their version. We strongly recommend buying the sensor with TLC555I Chip from the DIYables brand using the link provided above. We tested it, and it worked reliably.

Sobre o Sensor de Umidade do Solo

capacitive moisture sensor vs resistive moisture sensor

Existem dois tipos de sensores de umidade:

  • Sensor de umidade resistivo
  • Sensor de umidade capacitivo.

Ambos os sensores fornecem o valor da umidade do solo. No entanto, seus princípios de funcionamento são diferentes. Recomendamos fortemente usar o sensor de umidade capacitivo, pelos seguintes motivos:

  • O sensor resistivo de umidade do solo corrói com o tempo. A corrente elétrica que flui entre as pontas do sensor causa corrosão eletroquímica.
  • O sensor capacitivo de umidade do solo NÃO corrói com o tempo. Os eletrodos do sensor não ficam expostos e nenhuma corrente elétrica flui entre eles.

A imagem abaixo mostra a corrosão em um sensor resistivo de umidade do solo.

resistive soil moisture sensor corrosion

O restante deste tutorial usa o sensor capacitivo de umidade do solo.

Pinagem do Sensor Capacitivo de Umidade do Solo

Um sensor capacitivo de umidade do solo tem três pinos:

  • Pino GND: conecte este pino ao GND (0V)
  • Pino VCC: conecte este pino ao VCC (5V ou 3.3v)
  • Pino AOUT: o pino de saída de sinal analógico fornece a tensão em proporção inversa ao nível de umidade do solo. Conecte este pino a um pino de entrada analógica do ESP32.
capacitive soil moisture sensor pinout

Como Funciona

Quanto mais água há no solo, menor é a tensão no pino AOUT

Diagrama de Ligação

The wiring diagram between Arduino Nano ESP32 and soil moisture sensor

This image is created using Fritzing. Click to enlarge image

Código Arduino Nano ESP32

/* * 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-soil-moisture-sensor */ #define AOUT_PIN A6 // Arduino Nano ESP32 pin A6 that connects to AOUT pin of moisture sensor void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { int value = analogRead(AOUT_PIN); // read the analog value from sensor Serial.print("Moisture value: "); Serial.println(value); delay(500); }

Passos Rápidos

  • Copie o código acima e cole no Arduino IDE
  • Clique no botão Upload no Arduino IDE para fazer upload do código para a placa Arduino Nano ESP32
  • Enterre o sensor no solo e depois despeje água no solo. Ou mergulhe-o lentamente em um copo de água com sal.
  • Veja o resultado no Serial Monitor. Ele se parece com o abaixo:
∞
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
Moisture value: 2230 Moisture value: 2223 Moisture value: 2255 Moisture value: 2279 Moisture value: 2313 Moisture value: 2350 Moisture value: 2383 Moisture value: 2395 Moisture value: 1260 Moisture value: 1325 Moisture value: 1271 Moisture value: 1261 Moisture value: 1254 Moisture value: 1261 Moisture value: 1264 Moisture value: 1360 Moisture value: 1258 Moisture value: 1263 Moisture value: 1266 Moisture value: 1258 Moisture value: 1239 Moisture value: 1264 Moisture value: 1307 Moisture value: 1488 Moisture value: 1647 Moisture value: 1746 Moisture value: 1846
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

※ Nota:

  • Não use água pura para testar, porque ela não conduz eletricidade e, por isso, não vai afetar as leituras do sensor.
  • As leituras do sensor nunca chegam a zero. É normal que os valores fiquem entre 3100 e 2600, embora isso possa mudar devido a fatores como a profundidade em que o sensor é colocado, a composição do solo ou da água e a tensão da fonte de alimentação.
  • Evite enterrar a parte do circuito (localizada na parte de cima do sensor) no solo ou na água, pois isso pode danificar o sensor.

Calibração do Sensor Capacitivo de Umidade do Solo

O valor medido pelo sensor de umidade é relativo. Ele depende da composição do solo e da água. Na prática, precisamos fazer a calibração para determinar um limite (threshold) que seja a fronteira entre úmido e seco.

Como fazer a calibração:

  • Execute o código acima no Arduino Nano ESP32
  • Coloque o sensor de umidade no solo
  • Coloque o sensor de umidade no solo
  • Irrigue o solo lentamente
  • Observe o Serial Monitor.
  • Anote o valor no momento em que você perceber que o solo muda de seco para úmido. Esse valor é chamado de THRESHOLD.

Determinar se o solo está úmido ou seco

Depois da calibração, atualize o valor de THRESHOLD que você anotou no código abaixo. O código abaixo determina se o solo está úmido ou seco

/* * 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-soil-moisture-sensor */ #define AOUT_PIN A6 // Arduino Nano ESP32 pin A6 that connects to AOUT pin of moisture sensor #define THRESHOLD 1500 // CHANGE YOUR THRESHOLD HERE void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { int value = analogRead(AOUT_PIN); // read the analog value from sensor if (value > THRESHOLD) Serial.print("The soil is DRY ("); else Serial.print("The soil is WET ("); Serial.print(value); Serial.println(")"); delay(500); }

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 soil is DRY (2129) The soil is DRY (1941) The soil is DRY (1767) The soil is DRY (1549) The soil is WET (1471) The soil is WET (1419) The soil is WET (1397) The soil is WET (1373) The soil is WET (1264)
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 precisar de calibração para obter 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 desafiadora, especialmente para iniciantes, e nem sempre produz 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!