ESP32 Manette Bluetooth - Tutoriel Interface de Contrôle 2D Interactive
Aperçu
L'exemple de manette Bluetooth fournit un contrôle joystick 2D interactif accessible via l'application DIYables Bluetooth STEM. Conçu pour les cartes ESP32 avec support pour les connexions BLE (Bluetooth Low Energy) et Bluetooth Classique. La manette envoie des valeurs de coordonnées X et Y en temps réel allant de -100 à +100, idéale pour le contrôle de robots, la commande de moteurs, le positionnement de servos et toute application nécessitant une entrée directionnelle.
Cet exemple supporte deux modes Bluetooth :
- ESP32 BLE (Bluetooth Low Energy) : Fonctionne sur Android et iOS
- ESP32 Bluetooth Classique : Fonctionne uniquement sur Android. iOS ne supporte pas le Bluetooth Classique. Utilisez BLE si vous avez besoin du support iOS.

Fonctionnalités
- Contrôle 2D : Axes X et Y avec des valeurs de -100 à +100
- Mises à jour temps réel : Mises à jour instantanées de position via communication Bluetooth
- Option de retour automatique : Retour configurable automatique vers la position centrale (0, 0)
- Sensibilité ajustable : Configurez le seuil minimal de mouvement pour filtrer les petits changements
- Compatible robot : Valeurs facilement adaptées aux entrées de pilotes de moteur
- BLE et Bluetooth Classique : Choisissez le mode Bluetooth qui convient à votre projet
- Multi-plateforme : Le mode BLE fonctionne sur Android et iOS ; le Bluetooth Classique fonctionne sur Android
- Option faible consommation : Le mode BLE consomme moins d'énergie que le Bluetooth Classique
Matériel requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables ESP32 (ESP32 inclus) | |
| 1 | × | Kit de Capteurs DIYables (30 capteurs/écrans) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Code ESP32
Étapes rapides
Suivez ces instructions étape par étape :
- Si c'est votre première fois avec l'ESP32, consultez le tutoriel sur Installation du logiciel ESP32..
- Connectez la carte ESP32 à votre ordinateur avec un câble USB.
- Lancez l'IDE Arduino sur votre ordinateur.
- Sélectionnez la carte ESP32 appropriée et le port COM.
- Naviguez vers l'icône Libraries dans la barre de gauche de l'IDE Arduino.
- Recherchez "DIYables Bluetooth", puis trouvez la bibliothèque DIYables Bluetooth par DIYables
- Cliquez sur le bouton Install pour installer la bibliothèque.

- Il vous sera demandé d'installer d'autres dépendances de bibliothèque
- Cliquez sur le bouton Install All pour installer toutes les dépendances de bibliothèque.

