Exemplo de Rotator Bluetooth com ESP32 - Tutorial de Interface de Controle com Disco/Botão Giratório
Visão Geral
O exemplo Bluetooth Rotator oferece um controle com disco/botão giratório, acessível pelo app DIYables Bluetooth STEM. Projetado para placas ESP32, com suporte a conexões BLE (Bluetooth Low Energy) e Bluetooth Clássico. O rotator envia valores de ângulo e oferece modos de rotação contínua (0-360°) ou de faixa de ângulo limitada — perfeito para controle de servo, exibição de bússola, botões de volume e qualquer aplicação que precise de entrada rotacional.
Este exemplo oferece suporte a dois modos de Bluetooth:
- ESP32 BLE (Bluetooth Low Energy): Funciona no Android e no iOS
- ESP32 Bluetooth Clássico: Funciona somente no Android. O iOS não oferece suporte ao Bluetooth Clássico. Use o BLE se precisar de suporte ao iOS.

Recursos
- Botão Giratório: Toque e arraste para girar o disco na tela
- Modo Contínuo: Rotação completa de 360° sem limites
- Modo Limitado: Faixa de ângulo restrita (por exemplo, 0-180° para servos)
- Saída de Ângulo: Valor de ângulo float enviado em tempo real
- Compatível com Servo: Mapeamento direto para ângulos de servo (0-180°)
- BLE e Bluetooth Clássico: Escolha o modo Bluetooth que melhor atende ao seu projeto
- Multiplataforma: O modo BLE funciona no Android e no iOS; o Bluetooth Clássico funciona no Android
- Opção de Baixo Consumo: O modo BLE consome menos energia que o Bluetooth Clássico
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Código ESP32
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a primeira vez que você usa o ESP32, consulte o tutorial sobre como configurar o ambiente para o ESP32 no Arduino IDE.
- Conecte a placa ESP32 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa ESP32 e a porta COM apropriadas.
- Acesse o ícone Libraries na barra à esquerda do Arduino IDE.
- Pesquise "DIYables Bluetooth" e encontre a biblioteca DIYables Bluetooth, da DIYables
- Clique no botão Install para instalar a biblioteca.

- Será solicitado que você instale outras dependências da biblioteca
- Clique no botão Install All para instalar todas as dependências da biblioteca.

Escolha um dos dois modos de Bluetooth abaixo, de acordo com a sua necessidade:
Código ESP32 Bluetooth Clássico (funciona com o app somente no Android)
Observação: O Bluetooth Clássico NÃO é compatível com o iOS. Se você precisa de suporte ao iOS, use o código BLE abaixo.
- No Arduino IDE, vá em File Examples DIYables Bluetooth Esp32Bluetooth_Rotator, ou copie o código acima e cole no editor do Arduino IDE
- Clique no botão Upload do Arduino IDE para carregar o código no ESP32
- Abra o Serial Monitor
- Confira o resultado no Serial Monitor. Ele deve ficar como abaixo:
Código ESP32 BLE (funciona com o app no Android e no iOS)
- No Arduino IDE, vá em File Examples DIYables Bluetooth Esp32BLE_Rotator, ou copie o código acima e cole no editor do Arduino IDE
- Clique no botão Upload do Arduino IDE para carregar o código no ESP32
- Abra o Serial Monitor
- Confira o resultado no Serial Monitor. Ele deve ficar como abaixo:
App para Celular
- Se você estiver usando o código ESP32 Bluetooth Clássico, é preciso parear o ESP32 com o seu celular Android antes de abrir o app:
- Vá em Configurações > Bluetooth do seu celular
- Verifique se o Bluetooth está ligado
- Seu celular vai procurar os dispositivos disponíveis
- Encontre e toque em "ESP32_Rotator" na lista de dispositivos disponíveis
- Confirme a solicitação de pareamento (não é necessário PIN)
- Aguarde até aparecer "Paired" abaixo do nome do dispositivo
- Se você estiver usando o código ESP32 BLE, não é necessário parear. Basta ir para o próximo passo.
- Abra o app DIYables Bluetooth
- Ao abrir o app pela primeira vez, ele vai pedir permissões. Conceda as seguintes:
- Permissão de Dispositivos Próximos (Android 12+) / permissão de Bluetooth (iOS) - necessária para procurar e conectar a dispositivos Bluetooth
- Permissão de Localização (somente Android 11 e anteriores) - exigida por versões mais antigas do Android para procurar dispositivos BLE
- Verifique se o Bluetooth está ligado no seu celular
- Na tela inicial, toque no botão Connect. O app vai procurar dispositivos BLE e Bluetooth Clássico.

- Encontre e toque no seu dispositivo nos resultados da busca para conectar:
- Para Bluetooth Clássico: toque em "ESP32_Rotator"
- Para BLE: toque em "ESP32BLE_Rotator"
- Depois de conectado, o app volta automaticamente para a tela inicial. Selecione o app Rotator no menu de apps.

Observação: Você pode tocar no ícone de configurações na tela inicial para ocultar/mostrar apps. Para mais detalhes, consulte o Manual do Usuário do DIYables Bluetooth App.
- Arraste o botão do rotator para mudar o ângulo

