Sistema para monitoramento e automação de irrigação de hortas com IoT
Sistema para monitoramento e automação de irrigação de hortas com IoT
Artigo com Jefferson de Oliveira Chaves sobre um sistema de irrigação automatizada pra hortas domésticas: ESP32 com MicroPython, MQTT, backend em Python, Firebase Firestore e app Android.
🌱 O problema
Irrigação sem controle da quantidade de água tem custo dos dois lados: água de menos reduz o metabolismo da planta e a produtividade; água de mais favorece doenças, apodrecimento de raiz e desperdício de um recurso natural. O trabalho propõe monitorar e automatizar a irrigação de hortas domésticas, comunitárias, escolares ou de pequenas propriedades rurais a partir de dados reais de sensores, em vez de horário fixo decidido no escuro.
O projeto é composto por três aplicações orquestradas entre si: dispositivo físico (hardware), aplicação backend integrada à nuvem, e um app pra dispositivos móveis.
🔌 Hardware
- ESP32: microcontrolador de baixo custo e baixo consumo da Espressif, com Wi-Fi e Bluetooth integrados de fábrica, robusto o bastante pra ambiente externo (opera bem sob variação de temperatura)
- DHT11: sensor de temperatura (0° a 50°C) e umidade do ar (20% a 90%)
- HD-38: sensor de umidade do solo, por condutividade entre dois eletrodos
- MH-RD: sensor de chuva, saída digital que muda de nível quando detecta gotas na placa
- Válvula solenoide (127V, 180°, 3/4"): controla a passagem de água pra irrigação
- Relé T73: aciona a válvula solenoide
Conexão dos sensores ao ESP32: umidade do solo na porta GPIO34, temperatura/umidade do ar na GPIO33, chuva na GPIO32, relé na GPIO26. O hardware ganhou um case impresso em 3D e uma placa em fenolite com bornes pra conexão dos cabos.
🐍 MicroPython no ESP32
O ESP32 roda MicroPython, escolhido pra manter a mesma linguagem no hardware e no backend. O firmware é gravado com esptool (esptool --port /dev/ttyUSB0 erase_flash, seguido de write_flash com o binário do MicroPython), e o código é transferido com ampy (pip install adafruit-ampy), em dois arquivos: boot.py (roda no boot do dispositivo) e main.py (loop principal).
Se o ESP32 não conseguir se conectar a uma rede Wi-Fi configurada, ele sobe um Access Point próprio (automated-garden, senha esp1234567890). Acessando http://192.168.4.1/ no navegador, dá pra escolher a rede e a senha sem precisar regravar firmware.
Conectado, o dispositivo assina o tópico ifpr/water_control (recebe o comando de ligar/desligar irrigação) e publica os dados dos sensores a cada 30 segundos, cada um no seu tópico:
| Tópico | Função |
|---|---|
ifpr/soil_sensor | Umidade do solo |
ifpr/temp_sensor | Temperatura do ar |
ifpr/humidity_sensor | Umidade do ar |
ifpr/rain_sensor | Chuva |
ifpr/water_control | Comando de ligar/desligar irrigação |
🖥️ Backend em Python
O backend assina os quatro tópicos de sensor via MQTT e persiste cada leitura no Firebase Firestore, em coleções específicas por sensor. A lógica de decisão (check_water_status) lê as configurações da coleção presets, dois horários programáveis mais o limiar de umidade do solo pra desligamento, e decide: se a umidade do solo está acima do limiar e a irrigação está ligada, publica off no tópico water_control; se está abaixo do limiar e o horário atual bate com um dos horários programados e a irrigação está desligada, publica on. A cada mudança de estado, o backend também dispara uma notificação push pro app.
📱 App Android
O app mostra um switch com o estado atual da irrigação (permitindo acionamento manual), os horários programados e o limiar de umidade configurados, e gráficos com os últimos 30 dias de leitura de cada sensor, puxados do Firestore. Assina os mesmos tópicos MQTT que o backend consome pra atualizar a UI em tempo real, e recebe as notificações push de início/fim de irrigação.
🧪 Prova de conceito
Testado com dois recipientes de terra (um seco, um molhado), sensor de umidade do solo a ~8cm de profundidade, horários de irrigação configurados pra 9h25 e 19h30, desligamento ao atingir 40% de umidade do solo. O ciclo completo (leitura → decisão → acionamento → notificação) validou o fluxo ponta a ponta descrito acima.
Trabalho com Jefferson de Oliveira Chaves, publicado na Revista Mundi Engenharia, Tecnologia e Gestão.
Slides completos: Sistema para monitoramento e automação de irrigação de hortas.