Exemplo de Plotter Bluetooth para Arduino Nano ESP32 - Tutorial de Visualização de Dados em Tempo Real via BLE

Visão Geral

Este exemplo transmite dados em tempo real para o aplicativo DIYables Bluetooth STEM para visualização ao vivo no Arduino Nano ESP32 usando BLE (Bluetooth Low Energy). Plote leituras de sensores, formas de onda e dados de vários canais como gráficos ao vivo em um smartphone. Adequado para registro de dados, análise de sinais, calibração de sensores e experimentos científicos.

Observação: O Arduino Nano ESP32 suporta apenas BLE — o Bluetooth Clássico não é suportado. O DIYables Bluetooth App funciona em Android e iOS com BLE.

Exemplo de Plotter Bluetooth para Arduino Nano ESP32 - Tutorial de Visualização de Dados em Tempo Real via BLE

Recursos

  • Gráficos com Vários Canais: Até 6 canais de dados ao mesmo tempo
  • Eixos Configuráveis: Títulos, rótulos e faixa do eixo Y personalizados
  • Rótulos de Legenda: Dê um nome a cada canal de dados para facilitar a leitura
  • Limite de Amostras: Defina o número máximo de amostras exibidas
  • Transmissão Rápida: Até 10 atualizações por segundo (intervalo de 100 ms)
  • Suporte a Android e iOS: O BLE é compatível com as duas plataformas
  • Sem Necessidade de Pareamento: O BLE conecta sem pareamento manual

Hardware Necessário

1×Arduino Nano ESP32
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Código Arduino Nano ESP32

Passos Rápidos

  • Novo no Arduino Nano ESP32? Comece pelo guia de primeiros passos do Arduino Nano ESP32.
  • Conecte o Arduino Nano ESP32 ao seu computador via USB.
  • Abra a Arduino IDE.
  • Selecione a placa Arduino Nano ESP32 e a porta COM correta.
  • Clique no ícone Libraries na barra lateral esquerda.
  • Pesquise por "DIYables Bluetooth" e selecione a biblioteca DIYables Bluetooth da DIYables.
  • Clique em Install.
Biblioteca DIYables Bluetooth para Arduino Nano ESP32
  • Quando for solicitado a instalar as dependências, clique em Install All.
Dependência do DIYables Bluetooth para Arduino Nano ESP32

Código BLE

  • Na Arduino IDE, abra File Examples DIYables Bluetooth ArduinoBLE_Plotter, ou cole o código no editor.
