ESP8266 - Moteur Servo

Ce tutoriel vous explique comment utiliser l'ESP8266 pour contrôler un moteur servo. Nous allons apprendre en détail :

Préparation du matériel

1×ESP8266 NodeMCU
1×Micro USB Cable
1×Servo Motor
1×Jumper Wires
1×(Optional) 5V Power Adapter for ESP8266
1×(Optional) ESP8266 Screw Terminal Adapter

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
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 un composant capable de faire tourner son axe (généralement dans une plage de 0 à 180 degrés) pour contrôler la position angulaire d'un objet.

Le brochage du moteur servo

Le moteur servo a trois broches :

  • La broche VCC (généralement rouge) doit être connectée à VCC (5V)
  • La broche GND (généralement noire ou marron) doit être connectée à GND (0V)
  • La broche de signal (généralement jaune ou orange) qui reçoit le signal de commande PWM d'une broche d'ESP8266.
brochage du servo moteur

ESP8266 - Moteur Servo

Certains des broches de l'ESP8266 peuvent être programmées pour produire un signal PWM. Connecter la broche de signal du moteur servo à une broche ESP8266 et la programmer pour générer du PWM sur la même broche nous permet de contrôler le moteur servo.

Grâce à la bibliothèque Servo ESP8266, contrôler un moteur servo est facile. Nous n'avons pas besoin de comprendre comment fonctionne le moteur servo ni comment générer un signal PWM. Tout ce que nous devons faire est d'apprendre à utiliser la bibliothèque.

Diagramme de câblage

Schéma de câblage du moteur servo ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.

Pour des raisons de simplicité, le schéma de câblage ci-dessus est utilisé à des fins de test ou d'apprentissage, et pour un moteur servo de faible couple. En réalité, nous recommandons fortement d'utiliser une alimentation externe pour le moteur servo. Le schéma de câblage ci-dessous montre comment connecter le moteur servo à une source d'alimentation externe.

Schéma de câblage d'alimentation externe du moteur servo ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Comment programmer pour un servomoteur

Le cœur Arduino-ESP8266 est déjà équipé de sa bibliothèque de servomoteurs intégrée, donc nous n'avons pas besoin de l'installer.

  • Inclure la bibliothèque :
#include <Servo.h>
  • Créez un objet Servo :
Servo servo;

Si vous avez plus d'un servo-moteur, déclarez simplement des objets Servo supplémentaires :

Servo servo1; Servo servo2;
  • Attribuez la broche de contrôle de l'ESP8266 à la broche de signal du moteur servo. Par exemple, broche D7 :
servo.attach(D7);
  • Finalement, tournez le servo moteur à l'angle requis. Par exemple, 90°.
servo.write(90);

Code ESP8266

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-servo-motor */ #include <Servo.h> Servo servo; // crée un objet servo pour contrôler un servo int pos = 0; // variable pour stocker la position du servo void setup() { servo.attach(D7); // attache le servo à la broche D7 à l'objet servo } void loop() { for (pos = 0; pos <= 180; pos += 1) { // rotation de 0 degrés à 180 degrés // en pas de 1 degré servo.write(pos); // indique au servo d'aller à la position dans la variable 'pos' delay(10); // attend 10ms pour que le servo atteigne la position } for (pos = 180; pos >= 0; pos -= 1) { // rotation de 180 degrés à 0 degrés servo.write(pos); // indique au servo d'aller à la position dans la variable 'pos' delay(10); // attend 10ms pour que le servo atteigne la position } }

Étapes rapides

Pour commencer avec ESP8266 sur Arduino IDE, suivez ces étapes :

  • Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est votre première utilisation d'ESP8266.
  • Connectez les composants comme indiqué sur le schéma.
  • Connectez la carte ESP8266 à votre ordinateur via un câble USB.
  • Ouvrez l'Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte ESP8266, par exemple (ex. NodeMCU 1.0 (Module ESP-12E)), et le port COM correspondant.
  • Connectez votre ESP8266 à l'ordinateur à l'aide d'un câble USB.
  • Lancez l'Arduino IDE, sélectionnez la carte et le port corrects.
  • Copiez le code fourni et ouvrez-le dans l'Arduino IDE.
  • Cliquez sur le bouton Upload dans l'Arduino IDE pour compiler et téléverser le code vers l'ESP8266.
Comment télécharger du code sur ESP8266 NodeMCU en utilisant l'IDE Arduino
  • Découvrez le résultat : Le moteur servo tourne dans le sens horaire et antihoraire.

Explication du code

Découvrez l'explication ligne par ligne contenue dans les commentaires du code source !

Comment contrôler la vitesse du moteur servo

En utilisant les fonctions map() et millis(), nous pouvons réguler la vitesse du moteur servo de manière fluide sans entraver le reste du code.

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-servo-motor */ #include <Servo.h> Servo servo; unsigned long MOVING_TIME = 3000; // le temps de déplacement est de 3 secondes unsigned long move_start_ms; int angle_start = 30; // 30° int angle_stop = 90; // 90° void setup() { servo.attach(D7); move_start_ms = millis(); // commencer à bouger // TODO: autre code } void loop() { unsigned long progress = millis() - move_start_ms; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, angle_start, angle_stop); servo.write(angle); } // TODO: autre code }

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!