Arduino Nano ESP32 Bluetooth Mehrere Apps Beispiel - Umfassendes BLE-Tutorial

Übersicht

Dieses Beispiel demonstriert das Ausführen von 9 Bluetooth-App-Widgets gleichzeitig auf einem einzigen Arduino Nano ESP32 mit BLE. Mit BLE (Bluetooth Low Energy) kombiniert der Sketch Monitor, Chat, Schieberegler, Joystick, Temperatur, Plotter, Tabelle, Analog-Gauge und Rotator in einem Sketch. Alle Widgets teilen eine einzige BLE-Verbindung und können miteinander interagieren. Geeignet für umfassende Dashboards, komplexe IoT-Projekte und das gleichzeitige Erlernen mehrerer Widget-Typen.

Hinweis: 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 Mehrere Apps Beispiel - Umfassendes BLE-Tutorial

Funktionen

  • 9 Widgets in einem: Monitor, Chat, Schieberegler, Joystick, Temperatur, Plotter, Tabelle, Analog-Gauge, Rotator
  • Widget-übergreifende Interaktion: Schieberegler aktualisiert Gauge und Tabelle; Joystick aktualisiert Tabelle usw.
  • Einzelne BLE-Verbindung: Alle Widgets teilen sich effizient eine Verbindung
  • Echtzeit-Updates: Jedes Widget aktualisiert sich in seinem eigenen konfigurierten Intervall
  • Umfassendes Dashboard: Zeigen Sie alle Daten von einem einzigen Gerät an
  • Android & iOS-Unterstützung: BLE ist mit beiden Plattformen kompatibel
  • Keine Kopplung erforderlich: BLE verbindet sich ohne manuelle Kopplung

Enthaltene Apps

AppBeschreibungAktualisierungsintervall
MonitorTextbasierte Statusanzeige5 Sekunden
ChatBidirektionales Text-MessagingBei Bedarf
SchiebereglerWertsteuerung (0-255)Bei Änderung
Joystick2D-PositionssteuerungBei Änderung
TemperaturTemperatur-Gauge (-10 bis 50°C)2 Sekunden
PlotterEchtzeit-Datengrafik100ms
TabelleStrukturierte Daten (10 Zeilen)5 Sekunden
Analog-GaugeZeigerförmiges Gauge (0-100%)3 Sekunden
RotatorWinkelsteuerung (kontinuierlich)Bei Änderung

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 bei Arduino Nano ESP32? Beginnen Sie mit dem Arduino Nano ESP32 Einstiegsanleitung.
  • Verbinden Sie Arduino Nano ESP32 über USB mit Ihrem Computer.
  • Öffnen Sie die Arduino IDE.
  • Wählen Sie das Arduino Nano ESP32 Board und den richtigen COM-Port.
  • Klicken Sie auf das Libraries Symbol in der linken Seitenleiste.
  • Suchen Sie nach "DIYables Bluetooth" und wählen Sie die DIYables Bluetooth-Bibliothek von DIYables.
  • Klicken Sie auf Install.
Arduino Nano ESP32 DIYables Bluetooth-Bibliothek
  • Wenn Sie aufgefordert werden, Abhängigkeiten zu installieren, klicken Sie auf Install All.
Arduino Nano ESP32 DIYables Bluetooth Abhängigkeit

BLE-Code

  • Öffnen Sie in Arduino IDE File Examples DIYables Bluetooth ArduinoBLE_MultipleApps oder fügen Sie den Code in den Editor ein.
