Dans ce tutoriel, nous allons apprendre à contrôler un servo-moteur à l’aide d’une télécommande IR et d’un Arduino. Les servo-moteurs sont largement utilisés dans divers projets, notamment en robotique, automatisation et véhicules télécommandés. En intégrant un capteur IR avec une carte Arduino, nous pouvons recevoir des commandes d’une télécommande IR et les utiliser pour contrôler la position ou la vitesse du servo-moteur.
Contrôler un servo-moteur avec une télécommande IR ouvre un monde de possibilités. Vous pouvez l’utiliser pour construire un bras robotisé télécommandé, créer un mécanisme de panoramique-inclinaison pour une caméra, ou même construire une voiture télécommandée. Les possibilités sont infinies !
Avant d’entrer dans les détails, jetons un œil aux composants dont vous aurez besoin pour ce projet.
Composants requis
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Voici les composants nécessaires pour ce projet. Si vous possédez déjà une télécommande IR, vous n’aurez pas besoin du kit récepteur IR, seulement du module récepteur IR. Cependant, toutes les télécommandes IR ne conviennent pas forcément. En revanche, si vous achetez ou possédez le kit, vous n’aurez pas besoin du module récepteur IR, car il fait partie du kit.

Arduino Uno

Jeu de fils Dupont

Plaque d’essai (breadboard)

Câble USB pour Arduino UNO

Module récepteur IR

Kit récepteur télécommande IR

Servo

Arduino IDE
Connexion des composants
Dans cette section, nous allons connecter les composants à l’Arduino. L’image ci-dessous montre le câblage complet. Nous commençons par l’alimentation de la breadboard.

Connexion de la breadboard
Commencez par connecter la broche marquée Ground (GND) sur l’Arduino avec un fil noir ou bleu à la ligne de masse de la breadboard (marquée d’une ligne bleue). Ensuite, connectez la broche marquée 5V (alimentation) sur l’Arduino avec un fil rouge à la ligne d’alimentation de la breadboard (marquée d’une ligne rouge).

Connexion du capteur IR
Nous commençons par le fil de signal pour connecter le capteur IR. Trouvez la broche marquée S ou Signal sur le module capteur IR et connectez-la avec un fil jaune à la broche 8 de l’Arduino.
Ensuite, nous connectons l’alimentation. Typiquement, le plus est la broche centrale du module capteur IR. Utilisez un fil rouge pour connecter cette broche à la ligne d’alimentation positive de la breadboard. Enfin, connectez la troisième broche restante du module capteur IR à la ligne de masse négative de la breadboard.

Connexion du servo-moteur
Le dernier composant à connecter est le servo-moteur. D’abord, connectez le fil marron du servo à la ligne de masse négative de la breadboard avec un fil marron ou noir. Puis connectez le fil rouge du servo à la ligne d’alimentation positive, de préférence avec un fil rouge.

Enfin, connectez le fil de signal orange du servo à la broche 9 de la carte Arduino.

