BLOG - Sistemas Embarcados

Este blog tem como autores os participantes do projeto Smart Campus e alunos das disciplinas: Sistemas Embarcados(Engenharia de Controle e Automação) e Plataformas de prototipação para Internet das Coisas (Especialização Lato Sensu em Internet das Coisas). O objetivo é a divulgação de trabalhos em desenvolvimento no campus que envolvam a utilização de conceitos de sistemas embarcados, internet das coisas, telemetria e outras tecnologias para a resolução de problemas da indústria, meio ambiente, cidades inteligentes, fazendas inteligentes, ....
Coordenação: Prof. Marcos Chaves

[ LOGIN ] [ Autores ]

numero de postagens:1

Controle de LED e Registro de Ações usando Node-RED, PostgreSQL e Mosquitto com Docker Compose

Descrição do Projeto:

  • Objetivo: Criar um ambiente IoT para controlar um LED e registrar as ações em uma aplicação.
  • Componentes-chave: Node-RED, PostgreSQL e Mosquitto.
  • Node-RED: Uma plataforma de desenvolvimento visual para conectar dispositivos IoT e serviços web.
  • PostgreSQL: Um sistema de gerenciamento de banco de dados relacional para armazenar dados coletados.
  • Mosquitto: Um broker MQTT (Message Queuing Telemetry Transport) para troca de mensagens entre os dispositivos IoT.

Configurando o Ambiente com Docker Compose:

  • Docker: Uma plataforma de virtualização que permite empacotar e executar aplicativos em contêineres.
  • Docker Compose: Uma ferramenta para definir e executar aplicativos Docker multi-contêineres

Exemplo de Arquivo docker-compose.yml:

version: "3.1"

services:

node-red: (Configurações do serviço Node-RED)

pgsql_mqtt: (Configurações do serviço PostgreSQL)

mosquitto: (Configurações do serviço Mosquitto)

networks: projetoiot: (Configurações da rede "projetoiot")

 

Configurações do Serviço Node-RED:

  • Container Name: Nome do contêiner para o serviço Node-RED.
  • Image: Imagem utilizada para o serviço (nodered/node-red:latest).
  • Restart: Política de reinicialização do contêiner (always).
  • Portas: Mapeamento da porta 1880 do contêiner para a porta 1880 do host.
  • Variáveis de Ambiente: Configurações personalizadas, como o fuso horário.
  • Volumes: Montagem de volumes para persistência de dados do Node-RED.

Configurações do Serviço PostgreSQL:

  • Container Name: Nome do contêiner para o serviço PostgreSQL.
  • Image: Imagem utilizada para o serviço (postgres:alpine3.18).
  • Restart: Política de reinicialização do contêiner (always).
  • Portas: Mapeamento da porta 5444 do contêiner para a porta 5432 do host.
  • Variáveis de Ambiente: Configurações personalizadas, como usuário, senha e fuso horário.
  • Volumes: Montagem de volumes para persistência de dados do banco

Explicando o codigo realizado no esp32

Inclusão de bibliotecas:

  • WiFi.h: Permite a configuração e conexão com redes Wi-Fi.
  • PubSubClient.h: Biblioteca MQTT para Arduino.
  • WiFiClientSecure.h: Biblioteca para conexões seguras através do protocolo SSL/TLS.

Definição das variáveis e objetos:

  • espClient: Objeto do tipo WiFiClientSecure para conexões seguras.
  • client: Objeto PubSubClient para interagir com o servidor MQTT.
  • lastMsg: Variável para armazenar o timestamp da última mensagem recebida.
  • msg: Array de caracteres para armazenar as mensagens recebidas.
  • value: Variável inteira para armazenar o estado do LED.

Configuração inicial:

  • Conexão Wi-Fi: Configuração e conexão com a rede Wi-Fi especificada.
  • Configuração do cliente MQTT: Definição do servidor MQTT, porta e credenciais de autenticação.
  • Configuração do callback: Definição da função de callback que será executada quando mensagens forem recebidas.

Função de callback:

  • É chamada quando uma mensagem é recebida em um dos tópicos assinados.
  • Extrai o tópico e a mensagem recebida.
  • Com base no tópico, realiza ação correspondente (ligar/desligar o LED).

Função de reconexão:

  • É chamada quando ocorre uma desconexão com o servidor MQTT.
  • Tenta reconectar ao servidor MQTT e assina novamente os tópicos.

Função loop():

  • Verifica se o cliente MQTT está conectado. Se não estiver, chama a função de reconexão.
  • Executa o loop do cliente MQTT para processar mensagens.
  • Aguarda um curto período de tempo (100 ms) antes de repetir o loop.

O código estabelece uma conexão Wi-Fi, conecta-se a um servidor MQTT e assina dois tópicos relacionados aos LEDs. Quando mensagens são recebidas nesses tópicos, o estado dos LEDs é alterado com base no conteúdo da mensagem ("on" para ligar e "off" para desligar).

Esquema da ligaçao do ESP32

 

Fluxo do Node Red

 

 Resultado da dashboard

 

 

Respositorio do Github

https://github.com/brunodangelos/prototipoiot

 

 

Nome:

Bruno D`Angelo Silva

Maike Willian Bonfochi Martins

 

 

 

 

[ID:169] Autor: - Criado em: 2023-06-28 23:11:10 - [ Compartilhar ]