Arduino Nano ESP32 Bluetooth Monitor Beispiel - Drahtloser serieller Monitor über BLE Anleitung

Überblick

Dieses Beispiel implementiert einen drahtlosen seriellen Monitor auf dem Arduino Nano ESP32 mit BLE (Bluetooth Low Energy) über die DIYables Bluetooth STEM App. Streamen Sie Echtzeit-Statusmeldungen, Debug-Ausgaben und Sensormessungen drahtlos zu einem Smartphone und empfangen Sie Textbefehle von der App. Geeignet für drahtloses Debuggen, Fernüberwachung und Systemprotokollierung.

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

Arduino Nano ESP32 Bluetooth Monitor Beispiel - Drahtloser serieller Monitor über BLE Anleitung

Funktionen

  • Drahtloser serieller Monitor: Streamen Sie Textnachrichten zu Ihrem Smartphone
  • Bidirektionale Kommunikation: Senden Sie Befehle von der App an den Arduino
  • Echtzeit-Streaming: Kontinuierliche Ausgabe, ähnlich wie ein verdrahteter serieller Monitor
  • Befehlsbearbeitung: Verarbeiten Sie von der App empfangene Textbefehle
  • Android & iOS Unterstützung: BLE ist mit beiden Plattformen kompatibel
  • Keine Kopplung erforderlich: BLE verbindet sich ohne manuelle Kopplung
  • Energieeffizient: BLE verbraucht weniger Energie als Klassisches Bluetooth

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-C
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 Anfängerleitfaden.
  • Verbinden Sie den Arduino Nano ESP32 über USB mit Ihrem Computer.
  • Öffnen Sie die Arduino IDE.
  • Wählen Sie das Board Arduino Nano ESP32 und den korrekten COM-Port aus.
  • Klicken Sie auf das Symbol Bibliotheken in der linken Seitenleiste.
  • Suchen Sie nach "DIYables Bluetooth" und wählen Sie die DIYables Bluetooth Bibliothek von DIYables.
  • Klicken Sie auf Installieren.
Arduino Nano ESP32 DIYables Bluetooth Bibliothek
  • Wenn Sie aufgefordert werden, Abhängigkeiten zu installieren, klicken Sie auf Alle installieren.
Arduino Nano ESP32 DIYables Bluetooth Abhängigkeit

BLE Code

  • In der Arduino IDE öffnen Sie Datei Beispiele DIYables Bluetooth ArduinoBLE_Monitor, oder fügen Sie den Code in den Editor ein.
