ESTUFA MQTT




LABSI

2023/2024


Autor:


Bruno Castro (Nº 1201282)

1201282@isep.ipp.pt

Introdução

Arquitetura

Hardware

Software

Resultados

Conclusões

Referências






  • Introdução

Início



        O setor agrícola desempenha um papel crucial na produção de alimentos, sobretudo para satisfazer as necessidades da população. Estas necessidades têm vindo a aumentar devido a fatores como a guerra, períodos de seca ou até mesmo devido à globalização. Apesar da presença constante desses desafios, tem-se observado um interesse crescente da população por um estilo de alimentação melhor e mais saudável. Logo, para atender a todas estas necessidades, é necessário produzir mais em menos tempo, ou seja, maximizar as plantações. Surgindo assim, as estufas inteligentes.

        As estufas inteligentes representam um avanço notável na agricultura pois conseguiram acompanhar a evolução do mundo tecnológico. Estas estruturas são capazes de monitorizar e controlar diversos parâmetros-chave, como temperatura, humidade do ar, humidade do solo e luminosidade, através da implementação de sensores. Essa rede de sensores forma um "ecossistema controlado", permitindo ajustes precisos nas condições ambientais para otimizar o crescimento das plantas.

        Essa abordagem não só impulsiona a eficiência na produção agrícola, reduzindo o desperdício de recursos como água e energia, mas também possibilita o monitoramento em tempo real. Os agricultores podem ser alertados devido a variações nas condições ambientais, permitindo decisões rápidas para prevenir problemas que poderiam impactar negativamente a produção.

        Motivado por essas vantagens e pelo desejo de implementar um projeto semelhante antes de ingressar no ensino superior, optei por desenvolver e montar a minha própria estufa automatizada, sendo que os seus principais objetivos são:

                ‣ Monitoramento das condições ambientais: acompanhamento em tempo real da temperatura, humidade no interior da estufa, humidade no solo e luminosidade
                ‣ Independência total no processo de crescimento: criação de um ambiente controlado, proporcionando autonomia completa ao processo de crescimento das plantas.
                ‣ Realização de cultivos fora de época: possibilidade de realizar cultivos em períodos não "habituais" ao tipo de planta, estendendo o período de plantio e colheita
                ‣ Desenvolvimento contínuo das plantas: promoção e estimulação do crescimento mesmo durante a noite ou em dias de baixa exposição solar

        Este projeto busca não apenas integrar os avanços tecnológicos na agricultura, como aplicar um pouco do conhecimento aprendido ao longo do curso mas também reflete o meu compromisso pessoal em contribuir para algumas práticas agrícolas mais sustentáveis e eficientes.

  • Arquitetura

Início



        Este projeto baseia-se essencialmente na contínua monitorização e recolha de valores provenientes de três sensores. Estes geram os valores correspondentes à luminosidade na estufa, humidade e temperatura do ar e humidade no solo. Posteriormente, os sinais provenientes dos sensores são processados por um ESP32-DEVKITC-32E (módulo com um microcontrolador ESP32 incorporado) [1] que irá enviar os dados via MQTT para uma web dashboard mas também atuar nas saídas de acordo com o(s) parâmetro(s) a ser(em) corrigido(s) para manter a estufa no seu ambiente ideal, indo de encontro aos objetivos propostos.

        Para uma melhor perceção da interligação entre os componentes foi desenhado o seguinte diagrama de blocos:



Figura 1: Diagrama de Blocos Geral do Sistema



  • Hardware

Início



        Para a realização do projeto foi necessária a aquisição de hardware. Este pode ser dividido em 3 grupos, como demonstra o diagrama de blocos na sub-secção anterior: Sensores, Microcontrolador (µC) e Atuadores.

        Quanto aos sensores foram selecionados 3 sensores:

Imagem do sensor DHT22

1. DHT22

Este sensor digital é responsável por informar o sistema da temperatura e humidade do ar dentro da estufa de 2 em 2 segundos (tempo mínimo de recolha de dados). Este usa um sensor capacitivo de humidade e um termístor para medir o ar ambiente, emitindo um sinal digital no pino de dados [2]. Esse pino de dados é usado para a comunicação entre o microcontrolador e o DHT22. Para fazer a leitura de valores foi realizado o protocolo 1-Wire (protocolo de comunicação serial). Foi necessário inserir uma resistência de 10kΩ que funciona como resistência de pull-up.

Imagem do sensor LDR

2. LDR

