0% acharam este documento útil (0 voto)
6 visualizações9 páginas

Sistema de Monitoramento com ESP32 e MQTT

O relatório detalha o desenvolvimento de um sistema de monitoramento de temperatura e umidade utilizando um microcontrolador ESP32 e um sensor DHT11, com dados transmitidos via MQTT e visualizados em um painel Node-RED. O projeto inclui a montagem do hardware, instalação de software e a implementação de um código firmware que calcula médias móveis das leituras. O sistema foi projetado para ser acessível e eficaz, embora o sensor DHT11 tenha limitações de precisão.

Enviado por

leonardopenna
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
6 visualizações9 páginas

Sistema de Monitoramento com ESP32 e MQTT

O relatório detalha o desenvolvimento de um sistema de monitoramento de temperatura e umidade utilizando um microcontrolador ESP32 e um sensor DHT11, com dados transmitidos via MQTT e visualizados em um painel Node-RED. O projeto inclui a montagem do hardware, instalação de software e a implementação de um código firmware que calcula médias móveis das leituras. O sistema foi projetado para ser acessível e eficaz, embora o sensor DHT11 tenha limitações de precisão.

Enviado por

leonardopenna
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

Relatório Técnico do Projeto: Desenvolvimento de um Sistema

de Monitoramento de Temperatura e Umidade com ESP32,


DHT11, MQTT e Node-RED
Neste relatório, apresentamos o desenvolvimento e a implementação de um projeto
que utiliza um microcontrolador ESP32 e um sensor DHT11 para a medição de
temperatura e umidade. Os dados coletados são transmitidos a um broker Mosquitto
MQTT e subsequentemente visualizados em um painel Node-RED.

1. Introdução e Objetivos do Projeto


O objetivo central deste projeto foi desenvolver um sistema para o monitoramento
de condições ambientais, especificamente temperatura e umidade, e apresentar os
dados coletados de maneira clara e acessível. Em nossa implementação, o ESP32
realiza a leitura dos sensores e publica os dados via Wi-Fi para um broker MQTT. O
Node-RED, que configuramos, subscreve-se aos tópicos MQTT designados para
exibir as informações em um dashboard, o qual inclui médias móveis das leituras
para suavização dos dados.

2. Materiais e Métodos
Para a execução deste projeto, utilizamos os seguintes componentes de hardware e
software:

Hardware:
● Microcontrolador ESP32

● Sensor de temperatura e umidade DHT11

● Resistor de 10k Ohm

● Protoboard

● Fios de conexão

Software:
● PlatformIO (utilizado preferencialmente) ou Arduino IDE

● Broker Mosquitto MQTT

● Node-RED

● Node-RED Dashboard

3. Configuração do Sistema
3.1. Montagem do Hardware:
Realizamos as conexões entre o sensor DHT11 e o ESP32 conforme as seguintes
especificações:

● O pino VCC do DHT11 foi conectado ao pino 3V3 do ESP32.



● O pino GND do DHT11 foi conectado ao pino GND do ESP32.

● O pino de DADOS do DHT11 foi conectado ao GPIO 4 do ESP32.

● Um resistor de 10k Ohm foi conectado entre o pino de DADOS do DHT11 e o
pino 3V3 do ESP32. A montagem física buscou replicar o diagrama de
circuito ilustrado.

3.2. Instalação e Configuração do Software:

Procedemos com a instalação e configuração dos seguintes softwares:

● VSCode com PlatformIO (nossa ferramenta de desenvolvimento preferencial)


ou, alternativamente, a Arduino IDE.

● Broker Mosquitto MQTT.

● Node-RED.

● Node-RED Dashboard.

3.3. Implantação do Código Firmware:

O código firmware desenvolvido ([Link]) foi carregado no microcontrolador


ESP32.

4. Execução do Projeto
Para a operação do sistema, seguimos a seguinte sequência de inicialização:
1. Iniciamos o broker Mosquitto.
2.
3. Iniciamos o Node-RED e acessamos o painel (dashboard) previamente
configurado.
4.
5. Alimentamos eletricamente o ESP32.
6.

5. Detalhamento da Configuração dos Componentes Chave


5.1. Broker MQTT (Mosquitto)
● Realizamos o download e a instalação do Mosquitto MQTT Broker.

● O broker foi iniciado utilizando sua configuração padrão através do comando
mosquitto no terminal.

● No arquivo de configuração [Link] (localizado, por exemplo, em
/etc/mosquitto/[Link] ), foi fundamental definir a opção allow_anonymous
como true.

