Desenvolvedor: Diogo Leite Zequini Pinto | RM: 565535
Este projeto é a minha solução para a segunda etapa do Enterprise Challenge, desenvolvido em parceria com a Hermes Reply. Meu objetivo foi construir um protótipo funcional de um sistema de monitoramento IoT para manutenção preditiva, indo além de uma simples coleta de dados.
A solução abrange todo o ciclo de vida dos dados: desde a simulação de um dispositivo embarcado (ESP32) que coleta e pré-processa informações de sensores, até um pipeline de análise em Python. Este pipeline não apenas visualiza os dados, mas também aplica um modelo de Machine Learning para prever o estado do sistema e ajudar no diagnóstico de falhas. Para tornar a análise mais acessível e poderosa, finalizei o projeto com um dashboard de Business Intelligence (BI) interativo, desenvolvido em Streamlit.
Desenvolvi o projeto de forma modular, com cada componente tendo uma responsabilidade clara e otimizada.
Para simular um dispositivo de monitoramento real, montei o circuito no Wokwi. A escolha dos sensores foi baseada na sua relevância para cenários industriais:
- DHT22 (Temperatura e Umidade): Fundamental para monitorar as condições operacionais do equipamento e do ambiente.
- LDR (Luminosidade): Simula um sensor ambiental que pode ser útil para análises de contexto ou segurança.
- Potenciômetro (Vibração): A vibração é um dos indicadores mais críticos de falha mecânica. Utilizei um potenciômetro para simular diferentes níveis de intensidade, essenciais para a análise preditiva.
O esquema do circuito está disponível em: documentacao/imagens/hermes_reply_circuito_wokwi.png
O código para o ESP32 (arduino/src/main.cpp) é responsável pela coleta e preparação dos dados na fonte.
- Leitura e Estruturação: A cada 5 segundos, o firmware lê os valores dos sensores e os organiza em um payload JSON estruturado.
- Cálculo de Média Móvel: Implementei um cálculo de média móvel para temperatura e umidade para suavizar ruídos e fornecer uma visão de tendência mais estável, importante para a análise.
- Payload de Dados: Os dados são transmitidos via Serial em um formato JSON completo, incluindo metadados do dispositivo, valores instantâneos, médias móveis e uma análise de status inicial baseada em regras.
Exemplo da Saída de Dados:
JSON_DATA: {"deviceId":"HR-PRED-MAINT-01","timestamp":5110,"sensors":{"temperature":{"value":26.6,"movingAverage":25.8},"humidity":{"value":78.4,"movingAverage":65.2}, ...}}O script analise_dados/app.py centraliza todo o fluxo de processamento e análise dos dados.
- Ingestão Automatizada: O script lê o arquivo de log (
dados_simulacao/serial_output.log) e extrai automaticamente os payloads JSON gerados pela simulação. - Engenharia de Features: Para aumentar o poder preditivo, criei novas variáveis (features) a partir dos dados brutos. Por exemplo, calculei o desvio padrão da vibração em uma janela de tempo para identificar instabilidades e a interação entre temperatura e vibração para detectar sobrecargas.
- Modelagem Preditiva (Machine Learning): Utilizei um
RandomForestClassifierpara treinar um modelo que aprende a classificar o estado do sistema (NORMAL,ATENÇÃO,CRÍTICO) com base nos padrões dos dados. - Diagnóstico de Causa Raiz: Através da análise de "Feature Importance" do modelo, é possível identificar quais sensores e comportamentos mais influenciaram um alerta, auxiliando no diagnóstico da causa raiz do problema.
Para apresentar os resultados de forma clara e interativa, desenvolvi um dashboard web com Streamlit.
- Interface Organizada: O layout utiliza abas para separar as diferentes seções da análise (Visão Geral, Análise de Sensores, Análise Preditiva).
- KPIs e Visualizações: Métricas importantes são exibidas de forma destacada, e todos os gráficos (temporais, de status, correlações) são gerados dinamicamente para a análise do usuário.
- Resultados do ML: A performance do modelo (Matriz de Confusão) e a análise de causa raiz (Importância das Features) são apresentadas de forma visual e de fácil compreensão.
- Exploração de Dados: Há uma seção dedicada para visualizar a tabela de dados completa, permitindo uma análise mais aprofundada.
Preparei um script para simplificar a execução do projeto.
Na raiz do projeto, execute o script run_dashboard.bat.
.\run_dashboard.batEste script irá:
- Verificar e instalar as dependências Python necessárias a partir do
requirements.txt. - Iniciar o dashboard web com o Streamlit.
- Abrir o dashboard automaticamente no seu navegador.
Caso prefira, você pode executar os passos manualmente:
- Simulação do Hardware (Wokwi CLI):
- Execute a simulação do Wokwi para gerar o arquivo de log
dados_simulacao/serial_output.log.
- Execute a simulação do Wokwi para gerar o arquivo de log
- Análise de Dados (Python):
- Navegue até a raiz do projeto em um terminal.
- Instale as dependências:
pip install -r analise_dados/requirements.txt - Inicie o dashboard:
streamlit run analise_dados/app.py
A organização das pastas foi pensada para facilitar a navegação e o entendimento do projeto.
.
├── arduino/ # Código-fonte do firmware para o ESP32
├── analise_dados/ # Pipeline de análise e o dashboard de BI
├── dados_simulacao/ # Arquivos gerados pela simulação e análise
├── documentacao/ # Imagens e relatórios
├── simulacao_wokwi/ # Arquivos de configuração da simulação Wokwi
├── RELATORIO_ANALISE.md # Relatório detalhado gerado pelo pipeline
├── run_dashboard.bat # Script para execução simplificada
└── README.md # Este documento
Este projeto representa minha abordagem para resolver um desafio de engenharia de forma completa. Busquei não apenas cumprir os requisitos, mas construir uma solução de ponta a ponta que fosse funcional, robusta e que demonstrasse o valor prático de tecnologias como IoT e Machine Learning. Desde a otimização na coleta de dados no ESP32 até a criação de um dashboard interativo para análise, cada etapa foi planejada e executada com o objetivo de entregar um resultado de alta qualidade.