/* * DIYables Bluetooth Library - ESP32 BLE Monitor Example * Works with DIYables Bluetooth STEM app on Android and iOS * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothMonitor.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const char* DEVICE_NAME = "ESP32BLE_Monitor"; 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 Monitor app instance DIYables_BluetoothMonitor bluetoothMonitor; // Variables for demo unsigned long lastUpdate = 0; const unsigned long UPDATE_INTERVAL = 3000; int messageCount = 0; bool ledState = false; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 BLE Monitor Example"); // Initialize built-in LED pinMode(2, OUTPUT); // ESP32 built-in LED is usually on GPIO 2 digitalWrite(2, LOW); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add monitor app to server bluetoothServer.addApp(&bluetoothMonitor); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); bluetoothMonitor.send("=== ESP32 BLE Monitor Connected ==="); bluetoothMonitor.send("System Ready"); bluetoothMonitor.send("Type HELP for available commands"); bluetoothMonitor.send(""); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); // Set up message handler for incoming commands bluetoothMonitor.onMonitorMessage([](const String& message) { Serial.print("Received command: "); Serial.println(message); handleCommand(message); }); Serial.println("Waiting for Bluetooth connection..."); } void handleCommand(const String& cmd) { if (cmd == "HELP") { bluetoothMonitor.send("Available Commands:"); bluetoothMonitor.send(" LED_ON - Turn LED on"); bluetoothMonitor.send(" LED_OFF - Turn LED off"); bluetoothMonitor.send(" STATUS - Show system status"); bluetoothMonitor.send(" HEAP - Show free heap memory"); bluetoothMonitor.send(" HELP - Show this help"); } else if (cmd == "LED_ON") { digitalWrite(2, HIGH); ledState = true; bluetoothMonitor.send("LED turned ON"); } else if (cmd == "LED_OFF") { digitalWrite(2, LOW); ledState = false; bluetoothMonitor.send("LED turned OFF"); } else if (cmd == "STATUS") { showStatus(); } else if (cmd == "HEAP") { bluetoothMonitor.send("Free heap: " + String(ESP.getFreeHeap()) + " bytes"); } else { bluetoothMonitor.send("Unknown command: " + cmd); bluetoothMonitor.send("Type HELP for available commands"); } } void showStatus() { bluetoothMonitor.send("=== System Status ==="); bluetoothMonitor.send("LED State: " + String(ledState ? "ON" : "OFF")); unsigned long uptime = millis() / 1000; bluetoothMonitor.send("Uptime: " + String(uptime / 3600) + "h " + String((uptime % 3600) / 60) + "m " + String(uptime % 60) + "s"); bluetoothMonitor.send("Free Heap: " + String(ESP.getFreeHeap()) + " bytes"); bluetoothMonitor.send("Messages Sent: " + String(messageCount)); bluetoothMonitor.send("===================="); } void sendPeriodicUpdate() { messageCount++; if (messageCount % 3 == 0) { bluetoothMonitor.send("[INFO] Heartbeat #" + String(messageCount)); } else if (messageCount % 5 == 0) { bluetoothMonitor.send("[HEAP] Free: " + String(ESP.getFreeHeap()) + " bytes"); } else { bluetoothMonitor.send("[TIME] Uptime: " + String(millis() / 1000) + "s"); } Serial.print("Sent update #"); Serial.println(messageCount); } void loop() { bluetoothServer.loop(); if (bluetooth.isConnected() && millis() - lastUpdate >= UPDATE_INTERVAL) { lastUpdate = millis(); sendPeriodicUpdate(); } delay(10); }
  • Klicken Sie auf Hochladen, um die Skizze auf das Board zu laden.
  • Öffnen Sie den seriellen Monitor.
  • Die Ausgabe des seriellen Monitors sollte wie folgt 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 - Monitor Example Waiting for Bluetooth connection...
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Mobile App

  • Installieren Sie die DIYables Bluetooth App auf Ihrem Smartphone: Android | iOS

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

  • Starten Sie die DIYables Bluetooth App.
  • Gewähren Sie beim ersten Start die folgenden Berechtigungen:
    • Nahegelegene Geräte (Android 12+) / Bluetooth (iOS) — erforderlich zum Scannen und Verbinden mit Bluetooth-Geräten
    • Standort (nur Android 11 und früher) — erforderlich von älteren Android-Versionen zum Scannen nach BLE
  • Stellen Sie sicher, dass Bluetooth auf Ihrem Gerät aktiviert ist.
  • Tippen Sie auf Verbinden auf dem Startbildschirm. Die App scannt nach BLE-Geräten.
DIYables Bluetooth App - Startbildschirm mit Schaltfläche Scannen
  • Tippen Sie auf "Arduino_Monitor" in den Scan-Ergebnissen.
  • Nach der Verbindung kehren Sie zum Startbildschirm zurück und öffnen Sie die Monitor App.
DIYables Bluetooth App - Startbildschirm mit Monitor App

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

  • Statusmeldungen werden in der Monitor-Anzeige gestreamt.
  • Geben Sie LED_ON in das Eingabefeld ein und tippen Sie auf Senden — die LED auf dem Arduino Nano ESP32 leuchtet auf und der Monitor zeigt eine Bestätigung an.
DIYables Bluetooth App - Monitor-Bildschirm

Schauen Sie jetzt zurück auf den seriellen Monitor in der Arduino IDE. Sie werden sehen:

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! Sent update #1 Sent update #2 Sent update #3
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Kreative Anpassung - Passen Sie den Code an Ihr Projekt an

Meldungen senden

// Send text messages to the app bluetoothMonitor.send("System started"); bluetoothMonitor.send("Temperature: " + String(temp, 1) + " °C"); bluetoothMonitor.send("[ERROR] Sensor disconnected!");

Eingehende Befehle bearbeiten

Verwenden Sie den Callback onMonitorMessage(), um von der Monitor App eingegebene Befehle zu empfangen und zu verarbeiten:

bluetoothMonitor.onMonitorMessage([](const String& message) { Serial.print("Received: "); Serial.println(message); if (message == "HELP") { bluetoothMonitor.send("Commands: LED_ON, LED_OFF, STATUS, HELP"); } else if (message == "LED_ON") { digitalWrite(LED_BUILTIN, HIGH); bluetoothMonitor.send("LED turned ON"); } else if (message == "LED_OFF") { digitalWrite(LED_BUILTIN, LOW); bluetoothMonitor.send("LED turned OFF"); } else if (message == "STATUS") { bluetoothMonitor.send("Uptime: " + String(millis() / 1000) + "s"); bluetoothMonitor.send("LED: " + String(digitalRead(LED_BUILTIN) ? "ON" : "OFF")); } else { bluetoothMonitor.send("Unknown command: " + message); } });

Fügen Sie zusätzliche else if Blöcke für jeden Befehl hinzu. Verwenden Sie beispielsweise RELAY_ON / RELAY_OFF zur Steuerung eines Relais oder READ um eine Sensormessung auszulösen.

Programmierbeispiele

Sensor Status Streaming

void loop() { bluetoothServer.loop(); static unsigned long lastUpdate = 0; if (bluetooth.isConnected() && millis() - lastUpdate >= 3000) { lastUpdate = millis(); int light = analogRead(A0); float voltage = analogRead(A1) * 5.0 / 1023.0; bluetoothMonitor.send("[SENSOR] Light: " + String(map(light, 0, 1023, 0, 100)) + "%"); bluetoothMonitor.send("[SENSOR] Voltage: " + String(voltage, 2) + "V"); bluetoothMonitor.send("[INFO] Uptime: " + String(millis() / 1000) + "s"); } delay(10); }

Ereignisbasierte Protokollierung

const int BUTTON_PIN = 7; int lastButtonState = HIGH; void loop() { bluetoothServer.loop(); int buttonState = digitalRead(BUTTON_PIN); if (buttonState != lastButtonState) { lastButtonState = buttonState; if (buttonState == LOW) { bluetoothMonitor.send("[EVENT] Button pressed!"); } else { bluetoothMonitor.send("[EVENT] Button released"); } } delay(10); }

Fehlerbehebung

Häufige Probleme

1. Gerät ist in der App nicht sichtbar

  • Bestätigen Sie, dass das Board eingeschaltet ist und die Skizze hochgeladen wurde
  • Überprüfen Sie, dass Bluetooth auf Ihrem Telefon aktiviert ist
  • Aktivieren Sie unter Android 11 und älter auch die Standortdienste

2. Keine Meldungen in der App angezeigt

  • Bestätigen Sie, dass bluetoothMonitor.send() aufgerufen wird
  • Überprüfen Sie, dass bluetoothServer.loop() in der Hauptschleife vorhanden ist
  • Überprüfen Sie die Verbindung im seriellen Monitor

3. Meldungen sind verzögert

  • Reduzieren Sie das Aktualisierungsintervall für häufigere Meldungen
  • Vermeiden Sie das schnelle Senden vieler Meldungen hintereinander (BLE hat Bandbreitenlimits)

4. Befehle von der App werden nicht empfangen

  • Bestätigen Sie, dass der Callback onMonitorMessage registriert ist
  • Überprüfen Sie den seriellen Monitor auf empfangene Befehlsausgaben

5. Verbindung bricht häufig ab

  • Reduzieren Sie die Entfernung zum Arduino
  • Stellen Sie eine stabile USB-Stromversorgung sicher

6. Upload schlägt fehl oder Board wird nicht erkannt

  • Installieren Sie das neueste Arduino Nano ESP32 Board-Paket über den Board Manager
  • Versuchen Sie ein anderes USB-Kabel oder einen anderen Port

Projektideen

  • Drahtlose Debug-Konsole
  • Sensor-Datenlogger
  • Systemzustandsmonitor
  • Ereignisbenachrichtigungssystem
  • Fernbefehlsschnittstelle

Nächste Schritte

Nach Abschluss des Bluetooth Monitor Beispiels erkunden Sie:

  1. Bluetooth Chat — Interaktive bidirektionale Kommunikation
  2. Bluetooth Tabelle — Strukturierte Datenanzeige
  3. Bluetooth Plotter — Datenvisualisierung
  4. Mehrere Bluetooth Apps — Kombinieren Sie den Monitor mit anderen App-Widgets

Unterstützung

Für zusätzliche Hilfe:

  • Überprüfen Sie die API-Referenzdokumentation
  • 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!