Tutoriel ESP32 30/55 - Contrôler un servo via le web en utilisant MQTT avec le service Adafruit IO | Kit d'apprentissage IoT ESP32 de SunFounder
Dans ce tutoriel, nous allons apprendre à contrôler la position d'un servo-moteur en utilisant le microcontrôleur ESP32 et le protocole MQTT via le web. En tirant parti du service Adafruit IO, vous pourrez positionner le servo à différents angles tels que 0°, 90° ou 180° à distance. Ce projet démontre les capacités de l'ESP32, qui comprend le Wi-Fi et le Bluetooth intégrés, ce qui en fait un outil puissant pour les applications IoT.

Dans ce projet, nous allons configurer un courtier MQTT en utilisant Adafruit IO, créer un tableau de bord pour contrôler le servo, et connecter l'ESP32 à celui-ci. La position du servo sera ajustable via un curseur sur le tableau de bord, permettant un contrôle en temps réel à partir de tout appareil connecté à Internet (dans la vidéo à 5:30).
Matériel expliqué
Les composants principaux de ce projet incluent le microcontrôleur ESP32 et le moteur servo. L'ESP32 est un microcontrôleur polyvalent avec des capacités Wi-Fi et Bluetooth intégrées, ce qui le rend idéal pour les applications IoT. Il communique avec le service Adafruit IO en utilisant le protocole MQTT, qui est léger et efficace pour transmettre des messages sur Internet.
Le moteur servo est un actionneur rotatif qui permet un contrôle précis de la position angulaire. Il fonctionne en recevant un signal de modulation de largeur d'impulsion (PWM) qui détermine sa position. Dans ce projet, nous allons connecter le servo à l'une des broches numériques de l'ESP32, nous permettant de contrôler son angle à distance.
Fiche technique Détails
| Fabricant | Parallaxe |
|---|---|
| Numéro de pièce | SG90 |
| Tension logique/IO | 3,3 V - 5 V |
| Tension d'alimentation | 4,8 V - 6,0 V |
| Courant de sortie (par canal) | 1 A max |
| Directives sur la fréquence PWM | 50 Hz |
| Seuils de logique d'entrée | 0,3 V - 0,7 V |
| Chute de tension / RDS(on)/ saturation | 0,2 V max |
| Limites thermiques | Température de fonctionnement : -10°C à 60°C |
| Paquet | Boîtier en plastique |
| Notes / variantes | Mini servo, rotation de 180° |
- Assurez-vous d'une alimentation en voltage adéquate pour le servo (4,8 V - 6,0 V).
- Utilisez un point commun entre l'ESP32 et le servo.
- Surveillez le signal PWM pour éviter de dépasser les limites du servo.
- Connectez en toute sécurité le servo pour éviter les déconnexions pendant le fonctionnement.
- Mettez à jour la bibliothèque Adafruit MQTT pour garantir la compatibilité.
Diagrammes MQTT
Instructions de câblage

Pour connecter le servomoteur à l'ESP32, commencez par brancher le fil de masse du servomoteur au pin de masse de l'ESP32. Ensuite, connectez le fil d'alimentation (généralement rouge) du servomoteur au pin 5V de l'ESP32. Enfin, connectez le fil de signal (souvent jaune ou blanc) au pin numérique 25 de l'ESP32. Assurez-vous que les connexions sont sécurisées pour éviter toute déconnexion pendant le fonctionnement.
Si vous utilisez une batterie pour alimenter l'ESP32, assurez-vous que la tension de la batterie se situe dans la plage acceptable pour l'ESP32 et le servo. De plus, vérifiez que le câblage correspond aux définitions des broches utilisées dans votre code pour éviter tout problème (dans la vidéo à 12:45).
Exemples de code et guide pas à pas
Dans le code fourni, nous incluons d'abord les bibliothèques nécessaires pour l'ESP32 et MQTT. Nous définissons l'objet servo et spécifions la broche à laquelle il est connecté avecconst int servoPin = 25;. L'angle par défaut est également réglé avecconst int defaultServoAngle = 90;, qui sera la position initiale lorsque l'ESP32 démarre.
Servo myServo;
const int servoPin = 25;
const int defaultServoAngle = 90;
int servoAngle = defaultServoAngle;
Ce fragment initialise le servomoteur sur la broche 25 et définit son angle par défaut à 90°. La variableservoAnglesera mis à jour en fonction des messages reçus du courtier MQTT.
Dans lesetup()fonction, nous nous connectons au Wi-Fi et configurons le client MQTT. Les identifiants pour Adafruit IO sont définis ici, y compris le nom d'utilisateur et la clé :
#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_xmIW58uNNsjJCSOqzZ9QoHyq29wu"
Cette section établit la connexion au service Adafruit IO. Assurez-vous de remplacer ces valeurs par vos propres identifiants Adafruit IO lors de l'implémentation du code.
Enfin, la boucle principale s'assure que la connexion au serveur MQTT reste active et traite les messages entrants. La position du servomoteur est mise à jour en fonction de l'angle reçu :
mqtt.processPackets(500);
int pulseWidth = map(servoAngle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
Ce code associe l'angle du servo à la largeur d'impulsion correspondante et l'envoie au servo moteur.processPackets()la fonction permet à l'ESP32 de gérer les messages MQTT entrants, garantissant que le servo réagit aux commandes envoyées via le tableau de bord Adafruit IO.
Démonstration / À quoi s'attendre
Une fois que tout est configuré, vous devriez pouvoir contrôler le servo depuis le tableau de bord Adafruit IO en utilisant le curseur que vous avez créé. À mesure que vous déplacez le curseur, le servo ajustera son angle en temps réel. Assurez-vous que votre ESP32 est connecté au Wi-Fi et que la connexion MQTT est stable. Si le servo ne répond pas, vérifiez le câblage et l'alimentation du servo (dans la vidéo à 20:15).
Soyez conscient des limites de portée du servo ; envoyer une valeur en dehors de 0° à 180° peut provoquer un comportement inattendu. Le code comprend des vérifications pour prévenir de telles occurrences en maintenant l'angle dans cette plage.
Horodatages vidéo
- 00:00 Début
- 1:54 Introduction au projet
- 2:52 Introduction à MQTT
- 6:50 Configuration d'Adafruit IO
- 9:54 Câblage du servo
- 11:07 Code expliqué
- 18:59 Sélection du tableau ESP32 et du port COM
- 22:10 Démonstration de projet
Common Course Links
Common Course Files
Ce dont vous pourriez avoir besoin
-
AliExpressAchetez le moteur servo SG90 180 ou 360 sur AliExpress.s.click.aliexpress.com
Ressources et références
-
DocumentationESP32 Tutoriel 17/55 - Documentation du moteur servo SunFunderdocs.sunfounder.com
-
ExterneSG90 servo sur Amazon USAamzn.to
Fichiers📁
Autres fichiers
-
Fiche technique du moteur SG90 Seroo
robojax-servo-SG90_datasheet.pdf0.12 MB