Conhecido também por Light Dependent Resistor, funciona segundo o princípio da fotocondutividade. Quando a luz incide sobre o material fotocondutor, este absorve a energia e os eletrões que se situam na camada de valência desse material fotocondutor ficam excitados e vão para a banda de condução aumentando assim a condutividade conforme o aumento da luz intensidade [3]. Por exemplo, quando se encontra no escuro, a sua resistência é altíssima (pode atingir os 1MΩ), no entanto, quando exposto à luz a resistência desce drasticamente (atingindo um valor mínimo próximo de 0Ω) [4]. Foi necessário colocar uma resistência de 10kΩ para que seja criado um divisor de tensão para efetuar a leitura à entrada do ADC do microcontrolador.

Imagem do sensor YL-69

3. YL-69

Este sensor de humidade no solo deteta, como o próprio nome indica, a humidade do solo. Este é constituído por dois elétrodos que são inseridos no solo e que a sua resistência e a condutividade são alteradas de acordo com a humidade. Quanto maior for a humidade no solo, menor será a tensão à saída do sensor, logo vem que quanto menor for a humidade no solo, terá uma tensão próxima do Vcc (valor de alimentação). Foi também necessário fazer um divisor de tensão através do uso de uma resistência de 10kΩ entre os 3.3V (Vcc) e o pino de saída (Analog output).



        Quanto ao microcontrolador:

Imagem do microcontrolador ESP32-DEVKITC-32E

1. ESP32-DEVKITC-32E

Foi usado o módulo ESP32-DEVKITC-32E, desenvolvido pela Espressif Systems, que inclui o microcontrolador ESP32 e outros componentes que facilitaram o desenvolvimento dos projetos, principalmente a nível das interfaces de comunicação, conetores e elementos de suporte [1]. A escolha deste microcontroaldor deve-se devido às vantagens que este tem sobre outros microcontroladores mais antigos (ATMega, ATtiny e STM) [5][6].

        Entre as suas vantagens destacam-se:

                ‣ Conetividade Wi-Fi e Bluetooth integrada [1].
                ‣ Ambiente de desenvolvimento de software dedicado para (ESP-IDF) [7].
                ‣ Desempenho de processamento superior [6].
                ‣ Maior capacidade de armazenamento [6].

Este microcontrolador é usado em diversas aplicações como comunicações sem fios,controlo e monitoramento de dispositivos IoT (Internet das coisas), automação residencial, robótica, sistemas embebidos, etc. Tornando-se assim, um compoenente essencial e direcionado para este projeto.



        Quanto aos atuadores estes podem ser divididos de acordo com a sua área de atuação: aquecimento, arrefecimento, rega e sinalização.

Imagem da malha de aquecimento elétrica

1. Sistema de Aquecimento

Composto por uma malha de aquecimento elétrica da Adafruit. A malha pode ser comparada a uma resistência, pois é constituída por várias fibras de aço inoxidável que, aplicando uma tensão entre 5-12V nas mesmas, irá criar uma resistência proporcional à tensão [8], transferindo calor para o exterior, através do conhecido efeito de Joule.

Imagem da ventoinha de arrefecimento

2. Sistema de Arrefecimento

Composto por uma ventoinha de 12V reaproveitada de um desktop antigo. Esta é ativada quando a temperatura atual no interior da estufa é superior ao intervalo definido como ideal. Poderia ser aplicado um sinal PWM para regular a velocidade da ventoinha, usando PID e de acordo com um set-point, caso houvesse mais tempo para a elaboração do projeto.

Imagem do motor DC para o sistema de rega

3. Sistema de Rega

Composto por um motor DC de 6V que funciona como bomba de água, uma mangueira de 5mm e um recipiente de 0.5L. O motor está acoplado ao recipiente e quando o motor é acionado irá criar pressão no seu interior com a entrada de ar, fazendo assim com que a água suba pela mangueira contrariando a gravidade. Isto é possível devido à compressão de ar no recipiente, que exerce pressão sobre a água, pois o ar procura um ponto de saída. Desta forma foi possível reutilizar um motor de ar que já possuia e utilizar este como motor de rega.

4. Sistema de sinalização (LEDs)

LED Amarelo: Sinaliza que o motor de rega está ativo.
LED Vermelho: Indica que a temperatura no interior da estufa está abaixo do limite superior do intervalo considerado como ideal e sinaliza que o sistema de arreficmento está ligado.
LED Azul: Indica que a temperatura no interior da estufa está abaixo do limite inferior do intervalo considerado como ideal e sinaliza que o sistema de aquecimento está ligado.
LED Verde: Indica que a temperatura no interior da estufa está dentro do intervalo definido como ideal.
LEDs Brancos: Sinaliza que a estufa encontra-se exposta a baixa luminosidade. Existe um outro led branco isolado a piscar a 1Hz, que informa que a estufa está em funcionamento (ON).

