Étiquettes : , , , ,

Lorsque vous voulez piloter plusieurs servomoteurs et que vous avez besoin de beaucoup d’entrées/sorties disponibles pour faire fonctionner votre robot (pour piloter Hexana, par exemple), il est plus pratique d’utiliser un contrôleur série de servomoteur tel que le Mini Maestro de Pololu.

Ce tutoriel montre comment configurer la carte Raspberry Pi 3 (ou Zero) afin de piloter le contrôleur série Mini Maestro.

Prérequis: Programmez avec Raspberry Pi, Pilotez un servo avec Raspberry Pi

Matériel

  • Ordinateur
  • Raspberry Pi3 (ou Zero) + moniteur + clavier
  • Câble USB mini B pour connecter la carte Maestro à l’ordinateur
  • Câble F/F x4
  • Contrôleur série Mini Maestro x1
  • Servomoteurs x1 ou plus

Présentation du contrôleur série Maestro

Lorsqu’on utilise plusieurs servomoteurs, typiquement, lorsque le nombre de servomoteurs dépasse le nombre de sortie de la carte électronique, il est nécessaire d’utiliser un contrôleur de servomoteur externe au microcontrôleur principal. Il en existe plusieurs types et certains vont même vous permettre de piloter jusqu’à 32 servomoteurs en même temps.

Je vais vous présenter la carte Maestro de chez Pololu. Elle existe sous différents formats 6, 12, 18 ou 24 sorties pour servomoteur.

pololu-maestro-family Pilotez un contrôleur série Maestro avec Raspberry Pi

Avec cette solution, la carte principale, ici notre Raspberry Pi, donne les ordres au contrôleur (carte esclave) via un port série qui les transmet et fournit la puissance aux servomoteurs.

Cela permet de :

  • protéger le matériel en découplant la partie puissance de la partie commande
  • réduire le coût en diminuant le nombre d’entrée-sortie de la carte principale
  • utiliser différents types de carte (pour piloter 32 servomoteurs vous pouvez désormais utiliser une Raspberry PI ou encore une carte Arduino Mini !)

Retrouvez toutes les infos sur la série de driver Mini Maestro sur le site de Pololu.

Configuration et test préalable du contrôleur série Maestro

Pour configurer le contrôleur série Maestro, il vous suffit de télécharger le logiciel et les pilotes pour Windows (ou pour Linux). Vous pouvez retrouver les procédures d’installation en anglais pour Windows et pour Linux en suivant les liens respectifs.

Une fois le logiciel Maestro Control Center et les pilotes installés, branchez le contrôleur Maestro au PC en utilisant le câble USB.

Lorsque le contrôleur est connecté vous pouvez voir son numéro d’identification en haut à gauche et retrouver ses paramètres de configuration dans l’onglet « Serial Settings ».

maestro-control-center-serial-settings Pilotez un contrôleur série Maestro avec Raspberry Pi

Vous pouvez tester le contrôleur série Maestro et vos servomoteurs à l’aide du logiciel sur l’onglet « Status ». N’oubliez pas de brancher une alimentation sur le bornier du Mini Maestro sinon le servomoteur ne bougera pas.

maestro-control-center-status Pilotez un contrôleur série Maestro avec Raspberry Pi

Les servomoteurs peuvent avoir des paramètres de fonctionnement différents. Vous pouvez modifier les paramètres des sorties du contrôleur série dans l’onglet « Channel Settings ». A vous de tester les paramètres qui correspondent à votre servomoteur.

maestro-control-center-channel-settings Pilotez un contrôleur série Maestro avec Raspberry Pi

Schéma de connexion

Le contrôleur Maestro est alimenté par la sortie 5V du Raspberry Pi. Les bornes 8(GPIO14 / UART0_TXD) et 10 (GPIO15/ UART0_RXD) du Raspberry Pi sont connectées aux bornes RX et TX de la carte Maestro respectivement.

raspberry-pi3-maestrol Pilotez un contrôleur série Maestro avec Raspberry Pi

Le schéma de câblage est facilement transposable pour les contrôleurs série Mini Maestro 6, 12 et 18 voies.

Configuration du Raspberry Pi

Vérifiez que le module PySerial est bien installé sur votre Raspberry.

Dans un terminal de la Raspberry, tapez:

$ python -m pip install pyserial

Ensuite copiez le dossier contenant la librairie Maestro

$ git clone https://github.com/FRC4564/Maestro

Pour communiquer avec la carte Maestro, il faut un port série. Différents ports série peuvent exister, pour trouver les ports série disponibles, tapez:

$ dmesg | grep tty

Sur le Raspberry Pi3, le port série /dev/ttyAMAO est utilsé par le module Bluetooth. Nous utiliserons le port /dev/ttySO pour communiquer avec le contrôleur Maestro.

Code de base pour piloter un contrôleur série Maestro

Pour piloter le contrôleur série avec la carte Raspberry Pi, il faut envoyer une séquence de commande via un port série. Le programme suivant permet d’envoyer une commande de position aux différentes voies d’un Mini Maestro à l’aide d’un terminal du microcontrôleur Raspberry Pi3.

Pour cela nous utilisons le module Maestro.py précédemment téléchargé (https://github.com/FRC4564/Maestro). Pour l’utiliser, il suffit de copier le dossier obtenu dans le dossier du programme.

Tout d’abord, nous initialisons le port série permettant de communiquer avec la carte Maestro puis, nous ajoutons un code permettant de transformer les données envoyées via le terminal en commande de servomoteur.

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import Maestro.maestro as maestro
import time

#define servo
servo = maestro.Controller(ttyStr='/dev/ttyS0')
min_imp=2000
max_imp=10000
step_imp=100

#infinite loop
while 1:
	  #user input
	  msg=raw_input("Enter servo id and command: YxZZZZ:  \n")

	  #convert msg into id and cmd
	  sep=msg.find("x")
	  m1=msg[:sep]
	  m2=msg[sep+1:]
	  servoId=int(m1)
	  servoCmd=int(m2)

	  #saturate input
	  servoId=min(max(0,servoId),6);
	  servoCmd=min(max(min_imp,servoCmd),max_imp);

	  print(msg)
	  print("servoId : {}    servoCmd : {} \n".format(servoId,servoCmd))

	  servo.setTarget(servoId,servoCmd)
	  time.sleep(0.1)

servo.close

N’hésitez pas à nous laisser un commentaire ou à nous envoyer un message si vous rencontrez des difficultés pour piloter votre contrôleur série.

Applications

Références

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie