ESP32 - Sensor de Umidade do Solo

Este tutorial ensina como usar o ESP32 para ler a umidade do solo a partir do sensor. Em detalhes, vamos aprender:

Hardware Necessário

1×38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow
1×(Alternativa) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide
1×(Alternativa) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide
1×(Alternativa) ESP32 Uno-form board
1×(Alternativa) ESP32 S3 Uno-form board
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 ESP32
1×(Recomendado) Breakout Expansion Board for ESP32
1×(Recomendado) Divisor de Alimentação para ESP32

Or you can buy the following kits:

1×DIYables ESP32 Starter Kit (ESP32 included)
1×DIYables ESP32 S3 Starter Kit (ESP32 S3 included)
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

sensor de umidade capacitivo vs sensor de umidade resistivo

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 o uso do sensor de umidade capacitivo, pelos seguintes motivos:

  • O sensor de umidade do solo resistivo sofre corrosão com o tempo. A corrente elétrica que flui entre as pontas de prova do sensor causa corrosão eletroquímica.
  • O sensor de umidade do solo capacitivo NÃO sofre corrosão 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 de umidade do solo resistivo.

corrosão do sensor de umidade do solo resistivo

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

Pinagem do Sensor de Umidade do Solo Capacitivo

Um sensor de umidade do solo capacitivo 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 uma tensão inversamente proporcional ao nível de umidade do solo. Conecte este pino a um pino de entrada analógica do ESP32.
pinagem do sensor de umidade do solo capacitivo

Como Funciona

Quanto mais água houver no solo, menor será a tensão no pino AOUT

Diagrama de Ligação

  • Como conectar o ESP32 e o sensor de umidade do solo usando uma protoboard
Diagrama de Ligação do sensor de umidade do solo com ESP32

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Como conectar o ESP32 e o sensor de umidade do solo

Código ESP32

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-soil-moisture-sensor */ #define AOUT_PIN 36 // ESP32 pin GPIO36 (ADC0) 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-o na Arduino IDE
  • Clique no botão Upload na Arduino IDE para carregar o código na placa ESP32
  • Enterre o sensor no solo e depois despeje água no solo. Ou mergulhe-o lentamente em um copo de água com sal.
  • Confira o resultado no Serial Monitor. Ele fica parecido com o abaixo:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Moisture value: 2383 Moisture value: 2395 Moisture value: 1260 Moisture value: 1325 Moisture value: 1271 Moisture value: 1261 Moisture value: 1254 Moisture value: 1241 Moisture value: 1244 Moisture value: 1380 Moisture value: 1368 Moisture value: 1279 Moisture value: 1268 Moisture value: 1259 Moisture value: 1243 Moisture value: 1265 Moisture value: 1308 Moisture value: 1487 Moisture value: 1646
Ln 11, Col 1
ESP32 Dev Module on COM15
2

※ Nota:

  • Evite usar água pura para o teste, pois ela não conduz eletricidade e, portanto, 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 variar dependendo de alguns fatores: a profundidade em que o sensor está enterrado, a composição do solo ou da água e a tensão da fonte de alimentação.
  • Não enterre 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 de Umidade do Solo Capacitivo

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

Como fazer a calibração:

  • Execute o código acima no ESP32
  • Coloque o sensor de umidade no solo
  • Regue 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

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

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-soil-moisture-sensor */ #define AOUT_PIN 36 // ESP32 pin GPIO36 (ADC0) that connects to AOUT pin of moisture sensor #define THRESHOLD 1488 // 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
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
The soil is DRY (2126) The soil is DRY (1841) The soil is DRY (1667) The soil is DRY (1540) The soil is WET (1481) The soil is WET (1419) The soil is WET (1357) The soil is WET (1243) The soil is WET (1224)
Ln 11, Col 1
ESP32 Dev Module 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 de umidade do solo. O ADC do ESP32 é bom para projetos que NÃO precisam de alta precisão. No entanto, para projetos que precisam de medições precisas, observe:

  • O ADC do ESP32 não é perfeitamente preciso e pode precisar de calibração para obter resultados corretos. Cada placa ESP32 pode ser um pouco diferente, então você precisa calibrar o ADC de cada placa individualmente.
  • A calibração pode ser difícil, especialmente para iniciantes, e nem sempre fornece os resultados exatos que você deseja.

Para projetos que precisam de alta precisão, considere usar um ADC externo (ex.: ADS1115) com o ESP32 ou usar um Arduino, que tem um ADC mais confiável. Se ainda assim você quiser calibrar o ADC do 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!