Arduino Nano ESP32 Bluetooth-Joystick-Beispiel - 2D-Richtungssteuerung über BLE-Anleitung

Übersicht

Dieses Beispiel implementiert eine interaktive 2D-Joystick-Steuerung auf dem Arduino Nano ESP32 unter Verwendung von BLE (Bluetooth Low Energy) über die DIYables Bluetooth STEM-App. Empfangen Sie Echtzeit-X/Y-Koordinaten (-100 bis +100) zur Richtungssteuerung. Geeignet für Roboternavigation, Pan-Tilt-Servos, Motorsteuerung und Spielecontroller.

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-Joystick-Beispiel - 2D-Richtungssteuerung über BLE-Anleitung

Funktionen

  • 2D-Steuerung: X- und Y-Achse mit Bereich −100 bis +100
  • Konfigurierbare Empfindlichkeit: Mindestbewegungsschwelle vor Auslöser von Updates
  • Optionale automatische Rückführung: Joystick kann beim Loslassen automatisch zentriert werden
  • Echtzeitwerte: Kontinuierliche Positionsaktualisierungen während des Ziehens
  • Android- und iOS-Unterstützung: BLE ist mit beiden Plattformen kompatibel
  • Keine Kopplung erforderlich: BLE verbindet sich ohne manuelle Kopplung
  • Geringer Stromverbrauch: BLE verbraucht weniger Strom als Classic Bluetooth

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-C
1×Breadboard
1×Jumper-Drähte
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 der Arduino Nano ESP32 Anleitung für Anfänger.
  • Verbinden Sie den Arduino Nano ESP32 über USB mit Ihrem Computer.
  • Öffnen Sie Arduino IDE.
  • Wählen Sie die Arduino Nano ESP32 Platine und den korrekten COM-Port.
  • Klicken Sie auf das Bibliotheken Symbol 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 Alles installieren.
Arduino Nano ESP32 DIYables Bluetooth Abhängigkeit

BLE-Code

  • In Arduino IDE öffnen Sie Datei Beispiele DIYables Bluetooth ArduinoBLE_Joystick, oder fügen Sie den Code in den Editor ein.
