- C++ 94.3%
- C 5.7%
| include | ||
| src | ||
| .gitignore | ||
| INSTRUCOES.md | ||
| platformio.ini | ||
| projeto.md | ||
| README.md | ||
Spectro - RF Multi-Band Analyzer
Analisador de espectro RF multi-banda DIY com dashboard web em tempo real, autenticacao RFID e proxy reverso para AirGrid M5.
O que e
Sistema portatil para diagnostico de interferencia RF em nivel ISP, cobrindo:
- 2.4 GHz - Varredura completa de 126 canais com 4x nRF24L01+ PA/LNA
- 5.8 GHz - Integracao com AirGrid M5 via Ethernet (airView)
- BLE - Scan de dispositivos Bluetooth Low Energy
- 433 MHz - Deteccao de atividade (RX/TX)
- WiFi - Scan de redes com RSSI e canal
- TX controlado - Geracao de interferencia para testes (CW, Flood, Channel Hop)
Arquitetura
+---------------+
| AirGrid M5 | 5.8GHz
| (airView) |
+-------+-------+
| Ethernet
|
+---------------------+ +---------------------------+
| SENSOR NODE | | MASTER NODE |
| ESP32-S3 #1 | | ESP32-S3 #2 |
| | | |
| 4x nRF24L01+ PA/LNA| | W5500 Ethernet |
| 433MHz RX + TX |<-->| RFID RC522 |
| |ESP | BLE (NimBLE) |
| Varredura 2.4GHz |NOW | WiFi AP oculto |
| Interferencia TX | | Web Server + WebSocket |
+---------------------+ +---------------------------+
|
WiFi AP oculto
|
+---------------+
| Dashboard |
| 192.168.4.1 |
+---------------+
Hardware necessario
| Componente | Qtd | Node | Funcao |
|---|---|---|---|
| ESP32-S3 DevKitC-1 | 2x | Sensor + Master | Processamento |
| nRF24L01+ PA/LNA | 4x | Sensor | Varredura/TX 2.4GHz |
| Shield Ethernet W5500 | 1x | Master | Conexao AirGrid M5 |
| RFID RC522 | 1x | Master | Autenticacao WiFi |
| Modulo 433MHz RX | 1x | Sensor | Receptor 433MHz |
| Modulo 433MHz TX | 1x | Sensor | Transmissor 433MHz |
| AirGrid M5 | 1x | Externo | Espectro 5.8GHz (PoE) |
| Regulador 3.3V 4A+ | 1x | Sensor | Alimentacao nRF24 |
| Capacitores 100uF+100nF | 4 pares | Sensor | Estabilidade nRF24 |
| Fonte 5V 6A | 1x | Sensor | Alimentacao principal |
Documentacao
- INSTRUCOES.md - Guia completo de montagem, pinagem, ligacao eletrica e troubleshooting
- projeto.md - Especificacao do projeto, arquitetura e metricas
Compilacao e Upload
Requisitos
- PlatformIO (CLI ou extensao VS Code)
- Python 3.8+ (para PlatformIO)
- Cabo USB-C (ESP32-S3 DevKitC-1 usa USB nativo)
Instalar PlatformIO
Windows
- Instale o Python 3 (marque "Add to PATH")
- Abra o Prompt de Comando ou PowerShell:
pip install platformio
pio --version
Ou instale via VS Code: Extensions > busque "PlatformIO IDE" > Install.
Linux (Debian/Ubuntu)
# Dependencias do sistema
sudo apt update
sudo apt install python3 python3-venv git
# Instalar PlatformIO em venv (recomendado)
python3 -m venv ~/.platformio-venv
~/.platformio-venv/bin/pip install platformio
# Criar alias (adicione ao ~/.bashrc ou ~/.zshrc)
echo 'alias pio="$HOME/.platformio-venv/bin/pio"' >> ~/.bashrc
source ~/.bashrc
# Verificar
pio --version
# Permissao de porta serial (requer logout)
sudo usermod -a -G dialout $USER
Ou via pip global (se o sistema permitir):
pip install platformio
macOS
# Via Homebrew
brew install platformio
# Ou via pip
pip3 install platformio
# Verificar
pio --version
Ou instale via VS Code: Extensions > busque "PlatformIO IDE" > Install.
Compilar
# Clonar ou navegar ate o projeto
cd Spectro
# Compilar Sensor Node
pio run -e sensor_node
# Compilar Master Node
pio run -e master_node
# Compilar ambos
pio run
A primeira compilacao baixa automaticamente o toolchain ESP32-S3 e todas as bibliotecas.
Upload
Conecte o ESP32-S3 via USB-C. Se nao for detectado, segure BOOT enquanto conecta.
# Upload Sensor Node
pio run -t upload -e sensor_node
# Upload Master Node
pio run -t upload -e master_node
Monitor Serial
# Sensor Node
pio device monitor -e sensor_node
# Master Node
pio device monitor -e master_node
Saida esperada do Sensor:
=============================
Spectro - Sensor Node
=============================
[INIT] Inicializando modulos nRF24...
[INIT] 4 modulos OK
[INIT] Inicializando ESP-NOW...
[INIT] Sensor Node pronto!
Saida esperada do Master:
=============================
Spectro - Master Node
RFID + AirGrid + AP Oculto
=============================
[INIT] Inicializando Ethernet W5500...
[INIT] Ethernet OK
[WIFI] AP Oculto: 'Spectro-xxxx' canal 6
[WIFI] IP: 192.168.4.1
[INIT] Inicializando ESP-NOW...
[INIT] Inicializando RFID RC522...
[INIT] RFID OK
[INIT] Inicializando BLE...
[WEB] Servidor iniciado na porta 80
[INIT] Master Node pronto!
[INIT] Acesse: http://192.168.4.1
Limpar build
pio run -t clean
Atualizar dependencias
pio pkg update
Dashboard Web
Conecte ao WiFi Spectro-xxxx (senha: spectro123) e acesse http://192.168.4.1.
Funcionalidades:
- Espectro 2.4GHz - Grafico de 126 canais com overlay de bandas WiFi e TX
- Configuracao de modulos - Selecao individual de modo (RX/TX/Standby), canal WiFi alvo, potencia e tipo de TX
- Presets - Configuracoes rapidas (Todos RX, 1TX+3RX, 2TX+2RX, Todos TX)
- Interferencia por canal - Barra de 0-100% por canal WiFi (1-13)
- Redes WiFi - Lista de SSIDs com canal e RSSI
- BLE - Contagem de dispositivos e RSSI medio
- RFID - Status de autenticacao, cadastro de cartoes, modo master
- AirGrid M5 - Sinal, qualidade, frequencia e acesso ao AirOS via proxy
LED RGB de Status
LED WS2812 integrado do ESP32-S3-DevKitC-1 (GPIO 48):
| Cor | Estado | Significado |
|---|---|---|
| Verde fixo | OK_IDLE | Tudo conectado, standby |
| Vermelho fixo | ERROR_SOLID | Falha critica (nenhum nRF24) |
| Vermelho piscando | ERROR_BLINK | Sensor/master desconectado |
| Azul piscando | SCANNING | Modulos em modo RX scan |
| Roxo piscando | TX_NOISE | Modulos em modo TX interferencia |
Estrutura do Projeto
Spectro/
├── include/
│ ├── config.h # Pinagem e constantes do sistema
│ ├── protocol.h # Protocolo ESP-NOW (pacotes, enums)
│ └── status_led.h # LED RGB WS2812 (estados visuais)
│
├── src/
│ ├── sensor_node/
│ │ ├── main.cpp # Entry point do sensor
│ │ ├── nrf24_manager.h # Gerenciamento dos 4x nRF24L01+
│ │ ├── rf_scanner.h # Varredura de espectro 2.4GHz
│ │ ├── rf_transmitter.h # Geracao de interferencia TX
│ │ └── sensor_espnow.h # Comunicacao ESP-NOW (lado sensor)
│ │
│ └── master_node/
│ ├── main.cpp # Entry point do master
│ ├── master_espnow.h # Comunicacao ESP-NOW (lado master)
│ ├── wifi_analyzer.h # Scan WiFi (SSID, RSSI, canal)
│ ├── ble_analyzer.h # Scan BLE (NimBLE)
│ ├── airgrid_client.h # Cliente HTTP + proxy AirGrid M5
│ ├── rfid_auth.h # Autenticacao RFID RC522
│ ├── web_server.h # Web server + WebSocket + API REST
│ └── web_content.h # Dashboard HTML/CSS/JS embutido
│
├── platformio.ini # Configuracao de build (2 environments)
├── INSTRUCOES.md # Guia de montagem e pinagem
├── projeto.md # Especificacao do projeto
└── README.md # Este arquivo
Dependencias (instaladas automaticamente)
Sensor Node
| Biblioteca | Versao | Funcao |
|---|---|---|
| RF24 | ^1.4.9 | Controle dos nRF24L01+ |
| ArduinoJson | ^7.3.0 | Serializacao de dados |
Master Node
| Biblioteca | Versao | Funcao |
|---|---|---|
| ESPAsyncWebServer | ^3.6.0 | Web server assincrono |
| NimBLE-Arduino | ^1.4.0 | BLE stack |
| MFRC522 | ^1.4.11 | Leitor RFID RC522 |
| Ethernet_Generic | ^2.8.0 | Driver W5500 |
| ArduinoJson | ^7.3.0 | Serializacao de dados |
Licenca
Uso educacional e diagnostico. Geracao de interferencia RF so deve ser utilizada em ambientes controlados e de acordo com a legislacao local.