Foram colocadas resistências de 220Ω em série em todos os LEDs de forma a limitar a corrente. No entanto, poderiam ser inferiores a 100Ω pois a tensão de alimentação é de apenas 3.3V e a corrente máxima nos LEDs é de 20mA.

Imagem da placa de reles

Módulo de 8 relés 5V

Foi usado um módulo de 8 relés de 5V para o acionamento do sistema de aquecimento, arrefecimento e rega, sendo apenas usados 3 dos 8 relés. Esta placa alimentada a 5V DC possui optoacopladores em cada relé e foram extremamente úteis pois desta forma é garantido o isolamento entre o circuito de comando (sinal vindo do microcontrolador) e o circuito de potência [9]. Recorreu-se a esta opção pois motores ou dispositivos que consomem uma corrente significativa não devem ser alimentados diretamente pelo microcontrolador. Desta forma, garantimos uma maior longevidade do microcontrolador mas também uma maior segurança no circuito devido ao seu isolamento.

        Foi usado o software KiCad [10] para a realização do esquema elétrico do sistema (Figura 2) assim como a projeção da PCB (Figura 3 e 4). Na realização e projeção teve-se em conta o funcionamento de cada um dos componentes e as respetivas ligações.



Figura 2: Esquema Elétrico do sistema





Figura 3: Desenho da PCB



Figura 4: PCB em 3D

  • Software

Início



        O programa foi desenvolvido na framework disponibilizada pela Espressif Components, o ESP-IDF (Espressif's official IoT Development Framework) [1], usando a linguagem de programção, C. Uma vez que o ESP-IDF disponibiliza várias libraries, estas foram usadas para facilitar e agilizar o desenvolvimento do código. No ínicio do projeto, comecei apenas pela leitura de um ADC e o piscar de um LED a 1Hz através do microcontrolador, no entanto ainda estava a usar o ATMega328p. Com o decorrer do projeto percebi que poderia adicionar mais funcionalidades e atingir os objetivos traçados com o uso de um ESP32, daí a escolha. Comecei por adicionar um LDR para ler a luminosidade na estufa, um YL-69 para ler a humidade no solo e um DHT22 para ler a temperatura e humidade no interior da estufa. Após obter os sinais dos sensores, realizei a programação relativa à ativavação/desativação dos sistemas de aquecimento, arrefecimento, rega e iluminação. Por fim, decidi implementar a transmissão dos valores por MQTT.



Figura 5: Fluxograma do sistema





        O bloco referente à publicação dos valores via MQTT é um pouco "trabalhosa" pois passa por várias etapas e processos. Para auxiliar na sua compreensão, realizei um outro fluxograma onde é possível visualizar como decorre o fluxo dos dados.



Figura 5: Diagrama do fluxo de dados via MQTT



                 Para que tal seja possível foi necessário, inicialmente, informar a que rede Wi-Fi o ESP tem que se conectar. Para tal, usei a função wifi_init (contida nas librarias do ESP-IDF) e criei um hotspot através do meu smartphone sendo que este tem o nome de “POCOF3” e inseri como password a string “labsi2023” cumprindo assim com o método WPA2-PSK (método de segurança utilizado em redes Wi-Fi para proteger a comunicação sem fio. No restante código é realizada a conexão Wi-Fi.




        A função “wifi_event_handler” trata dos eventos relacionados com Wi-Fi. Logo quando ocorre algum evento, ou seja, quando ocorre a procura por uma ligação Wi-Fi (WIFI_EVENT_STA_START), quando é estabelecida uma ligação por Wi-Fi (WIFI_EVENT_STA_CONNECTED), quando for obtido o IP do Wi- Fi (IP_EVENT_STA_GOT_IP) ou quando a ligação Wi-Fi falha ou é interrompida (WIFI_EVENT_STA_DISCONNECTED) esta é invocada. Sendo que neste último caso ele irá tentar conectar-se 10 vezes (MAX_RETRY=10) até obter sucesso, caso não obtenha sucesso, é impresso uma mensagem a informar e sai da função. É de realçar que quando obtém o IP, é chamada a função que irá iniciar a aplicação MQTT “mqtt_app_start()” conectando o cliente (ESP32) ao Broker MQTT. Função essa que também será seguidamente abordada.




        Passando então á função "mqtt_app_start()", decidi correr o Broker MQTT na minha máquina, que tomou (naquele momento) o IP: 192.168.66.127 e na porta 1883 (porta normalmente associada ao MQTT). Após guardar esta mação/configurações (client = esp_mqtt_client_init (&mqttConfig)), é chamada a função esp_mqtt_client_start para iniciar a conexão entre o cliente MQTT e o broker.




        Após a conexão do cliente com o broker MQTT estar feita e apta para envio e receção de dados estes são enviados, como referido anteriormente, para uma base de dados chamada InfluxDB ( a correr na minha máquina virtual ) a que o Grafana (plataforma open-source usada para análise e monitoramento de dados) irá associar-se. Foi realizado o design e a associação de quais valores a apresentar, tomando o seguinte aspeto final:




  • Resultados

Início



        O projeto foi conseguido na totalidade. Foi implementado numa pequena caixa de cartão que serviu de estrutura de modo a imitar uma verdadeira estufa.





  • Conclusões

Início



        Este projeto tornou-se o meu maior desafio durante a licenciatura em Engenharia Eletrotécnica e de Computadores no ISEP, pois além de o ter realizado de forma indiviudal, nunca tinha tido contacto com a framework ESP-IDF nem tinha programado um ESP32, um microcontrolador que nos dias de hoje é cada vez mais utilizado dada as suas funcionalidades e vantagens sobre outros microcontroladores mais antigos.

        A nível de software foi cumprido o funcionamento do sistema na totalidade, pois a estufa tem exatamente o funcionamento pretendido. A monitorização é realizada sem falhas e quase em tempo real (1s em 1s). Já a nível de hardware foi também conseguido pois a estufa consegue manter a temperatura,humidade no solo e luminosidade ideal, no entanto, gostaria de ter impresso a PCB para montar uma estufa com um aspeto pronto a ser comercializado.

        Caso se pensasse na comercialização do projeto (algo que tenho em mente num futuro próximo) penso que seria de implementar algumas melhorias tais como:

                ‣ Implementação de um Display OLED a informar qual o tipo de planta que está a ser cultivada.
                ‣ Possibilidade de introdução de várias espécies de plantas juntamente com a respetiva temperatura e humidade ideal e estas serem guardadas numa base de dados.
                ‣ Possibilidade de alteração do intervalo estipulado como ideal pelo cliente a qualquer momento.
                ‣ Aviso em push notification enviado ao cliente quando a temperatura está fora do intervalo ideal.
                ‣ Uso de outro sensor de humidade no solo pois o YL-69 é bastante suscetível ao ganho de ferrugem devido à humidade, uma possível solução seria o "Capacitive Soil Moisture Sensor v1.2".
                ‣ Construção da estrutura da estufa num material mais adequado.

  • Referências

Início



[1] Espressif Systems, "ESP32 - A feature-rich MCU with integrated Wi-Fi and Bluetooth connectivity for a wide-range of applications". Acedido: 20 de Dezembro de 2023. [Em linha]. Disponível em: "https://www.espressif.com/en/products/socs/esp32"

[2] Adafruit, "DHT22 temperature-humidity sensor". Acedido: 28 de Dezembro de 2023. [Em linha]. Disponível em: "https://www.adafruit.com/product/385"

[3] WatElectronics, "What is a Light Dependent Resistor and Its Applications". Acedido: 28 de Dezembro de 2023. [Em linha]. Disponível em: "https://www.watelectronics.com/light-dependent-resistor-ldr-with-applications/"

[4] ReviseOmatic, "Light Dependent Resistor". Acedido: 28 de Dezembro de 2023. [Em linha]. Disponível em: "https://reviseomatic.org/help/e-resistors/Resistors%20-%20Light%20Dependent.php"

[5] Nick, "The ESP32 Chip explained: Advantages and Applications". Acedido: 20 de Dezembro de 2023. [Em linha]. Disponível em: "https://www.deepseadev.com/en/blog/esp32-chip-explained-and-advantages/"

[6] Nabto, "ESP32 for IoT: A Complete Guide". Acedido: 20 de Dezembro de 2023. [Em linha]. Disponível em: "https://www.nabto.com/guide-to-iot-esp-32/"

[7] Espressif Systems, "ESP-IDF Git Repository". Acedido: 3 de Janeiro de 2024. [Em linha]. Disponível em: "https://github.com/espressif/esp-idf"

[8] Anne Barela, "Make It Hot or Cold". Acedido: 4 de Janeiro de 2024. [Em linha]. Disponível em: "https://learn.adafruit.com/make-it-hot-or-cold/make-it-hot"

[9] KiCad, "KiCad EDA A Cross Platform and Open Source Electronics Design Automation Suite". Acedido: 3 de Janeiro de 2024. [Em linha]. Disponível em: "https://www.kicad.org/"

[10] PTRobotics, "OPTOACOPLADOR SINAIS ENTRE CIRCUITOS ELÉTRICOS (OPTOCOUPLER)", Eletrónica Básica. Acedido: 3 de Janeiro de 2024. [Em linha]. Disponível em: "https://www.ptrobotics.com/blog/post/optoacoplador-sinais-entre-circuitos-eletricos-optocoupler.html"



Início