Arduino Nano ESP32 Bluetooth-Tabelle Beispiel - Strukturierte Datenanzeige via BLE Tutorial

Überblick

Dieses Beispiel implementiert die strukturierte Datenanzeige auf dem Arduino Nano ESP32 mit BLE (Bluetooth Low Energy) über die DIYables Bluetooth STEM App. Zeige Sensorwerte, Systemstatus und andere Daten in einem sauberen Tabellenformat auf einem Smartphone an, mit benannten Zeilen und Echtzeit-Wertaktualisierungen. Geeignet für Dashboards, Systemüberwachung und Multi-Sensor-Anzeigen.

Hinweis: Der Arduino Nano ESP32 unterstützt nur BLE — Classic Bluetooth wird nicht unterstützt. Die DIYables Bluetooth App funktioniert auf Android und iOS mit BLE.

Arduino Nano ESP32 Bluetooth Table Example - Structured Data Display via BLE Tutorial

Funktionen

  • Benannte Zeilen: Definiere Zeilen mit Labels (z.B. "Temperatur", "Luftfeuchtigkeit")
  • Echtzeit-Updates: Push einzelner Wertaktualisierungen effizient
  • Struktur-Synchronisation: Auto-Sende Tabellenstruktur bei Verbindung
  • Flexible Daten: Zeige alle String- oder numerischen Daten
  • Bis zu 20 Zeilen: Unterstützung für mehrere Datenfelder
  • Android & iOS Unterstützung: BLE ist mit beiden Plattformen kompatibel
  • Keine Kopplung erforderlich: BLE verbindet sich ohne manuelles Pairing

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

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.

Arduino Nano ESP32 Code

Schnelle Schritte

  • Neu beim Arduino Nano ESP32? Beginnen Sie mit dem Arduino Nano ESP32 Getting-Started-Leitfaden.
  • Verbinde den Arduino Nano ESP32 über USB mit deinem Computer.
  • Öffne Arduino IDE.
  • Wähle die Arduino Nano ESP32 Platine und den korrekten COM-Port aus.
  • Klicke auf das Bibliotheken Symbol in der linken Seitenleiste.
  • Suche nach "DIYables Bluetooth" und wähle die DIYables Bluetooth-Bibliothek von DIYables aus.
  • Klicke auf Install.
Arduino Nano ESP32 DIYables Bluetooth library
  • Wenn Sie aufgefordert werden, Abhängigkeiten zu installieren, klicken Sie auf Install All.
Arduino Nano ESP32 DIYables Bluetooth dependency

BLE Code

  • Öffne in Arduino IDE File Examples DIYables Bluetooth ArduinoBLE_Table, oder füge den Code in den Editor ein.
