Sensor de umidade do solo: irrigação automática de plantas com Arduino
Como funciona um sensor de umidade do solo? Sensores resistivos vs capacitivos, ligação no Arduino, calibração com leituras seca e molhada, como evitar a corrosão, irrigação automática com relé e bomba e uso com ESP32 e Pico.
O sensor de umidade do solo é um sensor simples que mede o quanto a terra está molhada em um vaso ou jardim. Ele é a base de muitos projetos, de uma luz de aviso que diz quando a planta está com sede a um sistema que rega suas flores enquanto você está de férias. É barato, liga no Arduino com três fios e, quando você acrescenta um relé e uma pequena bomba, vira uma automação realmente útil.

Como funciona um sensor de umidade do solo?
A água no solo muda o quanto ele conduz eletricidade e armazena carga. Os sensores resistivos medem a resistência entre duas hastes de metal enfiadas na terra: quanto mais molhado o solo, menor a resistência. Os sensores capacitivos medem a capacitância em volta de um eletrodo revestido; o metal nunca toca a terra. Na maioria dos módulos a leitura é alta quando o solo está seco e baixa quando está molhado.
| Característica | Resistivo (YL-69, FC-28) | Capacitivo (v1.2) |
|---|---|---|
| O que mede | Resistência entre duas hastes de metal | Capacitância em volta de um eletrodo |
| Metal exposto | Sim | Não (revestido) |
| Corrosão | Se desgasta em poucas semanas se ficar alimentado o tempo todo | Muito durável |
| Saída | Analógica (AO) e digital (DO) | Analógica |
| Preço | Muito barato | Um pouco mais caro |
| Ideal para | Experimentos curtos | Projetos permanentes em vasos e jardins |
Ligação
| Pino do sensor | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| VCC | D7 (para alimentar só durante a medição) ou 5V | GPIO 25 ou 3V3 | GP15 ou 3V3 |
| GND | GND | GND | GND |
| AO (AOUT) | A0 | GPIO 34 | GP26 |
| DO | D2 (opcional) | Opcional | Opcional |
Lendo a umidade com Arduino e calibrando
Cada sensor e cada tipo de terra dão valores diferentes, então primeiro calibre o seu sensor: anote a leitura com o sensor no ar (totalmente seco) e mergulhado em um copo de água (totalmente molhado). Depois use map() para transformar essa faixa em uma porcentagem de 0 a 100. Troque DRY e WET no código pelas suas próprias leituras:
1const int SENSOR_PIN = A0;
2const int POWER_PIN = 7; // sensörü yalnızca ölçerken besle / power only while measuring
3const int DRY = 850; // havadayken okunan / reading in air (kendin ölç / measure yours)
4const int WET = 380; // sudayken okunan / reading in water (kendin ölç / measure yours)
5
6void setup() {
7 pinMode(POWER_PIN, OUTPUT);
8 Serial.begin(9600);
9}
10
11int readMoisture() {
12 digitalWrite(POWER_PIN, HIGH);
13 delay(10); // değerin oturmasını bekle / let it settle
14 int raw = analogRead(SENSOR_PIN);
15 digitalWrite(POWER_PIN, LOW);
16 return constrain(map(raw, DRY, WET, 0, 100), 0, 100); // % nem / % moisture
17}
18
19void loop() {
20 int moisture = readMoisture();
21 Serial.print("Toprak nemi / Soil moisture: %");
22 Serial.println(moisture);
23 delay(2000);
24}Irrigação automática: relé e bomba