/* * DIYables Bluetooth Library - ESP32 BLE Multiple Apps Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates how to use multiple Bluetooth apps simultaneously: * - Monitor, Chat, Slider, Joystick, Temperature, Plotter, * Table, Analog Gauge, Rotator * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothMonitor.h> #include <DIYables_BluetoothChat.h> #include <DIYables_BluetoothSlider.h> #include <DIYables_BluetoothJoystick.h> #include <DIYables_BluetoothTemperature.h> #include <DIYables_BluetoothPlotter.h> #include <DIYables_BluetoothTable.h> #include <DIYables_BluetoothAnalogGauge.h> #include <DIYables_BluetoothRotator.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const char* DEVICE_NAME = "ESP32BLE Multi-App"; 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 app instances DIYables_BluetoothMonitor bluetoothMonitor; DIYables_BluetoothChat bluetoothChat; DIYables_BluetoothSlider bluetoothSlider(0, 255, 1); DIYables_BluetoothJoystick bluetoothJoystick(false, 5); DIYables_BluetoothTemperature bluetoothTemperature(-10.0, 50.0, "°C"); DIYables_BluetoothPlotter bluetoothPlotter; DIYables_BluetoothTable bluetoothTable; DIYables_BluetoothAnalogGauge bluetoothGauge(0.0, 100.0, "%"); DIYables_BluetoothRotator bluetoothRotator(ROTATOR_MODE_CONTINUOUS); // State variables int currentSlider1 = 128; int currentSlider2 = 64; int currentJoystickX = 0; int currentJoystickY = 0; float currentTemperature = 25.0; float currentGaugeValue = 50.0; float currentRotatorAngle = 0.0; int messageCount = 0; // Timing variables unsigned long lastMonitorUpdate = 0; unsigned long lastTempUpdate = 0; unsigned long lastPlotUpdate = 0; unsigned long lastTableUpdate = 0; unsigned long lastGaugeUpdate = 0; float plotPhase = 0; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 BLE Multiple Apps Example"); pinMode(2, OUTPUT); digitalWrite(2, LOW); bluetoothServer.begin(); bluetoothServer.addApp(&bluetoothMonitor); bluetoothServer.addApp(&bluetoothChat); bluetoothServer.addApp(&bluetoothSlider); bluetoothServer.addApp(&bluetoothJoystick); bluetoothServer.addApp(&bluetoothTemperature); bluetoothServer.addApp(&bluetoothPlotter); bluetoothServer.addApp(&bluetoothTable); bluetoothServer.addApp(&bluetoothGauge); bluetoothServer.addApp(&bluetoothRotator); Serial.print("Registered apps: "); Serial.println(bluetoothServer.getAppCount()); bluetoothPlotter.setPlotTitle("Sensor Data"); bluetoothPlotter.setAxisLabels("Time", "Value"); bluetoothPlotter.setYAxisRange(-1.5, 1.5); bluetoothPlotter.setMaxSamples(100); bluetoothPlotter.setLegendLabels("Sine", "Cosine", "Random"); bluetoothTable.addRow("Status"); bluetoothTable.addRow("Uptime"); bluetoothTable.addRow("Slider 1"); bluetoothTable.addRow("Slider 2"); bluetoothTable.addRow("Joystick X"); bluetoothTable.addRow("Joystick Y"); bluetoothTable.addRow("Temperature"); bluetoothTable.addRow("Gauge Value"); bluetoothTable.addRow("Rotator Angle"); bluetoothTable.addRow("Messages"); setupCallbacks(); Serial.println("Waiting for Bluetooth connection..."); } void setupCallbacks() { bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); digitalWrite(2, HIGH); bluetoothMonitor.send("=== ESP32 BLE Multi-App Connected ==="); bluetoothMonitor.send("All apps are ready!"); bluetoothChat.send("Hello! ESP32 BLE Multi-App is connected."); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); digitalWrite(2, LOW); }); bluetoothMonitor.onMonitorMessage([](const String& message) { Serial.println("Monitor cmd: " + message); if (message == "HELP") { bluetoothMonitor.send("Commands: STATUS, HELP, LED_ON, LED_OFF, HEAP"); } else if (message == "STATUS") { bluetoothMonitor.send("Slider1=" + String(currentSlider1) + " Slider2=" + String(currentSlider2)); bluetoothMonitor.send("Joystick X=" + String(currentJoystickX) + " Y=" + String(currentJoystickY)); bluetoothMonitor.send("Temp=" + String(currentTemperature, 1) + "°C"); bluetoothMonitor.send("Gauge=" + String(currentGaugeValue, 1) + "%"); bluetoothMonitor.send("Rotator=" + String(currentRotatorAngle, 0) + "°"); } else if (message == "LED_ON") { digitalWrite(2, HIGH); bluetoothMonitor.send("LED turned ON"); } else if (message == "LED_OFF") { digitalWrite(2, LOW); bluetoothMonitor.send("LED turned OFF"); } else if (message == "HEAP") { bluetoothMonitor.send("Free heap: " + String(ESP.getFreeHeap()) + " bytes"); } else { bluetoothMonitor.send("Unknown: " + message + " (type HELP)"); } }); bluetoothChat.onChatMessage([](const String& message) { Serial.println("Chat: " + message); bluetoothChat.send("Echo: " + message); if (message.equalsIgnoreCase("ping")) { bluetoothChat.send("pong!"); } else if (message.equalsIgnoreCase("status")) { bluetoothChat.send("Uptime: " + String(millis() / 1000) + "s, Apps: " + String(bluetoothServer.getAppCount())); } }); bluetoothSlider.onSliderValue([](int slider1, int slider2) { currentSlider1 = slider1; currentSlider2 = slider2; Serial.print("Slider 1: "); Serial.print(slider1); Serial.print(", Slider 2: "); Serial.println(slider2); currentGaugeValue = map(slider1, 0, 255, 0, 100); bluetoothGauge.send(currentGaugeValue); bluetoothTable.sendValueUpdate("Slider 1", String(slider1)); bluetoothTable.sendValueUpdate("Slider 2", String(slider2)); bluetoothTable.sendValueUpdate("Gauge Value", String(currentGaugeValue, 1) + "%"); }); bluetoothSlider.onGetConfig([]() { bluetoothSlider.send(currentSlider1, currentSlider2); }); bluetoothJoystick.onJoystickValue([](int x, int y) { currentJoystickX = x; currentJoystickY = y; Serial.print("Joystick X: "); Serial.print(x); Serial.print(", Y: "); Serial.println(y); bluetoothTable.sendValueUpdate("Joystick X", String(x)); bluetoothTable.sendValueUpdate("Joystick Y", String(y)); }); bluetoothJoystick.onGetConfig([]() { bluetoothJoystick.send(currentJoystickX, currentJoystickY); }); bluetoothTemperature.onTemperatureRequest([]() { bluetoothTemperature.send(currentTemperature); }); bluetoothPlotter.onDataRequest([]() { Serial.println("Plotter data requested"); }); bluetoothTable.onDataRequest([]() { Serial.println("Table data requested"); bluetoothTable.sendTableStructure(); updateAllTableValues(); }); bluetoothGauge.onValueRequest([]() { bluetoothGauge.send(currentGaugeValue); }); bluetoothRotator.onRotatorAngle([](float angle) { currentRotatorAngle = angle; Serial.print("Rotator: "); Serial.print(angle); Serial.println("°"); bluetoothTable.sendValueUpdate("Rotator Angle", String(angle, 0) + "°"); }); } void updateAllTableValues() { bluetoothTable.sendValueUpdate("Status", "Running"); unsigned long uptime = millis() / 1000; String uptimeStr; if (uptime >= 60) { uptimeStr = String(uptime / 60) + "m " + String(uptime % 60) + "s"; } else { uptimeStr = String(uptime) + "s"; } bluetoothTable.sendValueUpdate("Uptime", uptimeStr); bluetoothTable.sendValueUpdate("Slider 1", String(currentSlider1)); bluetoothTable.sendValueUpdate("Slider 2", String(currentSlider2)); bluetoothTable.sendValueUpdate("Joystick X", String(currentJoystickX)); bluetoothTable.sendValueUpdate("Joystick Y", String(currentJoystickY)); bluetoothTable.sendValueUpdate("Temperature", String(currentTemperature, 1) + " °C"); bluetoothTable.sendValueUpdate("Gauge Value", String(currentGaugeValue, 1) + "%"); bluetoothTable.sendValueUpdate("Rotator Angle", String(currentRotatorAngle, 0) + "°"); bluetoothTable.sendValueUpdate("Messages", String(messageCount)); } void loop() { bluetoothServer.loop(); if (!bluetooth.isConnected()) { delay(10); return; } if (millis() - lastMonitorUpdate >= 5000) { lastMonitorUpdate = millis(); messageCount++; bluetoothMonitor.send("[INFO] Heartbeat #" + String(messageCount) + " - Uptime: " + String(millis() / 1000) + "s"); } if (millis() - lastTempUpdate >= 2000) { lastTempUpdate = millis(); static float tempOffset = 0; tempOffset += random(-10, 11) / 10.0; if (tempOffset > 5.0) tempOffset = 5.0; if (tempOffset < -5.0) tempOffset = -5.0; currentTemperature = 25.0 + tempOffset; bluetoothTemperature.send(currentTemperature); bluetoothTable.sendValueUpdate("Temperature", String(currentTemperature, 1) + " °C"); } if (millis() - lastPlotUpdate >= 100) { lastPlotUpdate = millis(); float sine = sin(plotPhase); float cosine = cos(plotPhase); float noise = random(-50, 51) / 100.0; bluetoothPlotter.send(sine, cosine, noise); plotPhase += 0.1; if (plotPhase > 2 * PI) plotPhase = 0; } if (millis() - lastTableUpdate >= 5000) { lastTableUpdate = millis(); unsigned long uptime = millis() / 1000; String uptimeStr; if (uptime >= 60) { uptimeStr = String(uptime / 60) + "m " + String(uptime % 60) + "s"; } else { uptimeStr = String(uptime) + "s"; } bluetoothTable.sendValueUpdate("Uptime", uptimeStr); bluetoothTable.sendValueUpdate("Messages", String(messageCount)); } if (millis() - lastGaugeUpdate >= 3000) { lastGaugeUpdate = millis(); float sensorValue = 50.0 + 30.0 * sin(millis() / 10000.0); currentGaugeValue = sensorValue; bluetoothGauge.send(currentGaugeValue); bluetoothTable.sendValueUpdate("Gauge Value", String(currentGaugeValue, 1) + "%"); } delay(10); }
  • Klicken Sie auf Upload, um den Sketch auf das Board zu laden.
  • Öffnen Sie den Serial Monitor.
  • Die Serial Monitor Ausgabe 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 - Multiple Apps 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.
  • Beim ersten Start gewähren Sie die folgenden Berechtigungen:
    • Geräte in der Nähe (Android 12+) / Bluetooth (iOS) — erforderlich zum Scannen und Verbinden mit Bluetooth-Geräten
    • Standort (nur Android 11 und älter) — erforderlich von älteren Android-Versionen zum Scannen von BLE
  • Stellen Sie sicher, dass Bluetooth auf Ihrem Gerät aktiviert ist.
  • Tippen Sie auf Connect auf dem Startbildschirm. Die App scannt nach BLE-Geräten.
DIYables Bluetooth App - Startbildschirm mit Scan-Button
  • Tippen Sie auf "DIYables Multi-App" in den Scann-Ergebnissen.
  • Nach der Verbindung zeigt der Startbildschirm alle verfügbaren App-Widgets an. Die im Arduino-Sketch initialisierten 9 Widgets reagieren und funktionieren — andere Widgets auf dem Startbildschirm erscheinen aber funktionieren nicht mit diesem Sketch.
DIYables Bluetooth App - Startbildschirm mit mehreren Apps

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

  • Öffnen Sie eines der folgenden Widgets, um mit dem Arduino zu interagieren: Monitor, Chat, Schieberegler, Joystick, Temperatur, Plotter, Tabelle, Analog-Gauge, Rotator.
  • Wechseln Sie frei zwischen Widgets — alle teilen die gleiche BLE-Verbindung.

Schauen Sie nun zurück auf den Serial Monitor in Arduino IDE. Sie werden folgendes 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! Monitor: System running, uptime: 5s Chat message: Hello Slider value: 128 Joystick: X=0.50, Y=-0.30 Temperature: 22.50 °C
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Funktionsweise

App-Initialisierung

Jedes Widget wird mit seiner eigenen Konfiguration und Callbacks erstellt:

// All apps share the same Bluetooth server DIYables_BluetoothServer bluetoothServer(bluetooth); // Create individual apps DIYables_BluetoothMonitor bluetoothMonitor(bluetoothServer); DIYables_BluetoothChat bluetoothChat(bluetoothServer); DIYables_BluetoothSlider bluetoothSlider(bluetoothServer, 0, 255, 1); DIYables_BluetoothJoystick bluetoothJoystick(bluetoothServer, false, 5); DIYables_BluetoothTemperature bluetoothTemp(bluetoothServer, -10.0, 50.0, "°C"); DIYables_BluetoothPlotter bluetoothPlotter(bluetoothServer); DIYables_BluetoothTable bluetoothTable(bluetoothServer); DIYables_BluetoothAnalogGauge bluetoothGauge(bluetoothServer, 0.0, 100.0, "%"); DIYables_BluetoothRotator bluetoothRotator(bluetoothServer, ROTATOR_MODE_CONTINUOUS);

Widget-übergreifende Interaktion

Apps können miteinander interagieren. Wenn ein Widget Eingaben erhält, kann es andere Widgets aktualisieren:

// Slider updates gauge and table bluetoothSlider.onSliderValue([](int value) { float percent = value * 100.0 / 255.0; bluetoothGauge.send(percent); bluetoothTable.sendValueUpdate("Slider 1", String(value)); }); // Joystick updates table bluetoothJoystick.onJoystickValue([](float x, float y) { bluetoothTable.sendValueUpdate("Joystick X", String(x, 2)); bluetoothTable.sendValueUpdate("Joystick Y", String(y, 2)); }); // Rotator updates table bluetoothRotator.onRotatorAngle([](float angle) { bluetoothTable.sendValueUpdate("Rotator Angle", String(angle, 1) + "°"); });

Aktualisierungs-Timing

Jede App hat ihr eigenes Aktualisierungsintervall, um Reaktionsfähigkeit und BLE-Bandbreite zu balancieren:

void loop() { bluetoothServer.loop(); unsigned long now = millis(); // Plotter: fastest updates (100ms) if (now - lastPlotterTime >= 100) { ... } // Temperature: every 2 seconds if (now - lastTempTime >= 2000) { ... } // Gauge: every 3 seconds if (now - lastGaugeTime >= 3000) { ... } // Monitor, Table: every 5 seconds if (now - lastMonitorTime >= 5000) { ... } if (now - lastTableTime >= 5000) { ... } }

Tabellenstruktur

Das Beispiel erstellt eine Tabelle mit 10 Zeilen, die Daten von allen Apps anzeigen:

ZeileBeschriftungBeschreibung
0StatusVerbindungs-/Laufstatus
1LaufzeitZeit seit dem Starten
2Schieberegler 1Aktueller Schiebereglerwert
3Schieberegler 2Zweiter Schiebereglerwert
4Joystick XJoystick-X-Position
5Joystick YJoystick-Y-Position
6TemperaturAktuelle Temperatur
7Gauge-WertAktueller Gauge-Prozentsatz
8Rotator-WinkelAktueller Rotationswinkel
9MeldungenAnzahl der Chat-Nachrichten

Kreative Anpassung - Passen Sie den Code an Ihr Projekt an

Widgets hinzufügen oder entfernen

Beziehen Sie nur die für Ihr Projekt erforderlichen Widgets ein:

// Minimal setup: just Monitor and Slider DIYables_BluetoothMonitor bluetoothMonitor(bluetoothServer); DIYables_BluetoothSlider bluetoothSlider(bluetoothServer, 0, 100, 1); // That's it! The app will only show these two

Benutzerdefinierte Widget-übergreifende Logik

// Example: Temperature alarm via Monitor void checkTemperatureAlarm(float temp) { if (temp > 40.0) { bluetoothMonitor.send("⚠️ HIGH TEMP ALERT: " + String(temp, 1) + "°C"); bluetoothChat.send("Temperature alarm triggered!"); } }

Fehlerbehebung

Häufige Probleme

1. Gerät ist in der App nicht sichtbar

  • Bestätigen Sie, dass das Board eingeschaltet ist und der Sketch hochgeladen wurde
  • Überprüfen Sie, ob Bluetooth auf Ihrem Telefon aktiviert ist
  • Unter Android 11 und älter müssen Sie auch Standortdienste aktivieren

2. Einige Widgets werden im Menü nicht angezeigt

  • Alle initialisierten Widgets werden automatisch angezeigt
  • Überprüfen Sie, dass jedes Widget-Objekt ordnungsgemäß erstellt wird
  • Die App erkennt verfügbare Widgets vom Arduino

3. Updates scheinen langsam zu sein

  • Jedes Widget hat absichtlich unterschiedliche Aktualisierungsintervalle
  • BLE-Bandbreite ist begrenzt; zu viele schnelle Aktualisierungen können zu Staus führen
  • Reduzieren Sie die Aktualisierungsfrequenz für Widgets, die keine Echtzeit-Daten benötigen

4. Widget-übergreifende Aktualisierungen funktionieren nicht

  • Überprüfen Sie, dass die Callback-Funktionen ordnungsgemäß registriert sind
  • Kontrollieren Sie, dass Tabellenzeilennamen genau übereinstimmen (Groß-/Kleinschreibung beachtet)
  • Bestätigen Sie, dass auf das Ziel-Widget-Objekt innerhalb des Callback-Bereichs zugegriffen werden kann

5. Speicherprobleme oder Abstürze

  • Das Ausführen von 9 Widgets verwendet erheblich Speicher
  • Entfernen Sie nicht verwendete Widgets, um Ressourcen freizugeben
  • Reduzieren Sie bei Bedarf die Tabellenzeilenzahl

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

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

Projektideen

  • Umfassendes IoT-Dashboard
  • Roboter-Steuertafel (Joystick + Monitor + Schieberegler)
  • Wetterstation (Temperatur + Gauge + Plotter + Tabelle)
  • Home-Automation-Hub (Schieberegler + Pins + Monitor + Chat)
  • STEM-Lernplattform (alle Apps zum Experimentieren)

Nächste Schritte

Nach Abschluss des Beispiels mit mehreren Apps erkunden Sie die einzelnen Tutorials für tieferes Verständnis:

  1. Bluetooth Chat — Details zum Messaging
  2. Bluetooth Schieberegler — Details zur Wertsteuerung
  3. Bluetooth Plotter — Details zur Datenvisualisierung
  4. Bluetooth RTC — Zeitsynchronisation mit der integrierten Hardware-RTC

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!