ESP32 - servomoteur

Ce tutoriel vous explique comment contrôler un servomoteur à l'aide d'un ESP32 et MicroPython. En détail, nous allons apprendre :

Servomoteur MicroPython pour ESP32

Préparation du matériel

1×Module de développement ESP32 ESP-WROOM-32
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×Servo-moteur
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour ESP32
1×Recommandé: Breakout Expansion Board for ESP32
1×Recommandé: Répartiteur d'alimentation pour ESP32

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)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du servomoteur

Un servomoteur est une pièce qui peut faire tourner son arbre, généralement de 0 à 180 degrés. Il est utilisé pour ajuster la position d'un objet.

Schéma de brochage

Cet exemple montre comment utiliser un servomoteur qui possède trois broches :

  • Broche VCC : Branchez le fil rouge à VCC (5 volts).
  • Broche GND : Connectez le fil noir ou marron à GND (0 volts).
  • Broche de signal : Connectez le fil jaune ou orange pour obtenir le signal de commande PWM à partir d'une broche ESP32.
Schéma des broches du servomoteur

Diagramme de câblage

Des schémas en ligne pourraient montrer une connexion entre la broche VCC d'un servomoteur et la broche VBUS de la carte ESP32. Évitez de faire cela, car cela pourrait endommager la carte ESP32.

Schéma de câblage du servomoteur ESP32 MicroPython

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Pour assurer la sécurité de votre carte ESP32, utilisez une alimentation séparée pour le servomoteur. Le schéma ci-dessous explique comment connecter le servomoteur à cette source d'alimentation.

Schéma de câblage du servomoteur ESP32 MicroPython

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Comment connecter l'ESP32 et un servomoteur

Assurez-vous de connecter le GND (masse) de l'alimentation externe au GND de la carte ESP32. Cela est essentiel pour son bon fonctionnement.

Code MicroPython pour ESP32

/* * Ce code ESP32 MicroPython a été développé par newbiely.fr * Ce code ESP32 MicroPython est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-micropython/esp32-micropython-servo-motor */ from DIYables_MicroPython_Servo import Servo import utime # Create a Servo object servo = Servo(26) # The ESP32 pin GPIO26 connected to the servo motor while True: # Move servo to different angles servo.move_to_angle(0) utime.sleep(2) servo.move_to_angle(90) utime.sleep(2) servo.move_to_angle(180) utime.sleep(2)

Étapes rapides

Voici les instructions sur la façon de configurer et d’exécuter votre code MicroPython sur l’ESP32 en utilisant l’IDE Thonny :

  • Assurez-vous que l'IDE Thonny est installé sur votre ordinateur.
  • Confirmez que le firmware MicroPython est chargé sur votre carte ESP32.
  • Si c'est la première fois que vous utilisez un ESP32 avec MicroPython, consultez le guide ESP32 - Premiers pas. pour des instructions étape par étape.
  • Connectez la carte ESP32 au servomoteur selon le diagramme fourni.
  • Connectez la carte ESP32 à votre ordinateur avec un câble USB.
  • Ouvrez l'IDE Thonny sur votre ordinateur.
  • Dans l'IDE Thonny, allez dans Outils Options.
  • Sous l'onglet Interpréteur, choisissez MicroPython (ESP32) dans le menu déroulant.
  • Assurez-vous que le port correct est sélectionné. L'IDE Thonny le détecte généralement automatiquement, mais vous pourriez avoir besoin de le sélectionner manuellement (comme COM12 sur Windows ou /dev/ttyACM0 sur Linux).
  • Accédez à Outils Gérer les paquets dans l'IDE Thonny.
  • Recherchez “DIYables-MicroPython-Servo”, puis trouvez la bibliothèque Servo-Moteur créée par DIYables.
  • Cliquez sur DIYables-MicroPython-Servo, puis cliquez sur le bouton Install pour installer la bibliothèque Servo-Moteur.
Bibliothèque de servomoteur MicroPython pour ESP32
  • Copiez le code MicroPython fourni et collez-le dans l’éditeur de Thonny.
  • Enregistrez le code sur votre ESP32 en :
    • Cliquez sur le bouton Enregistrer ou appuyez sur Ctrl+S.
    • Dans la boîte de dialogue d'enregistrement, choisissez périphérique MicroPython.
    • Nommez le fichier main.py.
  • Cliquez sur le bouton vert Exécuter (ou appuyez sur F5) pour exécuter le script.
  • Observez le servo-moteur : le servo tourne lentement de 0 à 180 degrés, puis revient progressivement de 180 à 0 degrés.

Explication du code

Vous pouvez trouver l'explication dans la section des commentaires du code MicroPython ESP32 ci-dessus.

Comment contrôler la vitesse du servomoteur

Le script MicroPython suivant contrôle un servomoteur sur l'ESP32 pour passer en douceur d'un angle à l'autre sans bloquer le programme. Il utilise utime pour la temporisation, en mettant périodiquement à jour la position du servomoteur tout en maintenant la boucle principale réactive à d'autres tâches.

/* * Ce code ESP32 MicroPython a été développé par newbiely.fr * Ce code ESP32 MicroPython est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-micropython/esp32-micropython-servo-motor */ from DIYables_MicroPython_Servo import Servo import utime # Create a Servo object servo = Servo(26) # The ESP32 pin GPIO26 connected to the servo motor # Define the start and stop angles and the duration for the movement start_angle = 30 stop_angle = 90 moving_time = 3000 # Duration in milliseconds # Function to map the progress to an angle def map_value(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min # Initial setup with timer move_start_time = utime.ticks_ms() # Main loop while True: progress = utime.ticks_diff(utime.ticks_ms(), move_start_time) # Calculate elapsed time since start if progress <= moving_time: # Calculate intermediate servo angle angle = map_value(progress, 0, moving_time, start_angle, stop_angle) servo.move_to_angle(angle) # Set servo position to calculated angle else: # Optionally, restart the motion or break the loop move_start_time = utime.ticks_ms() # Reset the timer to start the motion again

Vidéo

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !