ESP32 Bluetooth Plotter Beispiel - Echtzeit-Datendiagramm Interface Tutorial

Übersicht

Das Bluetooth Plotter Beispiel bietet Echtzeit-Datenvisualisierung auf Ihrem Smartphone durch die DIYables Bluetooth STEM App. Entwickelt für ESP32 Boards mit Unterstützung für sowohl BLE (Bluetooth Low Energy) als auch Classic Bluetooth Verbindungen. Visualisieren Sie bis zu 10 Datenserien gleichzeitig mit konfigurierbaren Achsen, Auto-Skalierung, Legenden-Labels und scrollender Anzeige — perfekt für Sensorvisualisierung, Signalanalyse und Datenüberwachung.

Dieses Beispiel unterstützt zwei Bluetooth-Modi:

  • ESP32 BLE (Bluetooth Low Energy): Funktioniert sowohl auf Android als auch iOS
  • ESP32 Classic Bluetooth: Funktioniert nur auf Android. iOS unterstützt kein Classic Bluetooth. Verwenden Sie BLE, wenn Sie iOS-Unterstützung benötigen.
ESP32 Bluetooth Plotter Beispiel - Echtzeit-Datendiagramm Interface Tutorial

Features

  • Mehrserien-Plotting: Visualisieren Sie bis zu 10 Datenserien gleichzeitig
  • Echtzeit-Anzeige: Kontinuierlich scrollendes Diagramm mit Live-Updates
  • Konfigurierbare Achsen: Setzen Sie benutzerdefinierten Y-Achsen-Bereich, Achsenbeschriftungen und Diagrammtitel
  • Auto-Skalierung: Automatische Anpassung des Y-Achsen-Bereichs an die Daten
  • Benutzerdefinierte Legenden: Beschriften Sie jede Datenserie zur einfachen Identifikation
  • Einstellbare Samples: Konfigurieren Sie die Anzahl sichtbarer Datenpunkte
  • BLE & Classic Bluetooth: Wählen Sie den Bluetooth-Modus, der zu Ihrem Projekt passt
  • Plattformübergreifend: BLE-Modus funktioniert auf Android und iOS; Classic Bluetooth nur auf Android

Benötigte Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×(Alternativ) ESP32 Uno-form board
1×(Alternativ) ESP32 S3 Uno-form board
1×USB-Kabel Type-C
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

ESP32 Code

Schnelle Schritte

Befolgen Sie diese Anweisungen Schritt für Schritt:

  • Falls Sie zum ersten Mal den ESP32 verwenden, lesen Sie das Tutorial zur Einrichtung der Umgebung für ESP32 in der Arduino IDE.
  • Verbinden Sie das ESP32 Board mit Ihrem Computer über ein USB-Kabel.
  • Starten Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das entsprechende ESP32 Board und den COM-Port.
  • Navigieren Sie zum Libraries Icon in der linken Leiste der Arduino IDE.
  • Suchen Sie "DIYables Bluetooth", dann finden Sie die DIYables Bluetooth Bibliothek von DIYables
  • Klicken Sie den Install Button, um die Bibliothek zu installieren.
ESP32 DIYables Bluetooth Bibliothek
  • Sie werden aufgefordert, einige andere Bibliotheks-Abhängigkeiten zu installieren
  • Klicken Sie Install All Button, um alle Bibliotheks-Abhängigkeiten zu installieren.
ESP32 DIYables Bluetooth Abhängigkeit

Wählen Sie einen der beiden Bluetooth-Modi unten, je nach Ihren Anforderungen:

ESP32 Classic Bluetooth Code (funktioniert mit der App nur auf Android)

Hinweis: Classic Bluetooth wird auf iOS NICHT unterstützt. Wenn Sie iOS-Unterstützung benötigen, verwenden Sie den BLE-Code unten.

  • In der Arduino IDE gehen Sie zu File Examples DIYables Bluetooth Esp32Bluetooth_Plotter Beispiel, oder kopieren Sie den obigen Code und fügen ihn in den Editor der Arduino IDE ein
