Ferramenta profissional para monitoramento completo do sistema ESP32 através da porta serial, similar ao Gerenciador de Tarefas do Windows. Inclui interface gráfica avançada, múltiplas métricas em tempo real, e logging abrangente de dados.
- ✅ Interface similar ao Gerenciador de Tarefas do Windows
- ✅ Abas organizadas: Performance, Processos, System Log
- ✅ Dashboard em tempo real com múltiplas métricas
- ✅ Indicadores visuais coloridos para status do sistema
- ✅ Memória Heap: Total, livre, usado, mínimo livre, maior bloco
- ✅ CPU: Frequência de clock
- ✅ Tarefas: Lista completa com estado, prioridade, stack, uso de CPU
- ✅ Rede: Status WiFi, SSID, RSSI, canal
- ✅ Sistema: Uptime, contagem de tarefas
- ✅ 4 gráficos simultâneos:
- Uso de heap (total/livre/mínimo)
- Utilização percentual do heap
- Frequência da CPU
- Intensidade do sinal WiFi
- ✅ Eixos temporais formatados
- ✅ Atualização automática a cada ciclo de dados
- ✅ Tabela completa de tarefas ativas
- ✅ Colunas: Nome, Estado, Prioridade, Stack Restante, % CPU
- ✅ Scroll automático e atualização em tempo real
- ✅ Arquivo CSV automático com timestamp
- ✅ Dados abrangentes salvos periodicamente
- ✅ Console de log integrado na interface
- ✅ Possibilidade de análise histórica
- ✅ Botões de iniciar/parar monitoramento
- ✅ Seleção automática ou manual de porta serial
- ✅ Limpeza de logs
- ✅ Salvamento forçado de dados
- ✅ Status bar com informações do sistema
- ✅ Controle de Logs: Checkbox para mostrar/ocultar logs HEAP_MONITOR
- ✅ Painel de Comandos: Envio rápido de comandos pré-definidos
- ✅ Sistema de Marcadores: Destaque automático de strings com cores
- ✅ Zoom de Texto: Ctrl + roda do mouse para ajustar fonte (6-24pt)
- ✅ Salvamento de Logs: Exportação automática para arquivo
- ✅ Informações do ESP32: Detecção automática de chip model, versão ESP-IDF, flash, etc.
- ✅ Informação de Core: Coluna mostrando núcleo vinculado às tarefas
- ✅ Decodificação de Backtrace: Ferramenta integrada para análise de crashes (requer configuração do caminho das ferramentas ESP-IDF)
- ✅ Sistema de Configuração: Salvamento automático de configurações em JSON (caminhos, comandos, marcadores)
- ✅ Import/Export de Cmd/Markers: Botões para criar configurações específicas por projeto
- Python 3.7+
- Porta serial conectada ao ESP32
- ESP32 com firmware que gera logs de sistema (formato específico requerido)
- tkinter (normalmente incluído com Python)
- matplotlib, numpy, pyserial (instaláveis via pip)
- Instale as dependências Python:
pip install -r requirements.txt-
Conecte o ESP32 à porta serial
-
Configure o caminho das ferramentas ESP-IDF (opcional, apenas para decodificação de backtrace):
A ferramenta addr2line é necessária apenas para a funcionalidade de decodificação de backtrace na aba "Backtrace". Se você precisar usar essa funcionalidade:
- Na aba "Backtrace", clique em "Browse Tools" e selecione o diretório onde estão instaladas as ferramentas do ESP-IDF
- O caminho típico é:
C:\Users\[seu_usuario]\.espressif\tools\xtensa-esp32s3-elf\[versão]\xtensa-esp32s3-elf\bin\ - Se você não configurou o caminho, a aplicação tentará localizar automaticamente a ferramenta
-
Configuração Automática:
- A aplicação cria automaticamente um arquivo
esp32_monitor_config.jsonna pastatools/ - Todas as configurações são salvas automaticamente quando alteradas
- Caminhos das ferramentas, arquivo ELF, comandos e marcadores são persistidos
- A aplicação cria automaticamente um arquivo
A aplicação agora cria automaticamente um arquivo esp32_monitor_config.json que armazena:
- Caminho das ferramentas ESP-IDF (para decodificação de backtrace)
- Último arquivo ELF usado
- Lista de comandos personalizados
- Lista de marcadores de texto
Todas as configurações são salvas automaticamente quando:
- Você altera o caminho das ferramentas ESP-IDF
- Você seleciona um novo arquivo ELF
- Você adiciona, edita ou remove comandos
- Você adiciona, edita ou remove marcadores
Na aba System Log, você encontrará dois novos botões:
- Função: Salva comandos e marcadores atuais em um arquivo JSON
- Localização:
esp32_commands_markers.json(ou personalizado) - Formato: JSON estruturado com timestamp e versão
- Função: Carrega comandos e marcadores de um arquivo JSON
- Comportamento: Adiciona apenas itens novos (evita duplicatas)
- Notificação: Mostra quantos itens foram importados
{
"commands": [
{
"command": "heap",
"type": "string"
},
{
"command": "tasks",
"type": "string"
}
],
"markers": [
{
"text": "ERROR",
"color": "#FF0000"
},
{
"text": "WARNING",
"color": "#FFA500"
}
],
"export_timestamp": "2024-11-01T12:00:00.000000",
"version": "1.0"
}- ✅ Configurações por Projeto: Crie arquivos de configuração específicos para cada projeto ESP32
- ✅ Backup/Restore: Facilita backup e restauração de configurações personalizadas
- ✅ Compartilhamento: Arquivos JSON podem ser compartilhados entre desenvolvedores
- ✅ Organização: Separe comandos específicos para diferentes tipos de projetos
- ✅ Persistência: Configurações são mantidas entre sessões da aplicação
# Iniciar a interface gráfica completa
python esp32_heap_monitor.py
# Especificar porta serial diretamente
python esp32_heap_monitor.py -p COM3# Plotar dados de arquivo CSV salvo anteriormente
python esp32_heap_monitor.py -l system_monitor_20250101_143022.csv
# Plotar dados de exemplo
python esp32_heap_monitor.py -l example_heap_data.csv-
Adicionar Comando:
- Clique em "Add Command"
- Digite o comando (string ou hex)
- Selecione o tipo
- Clique OK
-
Enviar Comando:
- Selecione um comando na lista
- Clique em "Send" ou pressione Enter
-
Editar/Excluir:
- Selecione um comando
- Use os botões Edit/Delete
-
Adicionar Marcador:
- Clique em "Add Marker"
- Digite o texto a destacar
- Escolha a cor (picker ou hex)
- Clique OK
-
Destaque Automático:
- Qualquer ocorrência do texto marcado
- Aparecerá com fundo colorido
- Aplicação imediata nos logs
Comandos Úteis:
restart- Reiniciar ESP32status- Status do sistemaAT+GMR- Versão do firmwarehelp- Lista de comandos disponíveis
Marcadores Úteis:
ERROR(vermelho) - Destacar errosWARNING(amarelo) - Avisos importantesSUCCESS(verde) - Operações bem-sucedidasHEAP_MONITOR(azul) - Logs de sistema
-
Habilitar Salvamento:
- Marque "Save Log to File" na aba System Log
- Digite ou navegue até o caminho desejado
- O arquivo será criado automaticamente
-
Gerenciar Arquivo:
- "Browse": Selecionar local para salvar o arquivo
- "Clear File": Limpar conteúdo do arquivo (mantém header)
- Arquivo é atualizado em tempo real
-
Formato do Arquivo:
# ESP32 System Monitor Log # Started at: 2025-01-01 14:30:22 [2025-01-01 14:30:22] ESP32: I (1000) WIFI: Connected to MyWiFi [2025-01-01 14:30:23] Monitor: System monitoring started
- Painel Superior: Métricas atuais de CPU, Memória, Rede e Sistema
- Painel de Gráficos: 4 gráficos atualizando em tempo real
- Indicadores Coloridos: Verde (OK), Laranja (Atenção), Vermelho (Crítico)
- Lista de Tarefas: Todas as tarefas ativas do ESP32
- Informações Detalhadas: Estado, prioridade, uso de stack, CPU e núcleo
- Coluna Core: Mostra o núcleo vinculado ou "N/F" se não vinculado
- Atualização Automática: Sincronizada com dados do ESP32
- Layout Avançado: Painel dividido estilo Docklight
- Painel Esquerdo: Comandos e marcadores de strings
- Painel Direito: Display de logs com destaques automáticos
- Adicionar Comando: String ou hexadecimal
- Editar/Excluir: Gerenciamento completo
- Enviar: Botão direto para cada comando
- Tipos Suportados: String e Hexadecimal
- Destaque Automático: Texto específico com cor personalizada
- Adicionar Marcador: Texto + cor de fundo
- Seleção de Cores: Color picker ou entrada manual
- Aplicação Imediata: Destaque em tempo real nos logs
- Logs do ESP32: Todos os logs seriais exceto HEAP_MONITOR
- Logs do Programa: Mensagens do monitor (conexões, erros, status)
- Controle HEAP_MONITOR: Checkbox opcional para mostrar/esconder logs de monitoramento
- Zoom de Texto: Ctrl + Roda do mouse para aumentar/diminuir fonte (6-24pt)
- Salvamento Automático: Checkbox para salvar logs em arquivo
- Seleção de Arquivo: Campo para escolher caminho do arquivo de log
- Limpeza de Arquivo: Botão para limpar conteúdo do arquivo de log
- Timestamp Automático: Cada linha marcada com horário
- Scroll Automático: Mantém o foco na informação mais recente
- Limpeza Manual: Botão para limpar o histórico de logs
- Decodificação de Backtrace: Converte endereços hexadecimais em nomes de funções e arquivos
- Seleção de Arquivo ELF: Campo para especificar o caminho do arquivo .elf
- Entrada de Backtrace: Área de texto para colar o backtrace do ESP32
- Execução Automática: Busca o addr2line do ESP32 automaticamente
- Saída Formatada: Resultados decodificados em área de texto dedicada
- Configurar Ferramentas (opcional): Clique em "Browse Tools" e selecione o diretório das ferramentas ESP-IDF (onde está o addr2line.exe)
- Arquivo ELF: Clique em "Browse ELF" e selecione o arquivo
.elfdo seu projeto ESP32 - Colar Backtrace: Cole o backtrace do ESP32 na área de texto (formato
0x420186ef:0x3fcb3830) - Decodificar: Clique em "Decode Backtrace"
- Resultado: Visualize as funções e arquivos correspondentes na área de saída
💡 Dica: Para testar a funcionalidade, use o arquivo tools/example_backtrace.txt como exemplo de entrada.
No topo direito da aplicação, você verá um painel dedicado com informações automaticamente detectadas do ESP32 em layout horizontal, sempre visível acima das abas, assim que a conexão serial for estabelecida.
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ ESP32 Information │
│ Chip Model: ESP32 Chip Revision: v3.1 ESP-IDF Version: v5.5.1 Flash Size: 2MB PSRAM Size: Unknown CPU Frequency: 160 MHz Uptime: 00:10:25 │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
- Chip Model: Detecta automaticamente ESP32, ESP32-S2, ESP32-S3, ESP32-C3, etc.
- Chip Revision: Versão de revisão do chip (ex: v3.1)
- ESP-IDF Version: Versão do ESP-IDF (ex: v5.5.1)
- Flash Size: Tamanho da memória flash (ex: 2MB)
- PSRAM Size: Tamanho da PSRAM (se disponível)
- CPU Frequency: Frequência de clock da CPU (ex: 160 MHz)
- Uptime: Tempo total de operação do firmware (formato HH:MM:SS)
- Detecção Automática: Analisa os logs de boot do ESP32 em tempo real
- Atualização Imediata: Informações aparecem assim que o ESP32 é ligado/resetado
- Identificação pelo Alvo: O modelo é inferido a partir do prefixo
boot.<alvo>(ex.:boot.esp32s3,boot.esp32) - Integração com Backtrace: Usa o chip model detectado para sugerir automaticamente a ferramenta
addr2linecorreta
- ✅ Identificação rápida do modelo ESP32 conectado
- ✅ Configuração automática da ferramenta de backtrace
- ✅ Debugging aprimorado com informações completas do sistema
- ✅ Compatibilidade universal com todos os modelos ESP32
Nota: As informações são extraídas dos logs de boot padrão do ESP-IDF, não requerendo nenhuma modificação no firmware.
💡 Dica: Para testar a detecção de informações do ESP32, use o arquivo tools/example_esp32_boot.log com o script tools/test_esp32_info.py.
-p, --port: Porta serial (ex: COM3, /dev/ttyUSB0)-b, --baudrate: Baud rate (padrão: 115200)-m, --max-points: Número máximo de pontos no gráfico (padrão: 100)-l, --load-csv: Carregar e plotar dados de arquivo CSV
- Ctrl + Roda do Mouse: Aumentar/diminuir tamanho da fonte (6-24pt)
- ↑/↓: Navegar pelo histórico de logs
- ↑/↓: Navegar pela lista de tarefas
- Enter: Selecionar tarefa
- Ctrl+Q: Sair da aplicação
- F5: Atualizar dados (quando conectado)
example_heap_data.csv: Dados de heap de exemplo para testesexample_system_data.csv: Dados de sistema de exemploexample_esp32_boot.log: Logs de boot ESP32 para testes de detecçãoesp32_commands_markers_example.json: Exemplo de arquivo de configuração com comandos e marcadorestest_regex.py: Script para testar expressões regularestest_current_log.py: Script para testar formato atual de logtest_esp32_info.py: Script para testar detecção de informações ESP32example_backtrace.txt: Exemplo de backtrace para testes
system_monitor_YYYYMMDD_HHMMSS.csv: Arquivo CSV abrangente com dados timestampedesp32_monitor_config.json: Arquivo de configuração JSON criado automaticamente- Interface gráfica em tempo real com múltiplas abas
- Logs detalhados salvos automaticamente
timestamp,heap_total,heap_free,heap_min_free,heap_largest_block,cpu_freq,task_count,wifi_rssi,uptime
2025-01-01T14:30:22.123456,327680,245760,180224,131072,240,8,-45,00:15:30
2025-01-01T14:30:27.123456,327680,245600,180224,131072,240,8,-45,00:15:35
- Linha Azul: Heap total disponível
- Linha Verde: Heap livre atual
- Linha Vermelha: Heap mínimo livre registrado
- Linha Vermelha Tracejada: Limite crítico de 10KB - abaixo deste valor, operações WiFi/BLE podem falhar ou causar instabilidade no sistema
- Linha Laranja: Percentual de utilização do heap (0-100%)
- Escala automática com alertas visuais
- Linha Roxa: Frequência da CPU em MHz
- Monitoramento de performance do processador
- Linha Azul: Intensidade do sinal RSSI em dBm
- Monitoramento da qualidade da conexão de rede
- Por padrão: Logs HEAP_MONITOR do ESP32 são ocultados da aba System Log
- Benefício: Interface mais limpa focada em logs importantes
- Uso: Marque "Show ESP32 Serial Logs" para ver também os logs de monitoramento do sistema
- Vantagem: Permite aumentar a frequência dos logs de monitoramento sem poluir a interface
- ESP32 Logs: A cada 1 segundo (formato compacto permite alta frequência)
- Gráficos: Atualizam a cada ciclo de dados do ESP32
- Interface: Atualizações de GUI processadas a cada 100ms
- Threading: Separação entre coleta de dados e atualização visual
- CSV: Dados salvos apenas quando há mudanças significativas
- Console: Logs sempre disponíveis no terminal/console
- Memória: Uso controlado de RAM com deque limitado
- Verifique se o ESP32 está conectado
- Use
python -c "import serial.tools.list_ports; print([p.device for p in serial.tools.list_ports.comports()])"para listar portas disponíveis
- Verifique se o ESP32 está gerando logs de heap no formato correto
- Certifique-se de que o baud rate está correto
- No Linux/Mac:
sudo python esp32_heap_monitor.py - No Windows: Execute como administrador ou verifique permissões da porta
# 1. Instalar dependências
pip install -r requirements.txt
# 2. Conectar ESP32 e executar monitoramento
python esp32_heap_monitor.py -p COM3
# 3. Fechar janela do gráfico para parar o monitoramento
# 4. Plotar dados salvos posteriormente
python esp32_heap_monitor.py -l heap_monitor_20250101_143022.csvO script agora usa um formato compacto de linha única para máxima eficiência:
I (xxxxx) HEAP_MONITOR: H:327680,245760,180224,131072 C:160 T:8 W:MyWiFi,-45 U:00:15:30 TD:TaskName,R,1,1024,15;AnotherTask,Y,2,2048,5
- H:
heap_total,heap_free,heap_min_free,heap_largest_block - C:
cpu_frequency_mhz - T:
task_count - W:
wifi_ssid,rssiouDISCONNECTED - U:
uptime_hh:mm:ss - TD:
task1_name,state,priority,stack_left,cpu%;task2_name,state,priority,stack_left,cpu%
- R: Running
- Y: Ready
- B: Blocked
- S: Suspended
- D: Deleted
- U: Unknown
Frequência: Atualização a cada 1 segundo (alta frequência possível devido ao formato compacto)
Importante: Certifique-se de que o firmware do ESP32 foi atualizado com a nova função prvHeapMonitorTask que gera logs no formato compacto.