ESP32 Bluetooth Joystick Voorbeeld - Interactieve 2D Besturingsinterface Tutorial
Overzicht
Het Bluetooth Joystick voorbeeld biedt een interactieve 2D joystickbesturing die toegankelijk is via de DIYables Bluetooth STEM-app. Ontworpen voor ESP32 boards met ondersteuning voor zowel BLE (Bluetooth Low Energy) als Classic Bluetooth verbindingen. De joystick stuurt real-time X- en Y-coördinaatwaarden tussen -100 en +100, wat het ideaal maakt voor robotbesturing, motorsturing, servo-positionering en elke toepassing die richtingsinvoer vereist.
Dit voorbeeld ondersteunt twee Bluetooth-modus:
- ESP32 BLE (Bluetooth Low Energy): Werkt op zowel Android als iOS
- ESP32 Classic Bluetooth: Werkt alleen op Android. iOS ondersteunt Classic Bluetooth niet. Gebruik BLE als u iOS-ondersteuning nodig heeft.

Kenmerken
- 2D Besturing: X- en Y-assen met waarden van -100 tot +100
- Real-time updates: Directe positieweergave via Bluetooth-communicatie
- Auto-terugkeer optie: Instelbare automatische terugkeer naar middenpositie (0, 0)
- Aanpasbare gevoeligheid: Stel de minimale bewegingstolerantie in om kleine veranderingen te filteren
- Compatibel met robots: Waarden eenvoudig te mappen naar motorstuurinvoer
- BLE & Classic Bluetooth: Kies de Bluetooth-modus die bij uw project past
- Cross-platform: BLE werkt op Android en iOS; Classic Bluetooth werkt op Android
- Laag stroomverbruik optie: BLE verbruikt minder energie dan Classic Bluetooth
Benodigde Hardware
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
ESP32 Code
Snelle Stappen
Volg deze stappen één voor één:
- Als dit de eerste keer is dat u een ESP32 gebruikt, raadpleeg dan de tutorial over de opzet van de omgeving voor ESP32 in de Arduino IDE.
- Verbind het ESP32 board met uw computer via een USB-kabel.
- Start de Arduino IDE op uw computer.
- Selecteer het juiste ESP32 board en COM-poort.
- Navigeer naar het icoon Bibliotheken in de linkerzijbalk van de Arduino IDE.
- Zoek op "DIYables Bluetooth" en vind de DIYables Bluetooth bibliotheek van DIYables.
- Klik op de knop Installeren om de bibliotheek te installeren.

- U wordt gevraagd om enkele extra bibliotheekafhankelijkheden te installeren.
- Klik op Alles installeren om alle afhankelijkheden te installeren.

Kies één van onderstaande twee Bluetooth-modi, afhankelijk van uw behoeften:
ESP32 Classic Bluetooth Code (werkt alleen met app op Android)
Opmerking: Classic Bluetooth wordt NIET ondersteund op iOS. Gebruik de BLE code hieronder als u iOS-ondersteuning nodig heeft.
- Ga in Arduino IDE naar Bestand Voorbeelden DIYables Bluetooth Esp32Bluetooth_Joystick, of kopieer de bovenstaande code en plak deze in de Arduino IDE editor.
- Klik op de knop Uploaden in Arduino IDE om de code naar de ESP32 te uploaden.
- Open de Serial Monitor.
- Bekijk het resultaat in de Serial Monitor. Het ziet er als volgt uit:
ESP32 BLE Code (werkt met app op zowel Android als iOS)
- Ga in Arduino IDE naar Bestand Voorbeelden DIYables Bluetooth Esp32BLE_Joystick, of kopieer de bovenstaande code en plak deze in de Arduino IDE editor.
- Klik op de knop Uploaden in Arduino IDE om de code naar de ESP32 te uploaden.
- Open de Serial Monitor.
- Bekijk het resultaat in de Serial Monitor. Het ziet er als volgt uit:
Mobiele App
- Als u de ESP32 Classic Bluetooth code gebruikt, moet u de ESP32 eerst koppelen met uw Android-telefoon voordat u de app opent:
- Ga naar de Instellingen > Bluetooth van uw telefoon
- Zorg dat Bluetooth is ingeschakeld
- Uw telefoon zoekt naar beschikbare apparaten
- Zoek en tik op "ESP32_Joystick" in de lijst met beschikbare apparaten
- Bevestig het koppelingsverzoek (geen pincode nodig)
- Wacht tot er "Gekoppeld" verschijnt onder de apparaatnaam
- Als u de ESP32 BLE code gebruikt, is koppelen niet nodig. Ga direct naar de volgende stap.
- Open de DIYables Bluetooth App.
- Wanneer u de app voor het eerst opent, wordt u gevraagd om permissies. Geef de volgende toestemming:
- Dichtbijzijnde apparaten permissie (Android 12+) / Bluetooth permissie (iOS) - nodig om Bluetooth-apparaten te scannen en verbinden
- Locatie permissie (alleen Android 11 en lager) - vereist voor BLE scanning op oudere Android versies
- Zorg dat Bluetooth is ingeschakeld op uw telefoon.
- Tik op het startscherm op de Verbinden-knop. De app zoekt naar zowel BLE- als Classic Bluetooth-apparaten.