/* * DIYables Bluetooth Library - ESP32 Classic Bluetooth Plotter Example * Works with DIYables Bluetooth STEM app on Android * Note: Classic Bluetooth is NOT supported on iOS. Use BLE examples for iOS support. * * This example demonstrates the Bluetooth Plotter feature: * - Real-time data plotting via Bluetooth * - Plot multiple data series simultaneously * - Configurable plot settings * * Compatible Boards: * - ESP32 (all variants with Classic Bluetooth) * - ESP32-WROOM-32 * - ESP32-DevKitC * - ESP32-WROVER * * Note: Select "Huge APP (3MB No OTA/1MB SPIFFS)" partition scheme * in Arduino IDE: Tools > Partition Scheme * * Setup: * 1. Upload the sketch to your ESP32 * 2. Open Serial Monitor (115200 baud) 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_Esp32Bluetooth.h> // Create Bluetooth instances DIYables_Esp32Bluetooth bluetooth("ESP32_Plotter"); 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(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 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([]() { Serial.println("App requested plot data"); }); 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) bluetoothPlotter.send(sine, cosine, tangent); // Also print to Serial for Arduino IDE Serial Plotter comparison 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; } // 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); }
  • Klicken Sie den Upload Button in der Arduino IDE, um den Code auf den ESP32 hochzuladen
  • Öffnen Sie den Serial Monitor
  • Überprüfen Sie das Ergebnis im Serial Monitor. Es sieht folgendermaßen aus:
COM6
Send
DIYables Bluetooth - ESP32 Plotter Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

ESP32 BLE Code (funktioniert mit der App sowohl auf Android als auch iOS)

  • In der Arduino IDE gehen Sie zu File Examples DIYables Bluetooth Esp32BLE_Plotter Beispiel, oder kopieren Sie den obigen Code und fügen ihn in den Editor der Arduino IDE ein
/* * 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 * * Compatible Boards: * - ESP32-WROOM-32 * - ESP32-DevKitC * - ESP32-WROVER * - ESP32-S3 * - ESP32-C3 * - Any ESP32 board supporting BLE * * Note: Select "Huge APP (3MB No OTA/1MB SPIFFS)" partition scheme * in Arduino IDE: Tools > Partition Scheme * * Setup: * 1. Upload the sketch to your ESP32 * 2. Open Serial Monitor (115200 baud) 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_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); }
  • Klicken Sie den Upload Button in der Arduino IDE, um den Code auf den ESP32 hochzuladen
  • Öffnen Sie den Serial Monitor
  • Überprüfen Sie das Ergebnis im Serial Monitor. Es sieht folgendermaßen aus:
COM6
Send
DIYables Bluetooth - ESP32 BLE Plotter Example Waiting for Bluetooth connection...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Mobile App

  • Installieren Sie die DIYables Bluetooth App auf Ihrem Smartphone: Android | iOS
  • Wenn Sie den ESP32 Classic Bluetooth Code verwenden, müssen Sie den ESP32 vor dem Öffnen der App mit Ihrem Android-Telefon koppeln:
    • Gehen Sie zu den Einstellungen > Bluetooth Ihres Telefons
    • Stellen Sie sicher, dass Bluetooth eingeschaltet ist
    • Ihr Telefon wird nach verfügbaren Geräten suchen
    • Finden und tippen Sie "ESP32_Plotter" in der Liste verfügbarer Geräte
    • Bestätigen Sie die Kopplungsanfrage (keine PIN erforderlich)
    • Warten Sie, bis "Gekoppelt" unter dem Gerätenamen angezeigt wird
  • Wenn Sie den ESP32 BLE Code verwenden, ist keine Kopplung erforderlich. Fahren Sie einfach mit dem nächsten Schritt fort.
  • Öffnen Sie die DIYables Bluetooth App
  • Beim ersten Öffnen der App wird nach Berechtigungen gefragt. Bitte gewähren Sie folgende:
    • Nearby Devices Berechtigung (Android 12+) / Bluetooth Berechtigung (iOS) - erforderlich zum Scannen und Verbinden mit Bluetooth-Geräten
    • Location Berechtigung (nur Android 11 und darunter) - erforderlich bei älteren Android-Versionen zum Scannen nach BLE-Geräten
  • Stellen Sie sicher, dass Bluetooth auf Ihrem Telefon eingeschaltet ist
  • Tippen Sie auf dem Startbildschirm den Connect Button. Die App scannt nach BLE- und Classic Bluetooth-Geräten.
DIYables Bluetooth App - Startbildschirm mit Scan Button
  • Finden und tippen Sie Ihr Gerät in den Scan-Ergebnissen, um eine Verbindung herzustellen:
    • Für Classic Bluetooth: tippen Sie "ESP32_Plotter"
    • Für BLE: tippen Sie "ESP32BLE_Plotter"
  • Nach der Verbindung kehrt die App automatisch zum Startbildschirm zurück. Wählen Sie die Plotter App aus dem App-Menü.
DIYables Bluetooth App - Startbildschirm mit Plotter App

Hinweis: Sie können das Einstellungs-Icon auf dem Startbildschirm antippen, um Apps auf dem Startbildschirm ein-/auszublenden. Für weitere Details siehe das DIYables Bluetooth App Benutzerhandbuch.

  • Beobachten Sie das Echtzeit-Datendiagramm, das über den Bildschirm scrollt
DIYables Bluetooth App - Plotter Bildschirm

Schauen Sie nun zurück zum Serial Monitor in der Arduino IDE. Sie werden sehen:

COM6
Send
Bluetooth connected! 0.00 1.00 0.00 0.10 1.00 -0.15 0.20 0.98 0.08 0.29 0.96 -0.22
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Der Plotter zeigt Sinus-, Kosinus- und Rausch-Wellenformen in Echtzeit an

Kreative Anpassung - Passen Sie den Code an Ihr Projekt an

Diagramm-Einstellungen konfigurieren

Richten Sie das Diagramm-Erscheinungsbild vor der Verbindung ein:

// Diagrammtitel setzen bluetoothPlotter.setPlotTitle("Sensor Data"); // Achsenbeschriftungen setzen bluetoothPlotter.setAxisLabels("Time", "Value"); // Festen Y-Achsen-Bereich setzen bluetoothPlotter.setYAxisRange(-15, 30); // Oder Auto-Skalierung stattdessen aktivieren bluetoothPlotter.enableAutoScale(true); // Anzahl sichtbarer Datenpunkte setzen bluetoothPlotter.setMaxSamples(100); // Legenden-Labels für jede Datenserie setzen bluetoothPlotter.setLegendLabels("Sine", "Cosine", "Tangent"); // Unterstützt auch 1, 2 oder 4 Labels: // bluetoothPlotter.setLegendLabels("Temperature"); // bluetoothPlotter.setLegendLabels("Temp", "Humidity"); // bluetoothPlotter.setLegendLabels("Ch1", "Ch2", "Ch3", "Ch4");

Daten an Plotter senden

Mehrere Überladungen für das Senden von 1 bis 4+ Datenserien:

// Einzelwert senden bluetoothPlotter.send(25.3); // Zwei Werte senden (zwei Serien) bluetoothPlotter.send(temperature, humidity); // Drei Werte senden (drei Serien) bluetoothPlotter.send(sine, cosine, tangent); // Vier Werte senden (vier Serien) bluetoothPlotter.send(ch1, ch2, ch3, ch4); // Array von Werten senden (beliebige Anzahl von Serien) float values[] = {1.0, 2.0, 3.0, 4.0, 5.0}; bluetoothPlotter.send(values, 5); // Als formatierten String senden bluetoothPlotter.send("1.23,4.56,7.89");

Datenanfrage von der App verarbeiten

Wenn die App eine Verbindung herstellt und den Plotter-Bildschirm öffnet, kann sie Daten anfordern:

bluetoothPlotter.onDataRequest([]() { Serial.println("App requested plot data"); // Optional initialen Datenpunkt senden });

Verbindungsereignisse verarbeiten

bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); });

Verwendung des Plotters

App-Interface-Steuerungen

Das Plotter-Interface in der DIYables Bluetooth App bietet:

  • Echtzeit-Diagramm: Scrollendes Liniendiagramm mit mehreren Serien
  • Legende: Farbkodierte Labels für jede Datenserie
  • Auto-Scroll: Scrollt kontinuierlich, um die neuesten Daten zu zeigen

Datenformat

Daten werden als kommagetrennte Float-Werte gesendet:

  • Einzelserie: bluetoothPlotter.send(value)
  • Mehrere Serien: bluetoothPlotter.send(val1, val2, val3)
  • Datenrate: Empfohlenes 10-100ms Intervall für glattes Plotting

Programmierbeispiele

Einzelsensor-Diagramm

unsigned long lastPlotTime = 0; const unsigned long PLOT_INTERVAL = 100; // 10 Hz void setup() { bluetoothPlotter.setPlotTitle("Temperature"); bluetoothPlotter.setAxisLabels("Time", "°C"); bluetoothPlotter.setYAxisRange(0, 50); bluetoothPlotter.setLegendLabels("Temperature"); } void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= PLOT_INTERVAL) { lastPlotTime = millis(); float temperature = readTemperatureSensor(); bluetoothPlotter.send(temperature); } delay(10); }

Multisensor-Beschleunigungsmesser-Diagramm

#include <Wire.h> #include <MPU6050.h> MPU6050 mpu; unsigned long lastPlotTime = 0; void setup() { Wire.begin(); mpu.initialize(); bluetoothPlotter.setPlotTitle("Accelerometer"); bluetoothPlotter.setAxisLabels("Time", "g"); bluetoothPlotter.setYAxisRange(-2.0, 2.0); bluetoothPlotter.setLegendLabels("X", "Y", "Z"); } void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= 50) { // 20 Hz lastPlotTime = millis(); int16_t ax, ay, az; mpu.getAcceleration(&ax, &ay, &az); float gx = ax / 16384.0; float gy = ay / 16384.0; float gz = az / 16384.0; bluetoothPlotter.send(gx, gy, gz); } delay(10); }

Analog Pin Plotter

const int ANALOG_PINS[] = {34, 35, 36, 39}; const int NUM_CHANNELS = 4; void setup() { bluetoothPlotter.setPlotTitle("Analog Inputs"); bluetoothPlotter.setAxisLabels("Time", "ADC Value"); bluetoothPlotter.setYAxisRange(0, 4095); bluetoothPlotter.setMaxSamples(200); bluetoothPlotter.setLegendLabels("A34", "A35", "A36", "A39"); } void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= 100) { lastPlotTime = millis(); float values[NUM_CHANNELS]; for (int i = 0; i < NUM_CHANNELS; i++) { values[i] = analogRead(ANALOG_PINS[i]); } bluetoothPlotter.send(values, NUM_CHANNELS); } delay(10); }

Signalgenerator

float phase = 0; void setup() { bluetoothPlotter.setPlotTitle("Signal Generator"); bluetoothPlotter.setAxisLabels("Time", "Amplitude"); bluetoothPlotter.setYAxisRange(-1.5, 1.5); bluetoothPlotter.setLegendLabels("Sine", "Square", "Triangle"); } void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= 50) { lastPlotTime = millis(); float sine = sin(phase); float square = (sin(phase) > 0) ? 1.0 : -1.0; float triangle = 2.0 * abs(fmod(phase / PI, 2.0) - 1.0) - 1.0; bluetoothPlotter.send(sine, square, triangle); phase += 0.1; if (phase > 2 * PI) phase -= 2 * PI; } delay(10); }

Erweiterte Programmiertechniken

Moving Average Filter

class MovingAverage { float buffer[10]; int index = 0; int count = 0; public: float add(float value) { buffer[index] = value; index = (index + 1) % 10; if (count < 10) count++; float sum = 0; for (int i = 0; i < count; i++) sum += buffer[i]; return sum / count; } }; MovingAverage filter1, filter2; void loop() { bluetoothServer.loop(); if (millis() - lastPlotTime >= 100) { lastPlotTime = millis(); float raw = analogRead(34) * 3.3 / 4095.0; float filtered = filter1.add(raw); // Sowohl Roh- als auch gefilterte Werte plotten bluetoothPlotter.send(raw, filtered); } delay(10); }

Dynamische Diagramm-Konfiguration

// Diagramm-Einstellungen zur Laufzeit ändern void switchToTemperatureMode() { bluetoothPlotter.setPlotTitle("Temperature Monitor"); bluetoothPlotter.setAxisLabels("Time", "°C"); bluetoothPlotter.setYAxisRange(-10, 50); bluetoothPlotter.setLegendLabels("Internal", "External"); } void switchToVoltageMode() { bluetoothPlotter.setPlotTitle("Voltage Monitor"); bluetoothPlotter.setAxisLabels("Time", "V"); bluetoothPlotter.setYAxisRange(0, 3.3); bluetoothPlotter.setLegendLabels("Ch1", "Ch2", "Ch3"); }

BLE vs Classic Bluetooth - Welches wählen?

FeatureBLE (Esp32BLE_Plotter)Classic Bluetooth (Esp32Bluetooth_Plotter)
iOS-Unterstützung? Ja? Nein
Android-Unterstützung? Ja? Ja
StromverbrauchNiedrigHöher
Reichweite~30-100m~10-100m
DatenrateNiedrigerHöher
Kopplung erforderlichNein (Auto-Connect)Ja (manuelle Kopplung)
Am besten fürBatteriebetrieben, plattformübergreifendHoher Durchsatz, nur Android

Fehlerbehebung

Häufige Probleme

1. Gerät in der App nicht gefunden

  • Stellen Sie sicher, dass der ESP32 eingeschaltet ist und der Sketch hochgeladen wurde
  • Für BLE: Stellen Sie sicher, dass Bluetooth und Location Ihres Telefons aktiviert sind
  • Für Classic Bluetooth: Koppeln Sie das Gerät zuerst in den Bluetooth-Einstellungen des Telefons
  • Überprüfen Sie, dass das richtige Partition Scheme ausgewählt ist (Huge APP)

2. Diagramm wird nicht aktualisiert

  • Überprüfen Sie den Bluetooth-Verbindungsstatus in der App
  • Verifizieren Sie, dass bluetoothPlotter.send() in der Schleife aufgerufen wird
  • Überprüfen Sie, dass bluetooth.isConnected() true zurückgibt
  • Versuchen Sie zu trennen und wieder zu verbinden

3. Diagrammdaten sehen ruckelig aus

  • Reduzieren Sie das Plot-Intervall (z.B. 50ms anstatt 500ms)
  • Stellen Sie eine stabile Bluetooth-Verbindung sicher
  • Reduzieren Sie die Anzahl der Datenserien, wenn die Bandbreite begrenzt ist

4. Y-Achsen-Bereich passt nicht zu den Daten

  • Verwenden Sie enableAutoScale(true) für automatische Anpassung
  • Oder setzen Sie einen breiteren Bereich mit setYAxisRange()

5. Legenden-Labels werden nicht angezeigt

  • Rufen Sie setLegendLabels() auf, bevor die Verbindung hergestellt wird
  • Passen Sie die Anzahl der Labels an die Anzahl der Datenserien an

6. Sketch zu groß / nicht genug Speicherplatz

  • Gehen Sie in der Arduino IDE zu Tools > Partition Scheme und wählen Sie "Huge APP (3MB No OTA/1MB SPIFFS)" oder "No OTA (Large APP)"
  • Das Standard-Partition-Scheme bietet nur ~1.2MB für App-Code, was für Bluetooth-Bibliotheken nicht ausreicht
  • Diese Einstellung gibt ~3MB durch Verzicht auf die OTA (Over-the-Air Update) Partition

Debug-Tipps

Fügen Sie umfassendes Debugging hinzu:

void debugPlotterData(float v1, float v2, float v3) { Serial.println("=== Plotter Debug ==="); Serial.println("Value 1: " + String(v1, 2)); Serial.println("Value 2: " + String(v2, 2)); Serial.println("Value 3: " + String(v3, 2)); Serial.println("Free Heap: " + String(ESP.getFreeHeap())); Serial.println("====================="); }

Projektideen

Sensorüberwachung

  • Temperatur- und Feuchtigkeitstrendanzeige
  • Lichtpegel-Überwachung den ganzen Tag
  • Beschleunigungsmesser-Bewegungsverfolgung
  • Drucksensor-Datenvisualisierung

Signalanalyse

  • Audio-Frequenz-Visualisierer
  • Vibrationsüberwachung
  • Puls-/Herzfrequenzanzeige
  • Elektromagnetische Feldstärke

Bildung

  • Sinus-, Kosinus- und Tangens-Wellenvergleich
  • RC-Schaltkreis Lade-/Entladekurven
  • PID-Controller-Antwort-Visualisierung
  • Physikexperiment-Datenlogger

Industrie

  • Maschinenvibrationsüberwachung
  • Prozessvariablen-Trending
  • Stromverbrauchsverfolgung
  • Qualitätskontroll-Diagramme

Integration mit anderen Bluetooth-Apps

Kombination mit Bluetooth Slider

Verwenden Sie Slider zur Kontrolle der geploteten Signalparameter:

float frequency = 1.0; float amplitude = 1.0; bluetoothSlider.onSliderValue([](int slider1, int slider2) { frequency = map(slider1, 0, 100, 1, 20) / 10.0; amplitude = slider2 / 100.0; }); // In der Schleife: float value = amplitude * sin(phase * frequency); bluetoothPlotter.send(value);

Kombination mit Bluetooth Table

Zeigen Sie aktuelle Werte in der Tabelle neben dem Diagramm:

bluetoothTable.sendValueUpdate("Current", String(currentValue, 2)); bluetoothTable.sendValueUpdate("Max", String(maxValue, 2)); bluetoothTable.sendValueUpdate("Min", String(minValue, 2)); bluetoothTable.sendValueUpdate("Average", String(average, 2));

Nächste Schritte

Nachdem Sie das Bluetooth Plotter Beispiel gemeistert haben, probieren Sie:

  1. Bluetooth Temperature - Für dedizierte Temperaturanzeige
  2. Bluetooth Analog Gauge - Für Messgeräte-Stil-Visualisierung
  3. Bluetooth Table - Für strukturierte numerische Daten
  4. Multiple Bluetooth Apps - Kombination des Plotters mit anderen Anzeigen

Support

Für zusätzliche Hilfe:

  • Überprüfen Sie die API-Referenz-Dokumentation
  • Besuchen Sie DIYables Tutorials
  • Arduino Community-Foren

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!