ESP32 Bluetooth Joystick Beispiel - Interaktives 2D-Steuerungs-Interface Tutorial
Überblick
Das Bluetooth Joystick Beispiel bietet eine interaktive 2D-Joystick-Steuerung, die über die DIYables Bluetooth STEM App zugänglich ist. Entwickelt für ESP32-Boards mit Unterstützung für sowohl BLE (Bluetooth Low Energy) als auch Classic Bluetooth-Verbindungen. Der Joystick sendet Echtzeit-X- und Y-Koordinatenwerte von -100 bis +100, was ihn ideal für Robotersteuerung, Motorantrieb, Servo-Positionierung und jede Anwendung macht, die Richtungseingaben benötigt.
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.

Funktionen
- 2D-Steuerung: X- und Y-Achsen mit Werten von -100 bis +100
- Echtzeit-Updates: Sofortige Positionsupdates über Bluetooth-Kommunikation
- Auto-Rücksprung-Option: Konfigurierbare automatische Rückkehr zur Mittelposition (0, 0)
- Einstellbare Sensibilität: Konfigurierbare minimale Bewegungsschwelle zum Filtern kleiner Änderungen
- Roboter-kompatibel: Werte lassen sich einfach auf Motortreiber-Eingänge abbilden
- BLE & Classic Bluetooth: Wählen Sie den Bluetooth-Modus, der zu Ihrem Projekt passt
- Plattformübergreifend: BLE-Modus funktioniert sowohl auf Android als auch iOS; Classic Bluetooth funktioniert auf Android
- Stromsparoption: BLE-Modus verbraucht weniger Strom als Classic Bluetooth
Benötigte Hardware
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) |
ESP32 Code
Schnelle Schritte
Befolgen Sie diese Anweisungen Schritt für Schritt:
- Wenn Sie ESP32 zum ersten Mal verwenden, lesen Sie das Tutorial zur Einrichtung der Umgebung für ESP32 in der Arduino IDE.
- Verbinden Sie das ESP32-Board über ein USB-Kabel mit Ihrem Computer.
- Starten Sie die Arduino IDE auf Ihrem Computer.
- Wählen Sie das entsprechende ESP32-Board und den COM-Port aus.
- Navigieren Sie zum Libraries-Symbol in der linken Leiste der Arduino IDE.
- Suchen Sie nach "DIYables Bluetooth" und finden Sie die DIYables Bluetooth-Bibliothek von DIYables
- Klicken Sie auf Install, um die Bibliothek zu installieren.

- Sie werden gebeten, einige andere Bibliotheksabhängigkeiten zu installieren
- Klicken Sie auf Install All, um alle Bibliotheksabhängigkeiten zu installieren.