- Zoek en tik op uw apparaat in de scanresultaten om verbinding te maken:
- Voor Classic Bluetooth: tik op "ESP32_Joystick"
- Voor BLE: tik op "ESP32BLE_Joystick"
- Na verbinding gaat de app automatisch terug naar het startscherm. Selecteer de Joystick app vanuit het app-menu.

Opmerking: U kunt het instellingenicoon op het startscherm gebruiken om apps te verbergen/tonen op het startscherm. Voor meer details, zie de DIYables Bluetooth App Gebruikershandleiding.
- Beweeg de joystick in elke richting om X/Y-coördinaten te verzenden.

Kijk nu terug naar de Serial Monitor in de Arduino IDE. U ziet:
- Beweeg de joystick in de app en zie de real-time X/Y waarden verschijnen in de Serial Monitor.
Creatieve Aanpassing - Pas de Code aan voor Uw Project
Configureer Auto-terugkeer en Gevoeligheid
Stel het gedrag van de joystick in met constructorparameters:
Handel Joystick Positiewijzigingen af
Gebruik de callback onJoystickValue() om X/Y coördinaten te ontvangen:
Handel Configuratieverzoeken van de App af
Wanneer de app verbinding maakt en het joystickscherm opent, vraagt deze de joystickconfiguratie op bij de ESP32. Gebruik de callback onGetConfig() om de huidige joystickwaarden naar de app te sturen op dat moment:
Stuur Waarden naar de App
U kunt joystickcoördinaten van ESP32 naar de app sturen:
Handel Verbindingsgebeurtenissen af
U kunt detecteren wanneer de app verbinding maakt of verbreekt met de ESP32:
Hoe de Joystick te Gebruiken
App Interface Besturingselementen
De joystickinterface in de DIYables Bluetooth App biedt:
- Virtueel Joystickvlak: Raak aan en sleep om positie te regelen
- X Waardeweergave: Toont huidige horizontale positie (-100 tot +100)
- Y Waardeweergave: Toont huidige verticale positie (-100 tot +100)
Waardebereiken
De joystick levert:
- X-as: van -100 (volledig links) via 0 (midden) tot +100 (volledig rechts)
- Y-as: van -100 (volledig naar beneden) via 0 (midden) tot +100 (volledig omhoog)
- Middenpositie: (0, 0) wanneer joystick in ruststand staat
Programmeervoorbeelden
Basis Joystick Handler
Twee-Wiel Robotbesturing
Pan-Tilt Servo Besturing
LED Matrix Richtingsindicator
Geavanceerde Programmeertechnieken
Dead Zone Filter
Snelheidsramping
Grootte en Hoek Berekening
Voorbeelden van Hardware Integratie
Mecanum Wiel Robot
Stappenmotor Positiebesturing
BLE vs Classic Bluetooth - Welke te Kiezen?
| Feature | BLE (Esp32BLE_Joystick) | Classic Bluetooth (Esp32Bluetooth_Joystick) |
|---|---|---|
| iOS Ondersteuning | ? Ja | ? Nee |
| Android Ondersteuning | ? Ja | ? Ja |
| Stroomverbruik | Laag | Hoger |
| Bereik | ~30-100m | ~10-100m |
| Data Snelheid | Lager | Hoger |
| Koppeling Vereist | Nee (auto-connect) | Ja (handmatige koppeling) |
| Geschikt Voor | Batterijgevoede, cross-platform | Hoge doorvoer, alleen Android |
Problemen Oplossen
Veelvoorkomende Problemen
1. App vindt apparaat niet
- Controleer of de ESP32 is ingeschakeld en de sketch is geüpload
- Voor BLE: Zorg dat Bluetooth en Locatie op uw telefoon zijn ingeschakeld
- Voor Classic Bluetooth: Koppel het apparaat eerst via de Bluetooth-instellingen van uw telefoon
- Controleer of het juiste partitiezchema is geselecteerd (Huge APP)
2. Joystick reageert niet
- Controleer de Bluetooth-verbinding in de app
- Controleer verbinding in de Serial Monitor
- Probeer te ontkoppelen en opnieuw verbinden
3. Joystickwaarden lijken onregelmatig
- Verhoog de gevoeligheid om kleine bewegingen te filteren: bluetoothJoystick.setSensitivity(10.0)
- Pas een dead zone filter toe in uw callback
- Controleer op interferentie van andere Bluetooth-apparaten
4. Verbinding valt vaak weg
- Kom dichter bij de ESP32 (verminder afstand)
- Voor BLE: Controleer op interferentie van andere BLE-apparaten
- Voor Classic Bluetooth: Zorg voor een stabiele voedingsspanning van de ESP32
- Controleer de Serial Monitor op verbindings- en verbreekmeldingen
5. Motoren stoppen niet als joystick wordt losgelaten
- Zorg dat auto-terugkeer ingeschakeld is: bluetoothJoystick.setAutoReturn(true)
- Voeg een dead zone check toe in uw motorbesturingscode
- Voeg een noodstop toe in de setOnDisconnected() callback
6. Sketch is te groot / onvoldoende ruimte
- Ga in Arduino IDE naar Tools > Partition Scheme en kies "Huge APP (3MB No OTA/1MB SPIFFS)" of "No OTA (Large APP)"
- Het standaard partitiezchema biedt ~1,2 MB voor appcode, niet genoeg voor Bluetooth bibliotheken
- Deze instelling geeft ~3 MB door de OTA (over-the-air update) partitie op te offeren
Debug Tips
Voeg uitgebreide debug-informatie toe:
Projectideeën
Robotica Projecten
- Bluetooth-gestuurde differentiële robot
- Mecanum of omnidirectionele wielrobot
- Robotarm gewrichtsbesturing
- Drone grondstation besturing
Camera Projecten
- Pan-tilt camerasteun besturing
- Gemotoriseerde cameraslider positionering
- Surveillance camera afstandsbediening
Game Projecten
- Bluetooth gamecontroller voor ESP32 games
- Doolhofnavigatiespel
- LED matrix joystickspellen (Snake, Pong)
Industriële Projecten
- CNC jog controller
- Gemotoriseerde podium- of platformpositionering
- Kraan- of lierrichtingbesturing
Integratie met Andere Bluetooth Apps
Combineren met Bluetooth Slider
Gebruik joystick voor richting en sliders voor snelheidsbeperkingen:
Combineren met Bluetooth Monitor
Gebruik joystick voor besturing en monitor voor telemetrie:
Volgende Stappen
Na het beheersen van het Bluetooth Joystick voorbeeld, probeer:
- Bluetooth Slider - Voor nauwkeurige analoge waardebesturing
- Bluetooth Digitale Pinnen - Voor discrete aan/uit besturing
- Bluetooth Monitor - Voor debuggen van joystickwaarden
- Meerdere Bluetooth Apps - Combineren van joystick met sliders en andere besturingen
Ondersteuning
Voor extra hulp:
- Raadpleeg de API Reference documentatie
- Bezoek DIYables tutorials
- Arduino community forums