Agora olhe de volta para o Serial Monitor no Arduino IDE. Você verá:
- Gire o botão no app e observe os valores de ângulo em tempo real no Serial Monitor
Personalização Criativa - Adapte o Código ao Seu Projeto
Configure o Modo do Rotator
Defina o modo contínuo ou limitado:
Tratar Mudanças de Ângulo
Use o callback onRotatorAngle() para receber os valores de ângulo:
Tratar a Solicitação de Configuração do App
Enviar Ângulo para o App
Você pode atualizar a posição do rotator a partir do ESP32:
Tratar Eventos de Conexão
Como Usar o Rotator
Controles da Interface do App
A interface do rotator no app DIYables Bluetooth oferece:
- Disco Giratório: Toque e arraste para girar
- Exibição do Ângulo: Mostra o valor atual do ângulo
- Indicador Visual: Marca a posição de rotação atual
Modos do Rotator
- ROTATOR_MODE_CONTINUOUS (0): Rotação completa de 360°, dá a volta
- ROTATOR_MODE_LIMITED (1): Restrito à faixa de ângulo mínimo/máximo
Exemplos de Programação
Controle de Servo
Botão de Volume/Brilho
Exibição de Bússola
Controle de Motor de Passo
Técnicas Avançadas de Programação
Ajuste do Ângulo para Incrementos
Controle Baseado em Zonas
BLE vs Bluetooth Clássico - Qual Escolher?
| Recurso | BLE (Esp32BLE_Rotator) | Bluetooth Clássico (Esp32Bluetooth_Rotator) |
|---|---|---|
| Suporte ao iOS | ? Sim | ? Não |
| Suporte ao Android | ? Sim | ? Sim |
| Consumo de Energia | Baixo | Maior |
| Alcance | ~30-100m | ~10-100m |
| Taxa de Dados | Menor | Maior |
| Pareamento Necessário | Não (conexão automática) | Sim (pareamento manual) |
| Ideal Para | Alimentado por bateria, multiplataforma | Alta taxa de transferência, somente Android |
Solução de Problemas
Problemas Comuns
1. Não consigo encontrar o dispositivo no app
- Verifique se o ESP32 está ligado e se o sketch foi carregado
- Para BLE: verifique se o Bluetooth e a Localização do seu celular estão ativados
- Para Bluetooth Clássico: pareie o dispositivo primeiro nas configurações de Bluetooth do celular
- Verifique se o esquema de partição correto está selecionado (Huge APP)
2. O rotator não responde
- Verifique o status da conexão Bluetooth no app
- Confirme a conexão no Serial Monitor
- Tente desconectar e reconectar
3. Os valores de ângulo parecem incorretos
- Verifique a configuração do modo do rotator (contínuo vs limitado)
- Confirme as configurações de ângulo mínimo/máximo com getMinAngle() e getMaxAngle()
- Verifique no Serial Monitor os valores de ângulo realmente recebidos
4. O servo treme em certos ângulos
- Adicione um pequeno filtro de zona morta para as mudanças de ângulo
- Use uma fonte de alimentação separada para o servo
- Adicione um capacitor entre os pinos de alimentação do servo
5. A conexão cai com frequência
- Chegue mais perto do ESP32 (reduza a distância)
- Para BLE: verifique se há interferência de outros dispositivos BLE
- Para Bluetooth Clássico: garanta uma fonte de alimentação estável para o ESP32
6. Sketch grande demais / espaço insuficiente
- No Arduino IDE, vá em Tools > Partition Scheme e selecione "Huge APP (3MB No OTA/1MB SPIFFS)" ou "No OTA (Large APP)"
- O esquema de partição padrão oferece apenas ~1,2MB para o código do app, o que não é suficiente para as bibliotecas de Bluetooth
- Essa configuração oferece ~3MB ao sacrificar a partição de OTA (atualização over-the-air)
Dicas de Depuração
Adicione uma depuração completa:
Ideias de Projetos
Controle de Motores
- Botão de posição do servo
- Seletor de ângulo do motor de passo
- Dial de velocidade do motor
- Controle de articulação de braço robótico
Projetos de Display
- Exibição de direção da bússola
- Ponteiros de relógio analógico
- Indicador de direção do vento
- Simulador de medidor de mostrador
Projetos de Áudio
- Botão de controle de volume
- Seletor de frequência de tom
- Controle de banda do equalizador
- Dial de sintonia de rádio
Projetos de Iluminação
- Controle de posição de anel de LED
- Roda de cores (seletor de matiz)
- Controle de direção de refletor
- Ângulo de iluminação de palco
Integração com Outros Apps Bluetooth
Combine com o Bluetooth Slider
Use o rotator para o ângulo e o slider para velocidade/intensidade:
Combine com o Bluetooth Table
Exiba os dados do rotator em uma tabela estruturada:
Próximos Passos
Depois de dominar o exemplo Bluetooth Rotator, experimente:
- Bluetooth Joystick - Para controle direcional 2D
- Bluetooth Slider - Para controle de valores lineares
- Bluetooth Analog Gauge - Para exibição de feedback no estilo de medidor
- Multiple Bluetooth Apps - Combinando o rotator com outros controles
Suporte
Para obter mais ajuda:
- Consulte a documentação de referência da API
- Visite os tutoriais da DIYables
- Fóruns da comunidade Arduino