● Adicionalmente, configuramos o listener para 1883 [Link], conforme ilustrado
na documentação. O arquivo de configuração principal pode referenciar
diretórios externos (include_dir) para arquivos de configuração adicionais
(.conf); esta diretiva, quando utilizada, deve preferencialmente ser a última no
arquivo principal. Arquivos dentro de um include_dir são processados em
ordem alfabética (maiúsculas primeiro), e múltiplas instâncias de include_dir
são processadas sequencialmente.

5.2. Node-RED
● Efetuamos o download e a instalação do Node-RED.

● O Node-RED foi iniciado através do comando node-red no terminal.

● A criação de fluxos no Node-RED demonstrou ser um processo intuitivo. O
painel do Node-RED, onde os dados são visualizados, foi acessado via
[Link] A interface do Node-RED exibia os fluxos configurados
para temperatura e umidade, que alimentavam os gráficos de "Temperature
x Time" e "Humidity x Time".

6. Descrição do Código Firmware ([Link])


O arquivo [Link], desenvolvido por João Alex Arruda da Silva em janeiro de 2024,
contém a lógica embarcada no ESP32. Este firmware é responsável por ler os
dados de temperatura e umidade do sensor DHT11, calcular a média móvel das
últimas 5 leituras e publicar os valores resultantes em um broker MQTT.

Bibliotecas Utilizadas:
● Adafruit_Sensor.h

● Arduino.h

● DHT.h

● PubSubClient.h

● WiFi.h

Parâmetros de Configuração:
● Conexão Wi-Fi: As credenciais da rede (SSID e senha) foram definidas
como const char *ssid = "joaoalex1"; e const char *password = "joao1579";.

● Broker MQTT: O endereço do servidor MQTT foi configurado como const
char *mqttServer = "[Link]"; e a porta como const int mqttPort = 1883;.

● Média Móvel: O número de leituras para o cálculo da média móvel foi
estabelecido em const int numReadings = 5;. Os arrays temperatureReadings e
humidityReadings foram inicializados com -1.0 para indicar a ausência de
dados válidos.

