ESP32 S3 - Joystick - Servomoteur
Dans ce tutoriel, vous apprendrez à utiliser la carte ESP32 S3 avec un joystick pour contrôler deux servomoteurs ou un kit pan-tilt. En lisant les valeurs analogiques des axes X et Y du joystick, vous pouvez piloter précisément chaque servomoteur de manière indépendante pour un contrôle directionnel intuitif.
Un joystick possède deux potentiomètres intégrés disposés à angle droit (appelés axe X et axe Y), qui produisent des valeurs analogiques sur les broches VRX et VRY. Vous utiliserez ces valeurs analogiques pour contrôler deux servomoteurs indépendamment : la valeur X contrôle le servo n°1 et la valeur Y contrôle le servo n°2. Lorsqu'il est utilisé avec un kit pan-tilt, le mouvement combiné des deux servomoteurs crée un mouvement 3D fluide.
Ce que vous allez construire :
- Un système à double servomoteur contrôlé par joystick utilisant l'ESP32 S3
- Cas d'usage 1 : les servomoteurs tournent proportionnellement à la position du pouce sur le joystick et reviennent au centre au relâchement
- Cas d'usage 2 : le joystick commande les servomoteurs pas à pas dans quatre directions avec un bouton pour réinitialiser le centre
- Intégration optionnelle d'un kit pan-tilt pour le positionnement 3D d'une caméra ou d'un capteur
Matériel requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables ESP32 S3 (ESP32 S3 inclus) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Note d'achat: Si vous utilisez plusieurs servomoteurs, nous recommandons d'utiliser le PCA9685 16 Channel PWM Servo Driver Module pour économiser les broches du MCU et faciliter le câblage.
À propos du joystick et du servomoteur
Le joystick et le servomoteur sont des composants fondamentaux pour construire des projets de contrôle de mouvement avec l'ESP32 S3. Comprendre comment chaque composant fonctionne individuellement vous aidera à les combiner efficacement dans ce tutoriel.
Caractéristiques principales
Schéma de câblage
Connectez les broches VRX et VRY du joystick à deux broches GPIO compatibles ADC sur l'ESP32 S3, et connectez le fil de signal de chaque servomoteur à des broches GPIO compatibles PWM distinctes. Assurez-vous que les servomoteurs sont alimentés par une alimentation 5V adéquate, en utilisant une source d'alimentation externe si plusieurs servos sont connectés.
Notes de sécurité
Les servomoteurs peuvent consommer un courant important, surtout en charge. Alimentez toujours plusieurs servomoteurs depuis une alimentation externe 5V plutôt que depuis le régulateur 3,3V embarqué de l'ESP32 S3, pour éviter d'endommager la carte.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Un bornier à vis maintient chaque fil bien serré, même quand la carte bouge. Vous pouvez placer la carte ESP32 S3 sur une carte à bornier à vis pour ESP32 S3 et brancher les fils sur ses borniers à vis. Le câblage ne change pas. Les fils vont simplement aux borniers à vis, comme ci-dessous.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Vous préférez des connecteurs à broches plutôt que des vis ? Branchez la carte ESP32 S3 sur une carte d'extension GPIO pour ESP32 S3 :

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Code ESP32 S3
Code ESP32 S3 - Les servomoteurs tournent selon le mouvement du pouce sur le joystick
Le code suivant lit les valeurs analogiques X et Y du joystick et les fait correspondre directement aux angles des servomoteurs, afin que chaque servo suive la position du joystick en temps réel. Lorsque le pouce est relâché et revient au centre, les deux servomoteurs reviennent aussi automatiquement à la position centrale de 90 degrés.
Étapes rapides
- Nouveau sur ESP32 S3 ? Terminez d'abord notre guide ESP32 S3 - Premiers pas.
- Connectez le joystick et les servomoteurs à la carte ESP32 S3 comme montré dans le schéma de câblage ci-dessus.
- Connectez la carte ESP32 S3 à votre PC via un câble USB Type-C.
- Ouvrez l'Arduino IDE sur votre PC.
- Sélectionnez la bonne carte ESP32 S3 et le bon port COM.
- Cliquez sur l'icône Libraries dans la barre latérale gauche de l'Arduino IDE.
- Tapez ESP32Servo dans la zone de recherche, puis recherchez la bibliothèque servo de Kevin Harrington, John K. Bennett.
- Cliquez sur le bouton Install pour installer la bibliothèque de servomoteur pour ESP32.

- Copiez le code ci-dessus et ouvrez-le avec l'Arduino IDE.
- Cliquez sur le bouton Upload dans l'Arduino IDE pour téléverser le code sur l'ESP32 S3.