/* * DIYables Bluetooth Library - ESP32 BLE Table Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Table feature: * - Display structured data in a two-column table * - Real-time value updates for each row * - Perfect for sensor dashboards and status displays * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothTable.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const char* DEVICE_NAME = "ESP32BLE_Table"; 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 Table app instance DIYables_BluetoothTable bluetoothTable; // Variables for demo data unsigned long lastUpdate = 0; const unsigned long UPDATE_INTERVAL = 1000; int counter = 0; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 BLE Table Example"); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add table app to server bluetoothServer.addApp(&bluetoothTable); // Define table structure bluetoothTable.addRow("Temperature"); bluetoothTable.addRow("Humidity"); bluetoothTable.addRow("Pressure"); bluetoothTable.addRow("Counter"); bluetoothTable.addRow("Uptime"); bluetoothTable.addRow("Free Heap"); bluetoothTable.addRow("Status"); Serial.print("Table rows defined: "); Serial.println(bluetoothTable.getRowCount()); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); bluetoothTable.sendTableStructure(); updateTableValues(); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); bluetoothTable.onDataRequest([]() { Serial.println("App requested table data"); bluetoothTable.sendTableStructure(); updateTableValues(); }); Serial.println("Waiting for Bluetooth connection..."); } void updateTableValues() { float temperature = 20.0 + random(0, 100) / 10.0; bluetoothTable.sendValueUpdate("Temperature", String(temperature, 1) + " °C"); int humidity = 40 + random(0, 21); bluetoothTable.sendValueUpdate("Humidity", String(humidity) + " %"); int pressure = 1000 + random(0, 21); bluetoothTable.sendValueUpdate("Pressure", String(pressure) + " hPa"); bluetoothTable.sendValueUpdate("Counter", String(counter)); counter++; unsigned long uptime = millis() / 1000; String uptimeStr = String(uptime / 3600) + "h " + String((uptime % 3600) / 60) + "m " + String(uptime % 60) + "s"; bluetoothTable.sendValueUpdate("Uptime", uptimeStr); bluetoothTable.sendValueUpdate("Free Heap", String(ESP.getFreeHeap()) + " bytes"); bluetoothTable.sendValueUpdate("Status", counter % 2 == 0 ? "Running" : "Active"); Serial.println("Table values updated"); } void loop() { bluetoothServer.loop(); if (bluetooth.isConnected() && millis() - lastUpdate >= UPDATE_INTERVAL) { lastUpdate = millis(); updateTableValues(); } delay(10); }
  • Klicke auf Upload, um den Sketch auf die Platine zu flashen.
  • Öffne den Serial Monitor.
  • Die Serial Monitor-Ausgabe sollte so aussehen:
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 - Table Example Waiting for Bluetooth connection...
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Mobile App

  • Installiere die DIYables Bluetooth App auf deinem Smartphone: Android | iOS

Hinweis: Die DIYables Bluetooth App funktioniert auf Android und iOS mit BLE. Es ist keine manuelle Kopplung erforderlich.

  • Starte die DIYables Bluetooth App.
  • Gewähren Sie beim ersten Start die folgenden Berechtigungen:
    • Nearby Devices (Android 12+) / Bluetooth (iOS) — erforderlich zum Scannen und Verbinden mit Bluetooth-Geräten
    • Location (nur Android 11 und älter) — erforderlich von älteren Android-Versionen zum Scannen nach BLE
  • Stelle sicher, dass Bluetooth auf deinem Gerät aktiviert ist.
  • Tippe auf Connect auf dem Startbildschirm. Die App scannt nach BLE-Geräten.
DIYables Bluetooth App - Home Screen with Scan Button
  • Tippe auf "Arduino_Table" in den Scan-Ergebnissen.
  • Nach der Verbindung kehre zum Startbildschirm zurück und öffne die Table App.
DIYables Bluetooth App - Home Screen with Table App

Tippe auf das Einstellungssymbol auf dem Startbildschirm, um Apps anzuzeigen oder auszublenden. Weitere Details finden Sie im DIYables Bluetooth App Benutzerhandbuch.

  • Eine Tabelle zeigt Temperatur, Luftfeuchtigkeit, Druck, Zähler, Betriebszeit, Freier Speicher und Status-Zeilen — alles wird in Echtzeit aktualisiert.
DIYables Bluetooth App - Table Screen

Schau dir jetzt den Serial Monitor an. Die Ausgabe wird zeigen:

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 table updates... Temperature: 25.30 °C Humidity: 55.70 %
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Kreative Anpassung - Passe den Code an dein Projekt an

Tabellenstruktur definieren

// Add rows during setup bluetoothTable.addRow("Temperature", "-- °C"); bluetoothTable.addRow("Humidity", "-- %"); bluetoothTable.addRow("Pressure", "-- hPa"); bluetoothTable.addRow("Status", "Initializing...");

Werte aktualisieren

// Update by row name bluetoothTable.sendValueUpdate("Temperature", "25.5 °C"); bluetoothTable.sendValueUpdate("Status", "Running"); // Update by row index (0-based) bluetoothTable.sendValueUpdate(0, "25.5 °C"); bluetoothTable.sendValueUpdate(3, "Running");

Tabellenstruktur senden

// Re-send the full table structure to the app bluetoothTable.sendTableStructure(); // Handle data request from app bluetoothTable.onDataRequest([]() { bluetoothTable.sendTableStructure(); });

Programmierbeispiele

Wetterstations-Dashboard

DIYables_BluetoothTable bluetoothTable(bluetoothServer); void setup() { bluetoothTable.addRow("Temperature", "-- °C"); bluetoothTable.addRow("Humidity", "-- %"); bluetoothTable.addRow("Pressure", "-- hPa"); bluetoothTable.addRow("Wind Speed", "-- m/s"); bluetoothTable.addRow("Rain", "None"); bluetoothTable.onDataRequest([]() { bluetoothTable.sendTableStructure(); }); } void loop() { bluetoothServer.loop(); static unsigned long lastTime = 0; if (millis() - lastTime >= 2000) { lastTime = millis(); bluetoothTable.sendValueUpdate("Temperature", String(readTemp(), 1) + " °C"); bluetoothTable.sendValueUpdate("Humidity", String(readHumidity(), 1) + " %"); bluetoothTable.sendValueUpdate("Pressure", String(readPressure(), 0) + " hPa"); } }

Systemstatus-Monitor

void setup() { bluetoothTable.addRow("Uptime", "0s"); bluetoothTable.addRow("Free RAM", "-- bytes"); bluetoothTable.addRow("WiFi RSSI", "-- dBm"); bluetoothTable.addRow("IP Address", "N/A"); bluetoothTable.addRow("Status", "Starting..."); } void loop() { bluetoothServer.loop(); static unsigned long lastTime = 0; if (millis() - lastTime >= 1000) { lastTime = millis(); unsigned long uptime = millis() / 1000; String uptimeStr = String(uptime / 3600) + "h " + String((uptime % 3600) / 60) + "m " + String(uptime % 60) + "s"; bluetoothTable.sendValueUpdate("Uptime", uptimeStr); bluetoothTable.sendValueUpdate("Status", "Running"); } }

Fehlerbehebung

Häufige Probleme

1. Gerät ist in der App nicht sichtbar

  • Bestätige, dass die Platine eingeschaltet ist und der Sketch hochgeladen wurde
  • Überprüfe, dass Bluetooth auf deinem Telefon aktiviert ist
  • Auf Android 11 und älter auch Standortdienste aktivieren

2. Tabelle ist leer oder Zeilen werden nicht angezeigt

  • Stelle sicher, dass addRow() in setup() aufgerufen wird, bevor die Verbindung hergestellt wird
  • Implementiere den onDataRequest Callback, um die Struktur erneut zu senden
  • Überprüfe, dass sendTableStructure() aufgerufen wird

3. Werte werden nicht aktualisiert

  • Überprüfe, dass sendValueUpdate() in der Schleife aufgerufen wird
  • Überprüfe, dass der Zeilenname genau übereinstimmt (Groß-/Kleinschreibung beachten)
  • Stelle sicher, dass bluetoothServer.loop() in jeder Schleife aufgerufen wird

4. Zeilennamen stimmen nicht überein

  • Zeilennamen beachten die Groß-/Kleinschreibung — "Temperature" ≠ "temperature"
  • Verwende den Zeilenindex (0-basiert) als Alternative zu Zeilennamen

5. Upload fehlgeschlagen oder Platine nicht erkannt

  • Installiere das neueste Arduino Nano ESP32 Board-Paket über Board Manager
  • Versuche ein anderes USB-Kabel oder einen anderen Port

Projektideen

  • Wetterstations-Dashboard
  • Systemressourcen-Monitor
  • Multi-Sensor-Datenanzeige
  • Gerätekonfigurationspanel
  • IoT-Gerätestatus-Board

Nächste Schritte

Nachdem Sie das Bluetooth Table Beispiel abgeschlossen haben, erkunden Sie:

  1. Bluetooth Plotter — Grafische Datenvisualisierung
  2. Bluetooth Monitor — Textbasierte Interaktion
  3. Bluetooth Temperatur — Messuhr-Anzeige
  4. Multiple Bluetooth Apps — Kombiniere Tabelle mit anderen App-Widgets

Unterstützung

Für zusätzliche Hilfe:

  • Überprüfe die API-Referenzdokumentation
  • Arduino-Gemeinschaftsforen

※ 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!