/* * DIYables Bluetooth Library - ESP32 BLE Joystick Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Joystick feature: * - Interactive joystick control via Bluetooth * - Real-time X/Y coordinate values (-100 to +100) * - Control pins based on joystick position * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothJoystick.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const char* DEVICE_NAME = "ESP32BLE_Joystick"; 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 Joystick app instance DIYables_BluetoothJoystick bluetoothJoystick(false, 5); // Variables to store current joystick values int currentJoystickX = 0; int currentJoystickY = 0; void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 BLE Joystick Example"); // Initialize Bluetooth server with platform-specific implementation bluetoothServer.begin(); // Add joystick app to server bluetoothServer.addApp(&bluetoothJoystick); // Set up connection event callbacks bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); // Set up joystick callback for position changes bluetoothJoystick.onJoystickValue([](int x, int y) { currentJoystickX = x; currentJoystickY = y; Serial.print("Joystick - X: "); Serial.print(x); Serial.print(", Y: "); Serial.println(y); // TODO: Add your control logic here based on joystick position }); bluetoothJoystick.onGetConfig([]() { bluetoothJoystick.send(currentJoystickX, currentJoystickY); Serial.print("App requested values - Sent: X="); Serial.print(currentJoystickX); Serial.print(", Y="); Serial.println(currentJoystickY); }); Serial.println("Waiting for Bluetooth connection..."); } void loop() { bluetoothServer.loop(); delay(10); }
  • Klicken Sie auf Upload um den Sketch auf die Platine zu flashen.
  • Ö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 - Joystick 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. Es ist keine manuelle Kopplung erforderlich.

  • Starten Sie die DIYables Bluetooth App.
  • Bei der ersten Inbetriebnahme erteilen Sie die folgenden Berechtigungen:
    • Nahegelegene Geräte (Android 12+) / Bluetooth (iOS) — erforderlich zum Scannen und Verbinden mit Bluetooth-Geräten
    • Standort (nur Android 11 und älter) — erforderlich für ältere Android-Versionen zum Scannen für BLE
  • Stellen Sie sicher, dass Bluetooth auf Ihrem Gerät aktiviert ist.
  • Tippen Sie auf der Startseite auf Verbinden. Die App scannt dann nach BLE-Geräten.
DIYables Bluetooth App - Startseite mit Scan-Schaltfläche
  • Tippen Sie in den Scan-Ergebnissen auf "Arduino_Joystick".
  • Nach der Verbindung kehren Sie zur Startseite zurück und öffnen Sie die Joystick App.
DIYables Bluetooth App - Startseite mit Joystick App

Tippen Sie auf das Einstellungssymbol auf der Startseite, um Apps anzeigen oder auszublenden. Siehe das DIYables Bluetooth App Benutzerhandbuch für Details.

  • Ziehen Sie den Joystick in eine beliebige Richtung.
DIYables Bluetooth App - Joystick-Bildschirm

Schauen Sie nun zurück auf den seriellen Monitor in 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! Joystick - X: 50, Y: 0 Joystick - X: 100, Y: 50 Joystick - X: 0, Y: -75 Joystick - X: 0, Y: 0
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Kreative Anpassung - Passen Sie den Code an Ihr Projekt an

Joystick-Werte verarbeiten

bluetoothJoystick.onJoystickValue([](int x, int y) { currentJoystickX = x; currentJoystickY = y; Serial.print("Joystick - X: "); Serial.print(x); Serial.print(", Y: "); Serial.println(y); // TODO: Add your control logic here });

Joystick-Einstellungen konfigurieren

// Constructor: DIYables_BluetoothJoystick(autoReturn, sensitivity) DIYables_BluetoothJoystick bluetoothJoystick(false, 5); // Change settings at runtime bluetoothJoystick.setAutoReturn(true); // Auto-center when released bluetoothJoystick.setSensitivity(10.0); // Only update when moved >10%

Config-Anforderung verarbeiten

bluetoothJoystick.onGetConfig([]() { bluetoothJoystick.send(currentJoystickX, currentJoystickY); });

Programmierungsbeispiele

Differenzialantrieb-Roboter

const int LEFT_MOTOR_PIN = 9; const int RIGHT_MOTOR_PIN = 10; const int LEFT_DIR_PIN = 7; const int RIGHT_DIR_PIN = 8; bluetoothJoystick.onJoystickValue([](int x, int y) { // Differential drive: mix X and Y int leftSpeed = constrain(y + x, -100, 100); int rightSpeed = constrain(y - x, -100, 100); // Set direction digitalWrite(LEFT_DIR_PIN, leftSpeed >= 0 ? HIGH : LOW); digitalWrite(RIGHT_DIR_PIN, rightSpeed >= 0 ? HIGH : LOW); // Set speed (PWM) analogWrite(LEFT_MOTOR_PIN, map(abs(leftSpeed), 0, 100, 0, 255)); analogWrite(RIGHT_MOTOR_PIN, map(abs(rightSpeed), 0, 100, 0, 255)); });

Pan-Tilt-Servo

#include <Servo.h> Servo panServo, tiltServo; void setup() { panServo.attach(9); tiltServo.attach(10); bluetoothJoystick.onJoystickValue([](int x, int y) { int panAngle = map(x, -100, 100, 0, 180); int tiltAngle = map(y, -100, 100, 0, 180); panServo.write(panAngle); tiltServo.write(tiltAngle); }); }

Richtung mit Dead Zone

const int DEAD_ZONE = 15; bluetoothJoystick.onJoystickValue([](int x, int y) { if (abs(x) < DEAD_ZONE && abs(y) < DEAD_ZONE) { Serial.println("STOPPED"); return; } if (abs(y) > abs(x)) { Serial.println(y > 0 ? "FORWARD" : "BACKWARD"); } else { Serial.println(x > 0 ? "RIGHT" : "LEFT"); } });

Fehlerbehebung

Häufige Probleme

1. Gerät ist in der App nicht sichtbar

  • Bestätigen Sie, dass die Platine eingeschaltet und der Sketch hochgeladen ist
  • Überprüfen Sie, ob Bluetooth auf Ihrem Telefon aktiviert ist
  • Auf Android 11 und darunter müssen Sie auch Standortdienste aktivieren

2. Joystick reagiert nicht

  • Überprüfen Sie den Bluetooth-Verbindungsstatus in der App
  • Bestätigen Sie, dass der onJoystickValue Callback korrekt registriert ist
  • Überprüfen Sie den seriellen Monitor auf Verbindungsmeldungen

3. Bewegung fühlt sich träge an

  • Senken Sie den Empfindlichkeitswert für häufigere Updates
  • Stellen Sie sicher, dass bluetoothServer.loop() ohne lange Verzögerungen läuft

4. Werte springen oder sind inkonsistent

  • Fügen Sie einen Dead-Zone-Filter für kleine Bewegungen hinzu
  • Überprüfen Sie die Empfindlichkeitseinstellung

5. Verbindung wird häufig unterbrochen

  • Reduzieren Sie den Abstand zum Arduino
  • Stellen Sie eine stabile USB-Stromversorgung sicher

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

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

Projektideen

  • Drahtloser Roboter-Controller
  • Kameraschwenk-Neigung-Mount
  • Roboterarm 2-Achsen-Steuerung
  • LED-Matrix-Positions-Controller
  • Spielecontroller für Arduino-Spiele

Nächste Schritte

Nach Abschluss des Bluetooth-Joystick-Beispiels erkunden Sie:

  1. Bluetooth-Schieberegler — Lineare Wertsteuerung
  2. Bluetooth-Rotator — Winkelsteuerung
  3. Bluetooth-Monitor — Statusrückmeldung
  4. Mehrere Bluetooth-Apps — Kombinieren Sie Joystick mit anderen Steuerelementen

Unterstützung

Für weitere 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!