Uncategorized

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:

  1. Enfie o sensor no solo seco → anote a leitura analógica (ex.: 3200)
  2. Enfie no solo úmido → anote a leitura (ex.: 1400)
  3. 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

  1. Enfie o sensor de umidade do solo capacitivo no vaso da sua planta
  2. Conecte a bomba d’água a um recipiente com mangueira levando até a planta
  3. Alimente o ESP32 via USB ou 18650 battery shield
  4. O display OLED mostra a porcentagem de umidade ao vivo e o status da bomba
  5. 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

Leave a Reply

Your email address will not be published. Required fields are marked *