Skip to content

Rinaldots/app_debug_neurobeep

Repository files navigation

NeuroBeep - Aplicativo Android

Aplicativo Android para controle e monitoramento do robô ESP32 NeuroBeep via Bluetooth Low Energy (BLE).

🚀 Funcionalidades

📱 Conexão 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

🎮 Controle do Robô

  • 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

🛤️ Seguidor de Linha

  • 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

🎯 Marcadores de Linha

  • 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

📊 Telemetria em Tempo Real

  • 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

📝 Sistema de Logs

  • Logs em tempo real de todas as operações
  • Limitado a 100 entradas (mais recentes primeiro)
  • Função de limpar logs

🏗️ Arquitetura

Estrutura do Projeto

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

Tecnologias Utilizadas

  • 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

📋 Requisitos

  • Android 7.0 (API 24) ou superior
  • Bluetooth Low Energy (BLE)
  • Permissões:
    • BLUETOOTH
    • BLUETOOTH_ADMIN
    • BLUETOOTH_CONNECT (Android 12+)
    • BLUETOOTH_SCAN (Android 12+)
    • ACCESS_FINE_LOCATION
    • ACCESS_COARSE_LOCATION

🔧 Configuração

UUIDs do ESP32

SERVICE_UUID = "8f3b6fcf-6d12-437f-8b68-9a3494fbe656"
CHAR_UUID    = "d5593e6b-3328-493a-b3c9-9814683d8e40"

Protocolo de Telemetria Binária

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

📱 Como Usar

  1. 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)
  2. 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
  3. Seguidor de Linha:

    • Configure velocidade e ganho Kp
    • Toque em "Aplicar Configuração"
    • Toque em "▶️ Iniciar" para ativar
    • Toque em "⏹️ Parar" para desativar
  4. 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

🐛 Troubleshooting

Permissões negadas

  • Vá em Configurações > Aplicativos > NeuroBeep > Permissões
  • Ative todas as permissões de Localização e Bluetooth

Não encontra dispositivo

  • 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

Desconexão frequente

  • 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

Telemetria não atualiza

  • Verifique se telemetria está ativa (botão verde)
  • Confirme conexão BLE estável
  • Tente resetar a conexão

📄 Licença

Este projeto faz parte do sistema NeuroBeep para controle de robôs autônomos.

👨‍💻 Desenvolvimento

Para compilar o projeto:

./gradlew assembleDebug

Para instalar no dispositivo:

./gradlew installDebug

🔄 Comparação com Python

Este 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

Vantagens do App Android

  • 📱 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)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages