Sistema completo de monitoramento de plantas com ESP32, sensor de umidade do solo e integração com backend de hidroponia.
- Leitura de umidade do solo via sensor capacitivo
- Conexão WiFi automática
- Envio de dados para backend REST API
- Controle remoto de válvula de irrigação
- Classificação automática (Seco, Úmido, Muito Úmido)
- Reconexão automática em caso de falha
- ESP32 (testado com UPESY WROOM)
- Sensor de umidade do solo capacitivo
- Relé ou módulo de controle para válvula (opcional)
- Válvula solenoide 12V (opcional)
- Fonte de alimentação adequada
- VCC → 3.3V
- GND → GND
- AOUT → GPIO36 (VP)
- Controle → GPIO25
- VCC → fonte externa (12V)
- GND → GND comum
Edite o arquivo platformio-ini e configure:
-D WIFI_SSID="\"Nome_Da_Sua_Rede\""
-D WIFI_PASSWORD="\"Sua_Senha_WiFi\""No arquivo src/main.cpp, ajuste:
const char* serverUrl = "http://SEU_IP:3000/api/ingest";
const char* deviceToken = "seu-token-aqui";
const char* deviceId = "esp32-001";
const char* zoneId = "zona-manjericao-1";Importante: Se o backend está rodando na mesma máquina, substitua localhost pelo IP real da máquina na rede local (ex: http://192.168.1.100:3000/api/ingest).
Após a primeira execução, calibre o sensor:
- Coloque o sensor no ar seco e anote o valor
AirValue - Coloque o sensor em água e anote o valor
WaterValue - Atualize os valores no código:
const int AirValue = 3780;
const int WaterValue = 440;O ESP32 envia dados no formato JSON:
{
"device_id": "esp32-001",
"zone_id": "zona-manjericao-1",
"readings": [
{"metric": "soil_moisture_raw", "value": 2860},
{"metric": "soil_moisture_pct", "value": 42}
]
}Com header de autenticação:
X-DEVICE-TOKEN: seu-token-aqui
O backend pode responder com instruções:
{
"ok": true,
"next_instructions": [
{
"actor": "valvula_A",
"command": "ON",
"seconds": 20
}
]
}Comandos suportados:
ONcom duração em segundos - abre a válvula pelo tempo especificadoOFF- fecha a válvula imediatamente
- Leitura do sensor: a cada 5 segundos
- Envio para backend: a cada 60 segundos (1 minuto)
Para alterar, modifique:
const unsigned long sendInterval = 60000;
delay(5000);pio run -t upload
pio device monitorOu use a interface do PlatformIO no VS Code.
Abre o monitor serial (115200 baud) para ver:
- Status da conexão WiFi
- Leituras de umidade em tempo real
- Envio de dados e respostas do servidor
- Execução de comandos da válvula
manjerica-esp32/
├── src/
│ └── main.cpp # Código principal
├── platformio-ini # Configurações do projeto
└── README.md # Este arquivo
- Verifique SSID e senha
- Certifique-se que a rede é 2.4GHz (ESP32 não suporta 5GHz)
- Substitua
localhostpelo IP real da máquina - Verifique se o backend está rodando na porta 3000
- Confirme que o firewall não está bloqueando
- Calibre o sensor corretamente
- Aguarde sensor estabilizar (alguns minutos)
- Verifique conexões e alimentação
- Confirme conexão no GPIO25
- Teste com LED primeiro
- Verifique alimentação do relé/válvula
- Adicionar sensor de temperatura DHT22
- Implementar Deep Sleep para economia de energia
- Adicionar mais zonas/sensores
- Display OLED para visualização local
- Modo de calibração via botão
MIT