● Sensor DHT: O pino de dados do DHT11 foi definido como GPIO 4 (#define
DHTPIN 4) e o tipo do sensor como DHT11 (#define DHTTYPE DHT11). Uma
instância WiFiClient (espClient) foi utilizada para a comunicação TCP.

Funções Principais Implementadas:


● setupWifi(): Estabelece a conexão com a rede Wi-Fi. A função aguarda até
que a conexão seja bem-sucedida.

● reconnect(): Tenta restabelecer a conexão com o broker MQTT em caso de
falha, com novas tentativas a cada 5 segundos.

● updateReadings(float *readings, float newValue): Adiciona uma nova leitura ao
respectivo array (temperatura ou umidade) e atualiza o índice de forma
circular para manter um histórico das últimas numReadings leituras.

● calculateMovingAverage(float *readings): Calcula a média móvel das leituras
armazenadas, desconsiderando os valores placeholder -1.0. Retorna -1.0 se
não houver leituras válidas para o cálculo.

● setup(): Função de inicialização executada uma vez quando o ESP32 é
energizado. Inicializa a comunicação serial ([Link](115200)), o sensor
DHT ([Link]()), estabelece a conexão Wi-Fi (setupWifi()) e configura o
cliente MQTT com o endereço e porta do broker ([Link](mqttServer,
mqttPort)).

● loop(): Função principal executada continuamente.
○ Verifica o estado da conexão com o broker MQTT e chama reconnect()
se necessário.

○ Realiza a leitura dos valores de umidade e temperatura do sensor
DHT11.

○ Valida as leituras (verificando se não são NaN). Em caso de falha na
leitura, uma mensagem de erro é registrada no serial e o loop é
reiniciado após 2 segundos.

○ Atualiza os arrays de leituras com os novos valores de temperatura e
umidade.

○ Calcula as médias móveis para temperatura e umidade.

○ Converte os valores float (temperatura, umidade e suas médias
móveis) para strings utilizando dtostrf.

○ Define os nomes dos tópicos MQTT para publicação:
esp32/temperature, esp32/humidity, esp32/moving_average_temperature, e
esp32/moving_average_humidity.

○ Publica os valores formatados nos respectivos tópicos MQTT.

○ Imprime os valores lidos, as médias calculadas e os tópicos de
publicação no monitor serial para fins de depuração.

○ Aguarda 3 segundos antes de iniciar um novo ciclo de leitura e
publicação.

7. Diagnóstico e Solução de Problemas


● Verificamos a correção da montagem do hardware, atentando para a
pinagem correta, especialmente se um modelo de ESP32 diferente do
especificado fosse utilizado, o que poderia implicar em diferentes pinos
GPIO.

● A saída serial do ESP32 demonstrou ser uma ferramenta valiosa para
depuração. O código implementado utiliza [Link] para exibir os valores
de temperatura, umidade, médias móveis e os tópicos MQTT de publicação,
facilitando o acompanhamento e a identificação de problemas.

8. Considerações Finais
● O código fonte foi comentado para elucidar a funcionalidade de cada seção.

● Reconhecemos que o sensor DHT11, apesar de ser de baixo custo,
apresenta limitações em termos de precisão e confiabilidade, sendo mais
adequado para fins didáticos do que para aplicações que exigem alta
fidelidade.

● Observamos que a configuração do ambiente de desenvolvimento e das
dependências tende a ser mais direta em sistemas operacionais baseados
em Linux (como o Ubuntu) em comparação com o Windows.

● A utilização do VSCode em conjunto com o PlatformIO foi preferida em
relação à Arduino IDE devido aos recursos avançados que oferece, como
autocompletar código, análise estática e integração com sistemas de
controle de versão.

● O ESP32 provou ser um microcontrolador robusto e versátil para este
projeto, oferecendo os recursos necessários e facilidade de uso.

● Ressaltamos que, embora uma imagem na documentação exiba um Arduino
Uno, este componente não foi utilizado no projeto; o ESP32 foi o único
microcontrolador empregado.

Relatório Técnico do Projeto: Desenvolvimento de um Sistema de Monitoramento de


Temperatura e Umidade com ESP32, DHT11, MQTT e Node-RED

Neste relatório, apresentamos o desenvolvimento e a implementação de um projeto que


utiliza um microcontrolador ESP32 e um sensor DHT11 para a medição de temperatura e
umidade. Os dados coletados são transmitidos a um broker Mosquitto MQTT e
subsequentemente visualizados em um painel Node-RED.

1. Introdução e Objetivos do Projeto

O objetivo central deste projeto foi desenvolver um sistema para o monitoramento de


condições ambientais, especificamente temperatura e umidade, e apresentar os dados
coletados de maneira clara e acessível. Em nossa implementação, o ESP32 realiza a leitura
dos sensores e publica os dados via Wi-Fi para um broker MQTT. O Node-RED, que
configuramos, subscreve-se aos tópicos MQTT designados para exibir as informações em
um dashboard, o qual inclui médias móveis das leituras para suavização dos dados.

2. Materiais e Métodos

Para a execução deste projeto, utilizamos os seguintes componentes de hardware e


software:

Hardware:

● Microcontrolador ESP32
● Sensor de temperatura e umidade DHT11
● Resistor de 10k Ohm
● Protoboard
● Fios de conexão

Software:

● PlatformIO (utilizado preferencialmente) ou Arduino IDE


● Broker Mosquitto MQTT
● Node-RED
● Node-RED Dashboard

3. Configuração do Sistema
3.1. Montagem do Hardware:

Realizamos as conexões entre o sensor DHT11 e o ESP32 conforme as seguintes


especificações:

● O pino VCC do DHT11 foi conectado ao pino 3V3 do ESP32.


● O pino GND do DHT11 foi conectado ao pino GND do ESP32.
● O pino de DADOS do DHT11 foi conectado ao GPIO 4 do ESP32.
● Um resistor de 10k Ohm foi conectado entre o pino de DADOS do DHT11 e o pino
3V3 do ESP32. A montagem física buscou replicar o diagrama de circuito ilustrado.

3.2. Instalação e Configuração do Software:

Procedemos com a instalação e configuração dos seguintes softwares:

● VSCode com PlatformIO (nossa ferramenta de desenvolvimento preferencial) ou,


alternativamente, a Arduino IDE.
● Broker Mosquitto MQTT.
● Node-RED.
● Node-RED Dashboard.

3.3. Implantação do Código Firmware:

O código firmware desenvolvido ([Link]) foi carregado no microcontrolador ESP32.

4. Execução do Projeto

Para a operação do sistema, seguimos a seguinte sequência de inicialização:

1. Iniciamos o broker Mosquitto.


2. Iniciamos o Node-RED e acessamos o painel (dashboard) previamente configurado.
3. Alimentamos eletricamente o ESP32.

5. Detalhamento da Configuração dos Componentes Chave

5.1. Broker MQTT (Mosquitto)

● Realizamos o download e a instalação do Mosquitto MQTT Broker.


● O broker foi iniciado utilizando sua configuração padrão através do comando
mosquitto no terminal.
● No arquivo de configuração [Link] (localizado, por exemplo, em
/etc/mosquitto/[Link] ), foi fundamental definir a opção allow_anonymous
como true.
● Adicionalmente, configuramos o listener para 1883 [Link], conforme ilustrado na
documentação. O arquivo de configuração principal pode referenciar diretórios
externos (include_dir) para arquivos de configuração adicionais (.conf); esta diretiva,
quando utilizada, deve preferencialmente ser a última no arquivo principal. Arquivos
dentro de um include_dir são processados em ordem alfabética (maiúsculas
primeiro), e múltiplas instâncias de include_dir são processadas sequencialmente.

5.2. Node-RED

● Efetuamos o download e a instalação do Node-RED.


● O Node-RED foi iniciado através do comando node-red no terminal.
● A criação de fluxos no Node-RED demonstrou ser um processo intuitivo. O painel do
Node-RED, onde os dados são visualizados, foi acessado via
[Link] A interface do Node-RED exibia os fluxos configurados para
temperatura e umidade, que alimentavam os gráficos de "Temperature x Time" e
"Humidity x Time".

6. Descrição do Código Firmware ([Link])

O arquivo [Link], desenvolvido por João Alex Arruda da Silva em janeiro de 2024,
contém a lógica embarcada no ESP32. Este firmware é responsável por ler os dados de
temperatura e umidade do sensor DHT11, calcular a média móvel das últimas 5 leituras e
publicar os valores resultantes em um broker MQTT.

Bibliotecas Utilizadas:

● Adafruit_Sensor.h
● Arduino.h
● DHT.h
● PubSubClient.h
● WiFi.h

Parâmetros de Configuração:

● Conexão Wi-Fi: As credenciais da rede (SSID e senha) foram definidas como const
char *ssid = "joaoalex1"; e const char *password = "joao1579";.
● Broker MQTT: O endereço do servidor MQTT foi configurado como const char
*mqttServer = "[Link]"; e a porta como const int mqttPort = 1883;.
● Média Móvel: O número de leituras para o cálculo da média móvel foi estabelecido
em const int numReadings = 5;. Os arrays temperatureReadings e humidityReadings
foram inicializados com -1.0 para indicar a ausência de dados válidos.
● Sensor DHT: O pino de dados do DHT11 foi definido como GPIO 4 (#define
DHTPIN 4) e o tipo do sensor como DHT11 (#define DHTTYPE DHT11). Uma
instância WiFiClient (espClient) foi utilizada para a comunicação TCP.

Funções Principais Implementadas:

● `setupWifi()`: Estabelece a conexão com a rede Wi-Fi. A função aguarda até que a
conexão seja bem-sucedida.
● `reconnect()`: Tenta restabelecer a conexão com o broker MQTT em caso de falha,
com novas tentativas a cada 5 segundos.
● `updateReadings(float \*readings, float newValue)`: Adiciona uma nova leitura ao
respectivo array (temperatura ou umidade) e atualiza o índice de forma circular para
manter um histórico das últimas numReadings leituras.
● `calculateMovingAverage(float \*readings)`: Calcula a média móvel das leituras
armazenadas, desconsiderando os valores placeholder -1.0. Retorna -1.0 se não
houver leituras válidas para o cálculo.
● `setup()`: Função de inicialização executada uma vez quando o ESP32 é
energizado. Inicializa a comunicação serial ([Link](115200)), o sensor DHT
([Link]()), estabelece a conexão Wi-Fi (setupWifi()) e configura o cliente MQTT
com o endereço e porta do broker ([Link](mqttServer, mqttPort)).
● `loop()`: Função principal executada continuamente.
○ Verifica o estado da conexão com o broker MQTT e chama `reconnect()` se
necessário.
○ Realiza a leitura dos valores de umidade e temperatura do sensor DHT11.
○ Valida as leituras (verificando se não são NaN). Em caso de falha na leitura,
uma mensagem de erro é registrada no serial e o loop é reiniciado após 2
segundos.
○ Atualiza os arrays de leituras com os novos valores de temperatura e
umidade.
○ Calcula as médias móveis para temperatura e umidade.
○ Converte os valores float (temperatura, umidade e suas médias móveis) para
strings utilizando `dtostrf`.
○ Define os nomes dos tópicos MQTT para publicação: esp32/temperature,
esp32/humidity, esp32/moving_average_temperature, e
esp32/moving_average_humidity.
○ Publica os valores formatados nos respectivos tópicos MQTT.
○ Imprime os valores lidos, as médias calculadas e os tópicos de publicação no
monitor serial para fins de depuração.
○ Aguarda 3 segundos antes de iniciar um novo ciclo de leitura e publicação.

7. Diagnóstico e Solução de Problemas

● Verificamos a correção da montagem do hardware, atentando para a pinagem


correta, especialmente se um modelo de ESP32 diferente do especificado fosse
utilizado, o que poderia implicar em diferentes pinos GPIO.
● A saída serial do ESP32 demonstrou ser uma ferramenta valiosa para depuração.

Você também pode gostar