Agora vamos transformar a leitura em ação de verdade: quando a umidade do solo cair abaixo de 30%, ligue a bomba por 4 segundos e depois espere 1 minuto para a água se espalhar pela terra antes de medir de novo. Essa espera evita que a bomba fique ligada sem parar e encharque o vaso só porque o sensor ainda não molhou. A bomba não pode ser alimentada direto por um pino do Arduino; acione-a por um relé ou um MOSFET. Para a ligação do relé, veja O que é módulo relé?
1const int SENSOR_PIN = A0, POWER_PIN = 7, PUMP_PIN = 8; // PUMP_PIN → röle IN / relay IN
2const int DRY = 850, WET = 380;
3const int START_BELOW = 30; // %30'un altında sula / water below 30%
4const unsigned long PUMP_MS = 4000; // her seferde 4 sn / 4 s per run
5const unsigned long SOAK_MS = 60000; // suyun yayılması için bekle / wait for the water to soak in
6
7int readMoisture() {
8 digitalWrite(POWER_PIN, HIGH);
9 delay(10);
10 int raw = analogRead(SENSOR_PIN);
11 digitalWrite(POWER_PIN, LOW);
12 return constrain(map(raw, DRY, WET, 0, 100), 0, 100);
13}
14
15void setup() {
16 pinMode(POWER_PIN, OUTPUT);
17 pinMode(PUMP_PIN, OUTPUT);
18 digitalWrite(PUMP_PIN, HIGH); // aktif LOW röle: kapalı başla / active-LOW relay: start off
19}
20
21void loop() {
22 if (readMoisture() < START_BELOW) {
23 digitalWrite(PUMP_PIN, LOW); // pompayı çalıştır / pump on
24 delay(PUMP_MS);
25 digitalWrite(PUMP_PIN, HIGH); // pompayı durdur / pump off
26 delay(SOAK_MS); // tekrar ölçmeden önce bekle / wait before measuring again
27 }
28 delay(5000);
29}Umidade do solo com ESP32 e Raspberry Pi Pico
No ESP32, ligue o sensor em um dos pinos do ADC1 (GPIO 32–39), que continuam funcionando com o Wi-Fi ligado; os valores vão de 0 a 4095, então calibre de novo. Com um ESP32 você pode mandar o nível de umidade para o celular como notificação ou montar um sensor de vaso que mede uma vez por hora em deep sleep e funciona por meses com bateria. A leitura no Pico com MicroPython fica assim:
1from machine import ADC, Pin
2import time
3
4sensor = ADC(26) # GP26 → AOUT
5power = Pin(15, Pin.OUT) # sensörü yalnızca ölçerken besle / power only while measuring
6DRY, WET = 52000, 24000 # kendi değerlerinle değiştir / replace with your readings
7
8def moisture():
9 power.value(1)
10 time.sleep_ms(10)
11 raw = sensor.read_u16()
12 power.value(0)
13 pct = (DRY - raw) * 100 // (DRY - WET)
14 return max(0, min(100, pct))
15
16while True:
17 print("Toprak nemi / Soil moisture: %", moisture())
18 time.sleep(2)Qual deve ser a umidade do solo?
| Tipo de planta | Umidade-alvo aproximada |
|---|---|
| Cactos e suculentas | 10–30% |
| A maioria das plantas de interior | 40–60% |
| Tomates, pimentões e hortaliças | 60–80% |
| Samambaias e plantas que gostam de umidade | 70–90% |
Essas porcentagens são relativas à faixa entre seco e molhado do seu próprio sensor; não são o teor de água científico do solo. O melhor limite se descobre observando por alguns dias o que o sensor lê quando a sua planta realmente precisa de água.
Ideias de projetos com sensor de umidade do solo
- Rega automática de vasos: um sistema que rega suas flores sozinho, até quando você está de férias.
- Alerta “estou com sede”: um LED que acende ou um buzzer que apita quando a terra seca.
- Notificação no celular: mande uma mensagem no Telegram a partir de um ESP32 quando a umidade cair.
- Rega de vários vasos: regue as plantas individualmente dando a cada vaso o próprio sensor e uma pequena válvula.
- Mini estação de estufa: meça também a umidade do ar com um DHT11 e a luz com um LDR e mostre tudo em um display.
- Jardim inteligente: pule a rega automaticamente quando um sensor de chuva detectar chuva.
Erros comuns e como corrigir
- O valor é sempre 1023 ou sempre 0: o pino DO está sendo lido em vez do AO, falta alimentação ou o fio até a placa do sensor está partido.
- As hastes corroeram e as leituras não fazem sentido: o sensor resistivo ficou alimentado o tempo todo; alimente-o por um pino ou troque por um modelo capacitivo.
- As leituras mudam com o tempo: a condutividade muda conforme a terra se compacta ou recebe adubo; recalibre de vez em quando.
- A bomba não para: o relé é ativo em LOW e o HIGH/LOW está invertido no código, ou ele mede de novo antes de a água penetrar; adicione uma espera entre as leituras.
- O sensor capacitivo dá valores estranhos: a eletrônica na parte de cima molhou; deixe a placa à prova d'água.
- As leituras ficam erradas quando o Wi-Fi liga no ESP32: o sensor está em um pino do ADC2; mude para um pino entre o GPIO 32 e o 39.
O sensor de umidade do solo pode ser o seu primeiro projeto que vai além de medir e muda de fato alguma coisa no mundo real. No app BlueGrays você encontra um projeto de estação de rega inteligente, passo a passo, com esquema do circuito e código.
Perguntas frequentes
Devo comprar um sensor de umidade do solo capacitivo ou resistivo?
Para experimentos de alguns dias, um sensor resistivo basta. Para um projeto que vai ficar meses em um vaso, escolha um sensor capacitivo; sem metal exposto, ele não sofre corrosão e as leituras variam menos com o tempo.
Quanto tempo dura um sensor de umidade do solo?
As hastes de um sensor resistivo alimentado o tempo todo se desgastam visivelmente em poucas semanas. Alimentado só durante a medição, ele pode durar meses. Os sensores capacitivos podem funcionar por anos, desde que a eletrônica fique longe da água.
Por que a leitura é alta com o solo seco e baixa com o solo molhado?
A maioria dos módulos liga o sensor como parte de um divisor de tensão; quando a terra fica mais molhada, a resistência ou a capacitância muda e a tensão no pino analógico cai. Por isso o código inverte a faixa com map(raw, DRY, WET, 0, 100) para obter uma porcentagem.
A que profundidade devo enterrar o sensor de umidade do solo?
Coloque o sensor na região das raízes da planta, longe da borda do vaso. Nos sensores capacitivos, enterrar até a linha marcada neles é suficiente; a eletrônica não pode tocar a terra nem a água.
Dá para ligar uma bomba d'água direto no Arduino?
Não. Mesmo as bombas pequenas puxam 100–300 mA, o que um pino do Arduino não consegue fornecer. Acione a bomba por um módulo relé ou por um MOSFET com diodo de roda livre; alimente-a por uma fonte separada e ligue os terras juntos.
Quantos vasos posso monitorar com um Arduino?
O Arduino Uno tem 6 entradas analógicas, então dá para ler 6 sensores diretamente. Para mais, use um multiplexador analógico de 16 canais como o CD74HC4067 ou um módulo ADC extra como o ADS1115.
Projetos para montar depois desta leitura
Ver todos os projetos
Estação de irrigação inteligente
Um jardineiro que rega suas plantas sozinho para que elas não sequem enquanto você está de férias. Um sensor de umidade do solo mede o quanto a terra está úmida; quando ela seca, o Arduino aciona a bo