Wählen Sie je nach Ihren Bedürfnissen einen der beiden Bluetooth-Modi unten aus:
ESP32 Classic Bluetooth Code (funktioniert nur mit der App 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_Joystick Beispiel, oder kopieren Sie den obigen Code und fügen Sie ihn in den Editor der Arduino IDE ein
- Klicken Sie auf Upload in der Arduino IDE, um den Code auf ESP32 hochzuladen
- Öffnen Sie den Serial Monitor
- Prüfen Sie das Ergebnis im Serial Monitor. Es sieht folgendermaßen aus:
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_Joystick Beispiel, oder kopieren Sie den obigen Code und fügen Sie ihn in den Editor der Arduino IDE ein
- Klicken Sie auf Upload in der Arduino IDE, um den Code auf ESP32 hochzuladen
- Öffnen Sie den Serial Monitor
- Prüfen Sie das Ergebnis im Serial Monitor. Es sieht folgendermaßen aus:
Mobile App
- Wenn Sie den ESP32 Classic Bluetooth Code verwenden, müssen Sie das ESP32 mit Ihrem Android-Telefon koppeln, bevor Sie die App öffnen:
- Gehen Sie zu den Einstellungen > Bluetooth Ihres Telefons
- Stellen Sie sicher, dass Bluetooth aktiviert ist
- Ihr Telefon wird nach verfügbaren Geräten suchen
- Finden und tippen Sie auf "ESP32_Joystick" in der Liste der verfügbaren Geräte
- Bestätigen Sie die Kopplungsanfrage (keine PIN erforderlich)
- Warten Sie, bis "Paired" 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 werden Berechtigungen angefragt. Gewähren Sie bitte folgende:
- Nearby Devices Berechtigung (Android 12+) / Bluetooth Berechtigung (iOS) - erforderlich zum Scannen und Verbinden von Bluetooth-Geräten
- Location Berechtigung (nur Android 11 und darunter) - erforderlich von älteren Android-Versionen zum Scannen nach BLE-Geräten
- Stellen Sie sicher, dass Bluetooth auf Ihrem Telefon aktiviert ist
- Tippen Sie auf dem Startbildschirm auf Connect. Die App wird nach sowohl BLE- als auch Classic Bluetooth-Geräten scannen.

- Finden und tippen Sie auf Ihr Gerät in den Scan-Ergebnissen, um sich zu verbinden:
- Für Classic Bluetooth: Tippen Sie auf "ESP32_Joystick"
- Für BLE: Tippen Sie auf "ESP32BLE_Joystick"
- Nach der Verbindung kehrt die App automatisch zum Startbildschirm zurück. Wählen Sie die Joystick App aus dem App-Menü.

Hinweis: Sie können auf das Einstellungen-Symbol auf dem Startbildschirm tippen, um Apps auf dem Startbildschirm ein-/auszublenden. Für weitere Details siehe das DIYables Bluetooth App Benutzerhandbuch.
- Bewegen Sie den Joystick in beliebige Richtungen, um X/Y-Koordinatenwerte zu senden

Schauen Sie nun zurück auf den Serial Monitor in der Arduino IDE. Sie werden sehen:
- Bewegen Sie den Joystick in der App und beobachten Sie die Echtzeit-X/Y-Werte im Serial Monitor
Kreative Anpassung - Den Code an Ihr Projekt anpassen
Auto-Rücksprung und Sensibilität konfigurieren
Setzen Sie das Joystick-Verhalten mit Konstruktor-Parametern:
Joystick-Positionsänderungen verarbeiten
Verwenden Sie den onJoystickValue() Callback, um X/Y-Koordinaten zu empfangen:
Konfigurationsanfrage von der App verarbeiten
Wenn sich die App verbindet und den Joystick-Bildschirm öffnet, fordert sie die Joystick-Konfiguration vom ESP32 an. Sie können den onGetConfig() Callback verwenden, um die aktuellen Joystick-Werte zu diesem Zeitpunkt an die App zu senden:
Werte an die App senden
Sie können Joystick-Koordinatenwerte vom ESP32 an die App senden:
Verbindungsereignisse verarbeiten
Sie können erkennen, wann sich die App mit dem ESP32 verbindet oder trennt:
Wie man den Joystick verwendet
App-Interface-Steuerelemente
Die Joystick-Oberfläche in der DIYables Bluetooth App bietet:
- Virtueller Joystick Pad: Berühren und ziehen zur Positionssteuerung
- X-Wert-Anzeige: Zeigt aktuelle horizontale Position (-100 bis +100)
- Y-Wert-Anzeige: Zeigt aktuelle vertikale Position (-100 bis +100)
Wertebereiche
Der Joystick bietet:
- X-Achse: -100 (ganz links) bis 0 (Mitte) bis +100 (ganz rechts)
- Y-Achse: -100 (ganz unten) bis 0 (Mitte) bis +100 (ganz oben)
- Mittelposition: (0, 0) wenn Joystick in Ruhestellung ist
Programmierbeispiele
Grundlegender Joystick-Handler
Zweirad-Roboter-Steuerung
Pan-Tilt Servo-Steuerung
LED Matrix Richtungsanzeiger
Erweiterte Programmiertechniken
Totzone-Filter
Geschwindigkeits-Ramping
Magnitude und Winkel-Berechnung
Hardware-Integrationsbeispiele
Mecanum-Rad-Roboter
Schrittmotor-Positionssteuerung
BLE vs Classic Bluetooth - Welches wählen?
| Funktion | BLE (Esp32BLE_Joystick) | Classic Bluetooth (Esp32Bluetooth_Joystick) |
|---|---|---|
| iOS-Unterstützung | ? Ja | ? Nein |
| Android-Unterstützung | ? Ja | ? Ja |
| Stromverbrauch | Niedrig | Höher |
| Reichweite | ~30-100m | ~10-100m |
| Datenrate | Niedriger | Höher |
| Kopplung erforderlich | Nein (automatische Verbindung) | Ja (manuelle Kopplung) |
| Am besten für | Batteriebetrieben, plattformübergreifend | Hoher Durchsatz, nur Android |
Fehlerbehebung
Häufige Probleme
1. Gerät in der App nicht zu finden
- Stellen Sie sicher, dass das ESP32 eingeschaltet und der Sketch hochgeladen ist
- Für BLE: Stellen Sie sicher, dass Bluetooth und Standort auf Ihrem Telefon aktiviert sind
- Für Classic Bluetooth: Koppeln Sie das Gerät zuerst in den Bluetooth-Einstellungen des Telefons
- Prüfen Sie, ob das korrekte Partitionsschema ausgewählt ist (Huge APP)
2. Joystick reagiert nicht
- Prüfen Sie den Bluetooth-Verbindungsstatus in der App
- Überprüfen Sie die Verbindung im Serial Monitor
- Versuchen Sie, die Verbindung zu trennen und wieder herzustellen
3. Joystick-Werte scheinen unregelmäßig
- Erhöhen Sie den Sensibilitätswert zum Filtern kleiner Bewegungen: bluetoothJoystick.setSensitivity(10.0)
- Wenden Sie einen Totzone-Filter in Ihrem Callback an
- Prüfen Sie auf Interferenzen von anderen Bluetooth-Geräten
4. Verbindung bricht häufig ab
- Gehen Sie näher zum ESP32 (Entfernung reduzieren)
- Für BLE: Prüfen Sie auf Interferenzen von anderen BLE-Geräten
- Für Classic Bluetooth: Stellen Sie stabile Stromversorgung zum ESP32 sicher
- Prüfen Sie den Serial Monitor auf Disconnect/Reconnect-Meldungen
5. Motoren stoppen nicht, wenn Joystick losgelassen wird
- Stellen Sie sicher, dass Auto-Rücksprung aktiviert ist: bluetoothJoystick.setAutoReturn(true)
- Fügen Sie eine Totzone-Prüfung in Ihrem Motorsteuerungscode hinzu
- Fügen Sie einen Sicherheitsstop im setOnDisconnected() Callback hinzu
6. Sketch zu groß / nicht genug Platz
- In der Arduino IDE gehen Sie zu Tools > Partition Scheme und wählen Sie "Huge APP (3MB No OTA/1MB SPIFFS)" oder "No OTA (Large APP)"
- Das Standard-Partitionsschema 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