Arduino UNO R4 WiFi Bluetooth Plotter Voorbeeld - Real-Time Data Visualisatie via BLE Tutorial

Overzicht

Het Bluetooth Plotter voorbeeld streamt real-time data naar de DIYables Bluetooth STEM app voor live visualisatie. Ontworpen voor Arduino UNO R4 WiFi met BLE (Bluetooth Low Energy) om sensorwaarden, golfvormen en multi-kanaal data te plotten als real-time grafieken op uw smartphone. Ideaal voor data logging, signaalanalyse, sensorkalibratie en wetenschappelijke experimenten.

Opmerking: De Arduino UNO R4 WiFi ondersteunt alleen BLE (Bluetooth Low Energy). Het ondersteunt geen Classic Bluetooth. De DIYables Bluetooth App ondersteunt zowel BLE als Classic Bluetooth op Android, en BLE op iOS. Omdat dit board BLE gebruikt, werkt de app op zowel Android als iOS.

Arduino UNO R4 WiFi Bluetooth Plotter Voorbeeld - Real-Time Data Visualisatie via BLE Tutorial

Functies

  • Multi-Kanaal Plotting: Tot 6 data kanalen tegelijkertijd
  • Configureerbare Assen: Aangepaste titels, labels en Y-as bereik
  • Legend Labels: Benoem elk data kanaal voor duidelijkheid
  • Sample Limiet: Stel maximum samples in om weer te geven
  • Snelle Streaming: Tot 10 updates per seconde (100ms interval)
  • Werkt op Android & iOS: BLE wordt ondersteund op beide platforms
  • Geen Pairing Vereist: BLE verbindt automatisch zonder handmatige pairing

Arduino UNO R4 WiFi Code

Snelle Stappen

Volg deze instructies stap voor stap:

  • Als dit uw eerste keer is met de Arduino UNO R4 WiFi, raadpleeg de Arduino UNO R4 WiFi aan de slag gids.
  • Verbind het Arduino UNO R4 WiFi board met uw computer via een USB kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer Arduino UNO R4 WiFi board en de juiste COM poort.
  • Navigeer naar het Libraries icoon op de linker balk van de Arduino IDE.
  • Zoek "DIYables Bluetooth", vind dan de DIYables Bluetooth bibliotheek door DIYables
  • Klik op de Install knop om de bibliotheek te installeren.
Arduino UNO R4 DIYables Bluetooth bibliotheek
  • U wordt gevraagd om enkele andere bibliotheek afhankelijkheden te installeren
  • Klik op de Install All knop om alle bibliotheek afhankelijkheden te installeren.
Arduino UNO R4 DIYables Bluetooth afhankelijkheid

BLE Code

  • In Arduino IDE, ga naar File Examples DIYables Bluetooth ArduinoBLE_Plotter voorbeeld, of kopieer de bovenstaande code en plak het in de editor van Arduino IDE
