Tutoriel Raspberry Pi
Contrôler un Servo moteur en Python

Le Raspberry permet de réaliser divers projets de robotique. Le servo moteur est un composant très souvent utilisé dans ce domaine. En effet, ce n'est pas un simple moteur, il est intelligent. On va pouvoir lui demander d'aller à une certaine position, et il va exécuter les ordres, sans avoir besoin d'ajouter de capteurs de fin de courses, etc. Malheureusement, sa course de sortie n'est que de 180°. D'autres types de servo moteurs existent, comme les Servo treuil. Ils offrent une course de sortie de plus de 3 tours mais sont plus chers.

Contrôler un Servo moteur sur Raspberry Pi - Raspberry Lab

Prérequis

Pour contrôler un Servo moteur à l'aide d'un Raspberry, il faut :

  • Une alimentation en plus de celle du Raspberry (4 piles AAA ou une batterie externe 5V)

Une fois tous les éléments réunis, on peut passer au branchement.

Connexion du Servo au Raspberry

Le Servo moteur possède 3 fils :

Le fil rouge : +5V;
Le fil noir : GND, 0V;
Le fil blanc/jaune : fil de data, où les ordres circulent du Raspberry vers le Servo.

Pour alimenter le Servo, il est préférable d'utiliser une alimentation externe de 5V, surtout si l'alimentation de votre Raspberry délivre peu de courant.
Le Servo se branche donc comme ceci :

Schéma de branchement d'un Servo Moteur sur Raspberry Pi 3

Programmation

Une fois que tout est branché correctement, on peut passer à la programmation. Pour contrôler le Servo moteur, voici un programme Python qui permet de :

Demander au Servo d'atteindre une position (un angle), qu'il maintiendra pendant une durée déterminée,
Lui demander de faire des allers-retours de 0° à 180°

Ce programme est évidemment là pour être modifié et adapté aux besoins de votre projet, donc à vous de jouer !

Ce tutoriel vous a plu ?

4.5 /5 13 votes

Commentaires

17 commentaires publiés.

Anonyme
Bonjour,
Récemment j'ai acheté un bras robotique waveshare pour raspberry pi (https://www.robotshop.com/eu/fr/kit-bras-robotique-bluetooth-wifi-4-dof-pour-raspberry-pi.html?gclid=Cj0KCQiAh4j-BRCsARIsAGeV12CxfEScwAQ6RnbrpFwil-hQD7LVR5j0sTjbCh5gaiUQGjPb8RxAhcYaAm3xEALw_wcB) et quand je le fait fonctionner avec le logiciel AlphaBot le raspberry affiche un message en haut à droite qui dit alimentation faible veuillez vérifier votre alimentation. Avec le bras robotique il y avait un câble secteur vers micro usb type B je l'ai dénudé pour le connecter au connecteur vert de ma carte Servo_Driver_HAT (https://www.waveshare.com/servo-driver-hat.htm) pense-tu qu'il fallait remplacer l'alimentation de mon raspberry par ce cable au lieu de le connecter a la carte Servo_Driver_HAT ?
Anonyme
merce mec tu fait trop plz
Anonyme
Bonjour,
Merci pour l'information.
Je voudrais savoir si vous êtes en mesure de refaire le code en utilisant le module GPIOZERO.
Merci d'avance
Anonyme
Bonjour,
merci pour votre aide, en fait sur python on m'indique que le module RPi is not definded je sais pas comment faire
Merci
Anonyme
Bonsoir, je peux lire un peu partout que les servo fonctionne en 50hz, pourquoi le faire fonctionner en 100hz ?
Anonyme
bonjour monsieur,
est ce que ce programme peut marché sur une Raspberry pi2
merci
Raspberry Lab
Bonjour @Anonyme,
En effet, le programme fonctionne sur tous les Raspberry Pi. Il suffit d'adapter le branchement, qui est disponible sur cette page pour les Raspberry 1, 2 et 3.

Bonne continuation sur votre Raspberry,
RaspberryLab.
Anonyme
Bonjour. Merci pour ce petit programme. J'aimerais controler deux servomoteur, un pour les axes X et l'autre pour les axes Y par exemple. Comment dois-je faire?!
Est ce que : GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setwarnings(False)

Fonctionnerai ou bien fait il "configurer" le programme autrement?!

Merci d'avance pour votre reponce.
Raspberry Lab
Bonjour,
Je ne possède qu'un Servo moteur donc je ne peux malheureusement pas tester mais je pense que on peut faire fonctionner le script avec autant de Servo que l'on veut.
En plus de l'ajout de <i>GPIO.setup(27, GPIO.OUT)</i>, il faut ajouter ligne 23 : <i>pwm2=GPIO.PWM(27,100)</i> pour définir le deuxième servo et ensuite faire ce que vous voulez avec ce dernier.

Bonne journée,
RaspberryLab.
Anonyme
Merci pour votre reponse. Je teste ca au plus vite. :)
Anonyme
Bonsoir, j'aimerai savoir a quoi sert la variable ajoutAngle S.V.P
Anonyme
Il faut une bread board?
Et est ce qu'on peut utiliser un Raspberry Pi zero ?
Raspberry Lab
Bonjour Romain,
La Bread Board n'est pas obligatoire, mais sans, il faut souder la résistance du schéma aux fils, ce qui est un peu plus compliqué.
Sinon, oui le tuto est réalisable sur Raspberry Pi Zero, en utilisant le même GPIO qu'avec un Raspberry Pi 3.

Bonne soirée !
Anonyme
bonjour
le programme m'indique une erreur :
unorderable type : int () <= str()
merci de votre aide
Raspberry Lab
Bonjour tafiolemika,
Je viens de changer le code, cela devrait marcher maintenant !
Le problème venait du fait qu'il restait des input qui n'étaient pas convertis en entier dans le code et qui donnaient donc des str.

Bonne journée,
RaspberryLab.
Anonyme
Merci pour ce petit tuto.
Pour info, input donne des types str, donc il faut convertir en int pour que ça fonctionne.
Raspberry Lab
Bonjour dood,

Merci pour l'info, je viens de corriger le code :)

Bonne continuation sur votre Raspberry Pi !

Commenter

Votre adresse mail ne sera pas visible sur le site.