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
Busca:
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 ]