- Ouvrez le Serial Monitor.
- Poussez le joystick dans une direction.
- Observez la rotation du servomoteur.
- Regardez le résultat dans le Serial Monitor.
Vous remarquerez peut-être que le servomoteur ne se déplace pas toujours de manière parfaitement proportionnelle au mouvement du joystick. Ce comportement n'est pas dû au joystick ni au servomoteur lui-même, mais plutôt aux caractéristiques de l'ADC de l'ESP32 S3. La fin de ce tutoriel explique pourquoi cela se produit.
Code ESP32 S3 - Utiliser le joystick pour commander les servomoteurs
Le code suivant utilise le joystick comme une entrée de commande directionnelle, déplaçant chaque servomoteur pas à pas dans la direction poussée plutôt que de suivre la position absolue du joystick. Appuyer sur le bouton du joystick réinitialise les deux servomoteurs à la position centrale de 90 degrés.
Étapes rapides
- Nouveau sur ESP32 S3 ? Terminez d'abord notre guide ESP32 S3 - Premiers pas.
- Cliquez sur l'icône Libraries dans la barre latérale gauche de l'Arduino IDE.
- Recherchez "ezButton", puis trouvez la bibliothèque de bouton par ArduinoGetStarted.com.
- Cliquez sur le bouton Install pour installer la bibliothèque ezButton.
- Search for ezButton created by ArduinoGetStarted.com and click the Install button.
- Copiez le code ci-dessus et ouvrez-le avec l'Arduino IDE.
- Cliquez sur le bouton Upload dans l'Arduino IDE pour téléverser le code sur l'ESP32 S3.
- Ouvrez le Serial Monitor.
- Poussez le joystick dans une direction.
- Observez la rotation pas à pas du servomoteur.
- Regardez le résultat dans le Serial Monitor.
Astuce pro : Ajustez la variable de taille de pas dans le code pour contrôler combien de degrés chaque servo se déplace par commande du joystick. Une taille de pas plus petite donne un contrôle plus fin, tandis qu'une taille de pas plus grande déplace le servo plus rapidement vers sa position cible.
Explication du code
Lisez l'explication ligne par ligne dans les lignes de commentaire du code source !
※ Note:
Ce tutoriel utilise la fonction analogRead() pour lire des valeurs depuis un ADC (convertisseur analogique-numérique) connecté à un joystick. L'ADC de l'ESP32 S3 convient aux projets qui n'ont PAS besoin d'une grande précision. Cependant, pour les projets qui nécessitent des mesures précises, veuillez noter :
- L'ADC de l'ESP32 S3 n'est pas parfaitement précis et pourrait nécessiter un calibrage pour obtenir des résultats corrects. Chaque carte ESP32 S3 peut varier légèrement, vous pourriez donc avoir besoin de calibrer l'ADC pour chaque carte individuelle.
- Le calibrage peut être difficile, en particulier pour les débutants, et ne donne pas toujours exactement les résultats que vous souhaitez.
Pour les projets nécessitant une haute précision, envisagez d'utiliser un ADC externe (par exemple ADS1115) avec l'ESP32 S3. Si vous voulez tout de même calibrer l'ADC de l'ESP32 S3, consultez le pilote de calibrage ADC ESP32
Applications
Les servomoteurs contrôlés par joystick sont utilisés dans une large gamme d'applications réelles, de la robotique aux systèmes de caméra et aux panneaux de contrôle industriels. Voici quelques exemples pratiques :
- Contrôle de bras robotique : Utilisez le joystick pour déplacer les articulations pan et tilt d'un bras robotique avec des mouvements de pouce intuitifs.
- Plateforme caméra pan-tilt : Montez une caméra sur un kit pan-tilt et utilisez le joystick pour la diriger à distance pour la surveillance ou la photographie.
- Direction de véhicule RC : Contrôlez le servo de direction et le servo d'accélération d'un véhicule télécommandé en utilisant un seul module joystick.
- Traqueur d'antenne : Dirigez automatiquement ou manuellement une antenne directionnelle en utilisant deux servomoteurs pilotés par l'entrée du joystick.
- Contrôle de nacelle de drone : Stabilisez et orientez une nacelle de caméra de drone en utilisant des commandes du joystick pendant le vol.
Vidéo
Regardez le tutoriel vidéo étape par étape pour ce projet ESP32 S3 ci-dessous.
Défis
Maintenant que vous avez les bases qui fonctionnent, essayez d'étendre le projet pour approfondir votre compréhension du contrôle des servos et du traitement de l'entrée du joystick.
- Débutant : Modifiez le code pour que les servomoteurs se déplacent plus lentement en réduisant la taille du pas, et ajoutez une sortie série affichant l'angle actuel de chaque servo après chaque commande.
- Intermédiaire : Ajoutez une zone morte à la position centrale du joystick afin que de petits mouvements accidentels ne déclenchent pas de commandes de servo, améliorant la stabilité du contrôle.
- Avancé : Construisez un support de caméra pan-tilt complet utilisant deux servomoteurs et le joystick, puis ajoutez un bouton-poussoir de bascule qui alterne entre le mode proportionnel et le mode commande pas à pas en temps réel.