Aplicativo Android para controle e monitoramento do robô ESP32 NeuroBeep via Bluetooth Low Energy (BLE).
- Scan automático de dispositivos ESP32/Neuro
- Conexão via BLE com UUIDs específicos
- Reconexão automática em caso de desconexão
- Status de conexão em tempo real
- Movimentos direcionais: Frente, Trás, Esquerda, Direita, Parar
- Controle de velocidade: Slider ajustável de -1.0 a 1.0 m/s
- Comandos do sistema:
- START: Inicia sistema do robô
- RESET_KALMAN: Reseta filtro de Kalman
- CALIBRATE_IMU: Calibra IMU
- TEST: Testa conexão
- Iniciar/parar seguidor de linha
- Configuração de velocidade base (0.1 - 0.5 m/s)
- Ajuste de ganho Kp (0.0001 - 0.01)
- Aplicação de configurações em tempo real
- Reset de contador de marcadores
- Configuração de espaçamento entre marcadores (0.1 - 5.0 m)
- Cálculo automático de distância percorrida
- Taxa ajustável: 1 - 30 Hz
- Formato binário: 125 bytes, protocolo 0xBEEF
- Dados monitorados:
- 🚗 Encoders (esquerdo/direito)
- 🏎️ Velocidades e targets
- ⚡ PWM e gains dos motores
- 📍 Odometria (posição X, Y, θ e velocidades)
- 📡 IMU (acelerômetro e giroscópio)
- 📏 Sensor de linha
- 🎯 Marcadores (contador e distância)
- 🌍 GPS (latitude, longitude, altitude, velocidade)
- 📇 RFID
- Logs em tempo real de todas as operações
- Limitado a 100 entradas (mais recentes primeiro)
- Função de limpar logs
app/src/main/java/com/example/neurobeep/
├── MainActivity.kt # Activity principal com navegação
├── ble/
│ └── BleManager.kt # Gerenciador de comunicação BLE
├── data/
│ └── TelemetryData.kt # Modelo de dados de telemetria
├── viewmodel/
│ └── RobotViewModel.kt # ViewModel com lógica de negócio
└── ui/
└── screens/
├── ConnectionScreen.kt # Tela de conexão BLE
├── ControlScreen.kt # Tela de controles do robô
└── TelemetryScreen.kt # Tela de telemetria
- Kotlin: Linguagem principal
- Jetpack Compose: UI moderna e reativa
- Coroutines + Flow: Programação assíncrona
- ViewModel + LiveData: Arquitetura MVVM
- Navigation Compose: Navegação entre telas
- BLE API: Comunicação Bluetooth Low Energy
- Accompanist Permissions: Gerenciamento de permissões
- Android 7.0 (API 24) ou superior
- Bluetooth Low Energy (BLE)
- Permissões:
BLUETOOTHBLUETOOTH_ADMINBLUETOOTH_CONNECT(Android 12+)BLUETOOTH_SCAN(Android 12+)ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION
SERVICE_UUID = "8f3b6fcf-6d12-437f-8b68-9a3494fbe656"
CHAR_UUID = "d5593e6b-3328-493a-b3c9-9814683d8e40"Formato: 125 bytes total
[header:2][encoders:8][velocities:16][pwm:8][gains:8]
[odom_pos:12][odom_vel:12][imu:12][line:2]
[line_markers:6][gps:17][rfid:12]
Header: 0xBEEF
-
Conexão:
- Abra o app e vá para a aba "Conexão"
- Toque em "🔍 Scan BLE" (conceda permissões se solicitado)
- Selecione o dispositivo ESP32 da lista
- Aguarde conexão (status ficará verde)
-
Controle:
- Na aba "Controle", use os botões direcionais para mover o robô
- Ajuste a velocidade com o slider
- Use os comandos do sistema conforme necessário
-
Seguidor de Linha:
- Configure velocidade e ganho Kp
- Toque em "Aplicar Configuração"
- Toque em "
▶️ Iniciar" para ativar - Toque em "⏹️ Parar" para desativar
-
Telemetria:
- Na aba "Telemetria", ajuste a taxa (Hz)
- Toque em "
▶️ Iniciar" para começar a receber dados - Visualize todos os sensores em tempo real
- Toque em "⏹️ Parar" quando terminar
- Vá em Configurações > Aplicativos > NeuroBeep > Permissões
- Ative todas as permissões de Localização e Bluetooth
- Verifique se o ESP32 está ligado e com BLE ativo
- Certifique-se que o nome do dispositivo contém "neuro" ou "esp32"
- Tente desligar e ligar o Bluetooth do smartphone
- Mantenha o smartphone próximo ao ESP32 (< 10 metros)
- Evite obstáculos metálicos entre os dispositivos
- Reduza a taxa de telemetria se houver congestionamento
- Verifique se telemetria está ativa (botão verde)
- Confirme conexão BLE estável
- Tente resetar a conexão
Este projeto faz parte do sistema NeuroBeep para controle de robôs autônomos.
Para compilar o projeto:
./gradlew assembleDebugPara instalar no dispositivo:
./gradlew installDebugEste app Android replica todas as funcionalidades do script Python original:
- ✅ Scan e conexão BLE automática
- ✅ Interface de controle com botões direcionais
- ✅ Telemetria binária (formato 0xBEEF)
- ✅ Seguidor de linha com configuração
- ✅ Sistema de marcadores
- ✅ Logs em tempo real
- ✅ Múltiplas abas organizadas
- 📱 Interface nativa e otimizada
- 🔋 Melhor gerenciamento de bateria
- 🎨 Design Material 3 moderno
- 📊 Visualização mais intuitiva dos dados
- 🚀 Performance superior
- 📲 Portabilidade (sem necessidade de laptop)