Tutoriel ESP32 17/55 - Contrôle du moteur servo à l'aide de l'ESP32 et d'un potentiomètre - Kit d'apprentissage IoT ESP32

Tutoriel ESP32 17/55 - Contrôle du moteur servo à l'aide de l'ESP32 et d'un potentiomètre - Kit d'apprentissage IoT ESP32

Dans ce tutoriel, nous allons apprendre à contrôler un servo-moteur à l'aide d'un microcontrôleur ESP32 et d'un potentiomètre du kit d'apprentissage IoT ESP32 de SunFounder. À la fin de ce projet, vous pourrez ajuster l'angle du servo-moteur de manière fluide à l'aide du potentiomètre, permettant ainsi un contrôle précis. C'est un excellent moyen d'explorer les capacités de l'ESP32 et son interface avec les moteurs.

Au fur et à mesure que nous plongeons dans les détails, nous couvrirons les composants matériels nécessaires, les instructions de câblage et des exemples de code pour faire fonctionner le tout. Pour une représentation plus visuelle, n'oubliez pas de consulter la vidéo associée à ce tutoriel (dans la vidéo à 0:30).

Matériel expliqué

Les composants principaux de ce projet incluent le microcontrôleur ESP32, un moteur servo (SG90) et un potentiomètre. L'ESP32 est un microcontrôleur puissant qui offre le Wi-Fi et le Bluetooth intégrés, ce qui le rend adapté aux projets IoT. Il est capable de contrôler divers dispositifs, y compris des moteurs, avec une grande précision.

Le moteur servo SG90 est un composant largement utilisé qui peut tourner d'environ 270 degrés. Il fonctionne avec un signal de modulation de largeur d'impulsion (PWM), où l'angle de rotation est déterminé par la largeur de l'impulsion qui lui est envoyée. Le potentiomètre agit comme une résistance variable, vous permettant d'ajuster la tension envoyée à l'ESP32, ce qui contrôle à son tour la position du servo.

Détails de la fiche technique

Fabricant SG
Numéro de pièce SG90
Tension logique/IO 3,3 V (ESP32)
Tension d'alimentation 5 V
Courant de sortie (par canal) 1.2 A
Courant de crête (par canal) 2,5 A
Directives de fréquence PWM 50 Hz
Seuils de logique d'entrée 0,2 V (bas), 2,5 V (haut)
Chute de tension / RDS(on)/ saturation 0,5 V
Limites thermiques 85 °C max
Colis Plastique
Remarques / variantes Disponible en différents types d'équipement

  • Assurez-vous que le servo est alimenté avec une tension appropriée (5V).
  • Connectez la masse du servo à la masse de l'ESP32 pour une référence commune.
  • Utilisez des signaux PWM appropriés pour contrôler la position du servo.
  • Soyez conscient des exigences en courant du servomoteur ; utilisez une alimentation externe si nécessaire.
  • Vérifiez les assignations de broches correctes lors du câblage pour éviter les erreurs de configuration.

Instructions de câblage

ESP32-17-Sevo_motor-wiring

Pour câbler le servomoteur et le potentiomètre à l'ESP32, commencez par connecter le fil de masse du servomoteur (généralement noir ou marron) à l'une des broches de masse de l'ESP32. Ensuite, connectez le fil d'alimentation (généralement rouge) du servomoteur à la broche 5V de l'ESP32. Enfin, connectez le fil de signal (généralement orange ou blanc) du servomoteur à la broche25sur l'ESP32.

Pour le potentiomètre, connectez une broche extérieure au pin 3,3 V sur l'ESP32 et l'autre broche extérieure à la terre. La broche centrale du potentiomètre doit être connectée au pin34sur l'ESP32. Cette configuration permet à l'ESP32 de lire la tension de sortie variable du potentiomètre, qui sera utilisée pour contrôler la position du servo.

Exemples de code et guide étape par étape

Le code ci-dessous initialise le servo et définit les paramètres pour contrôler son mouvement :

#include 

Servo myServo;
const int servoPin = 25;
const int minPulseWidth = 500; // 0.5 ms
const int maxPulseWidth = 2500; // 2.5 ms

void setup() {
  myServo.attach(servoPin, minPulseWidth, maxPulseWidth);
  myServo.setPeriodHertz(50); // Standard 50Hz servo
}

Dans ce code, nous incluons leESP32Servobibliothèque et créer une instance du servo avec le nommyServoNous définissons le numéro de broche pour le servo et fixons les largeurs d'impulsions minimales et maximales qui correspondent aux limites d'angle du servo.

ESP32_servo_lib

Ensuite, jetons un œil à la boucle qui déplace en continu le servo d'avant en arrière :

void loop() {
  for (int angle = 0; angle <= 180; angle++) {
    int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
    myServo.writeMicroseconds(pulseWidth);
    delay(15);
  }
  for (int angle = 180; angle >= 0; angle--) {
    int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
    myServo.writeMicroseconds(pulseWidth);
    delay(15);
  }
}

Cette boucle change progressivement l'angle de 0 à 180 degrés et revient en arrière, utilisant lemapfonction pour convertir l'angle en la largeur d'impulsion correspondante pour le servo. Chaque changement est suivi d'un court délai pour permettre au servo d'atteindre sa nouvelle position en douceur.

Démonstration / À quoi s'attendre

Une fois que tout est câblé et que le code est téléchargé, vous devriez voir le servo-moteur se déplacer en douceur de 0 à 180 degrés et revenir. Si vous ajustez le potentiomètre, le servo devrait refléter la nouvelle position en fonction de la tension fournie par le potentiomètre. Faites attention à la polarité inversée lors du câblage, car cela pourrait endommager vos composants (dans la vidéo à 3:45).

Horodatages vidéo

  • 00:00 Début
  • 1:56 Qu'est-ce qu'un moteur servo ?
  • 5:00 Page des documents
  • 6:33 Explication du câblage pour servo
  • Sélectionnement du port COM pour ESP32 dans Arduino IDE à 7:45
  • 9:27 Code Arduino expliqué
  • 14:31 Démonstration du contrôle servo utilisant l'ESP32
  • 16:04 Alimentation d'un servomoteur autre que 5V
  • 18:47 Contrôler le servo sans la boucle
  • 20:15 Contrôle du servo avec un potentiomètre
  • 21:37 Code Arduino pour servomoteur avec potentiomètre expliqué

Images

ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-wiring
ESP32-17-Sevo_motor-wiring
ESP32_servo_lib
ESP32_servo_lib
816-ESP32 Tutorial 17/55- Arduino code for controling servo motor
Langue: C++
Copié !

Fichiers📁

Fiche technique (pdf)

Autres fichiers