Une fois le câblage terminé, vérifiez bien que tout est correctement connecté. Portez une attention particulière aux connexions d’alimentation. Nous ne voulons pas de court-circuit.
Ensuite, je vais vous montrer le code nécessaire.
Écriture du code Arduino
Vous trouverez ci-dessous le code complet pour un aperçu. Il vous permet de faire tourner le servo vers la gauche ou la droite par pas de 10 degrés en appuyant sur les boutons NEXT ou PREV de la télécommande. Décortiquons ce code pour expliquer son fonctionnement.
#include <IRremote.hpp>
#include <Servo.h>
#define IR_RECEIVE_PIN 8
#define SERVO_PIN 9
Servo servo;
const int range = 780;
const int mid = 1600;
int pos = 90;
int speed = 10;
void rotate(int angle) {
angle = map(angle, 0, 180, mid - range, mid + range);
servo.writeMicroseconds(angle);
}
void setup() {
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
servo.attach(SERVO_PIN);
rotate(pos);
}
void loop() {
if (IrReceiver.decode()) {
uint16_t command = IrReceiver.decodedIRData.command;
if (command == 8) { // NEXT
pos = min(pos + speed, 180);
} else if (command == 2) { // PREV
pos = max(pos - speed, 10);
}
rotate(pos);
IrReceiver.resume();
}
}
Définitions
Nous commençons par inclure deux bibliothèques. La IRremote bibliothèque, nécessaire pour comprendre les commandes envoyées par la télécommande IR. Et la Servo bibliothèque, qui nous aide à contrôler le servo.
#include <IRremote.hpp> #include <Servo.h>
Nous définissons ensuite les constantes, IR_RECEIVE_PIN et SERVO_PIN qui spécifient quelles broches de l’Arduino sont utilisées pour lire le signal IR et contrôler le servo.
#define IR_RECEIVE_PIN 8 #define SERVO_PIN 9
Puis nous définissons l’objet servo et deux constantes (range et mid), qui ajustent la plage de mouvement du servo, et mid définit la position centrale du servo. De plus, nous déclarons deux variables (pos, speed) qui décrivent la position actuelle du servo et la vitesse (ou les pas d’angle) à laquelle il tourne.
Servo servo; const int range = 780; const int mid = 1600; int pos = 90; int speed = 10;
Rotation du servo
Pour faire tourner le servo à un angle spécifique, nous définissons une fonction spéciale rotate(). Elle convertit essentiellement l’angle donné, qui doit être compris entre 0 et 180 degrés, en la durée d’impulsion correspondante nécessaire pour contrôler le servo.
void rotate(int angle) {
angle = map(angle, 0, 180, mid - range, mid + range);
servo.writeMicroseconds(angle);
}
Pour plus de détails, consultez notre tutoriel sur les différences entre continuous and positional servos. Faites particulièrement attention à la section qui explique comment affiner votre servo.
Configuration
Dans la fonction setup(), nous indiquons simplement aux bibliothèques du récepteur IR et du servo quelles broches sont utilisées pour le récepteur IR et le contrôle du servo. De plus, nous positionnons le servo à 90 degrés. Notez que nous supposons ici un servo positionnel classique.
void setup() {
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
servo.attach(SERVO_PIN);
rotate(pos);
}
Boucle principale
Enfin, nous implémentons la fonction loop() qui s’exécute en continu.
void loop() {
if (IrReceiver.decode()) {
uint16_t command = IrReceiver.decodedIRData.command;
if (command == 8) { // NEXT
pos = min(pos + speed, 180);
} else if (command == 2) { // PREV
pos = max(pos - speed, 10);
}
rotate(pos);
IrReceiver.resume();
}
}
Nous commençons par attendre un signal du récepteur IR en appelant IrReceiver.decode(). Si une commande est reçue, nous la décodons via IrReceiver.decodedIRData.command.
Selon la valeur de la commande, nous augmentons la position, mais pas au-delà de 180 degrés, ou la diminuons, mais pas en dessous de 0 degré. C’est le rôle des fonctions min() et max() .
La correspondance entre la valeur de la commande et la touche de la télécommande IR dépendra de la télécommande que vous utilisez. ! Consultez notre tutoriel sur How to use an IR receiver and remote with Arduino pour apprendre à identifier les codes de commande de votre télécommande. Dans mon cas, 8 correspond au bouton piste suivante et 2 au bouton piste précédente de ma télécommande.
Enfin, nous faisons tourner le servo à la position souhaitée avec rotate(pos) et informons le récepteur IR de rechercher une nouvelle commande via IrReceiver.resume().
Conseils
Notez que vous pouvez augmenter l’angle de pas ou la vitesse à laquelle le servo se déplace entre les positions en augmentant ou diminuant la valeur de la variable speed . Vous pouvez même le faire avec la télécommande en ajoutant deux commandes supplémentaires, par exemple :
void loop() {
if (IrReceiver.decode()) {
uint16_t command = IrReceiver.decodedIRData.command;
if (command == 31) { // VOL+
speed = min(speed + 1, 90);
} else if (command == 23) { // VOL-
speed = max(speed - 1, 1);
} else if (command == 8) { // NEXT
pos = min(pos + speed, 180);
} else if (command == 2) { // PREV
pos = max(pos - speed, 10);
}
rotate(pos);
IrReceiver.resume();
}
}
Ici, j’utilise les boutons de volume de ma télécommande pour contrôler la vitesse. Comme précédemment, les codes de commande de votre télécommande peuvent être différents et vous devrez ajuster le code en conséquence.
Applications
Bras robotisé
Utilisez le servo-moteur pour contrôler le mouvement d’un bras robotisé. Le bras peut être programmé pour effectuer diverses tâches comme saisir des objets, les déplacer, ou même jouer.
Contrôle des stores
Automatisez l’ouverture et la fermeture des stores à l’aide du servo-moteur et de la télécommande IR. Cela vous permet de contrôler la quantité de lumière entrant dans une pièce d’une simple pression sur un bouton.
Distributeur automatique pour animaux
Créez un distributeur automatique pour animaux qui distribue la nourriture à des heures précises grâce au servo-moteur. Utilisez la télécommande IR pour déclencher manuellement le processus d’alimentation si nécessaire.
Système d’arrosage
Construisez un système d’arrosage pour plantes qui utilise le servo-moteur pour contrôler le débit d’eau. Utilisez la télécommande IR pour activer le système et arroser vos plantes à distance.
Serrure de porte intelligente
Créez un système de serrure de porte intelligente qui utilise le servo-moteur pour verrouiller et déverrouiller la porte. Utilisez la télécommande IR pour contrôler la serrure à distance ou installez un clavier pour un accès sécurisé.
Éclairage d’ambiance
Créez un système d’éclairage d’ambiance qui utilise le servo-moteur pour ajuster la luminosité ou la couleur des lumières. Utilisez la télécommande IR pour changer les réglages d’éclairage et créer différentes ambiances.
Rideaux automatisés
Contrôlez l’ouverture et la fermeture des rideaux à l’aide du servo-moteur et de la télécommande IR. Cela vous permet d’ajuster facilement la quantité de lumière entrant dans une pièce ou de créer de l’intimité.
Nettoyeur de aquarium robotisé
Construisez un nettoyeur d’aquarium robotisé qui utilise le servo-moteur pour se déplacer et nettoyer le bac. Utilisez la télécommande IR pour contrôler ses mouvements et ses modes de nettoyage.
Installation artistique interactive
Créez une installation artistique interactive qui utilise le servo-moteur pour contrôler des parties mobiles ou des sculptures. Utilisez la télécommande IR pour déclencher différents mouvements et engager les spectateurs.
Conclusions
Dans ce tutoriel, nous avons appris à contrôler un servo-moteur avec une télécommande IR. En suivant les étapes décrites dans ce guide, vous pouvez facilement intégrer cette fonctionnalité dans vos propres projets.
Nous avons commencé par rassembler les composants nécessaires, dont un Arduino Uno, un jeu de fils Dupont, une breadboard, un module récepteur IR, un kit récepteur télécommande IR, et l’IDE Arduino. Ces composants sont essentiels pour construire le circuit.
Ensuite, nous avons connecté les composants ensemble. Nous avons relié la breadboard à l’Arduino Uno, en vérifiant que toutes les connexions étaient correctes. Puis, nous avons connecté le capteur IR à la breadboard et le servo-moteur à l’Arduino Uno. Ces connexions permettent à l’Arduino de recevoir les signaux de la télécommande IR et de contrôler le servo-moteur en conséquence.
Après la configuration matérielle, nous sommes passés à l’écriture du code Arduino. Nous avons défini les variables et bibliothèques nécessaires, puis implémenté le code pour faire tourner le servo-moteur selon les signaux reçus de la télécommande IR. Nous avons aussi configuré la position initiale du servo dans la fonction setup et vérifié en continu les signaux IR dans la boucle principale.
Enfin, nous avons donné quelques conseils pour améliorer le contrôle de votre servo-moteur avec une télécommande IR. Ces conseils incluent l’utilisation de différentes touches de la télécommande pour déclencher divers mouvements du servo, l’ajustement de la vitesse du servo, et l’intégration d’autres capteurs ou modules dans votre projet.
En conclusion, contrôler un servo-moteur avec une télécommande IR ouvre un large éventail de possibilités pour vos projets Arduino. Que vous souhaitiez construire un bras robotisé, un stabilisateur de caméra, ou tout autre projet nécessitant un contrôle précis du moteur, ce tutoriel vous a fourni les connaissances nécessaires pour commencer.
Si vous avez d’autres questions ou besoin de précisions sur l’une des étapes décrites dans ce tutoriel, veuillez consulter la section FAQ ci-dessous. Bon bricolage !
Questions fréquemment posées
Voici quelques questions courantes liées au contrôle d’un servo-moteur avec une télécommande IR :
Q : Puis-je utiliser n’importe quelle télécommande IR avec ce projet ?
R : Oui, vous pouvez utiliser n’importe quelle télécommande IR tant qu’elle est compatible avec l’Arduino. La plupart des télécommandes IR utilisent le protocole NEC, pris en charge par la bibliothèque IR d’Arduino. Cependant, si vous avez un autre type de télécommande IR, vous devrez peut-être modifier le code en conséquence. Vous devrez très probablement adapter le code aux codes de commande de votre télécommande. Pour plus de détails, voir here.
Q : Comment trouver les codes des boutons de ma télécommande IR ?
R : Pour trouver les codes des boutons de votre télécommande IR, vous pouvez utiliser le IRrecvDumpV2 example sketch fourni par la bibliothèque IR d’Arduino. Sinon, suivez notre tutorial.
Téléversez le sketch sur votre Arduino, ouvrez le moniteur série, et appuyez sur les boutons de votre télécommande. Les codes s’afficheront dans le moniteur série. Vous pourrez ensuite utiliser ces codes dans votre code Arduino pour associer les boutons à des mouvements spécifiques du servo-moteur.
Q : Puis-je contrôler plusieurs servo-moteurs avec une seule télécommande IR ?
R : Oui, vous pouvez contrôler plusieurs servo-moteurs avec une seule télécommande IR. Vous devrez connecter chaque servo-moteur à une broche différente de l’Arduino et modifier le code pour contrôler chaque servo indépendamment. Vous pouvez assigner différentes touches de la télécommande IR pour contrôler différents servos.
Q : Comment ajuster la plage de mouvement du servo-moteur ?
R : La plage de mouvement du servo-moteur peut être ajustée en modifiant les valeurs dans les fonctions servo.attach() et servo.write() du code Arduino. La fonction servo.attach() définit la plage de mouvement du servo, tandis que la fonction servo.write() spécifie l’angle auquel le servo doit se déplacer. Pour des méthodes alternatives, consultez notre tutoriel sur continuous and positional servos.
Q : Puis-je utiliser un microcontrôleur différent de l’Arduino ?
R : Oui, vous pouvez utiliser un autre microcontrôleur tant qu’il supporte les bibliothèques nécessaires et dispose de suffisamment de broches numériques pour connecter le servo-moteur et le récepteur IR. Le code fourni dans ce tutoriel est spécifique à Arduino, mais vous pouvez l’adapter pour d’autres microcontrôleurs.
Q : Puis-je utiliser un autre type de moteur à la place d’un servo-moteur ?
R : Non, ce projet est spécifiquement conçu pour contrôler des servo-moteurs. Les servo-moteurs ont un contrôle de position intégré, ce qui les rend idéaux pour cette application. Si vous souhaitez contrôler un autre type de moteur, vous aurez besoin d’un circuit et d’un code différents.
Q : Puis-je contrôler la vitesse du servo-moteur ?
R : Cela dépend. Pour les servos continus ou à rotation 360 degrés, vous pouvez contrôler la vitesse et la direction (mais pas la position). Pour les servos positionnels, utilisés dans ce tutoriel, vous ne pouvez pas contrôler directement la vitesse, mais vous pouvez modifier les pas d’angle, ce qui modifie en quelque sorte la vitesse, mais cela entraîne un mouvement saccadé.
Q : Y a-t-il des précautions de sécurité à prendre avec les servo-moteurs ?
R : Oui, lorsque vous travaillez avec des servo-moteurs, assurez-vous de fournir une alimentation suffisante et évitez de les surcharger. Faites aussi attention aux pièces mobiles et évitez de les toucher pendant que le moteur fonctionne.
J’espère que ces questions fréquentes ont aidé à clarifier vos doutes. Si vous avez d’autres questions, n’hésitez pas à les poser dans la section commentaires ci-dessous.
Liens
Enfin, une sélection de liens vers des ressources connexes que vous pourriez trouver utiles.
- How to Control a 360 Degree Servo Motor with Arduino
- How to Drive Servo Motors Using ESP32
- How to Control Servo Motors with Arduino (3 Examples)
- Control 360-degree Servo Motor Using ESP32
- Positional versus Continuous Servos
- Controlling Servo Motor with IR Remote
- Servo Motor Control with Remote
- Controlling a Servo with IR | Using an Infrared Library
- Controlling Servo Motor With Ir Remote Using Arduino
- Controlling Servo Motor Using IR Remote Control

