Blog Houssan Ali Hijazi
IA · Python · Android
← Voltar ao blog
IoT, MicroPython, MQTT, Android

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ópicoFunção
ifpr/soil_sensorUmidade do solo
ifpr/temp_sensorTemperatura do ar
ifpr/humidity_sensorUmidade do ar
ifpr/rain_sensorChuva
ifpr/water_controlComando 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.