ESP32 Exemple Rotateur Bluetooth - Tutoriel Interface de Contrôle Disque/Bouton Rotatif
Aperçu
L'exemple Rotateur Bluetooth fournit un contrôle de disque/bouton rotatif 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. Le rotateur envoie des valeurs d'angle et prend en charge les modes d'angle continu (0-360°) ou limité — parfait pour le contrôle de servo, affichage de boussole, boutons de volume, et toute application nécessitant une entrée rotative.
Cet exemple prend en charge deux modes Bluetooth :
- ESP32 BLE (Bluetooth Low Energy) : Fonctionne sur Android et iOS
- ESP32 Bluetooth Classique : Fonctionne sur Android uniquement. iOS ne prend pas en charge le Bluetooth Classique. Utilisez BLE si vous avez besoin du support iOS.

Fonctionnalités
- Bouton Rotatif : Touchez et faites glisser pour faire tourner le disque à l'écran
- Mode Continu : Rotation complète de 360° sans limites
- Mode Limité : Plage d'angle contrainte (ex. 0-180° pour servos)
- Sortie d'Angle : Valeur d'angle float envoyée en temps réel
- Compatible Servo : Mappage direct vers les angles de servo (0-180°)
- BLE & 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, référez-vous au tutoriel sur Installation du logiciel ESP32..
- Connectez la carte ESP32 à votre ordinateur en utilisant 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 la bibliothèque.

Choisissez l'un des deux modes Bluetooth ci-dessous selon vos besoins :
Code ESP32 Bluetooth Classique (fonctionne avec l'app sur Android uniquement)
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_Rotator, 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 Serial Monitor
- Vérifiez le résultat sur le Serial Monitor. Cela ressemble à ceci :
Code ESP32 BLE (fonctionne avec l'app sur Android et iOS)
- Dans l'IDE Arduino, allez à File Examples DIYables Bluetooth Esp32BLE_Rotator, 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 Serial Monitor
- Vérifiez le résultat sur le Serial Monitor. 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'application :
- 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_Rotator" 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'application, 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érieurs 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'application va scanner les appareils BLE et Bluetooth Classique.

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

Note : Vous pouvez appuyer sur l'icône des paramètres sur l'écran d'accueil pour masquer/afficher les applications sur l'écran d'accueil. Pour plus de détails, voir le Manuel d'Utilisation de l'Application DIYables Bluetooth.
- Faites glisser le bouton du rotateur pour changer l'angle

Maintenant regardez à nouveau le Serial Monitor dans l'IDE Arduino. Vous verrez :
- Tournez le bouton dans l'application et observez les valeurs d'angle en temps réel dans le Serial Monitor
Personnalisation Créative - Adaptez le Code à Votre Projet
Configurer le Mode Rotateur
Définissez le mode continu ou limité :
Gérer les Changements d'Angle
Utilisez le callback onRotatorAngle() pour recevoir les valeurs d'angle :
Gérer la Demande de Configuration depuis l'App
Envoyer l'Angle à l'App
Vous pouvez mettre à jour la position du rotateur depuis l'ESP32 :
Gérer les Événements de Connexion
Comment Utiliser le Rotateur
Contrôles de l'Interface de l'App
L'interface du rotateur dans l'application DIYables Bluetooth fournit :
- Disque Rotatif : Touchez et faites glisser pour tourner
- Affichage d'Angle : Montre la valeur d'angle actuelle
- Indicateur Visuel : Marque la position de rotation actuelle
Modes Rotateur
- ROTATOR_MODE_CONTINUOUS (0) : Rotation complète de 360°, retour automatique
- ROTATOR_MODE_LIMITED (1) : Contraint à la plage d'angle min/max
Exemples de Programmation
Contrôle de Servo
Bouton Volume/Luminosité
Affichage Boussole
Contrôle de Moteur Pas à Pas
Techniques de Programmation Avancées
Accrochage d'Angle par Incréments
Contrôle Basé sur des Zones
BLE vs Bluetooth Classique - Lequel Choisir ?
| Fonctionnalité | BLE (Esp32BLE_Rotator) | Bluetooth Classique (Esp32Bluetooth_Rotator) |
|---|---|---|
| Support iOS | ? Oui | ? Non |
| Support Android | ? Oui | ? Oui |
| Consommation | Faible | Plus élevée |
| Portée | ~30-100m | ~10-100m |
| Débit de Données | Plus faible | Plus élevé |
| Appairage Requis | Non (connexion auto) | Oui (appairage manuel) |
| Idéal Pour | Alimentation 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 que le sketch est téléversé
- Pour BLE : Assurez-vous que le Bluetooth et la Localisation de votre téléphone sont activés
- Pour 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 rotateur ne répond pas
- Vérifiez le statut de connexion Bluetooth dans l'app
- Vérifiez la connexion dans le Serial Monitor
- Essayez de vous déconnecter et de vous reconnecter
3. Les valeurs d'angle semblent incorrectes
- Vérifiez la configuration du mode rotateur (continu vs limité)
- Vérifiez les paramètres d'angle min/max avec getMinAngle() et getMaxAngle()
- Vérifiez le Serial Monitor pour les valeurs d'angle réellement reçues
4. Le servo tremble à certains angles
- Ajoutez un petit filtre de zone morte pour les changements d'angle
- Utilisez une alimentation séparée pour le servo
- Ajoutez un condensateur aux broches d'alimentation du servo
5. La connexion se coupe fréquemment
- Rapprochez-vous de l'ESP32 (réduisez la distance)
- Pour BLE : Vérifiez les interférences d'autres appareils BLE
- Pour Bluetooth Classique : Assurez-vous d'une alimentation stable de l'ESP32
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 d'app, ce qui n'est pas suffisant pour les bibliothèques Bluetooth
- Ce paramètre donne ~3MB en sacrifiant la partition OTA (mise à jour sans fil)
Conseils de Débogage
Ajoutez un débogage complet :
Idées de Projets
Contrôle de Moteur
- Bouton de position servo
- Sélecteur d'angle moteur pas à pas
- Cadran de vitesse moteur
- Contrôle d'articulation de bras robotique
Projets d'Affichage
- Affichage de cap de boussole
- Aiguilles d'horloge analogique
- Indicateur de direction du vent
- Simulateur de jauge cadran
Projets Audio
- Bouton de contrôle de volume
- Sélecteur de fréquence de ton
- Contrôle de bande d'égaliseur
- Cadran de tuner radio
Projets d'Éclairage
- Contrôle de position d'anneau LED
- Roue de couleur (sélecteur de teinte)
- Contrôle de direction de projecteur
- Angle d'éclairage de scène
Intégration avec Autres Applications Bluetooth
Combiner avec Slider Bluetooth
Utilisez le rotateur pour l'angle et le slider pour la vitesse/intensité :
Combiner avec Table Bluetooth
Afficher les données du rotateur dans un tableau structuré :
Prochaines Étapes
Après avoir maîtrisé l'exemple Rotateur Bluetooth, essayez :
- Joystick Bluetooth - Pour un contrôle directionnel 2D
- Slider Bluetooth - Pour un contrôle de valeur linéaire
- Jauge Analogique Bluetooth - Pour un affichage de retour style jauge
- Applications Bluetooth Multiples - Combiner le rotateur avec 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