Blog
Jardim Inteligente ESP32: Irrigação Automática
O Problema
Suas plantas continuam morrendo porque você esquece de regar. Ou você rega demais e as raízes apodrecem. Você precisa de um sistema que saiba quando suas plantas estão com sede de verdade — e regue automaticamente.
Com um ESP32, um sensor de umidade do solo e um relé, você pode montar um jardim inteligente totalmente automático que:
- Monitora a umidade do solo 24/7
- Rega suas plantas quando elas precisam (não num cronograma fixo)
- Manda alertas quando o tanque de água está vazio
O Que Você Vai Construir
Um sistema de irrigação automática movido a ESP32 que lê a umidade do solo a cada hora e aciona uma bomba d’água quando o solo seca. Opcional: conecte ao WiFi para monitoramento remoto via MQTT.
Dificuldade: Iniciante | Tempo: 45 minutos | Custo: ~US$ 35 em peças
Hardware Necessário (Lista de Materiais)
| Peça | Modelo | Qtd | Preço | Comprar |
|---|---|---|---|---|
| Microcontrolador | ESP32 DevKitC V4 | 1 | $13.49 | Ver Produto |
| Sensor de Umidade do Solo | Capacitive Soil Moisture v1.2 | 1 | $4.49 | Ver Produto |
| Módulo de Relé | Relé 2 Canais 5V | 1 | $5.24 | Ver Produto |
| Display | 0.96″ OLED SSD1306 | 1 | $5.99 | Ver Produto |
| Protoboard | 830 pontos | 1 | $4.49 | Ver Produto |
| Cabos Jumper | M-M 40pcs | 1 | $2.99 | Ver Produto |
Você também vai precisar de uma mini bomba d’água (5V, ~US$ 3 em qualquer loja de ferragens) e mangueira de silicone. Conecte o fio positivo da bomba passando pelo relé.
Passo 1: Fiação
ESP32 ↔ Sensor de Umidade do Solo
| Pino do Sensor | Pino ESP32 | Nota |
|---|---|---|
| VCC | 3V3 | Alimentação |
| GND | GND | Terra |
| AOUT | GPIO 34 | Saída analógica (ADC1_CH6) |
ESP32 ↔ Módulo de Relé
| Pino do Relé | Pino ESP32 | Nota |
|---|---|---|
| VCC | 5V/VIN | Alimentação |
| GND | GND | Terra |
| IN1 | GPIO 26 | Sinal de controle do relé |
ESP32 ↔ Display OLED
| Pino OLED | Pino ESP32 | Nota |
|---|---|---|
| VCC | 3V3 | Alimentação |
| GND | GND | Terra |
| SDA | GPIO 21 | Dados I2C |
| SCL | GPIO 22 | Clock I2C |
Importante: Conecte a bomba d’água nos terminais NO (Normally Open) e COM do relé. O relé funciona como um interruptor — quando o GPIO 26 vai para LOW, a bomba LIGA.
Passo 2: Calibração
Antes de automatizar, você precisa descobrir os valores de solo “seco” e “úmido” do seu vaso:
- Enfie o sensor no solo seco → anote a leitura analógica (ex.: 3200)
- Enfie no solo úmido → anote a leitura (ex.: 1400)
- Calcule o limiar — abaixo desse valor = úmido o suficiente, acima = precisa de água
DRY_VALUE = 3200 (sua leitura no solo seco)
WET_VALUE = 1400 (sua leitura no solo úmido)
THRESHOLD = 2500 (dispara a rega acima deste valor)
Passo 3: Envie o Código
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// --- Pins ---
#define SOIL_PIN 34
#define PUMP_PIN 26
// --- Calibration (change these!) ---
const int DRY_VALUE = 3200;
const int WET_VALUE = 1400;
const int THRESHOLD = 2500;
const unsigned long CHECK_INTERVAL = 3600000;
const unsigned long PUMP_DURATION = 5000;
unsigned long lastCheck = 0;
void displayReading(int raw, int percent) {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Smart Garden");
display.drawLine(0, 10, 128, 10, SSD1306_WHITE);
display.setCursor(0, 20);
display.printf("Moisture: %d%%", percent);
display.setCursor(0, 35);
if (percent < 40) {
display.println("Status: DRY");
display.println("Pump: ACTIVE");
} else {
display.println("Status: OK");
display.println("Pump: OFF");
}
display.setCursor(0, 55);
display.printf("Raw: %d", raw);
display.display();
}
void setup() {
Serial.begin(115200);
pinMode(PUMP_PIN, OUTPUT);
digitalWrite(PUMP_PIN, HIGH);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("OLED not found!");
}
display.clearDisplay();
display.display();
}
void loop() {
if (millis() - lastCheck >= CHECK_INTERVAL || lastCheck == 0) {
lastCheck = millis();
int raw = analogRead(SOIL_PIN);
int percent = map(raw, DRY_VALUE, WET_VALUE, 0, 100);
percent = constrain(percent, 0, 100);
Serial.printf("Soil: %d%% (raw: %d)n", percent, raw);
displayReading(raw, percent);
if (percent < 40) {
Serial.println("Soil is dry! Watering...");
digitalWrite(PUMP_PIN, LOW);
delay(PUMP_DURATION);
digitalWrite(PUMP_PIN, HIGH);
Serial.println("Watering complete.");
}
}
}
Passo 4: Instalação
- Enfie o sensor de umidade do solo capacitivo no vaso da sua planta
- Conecte a bomba d’água a um recipiente com mangueira levando até a planta
- Alimente o ESP32 via USB ou 18650 battery shield
- O display OLED mostra a porcentagem de umidade ao vivo e o status da bomba
- A cada hora, o sistema verifica a umidade do solo e rega automaticamente
Por Que Sensores Capacitivos São Melhores
Este sistema usa um sensor de umidade do solo capacitivo (não resistivo). Sensores resistivos têm sondas de metal expostas que corroem no solo úmido em semanas. Sensores capacitivos selam a eletrônica atrás de uma camada protetora — duram anos sem degradar.
Indo Além
- Adicione WiFi + MQTT — Repasse os dados de umidade para o seu celular (combine com o tutorial de MQTT)
- Adicione vários sensores — Use um multiplexador (CD4051BE) para monitorar várias plantas com um ESP32 só
- Adicione um sensor de nível de água — Alerte quando o tanque estiver ficando vazio
- Integração com Home Assistant — Controle a bomba pelo dashboard da sua casa inteligente
- Energia solar — Adicione uma placa solar de 5V + 18650 battery shield para instalação permanente ao ar livre