Choisissez l'un des deux modes Bluetooth ci-dessous selon vos besoins :
Code ESP32 Bluetooth Classique (fonctionne avec l'app uniquement sur Android)
Note : Le Bluetooth Classique n'est PAS supporté sur iOS. Si vous avez besoin du support iOS, utilisez le code BLE ci-dessous.
- Dans l'IDE Arduino, allez à File Examples DIYables Bluetooth Esp32Bluetooth_Joystick, ou copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Arduino
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers l'ESP32
- Ouvrez le moniteur série
- Vérifiez le résultat dans le moniteur série. Cela ressemble à ceci :
Code ESP32 BLE (fonctionne avec l'app sur Android et iOS)
- Dans l'IDE Arduino, allez à File Examples DIYables Bluetooth Esp32BLE_Joystick, ou copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Arduino
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers l'ESP32
- Ouvrez le moniteur série
- Vérifiez le résultat dans le moniteur série. Cela ressemble à ceci :
Application mobile
- Si vous utilisez le code ESP32 Bluetooth Classique, vous devez appairer l'ESP32 avec votre téléphone Android avant d'ouvrir l'app :
- Allez dans les Paramètres > Bluetooth de votre téléphone
- Assurez-vous que le Bluetooth est activé
- Votre téléphone va scanner les appareils disponibles
- Trouvez et appuyez sur "ESP32_Joystick" dans la liste des appareils disponibles
- Confirmez la demande d'appairage (aucun PIN requis)
- Attendez jusqu'à ce qu'il affiche "Paired" sous le nom de l'appareil
- Si vous utilisez le code ESP32 BLE, aucun appairage n'est nécessaire. Passez simplement à l'étape suivante.
- Ouvrez l'application DIYables Bluetooth
- Lors de la première ouverture de l'app, elle demandera des permissions. Veuillez accorder les suivantes :
- Permission Appareils à proximité (Android 12+) / Permission Bluetooth (iOS) - requise pour scanner et se connecter aux appareils Bluetooth
- Permission Localisation (Android 11 et antérieur uniquement) - requise par les anciennes versions Android pour scanner les appareils BLE
- Assurez-vous que le Bluetooth est activé sur votre téléphone
- Sur l'écran d'accueil, appuyez sur le bouton Connect. L'app va scanner les appareils BLE et Bluetooth Classique.

- Trouvez et appuyez sur votre appareil dans les résultats de scan pour vous connecter :
- Pour le Bluetooth Classique : appuyez sur "ESP32_Joystick"
- Pour BLE : appuyez sur "ESP32BLE_Joystick"
- Une fois connecté, l'app retourne automatiquement à l'écran d'accueil. Sélectionnez l'app Joystick depuis le menu d'applications.

Note : Vous pouvez appuyer sur l'icône paramètres de l'écran d'accueil pour masquer/afficher les apps sur l'écran d'accueil. Pour plus de détails, consultez le Manuel utilisateur de l'application DIYables Bluetooth.
- Bougez le joystick dans n'importe quelle direction pour envoyer les valeurs de coordonnées X/Y

Maintenant regardez à nouveau le moniteur série dans l'IDE Arduino. Vous verrez :
- Bougez le joystick dans l'app et observez les valeurs X/Y en temps réel dans le moniteur série
Personnalisation créative - Adaptez le code à votre projet
Configurer le retour automatique et la sensibilité
Définissez le comportement du joystick avec les paramètres du constructeur :
Gérer les changements de position du joystick
Utilisez le callback onJoystickValue() pour recevoir les coordonnées X/Y :
Gérer la demande de configuration depuis l'app
Quand l'app se connecte et ouvre l'écran Joystick, elle demande la configuration du joystick depuis l'ESP32. Vous pouvez utiliser le callback onGetConfig() pour envoyer les valeurs actuelles du joystick à l'app à ce moment :
Envoyer des valeurs à l'app
Vous pouvez envoyer des valeurs de coordonnées de joystick depuis l'ESP32 vers l'app :
Gérer les événements de connexion
Vous pouvez détecter quand l'app se connecte ou se déconnecte de l'ESP32 :
Comment utiliser le joystick
Contrôles de l'interface app
L'interface joystick dans l'application DIYables Bluetooth fournit :
- Pad de joystick virtuel : Touchez et glissez pour contrôler la position
- Affichage valeur X : Montre la position horizontale actuelle (-100 à +100)
- Affichage valeur Y : Montre la position verticale actuelle (-100 à +100)
Plages de valeurs
Le joystick fournit :
- Axe X : -100 (tout à gauche) à 0 (centre) à +100 (tout à droite)
- Axe Y : -100 (tout en bas) à 0 (centre) à +100 (tout en haut)
- Position centrale : (0, 0) quand le joystick est au repos
Exemples de programmation
Gestionnaire de joystick basique
Contrôle de robot à deux roues
Contrôle servo pan-tilt
Indicateur de direction matrice LED
Techniques de programmation avancées
Filtre de zone morte
Rampe de vitesse
Calcul de magnitude et d'angle
Exemples d'intégration matérielle
Robot à roues mecanum
Contrôle de position moteur pas à pas
BLE vs Bluetooth Classique - Lequel choisir ?
| Fonctionnalité | BLE (Esp32BLE_Joystick) | Bluetooth Classique (Esp32Bluetooth_Joystick) |
|---|---|---|
| Support iOS | ? Oui | ? Non |
| Support Android | ? Oui | ? Oui |
| Consommation d'énergie | Faible | Plus élevée |
| Portée | ~30-100m | ~10-100m |
| Débit de données | Plus faible | Plus élevé |
| Appairage requis | Non (auto-connexion) | Oui (appairage manuel) |
| Idéal pour | Alimenté par batterie, multi-plateforme | Haut débit, Android uniquement |
Dépannage
Problèmes courants
1. Impossible de trouver l'appareil dans l'app
- Assurez-vous que l'ESP32 est alimenté et le sketch téléversé
- Pour BLE : Assurez-vous que le Bluetooth et la localisation de votre téléphone sont activés
- Pour le Bluetooth Classique : Appairez d'abord l'appareil dans les paramètres Bluetooth du téléphone
- Vérifiez que le bon schéma de partition est sélectionné (Huge APP)
2. Le joystick ne répond pas
- Vérifiez l'état de la connexion Bluetooth dans l'app
- Vérifiez la connexion dans le moniteur série
- Essayez de vous déconnecter et reconnecter
3. Les valeurs du joystick semblent erratiques
- Augmentez la valeur de sensibilité pour filtrer les petits mouvements : bluetoothJoystick.setSensitivity(10.0)
- Appliquez un filtre de zone morte dans votre callback
- Vérifiez les interférences d'autres appareils Bluetooth
4. La connexion se coupe fréquemment
- Rapprochez-vous de l'ESP32 (réduire la distance)
- Pour BLE : Vérifiez les interférences d'autres appareils BLE
- Pour le Bluetooth Classique : Assurez une alimentation stable pour l'ESP32
- Vérifiez le moniteur série pour les messages de déconnexion/reconnexion
5. Les moteurs ne s'arrêtent pas quand le joystick est relâché
- Assurez-vous que le retour automatique est activé : bluetoothJoystick.setAutoReturn(true)
- Ajoutez une vérification de zone morte dans votre code de contrôle moteur
- Ajoutez un arrêt de sécurité dans le callback setOnDisconnected()
6. Sketch trop volumineux / pas assez d'espace
- Dans l'IDE Arduino, allez à Tools > Partition Scheme et sélectionnez "Huge APP (3MB No OTA/1MB SPIFFS)" ou "No OTA (Large APP)"
- Le schéma de partition par défaut ne fournit que ~1.2MB pour le code app, ce qui n'est pas suffisant pour les bibliothèques Bluetooth
- Ce paramètre donne ~3MB en sacrifiant la partition OTA (mise à jour over-the-air)
Conseils de débogage
Ajoutez un débogage complet :
Idées de projets
Projets robotiques
- Robot à entraînement différentiel contrôlé par Bluetooth
- Robot à roues mecanum ou omnidirectionnelles
- Contrôle d'articulations de bras robotique
- Contrôleur de station sol pour drone
Projets caméra
- Contrôle de support caméra pan-tilt
- Positionnement de slider caméra motorisé
- Contrôle à distance de caméra de surveillance
Projets de jeu
- Contrôleur de jeu Bluetooth pour jeux ESP32
- Jeu de navigation dans un labyrinthe
- Jeux joystick sur matrice LED (Snake, Pong)
Projets industriels
- Contrôleur de déplacement CNC
- Positionnement de platine ou plateforme motorisée
- Contrôle directionnel de grue ou de treuil
Intégration avec d'autres applications Bluetooth
Combiner avec le curseur Bluetooth
Utilisez le joystick pour la direction et les curseurs pour les limites de vitesse :
Combiner avec le moniteur Bluetooth
Utilisez le joystick pour le contrôle et le moniteur pour la télémétrie :
Prochaines étapes
Après avoir maîtrisé l'exemple de joystick Bluetooth, essayez :
- Curseur Bluetooth - Pour un contrôle précis de valeurs analogiques
- Broches numériques Bluetooth - Pour un contrôle discret marche/arrêt
- Moniteur Bluetooth - Pour déboguer les valeurs du joystick
- Applications Bluetooth multiples - Combiner le joystick avec des curseurs et d'autres contrôles
Support
Pour une aide supplémentaire :
- Consultez la documentation de référence API
- Visitez les tutoriels DIYables
- Forums de la communauté Arduino