/* * DIYables Bluetooth Library - Bluetooth 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 * * Compatible Boards: * - Arduino UNO R4 WiFi * - Arduino Nano 33 BLE / BLE Sense * - Arduino Nano 33 IoT * - Arduino MKR WiFi 1010 * - Arduino Nano RP2040 Connect * - Any board supporting the ArduinoBLE library * * Setup: * 1. Upload the sketch to your Arduino * 2. Open Serial Monitor to see connection status * 3. Use DIYables Bluetooth App to connect and view the plot * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothPlotter.h> #include <platforms/DIYables_ArduinoBLE.h> // BLE Configuration const char* DEVICE_NAME = "Arduino_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_ArduinoBLE 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; // Plot every 100ms float phase = 0; void setup() { Serial.begin(9600); while (!Serial); Serial.println("DIYables Bluetooth - 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); // Fixed range bluetoothPlotter.setMaxSamples(100); // Show last 100 samples bluetoothPlotter.setLegendLabels("Sine", "Cosine", "Tangent"); // Custom legend labels // Uncomment to enable auto-scaling instead of fixed range: // bluetoothPlotter.enableAutoScale(true); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); // Optional: Handle requests for current plot data (when app loads) bluetoothPlotter.onDataRequest([]() { // Send initial data when app requests it Serial.println("App requested plot data"); // Could send recent historical data here if needed }); Serial.println("Waiting for Bluetooth connection..."); } void loop() { // Handle Bluetooth server communications bluetoothServer.loop(); // Send plot data at regular intervals if (millis() - lastPlotTime >= PLOT_INTERVAL) { lastPlotTime = millis(); // Generate sample data (sine and cosine waves) float sine = sin(phase); float cosine = cos(phase); float tangent = tan(phase) * 0.3; // Scaled down // Send data to Bluetooth plotter (multiple series) // You can send 1 to 4 values, or use array for more bluetoothPlotter.send(sine, cosine, tangent); // Also print to Serial for Arduino IDE Serial Plotter comparison // Format: value1 value2 value3 (space-separated for Serial Plotter) Serial.print(sine, 2); Serial.print(" "); Serial.print(cosine, 2); Serial.print(" "); Serial.println(tangent, 2); // Alternative methods: // bluetoothPlotter.send(sine); // Single value // bluetoothPlotter.send(sine, cosine); // Two values // float values[] = {sine, cosine, tangent}; // bluetoothPlotter.send(values, 3); // Array of values phase += 0.1; if (phase > 2 * PI) { phase = 0; } // TODO: Replace sample data with your actual sensor readings // Examples: // - Temperature sensor: bluetoothPlotter.send(temperature); // - Accelerometer: bluetoothPlotter.send(accelX, accelY, accelZ); // - Multiple sensors: bluetoothPlotter.send(sensor1, sensor2, sensor3); } delay(10); }
  • Klik op de Upload knop in Arduino IDE om de code te uploaden naar Arduino UNO R4 WiFi
  • Open de Serial Monitor
  • Bekijk het resultaat in Serial Monitor. Het ziet eruit zoals hieronder:
COM6
Send
DIYables Bluetooth - Plotter Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Mobiele App

  • Installeer de DIYables Bluetooth App op uw smartphone: Android | iOS

Opmerking: De DIYables Bluetooth App ondersteunt zowel BLE als Classic Bluetooth op Android, en BLE op iOS. Omdat de Arduino UNO R4 WiFi BLE gebruikt, werkt de app op zowel Android als iOS. Geen handmatige pairing nodig voor BLE — gewoon scannen en verbinden.

  • Open de DIYables Bluetooth App
  • Bij het voor het eerst openen van de app, zal deze om toestemmingen vragen. Verleen de volgende:
    • Nearby Devices toestemming (Android 12+) / Bluetooth toestemming (iOS) - vereist om Bluetooth apparaten te scannen en te verbinden
    • Location toestemming (alleen Android 11 en lager) - vereist door oudere Android versies om BLE apparaten te scannen
  • Zorg ervoor dat Bluetooth is ingeschakeld op uw telefoon
  • Op het hoofdscherm, tik op de Connect knop. De app zal scannen naar BLE apparaten.
DIYables Bluetooth App - Hoofdscherm met Scan Knop
  • Vind en tik op "Arduino_Plotter" in de scan resultaten om te verbinden.
  • Zodra verbonden, gaat de app automatisch terug naar het hoofdscherm. Selecteer de Plotter app uit het app menu.
DIYables Bluetooth App - Hoofdscherm met Plotter App

Opmerking: U kunt het instellingen icoon op het hoofdscherm tikken om apps te verbergen/tonen op het hoofdscherm. Voor meer details, zie de DIYables Bluetooth App Gebruikershandleiding.

  • U zult een real-time plot zien van Sine, Cosine en Tangent golfvormen
DIYables Bluetooth App - Plotter Scherm

Kijk nu terug naar de Serial Monitor in Arduino IDE. U zult zien:

COM6
Send
Bluetooth connected! Sending plot data... Sine: 0.00, Cosine: 10.00, Tangent: 0.00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Creatieve Aanpassing - Pas de Code aan voor Uw Project

Configureer Plot Uiterlijk

// Stel plot titel in bluetoothPlotter.setPlotTitle("My Sensor Data"); // Stel as labels in bluetoothPlotter.setAxisLabels("Time", "Value"); // Stel Y-as bereik in bluetoothPlotter.setYAxisRange(-100, 100); // Stel maximum samples in om weer te geven bluetoothPlotter.setMaxSamples(200); // Stel legend labels in voor elk kanaal bluetoothPlotter.setLegendLabels("Temperature", "Humidity", "Pressure");

Verstuur Data Punten

// Verstuur een enkele waarde bluetoothPlotter.send(sensorValue); // Verstuur twee waarden bluetoothPlotter.send(temperature, humidity); // Verstuur drie waarden bluetoothPlotter.send(value1, value2, value3); // Verstuur tot zes waarden bluetoothPlotter.send(ch1, ch2, ch3, ch4, ch5, ch6);

Behandel Data Verzoek

bluetoothPlotter.onDataRequest([]() { Serial.println("App requested data"); // App is net verbonden of heeft initiële configuratie nodig });

Programmeervoorbeelden

Temperatuur en Luchtvochtigheid Logger

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); } }

Analoge Input Plotter

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); } }

Probleemoplossing

Veelvoorkomende Problemen

1. Kan het apparaat niet vinden in de app

  • Zorg ervoor dat de Arduino UNO R4 WiFi is ingeschakeld en de sketch is geüpload
  • Zorg ervoor dat de Bluetooth van uw telefoon is ingeschakeld
  • Op Android 11 en lager, schakel ook Location services in

2. Plot wordt niet bijgewerkt

  • Controleer of data wordt verzonden in de loop() functie
  • Controleer dat bluetoothServer.loop() wordt aangeroepen
  • Zorg ervoor dat de app op het Plotter scherm is

3. Data ziet er verkeerd uit of bevat ruis

  • Controleer sensor bedrading en metingen
  • Controleer of het Y-as bereik overeenkomt met uw data bereik
  • Overweeg data smoothing/filtering toe te voegen

4. Plot titel of labels verschijnen niet

  • Stel plot configuratie in setup() in voordat u verbindt
  • Zorg ervoor dat onDataRequest callback configuratie opnieuw verzendt indien nodig

5. Upload mislukt of board wordt niet herkend

  • Installeer het nieuwste Arduino UNO R4 board pakket via Board Manager
  • Probeer een andere USB kabel of poort

Projectideeën

  • Omgevingsmonitoring (temperatuur, luchtvochtigheid, druk)
  • Accelerometer/gyroscoop data visualisatie
  • Analoge sensor kalibratie tool
  • Signaalanalyse en vergelijking
  • Wetenschappelijk experiment data logger

Volgende Stappen

Na het beheersen van het Bluetooth Plotter voorbeeld, probeer:

  1. Bluetooth Table - Voor gestructureerde data weergave
  2. Bluetooth Monitor - Voor tekst-gebaseerde data weergave
  3. Bluetooth Temperature - Voor meter-stijl temperatuur weergave
  4. Meerdere Bluetooth Apps - Plotter combineren met andere apps

Ondersteuning

Voor aanvullende hulp:

  • Raadpleeg de API Reference documentatie
  • Arduino community forums

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!