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:
- Sensor de Umidade Capacitivo vs Sensor de Umidade Resistivo
- Como usar o ESP32 para ler o valor de um sensor de umidade capacitivo
- Como calibrar um sensor de umidade capacitivo
- Como o ESP32 determina se o solo está úmido ou seco
Hardware Necessário
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) |
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

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.

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.

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

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 usando uma placa breakout com bornes de parafuso (alimentada pelo cabo USB)

Código ESP32
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:
※ 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
O resultado no Serial Monitor.
※ 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