Skip to content

Descrição do Firmware

Objetivo

O objetivo do firmware da Estufa Hidropônica Inteligente é automatizar o monitoramento e o controle dos parâmetros críticos do ambiente hidropônico, garantindo condições ideais para o crescimento saudável das plantas. Por meio de um único microcontrolador ESP32, o sistema integra sensores e atuadores para gerenciar temperatura, umidade, iluminação, pH, nutrientes e circulação da água, promovendo eficiência, sustentabilidade e facilidade de uso no cultivo hidropônico.

Arquitetura Geral

O firmware está estruturado da seguinte forma:

main/
├── includes/
│   ├── circulacao.h          
│   ├── device_defs.h         // Definição dos pinos da ESP32
│   ├── exaustor.h            
│   ├── hora.h                
│   ├── led.h               
│   ├── mqtt.h             
│   ├── peristaltic.h         
│   ├── ph.h                  
│   ├── solenoide.h 
│   ├── tds.h                 
│   ├── ultrassonic_sensor.h  
│   ├── water_temp.h          
├── circulacao.c              // Controle de circulação da água
├── exaustor.c                // Controle da ventoinha para a regulação da temperatura
├── hora.c                    // SNTP para obter horário pela internet
├── led.c                     // Controle de luminosidade
├── main.c                    // Arquivo principal que integra todos os módulos
├── mqtt.c                    // Comunicação MQTT
├── peristaltic.c             // Controle da bomba peristáltica para adicionar soluções na água
├── ph.c                      // Monitorar pH da água
├── solenoide.c               // Controle da válvula solenoide para o reservatório de água
├── tds.c                     // Monitorar TDS na água
├── ultrassonic_sensor.c      // Sensor usado para monitorar nível do reservatório de água
├── water_temp.c              // Sensor para medir a temperatura da água

Cada módulo é responsável por uma funcionalidade específica do sistema: - circulacao: Gerencia a circulação de água no sistema. - exaustor: Controla a ventoinha para regular a temperatura. - hora: Usa SNTP para sincronização de horário pela internet. - led: Gerencia a luminosidade do sistema. - mqtt: Implementa a comunicação MQTT para troca de dados. - peristaltic: Controla a bomba peristáltica para dosagem de soluções. - ph: Monitora o pH da água. - tds: Monitora os sólidos dissolvidos totais (TDS) na água. - ultrassonic_sensor: Mede o nível do reservatório de água usando um sensor ultrassônico. - water_temp: Mede a temperatura da água.

Fluxo de Operação

O fluxo de operação do firmware da Estufa Hidropônica Inteligente é gerenciado pelo microcontrolador ESP32, que coordena os diversos subsistemas para monitorar e controlar as condições ambientais e de cultivo. Vale destacar que utilizamos o recurso de FreeRTOS para termos diversos subsistemas operando paralelamente independentes, porém com uso de flag para controle de prioridades. Veja a figura 1.


Esquemático de controle

Figura 1: Diagrama geral de alto nivel. Fonte: Elaboração própria. Todos os direitos reservados.

O processo de operação segue as etapas descritas abaixo:

  1. Configuração Inicial
    Ao iniciar, o firmware configura a rede Wi-Fi através da função config_wifi() e estabelece a comunicação MQTT com a função init_mqtt(). Em seguida, a sincronização de horário é feita utilizando o SNTP com a função init_sntp() e a hora é atualizada com update_time().

  2. Inicialização dos Sensores e Atuadores

  3. O sensor ultrassônico é inicializado com init_ultrasonic_resources() para monitorar o nível de água.
  4. O sensor de temperatura e umidade DHT11 é inicializado para coleta de dados ambientais.
  5. As tarefas para leitura dos sensores são criadas, como a tarefa ultrasonic_task para medir a distância continuamente.
  6. Outros sensores como o pH, TDS e temperatura da água são configurados para coleta periódica de dados.

  7. Leitura e Monitoramento
    No loop principal, o sistema realiza as leituras e ajustes periódicos para garantir as condições ideais:

  8. pH da água é medido pela função get_ph() e o valor é logado.
  9. O nível de água é monitorado com o sensor ultrassônico, e a distância do reservatório é registrada.
  10. A temperatura e umidade do ambiente são obtidas através do sensor DHT11 e os valores são exibidos no log.
  11. A temperatura da água é lida pela função read_temperature(), com o valor sendo exibido periodicamente.

  12. Ajuste e Controle de Subsistemas
    Enquanto o firmware coleta os dados dos sensores, ele também ajusta os subsistemas de controle:

  13. O rele é iniciado com a função start_rele_task(), controlando os atuadores necessários para manter a estufa nas condições desejadas.
  14. A comunicação contínua com o servidor MQTT é realizada pela função mqtt_task(), permitindo o envio de dados para monitoramento remoto.

  15. Monitoramento de Hora
    O horário atualizado é formatado e exibido periodicamente, permitindo acompanhar a sincronização do sistema.

  16. Operação Contínua
    O loop principal é responsável por manter o sistema em operação contínua, realizando leituras a cada 1 segundo (vTaskDelay(1000 / portTICK_PERIOD_MS)) e ajustando os parâmetros de controle conforme necessário.

Versionamento

Versão Data Modificação Autor
1.0 20/01/2025 Documento inicial criado. Mariana Gomes
1.1 20/01/2025 Inclusão do controle de versões. Mariana Gomes
1.2 20/01/2025 Inclusão do Fluxo de Operação Mariana Gomes
1.3 20/01/2025 Inclusão de diagrama de alto nível João Vitor