Exemplo de Plotter Bluetooth com ESP32 - Tutorial de Interface de Gráfico de Dados em Tempo Real
Visão Geral
O exemplo Bluetooth Plotter oferece gráficos de dados em tempo real no seu smartphone, por meio do app DIYables Bluetooth STEM. Projetado para placas ESP32, com suporte a conexões BLE (Bluetooth Low Energy) e Bluetooth Clássico. Plote até 10 séries de dados ao mesmo tempo, com eixos configuráveis, escala automática, rótulos de legenda e exibição com rolagem — perfeito para visualização de sensores, análise de sinais e monitoramento de dados.
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
- Gráfico com Várias Séries: Plote até 10 séries de dados ao mesmo tempo
- Exibição em Tempo Real: Gráfico com rolagem contínua e atualizações ao vivo
- Eixos Configuráveis: Defina a faixa do eixo Y, os rótulos dos eixos e o título do gráfico
- Escala Automática: Ajusta automaticamente a faixa do eixo Y para caber nos dados
- Legendas Personalizadas: Dê um nome a cada série de dados para facilitar a identificação
- Amostras Ajustáveis: Configure o número de pontos de dados visíveis
- 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
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_Plotter, 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_Plotter, 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_Plotter" 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_Plotter"
- Para BLE: toque em "ESP32BLE_Plotter"
- Depois de conectado, o app volta automaticamente para a tela inicial. Selecione o app Plotter 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.
- Veja o gráfico de dados em tempo real rolando pela tela

Agora olhe de volta para o Serial Monitor no Arduino IDE. Você verá:
- O plotter exibe em tempo real ondas de seno, cosseno e ruído aleatório
Personalização Criativa - Adapte o Código ao Seu Projeto
Configure as Opções do Gráfico
Configure a aparência do gráfico antes da conexão:
Enviar Dados para o Plotter
Várias sobrecargas para enviar de 1 a 4+ séries de dados:
Tratar a Solicitação de Dados do App
Quando o app se conecta e abre a tela do Plotter, ele pode solicitar dados:
Tratar Eventos de Conexão
Como Usar o Plotter
Controles da Interface do App
A interface do plotter no app DIYables Bluetooth oferece:
- Gráfico em Tempo Real: Gráfico de linhas com rolagem e várias séries
- Legenda: Rótulos coloridos para cada série de dados
- Rolagem Automática: Rola continuamente para mostrar os dados mais recentes
Formato dos Dados
Os dados são enviados como valores float separados por vírgula:
- Série única: bluetoothPlotter.send(value)
- Várias séries: bluetoothPlotter.send(val1, val2, val3)
- Taxa de dados: Recomendamos um intervalo de 10-100ms para um gráfico suave
Exemplos de Programação
Gráfico de um Único Sensor
Gráfico de Acelerômetro com Vários Eixos
Plotter de Pinos Analógicos
Gerador de Sinais
Técnicas Avançadas de Programação
Filtro de Média Móvel
Configuração Dinâmica do Gráfico
BLE vs Bluetooth Clássico - Qual Escolher?
| Recurso | BLE (Esp32BLE_Plotter) | Bluetooth Clássico (Esp32Bluetooth_Plotter) |
|---|---|---|
| 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 gráfico não está atualizando
- Verifique o status da conexão Bluetooth no app
- Verifique se bluetoothPlotter.send() está sendo chamado no loop
- Verifique se bluetooth.isConnected() retorna true
- Tente desconectar e reconectar
3. Os dados do gráfico parecem entrecortados
- Reduza o intervalo do gráfico (por exemplo, 50ms em vez de 500ms)
- Garanta uma conexão Bluetooth estável
- Reduza o número de séries de dados se a largura de banda for limitada
4. A faixa do eixo Y não se ajusta aos dados
- Use enableAutoScale(true) para ajuste automático
- Ou defina uma faixa maior com setYAxisRange()
5. Os rótulos da legenda não aparecem
- Chame setLegendLabels() antes de a conexão ser estabelecida
- Faça o número de rótulos corresponder ao número de séries de dados
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
Monitoramento de Sensores
- Exibição de tendência de temperatura e umidade
- Monitoramento do nível de luz ao longo do dia
- Rastreamento de movimento com acelerômetro
- Visualização de dados de sensor de pressão
Análise de Sinais
- Visualizador de frequência de áudio
- Monitoramento de vibração
- Exibição de pulso/frequência cardíaca
- Intensidade de campo eletromagnético
Educação
- Comparação das ondas seno, cosseno e tangente
- Curvas de carga/descarga de circuito RC
- Visualização da resposta de um controlador PID
- Registrador de dados de experimentos de física
Industrial
- Monitoramento de vibração de máquinas
- Tendência de variáveis de processo
- Acompanhamento do consumo de energia
- Gráficos de controle de qualidade
Integração com Outros Apps Bluetooth
Combine com o Bluetooth Slider
Use sliders para controlar os parâmetros do sinal plotado:
Combine com o Bluetooth Table
Mostre os valores atuais em uma tabela junto com o gráfico:
Próximos Passos
Depois de dominar o exemplo Bluetooth Plotter, experimente:
- Bluetooth Temperature - Para exibição dedicada de temperatura
- Bluetooth Analog Gauge - Para visualização no estilo de medidor
- Bluetooth Table - Para dados numéricos estruturados
- Multiple Bluetooth Apps - Combinando o plotter com outros displays
Suporte
Para obter mais ajuda:
- Consulte a documentação de referência da API
- Visite os tutoriais da DIYables
- Fóruns da comunidade Arduino