Temperatura e umidade com DHT11
Qual é a temperatura do seu quarto? O ar está úmido ou seco? O sensor DHT11 mede a temperatura e a umidade, e o Arduino mostra os valores em um display LCD de duas linhas, atualizando a cada poucos se

Temperatura e umidade com ESP32 e DHT22 (com display LCD)
Este projeto mede a temperatura e a umidade do ambiente com um sensor DHT22 e exibe os dados em tempo real em um LCD I2C 16x2. Os dados são lidos do sensor pelo protocolo de um fio (one-wire) com a biblioteca Adafruit DHT. Este projeto serve de base para estações meteorológicas IoT, automação residencial ou sistemas de monitoramento ambiental em estufas. A comunicação com o DHT22 é feita pelo pino GPIO 4 do ESP32.

Acender uma lâmpada de 220V com botão de pressão
Enquanto você mantém o botão pressionado, uma lâmpada de 220 volts fica acesa e apaga assim que você solta. O sinal fraco do Arduino não consegue acender a lâmpada diretamente, então um relé, que é um

Iluminação inteligente com ESP32 (PIR + LDR + relé + OLED)
Transforme a iluminação do corredor, banheiro ou despensa em iluminação inteligente com ESP32! Com um sensor de movimento PIR, um sensor de luz LDR e um módulo relé, montamos o cenário clássico de "acender a luz ao detectar movimento no escuro" — se o ambiente já estiver claro, o movimento NÃO aciona a luz, economizando energia durante o dia. A luz fica acesa por 30 segundos; se o movimento continuar, o temporizador reinicia e a luz permanece acesa por mais tempo.

Registrador de temperatura com ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
Monte um registrador de temperatura com data e hora usando ESP32! Leia a temperatura e a umidade do DHT22 a cada minuto, obtenha a hora real do DS1307 RTC e grave os dados em CSV no cartão microSD. O OLED exibe a temperatura atual em letras grandes, a porcentagem de umidade, a data e a hora e o contador de registros. O arquivo /temp_log.csv no cartão SD pode ser aberto no Excel, Google Sheets ou pandas do Python para análise — ideal para monitorar estufas, acompanhar a temperatura de casa ou…

ESP32 HTTPClient + API de clima (com display LCD)
Neste projeto, usamos o ESP32 para fazer uma chamada REST à API de clima wttr.in pela internet com HTTPClient.h. Interpretamos a resposta JSON com ArduinoJson v7 e mostramos cidade, temperatura, umidade, condições do tempo e vento em um display LCD I2C, em turco e inglês. O wttr.in é grátis e não exige chave de API — basta informar o nome de uma cidade para consultar o clima atual. Os dados se atualizam sozinhos a cada 30 minutos, e o LED dá um retorno visual diferente para cada tela.
Mais artigos
App BlueGrays
Monte este circuito passo a passo pelo celular
Esquema do circuito, código e lista de componentes em uma só tela. Mais de 200 projetos com Arduino, ESP32 e Pico prontos para montar.
Escaneie com seu celular
Aponte a câmera para o código para abrir a loja de aplicativos do seu celular.
ou abrir a loja