/* * DIYables Bluetooth Library - ESP32 BLE Plotter Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Plotter feature: * - Real-time data plotting via Bluetooth * - Plot multiple data series simultaneously * - Configurable plot settings * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothPlotter.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const char* DEVICE_NAME = "ESP32BLE_Plotter"; const char* SERVICE_UUID = "19B10000-E8F2-537E-4F6C-D104768A1214"; const char* TX_UUID = "19B10001-E8F2-537E-4F6C-D104768A1214"; const char* RX_UUID = "19B10002-E8F2-537E-4F6C-D104768A1214"; // Create Bluetooth instances DIYables_Esp32BLE bluetooth(DEVICE_NAME, SERVICE_UUID, TX_UUID, RX_UUID); DIYables_BluetoothServer bluetoothServer(bluetooth); // Create Plotter app instance DIYables_BluetoothPlotter bluetoothPlotter; // Variables for generating sample data unsigned long lastPlotTime = 0; const unsigned long PLOT_INTERVAL = 100; float phase = 0; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 BLE Plotter Example"); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add plotter app to server bluetoothServer.addApp(&bluetoothPlotter); // Configure plotter settings bluetoothPlotter.setPlotTitle("Sensor Data"); bluetoothPlotter.setAxisLabels("Time", "Value"); bluetoothPlotter.setYAxisRange(-15, 30); bluetoothPlotter.setMaxSamples(100); bluetoothPlotter.setLegendLabels("Sine", "Cosine", "Tangent"); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); bluetoothPlotter.onDataRequest([]() { Serial.println("App requested plot data"); }); Serial.println("Waiting for Bluetooth connection..."); } void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= PLOT_INTERVAL) { lastPlotTime = millis(); float sine = sin(phase); float cosine = cos(phase); float tangent = tan(phase) * 0.3; bluetoothPlotter.send(sine, cosine, tangent); Serial.print(sine, 2); Serial.print(" "); Serial.print(cosine, 2); Serial.print(" "); Serial.println(tangent, 2); phase += 0.1; if (phase > 2 * PI) { phase = 0; } } delay(10); }
  • Clique em Upload para gravar o sketch na placa.
  • Abra o Serial Monitor.
  • A saída do Serial Monitor deve ficar assim:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
DIYables Bluetooth - Plotter Example Waiting for Bluetooth connection...
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Aplicativo Móvel

  • Instale o DIYables Bluetooth App no seu smartphone: Android | iOS

Observação: O DIYables Bluetooth App funciona em Android e iOS com BLE. Não é necessário fazer pareamento manual.

  • Abra o DIYables Bluetooth App.
  • Na primeira abertura, conceda as seguintes permissões:
    • Dispositivos Próximos (Android 12+) / Bluetooth (iOS) — necessário para procurar e conectar a dispositivos Bluetooth
    • Localização (somente Android 11 e anteriores) — exigida pelas versões mais antigas do Android para procurar dispositivos BLE
  • Verifique se o Bluetooth está ativado no seu dispositivo.
  • Toque em Connect na tela inicial. O aplicativo vai procurar dispositivos BLE.
DIYables Bluetooth App - Tela Inicial com Botão de Busca
  • Toque em "Arduino_Plotter" nos resultados da busca.
  • Depois de conectar, volte à tela inicial e abra o aplicativo Plotter.
DIYables Bluetooth App - Tela Inicial com o Aplicativo Plotter

Toque no ícone de configurações na tela inicial para mostrar ou ocultar aplicativos. Veja o Manual do Usuário do DIYables Bluetooth App para mais detalhes.

  • Um gráfico em tempo real das formas de onda de Seno, Cosseno e Tangente vai aparecer.
DIYables Bluetooth App - Tela do Plotter

Agora volte ao Serial Monitor na Arduino IDE. Você verá:

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Bluetooth connected! Sending plot data... Sine: 0.00, Cosine: 10.00, Tangent: 0.00
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Personalização Criativa - Adapte o Código ao Seu Projeto

Configurar a Aparência do Gráfico

// Set plot title bluetoothPlotter.setPlotTitle("My Sensor Data"); // Set axis labels bluetoothPlotter.setAxisLabels("Time", "Value"); // Set Y-axis range bluetoothPlotter.setYAxisRange(-100, 100); // Set maximum samples to display bluetoothPlotter.setMaxSamples(200); // Set legend labels for each channel bluetoothPlotter.setLegendLabels("Temperature", "Humidity", "Pressure");

Enviar Pontos de Dados

// Send a single value bluetoothPlotter.send(sensorValue); // Send two values bluetoothPlotter.send(temperature, humidity); // Send three values bluetoothPlotter.send(value1, value2, value3); // Send up to six values bluetoothPlotter.send(ch1, ch2, ch3, ch4, ch5, ch6);

Tratar a Solicitação de Dados

bluetoothPlotter.onDataRequest([]() { Serial.println("App requested data"); // App just connected or needs initial config });

Exemplos de Programação

Registrador de Temperatura e Umidade

DIYables_BluetoothPlotter bluetoothPlotter(bluetoothServer); void setup() { bluetoothPlotter.setPlotTitle("Environment Monitor"); bluetoothPlotter.setAxisLabels("Time", "Value"); bluetoothPlotter.setYAxisRange(0, 100); bluetoothPlotter.setMaxSamples(100); bluetoothPlotter.setLegendLabels("Temp (°C)", "Humidity (%)"); } void loop() { bluetoothServer.loop(); static unsigned long lastTime = 0; if (millis() - lastTime >= 1000) { lastTime = millis(); float temp = readTemperature(); float humidity = readHumidity(); bluetoothPlotter.send(temp, humidity); } }

Plotter de Entrada Analógica

void loop() { bluetoothServer.loop(); static unsigned long lastTime = 0; if (millis() - lastTime >= 100) { lastTime = millis(); int a0 = analogRead(A0); int a1 = analogRead(A1); int a2 = analogRead(A2); bluetoothPlotter.send(a0, a1, a2); } }

Solução de Problemas

Problemas Comuns

1. Dispositivo não aparece no aplicativo

  • Confirme que a placa está ligada e que o sketch foi carregado
  • Verifique se o Bluetooth está ativado no seu celular
  • No Android 11 e anteriores, ative também os serviços de localização

2. O gráfico não é atualizado

  • Verifique se os dados são enviados dentro de loop()
  • Confirme que bluetoothServer.loop() é chamado
  • Garanta que o aplicativo esteja na tela do Plotter

3. Os dados parecem incorretos ou com ruído

  • Verifique a ligação e as leituras do sensor
  • Confirme que a faixa do eixo Y corresponde à faixa dos seus dados
  • Considere aplicar suavização ou filtragem aos dados

4. O título ou os rótulos do gráfico não aparecem

  • Defina a configuração do gráfico em setup() antes de a conexão ser feita
  • Use o callback onDataRequest para reenviar a configuração quando necessário

5. O upload falha ou a placa não é reconhecida

  • Instale o pacote de placa Arduino Nano ESP32 mais recente pelo Board Manager
  • Tente outro cabo ou outra porta USB

Ideias de Projetos

  • Monitoramento ambiental (temperatura, umidade, pressão)
  • Visualização de dados de acelerômetro/giroscópio
  • Ferramenta de calibração de sensores analógicos
  • Análise e comparação de sinais
  • Registrador de dados para experimentos científicos

Próximos Passos

Depois de concluir o exemplo do Bluetooth Plotter, explore:

  1. Bluetooth Table — Exibição de dados estruturados
  2. Bluetooth Monitor — Saída de dados em texto
  3. Bluetooth Temperature — Exibição de temperatura em estilo de medidor
  4. Multiple Bluetooth Apps — Combine o plotter com outros widgets do aplicativo

Suporte

Para obter mais ajuda:

  • Consulte a documentação de referência da API
  • Fóruns da comunidade Arduino

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!