Pico Robotics Board et Compact Motor Driver

Il s’agit de 2 cartes d’extension qui permettent de contrôler des moteurs avec le Raspberry Pi Pico.

Cartes Motor Driver et Pico Robotics Board de Kitronik

Elle m’ont été envoyées gratuitement par Kitronik mais je ne touche aucune rémunération et bien sûr je suis conserve une totale liberté pour écrire cet article (et la vidéo qui l’accompagne).

Raspberry Pi Pico

Si vous ne connaissez pas le Raspberry Pi Pico, je vous invite à lire mes précédents articles. Vous y trouverez toutes les informations nécessaires pour débuter dans la programmation de la carte (avec Thonny).

Raspberry Pi Pico

Compact Motor Driver

Comme son nom l’indique cette carte est compacte (63 X 35 mm). Elle est un peu plus rudimentaire puisqu’elle permet de contrôler seulement 2 moteurs à courant continu (ou 1 moteur pas à pas) mais elle coûte un peu moins cher et convient parfaitement pour piloter un robot à chenilles (de type Zumo) ou à 3 roues (de type mBot).

Détail de la carte Compact Motor Driver de Kitronik

La tension d’alimentation peut être comprise entre 3 et 10 V (cela dépend des moteurs utilisés). Mais elle est régulée pour alimenter le Raspberry Pi Pico (en 3,3V). Il est possible de relier des capteurs aux ports disponibles (GP0, GP1, GP27 et GP26) en utilisant les bus série ou I2C ou en les considérant comme des entrées/sorties classiques (il faut simplement l’indiquer dans le programme).

En ajoutant un chassis, des roues et une alimentation (pile ou batterie rechargeable), vous pourrez très facilement fabriquer un robot très compact. Le robot ci-dessous est un prototype en cours de tests, mais je vous en reparlerai lorsqu’il sera un peu plus fonctionnel.

Prototype de robot à 2 roues motrices

Pour utiliser la carte, vous devez télécharger et installer la bibliothèque PicoMotorDriver.py. Ensuite c’est très simple, il suffit d’indiquer le moteur à piloter (1 ou 2), le sens de rotation (f ou r) et la vitesse (de 0 à 100). Voilà un exemple de programme de test :

import PicoMotorDriver
from utime import sleep_ms

board = PicoMotorDriver.KitronikPicoMotor()
moteurDroit = 1
moteurGauche = 2
avant = "f"
arriere = "r"

while True:
    board.motorOn(moteurDroit, avant, 100)
    board.motorOn(moteurGauche, avant, 100)
    sleep_ms(2000)
    board.motorOn(moteurDroit, avant, 0)
    board.motorOn(moteurGauche, avant, 0)
    sleep_ms(1000)
    board.motorOn(moteurDroit, arriere, 100)
    board.motorOn(moteurGauche, arriere, 100)
    sleep_ms(2000)
    board.motorOn(moteurDroit, avant, 0)
    board.motorOn(moteurGauche, avant, 0)
    sleep_ms(1000)

Pico Robotics Board

Cette carte un légèrement plus grande (64,5 X 53,5 mm) mais elle permet de piloter jusqu’à 4 moteurs à courant continu (ou 2 moteur pas à pas) et 8 servomoteurs.

Attention, comme le rappelle Dominique Meurisse dans le blog de MC Hobby, les moteurs est les servomoteurs sont directement alimentés par la carte. Si vous utilisez des servomoteurs, la tension de votre alimentation doit rester comprise entre 5 et 6 V. D’ailleurs, je vous conseille vivement de lire son article (et bien sûr de respecter ses conseils).

Détail de la carte Pico Robotics Board de Kitronik

Pour les moteurs à courant continu, c’est le même principe que pour la carte Compact Motor Driver, il faudra utiliser la tension d’alimentation de vos moteurs (entre 3 et 10 V). Mais il est malheureusement impossible d’utiliser en même temps des moteurs 9V et des servomoteurs (5 ou 6V). Pour le Raspberry Pi Pico, il n’y a pas de problème (il sera toujours alimenté en 3,3V).

Il est possible de relier des capteurs aux ports disponibles en soudant de fils sur les emplacements prévus mais ce n’est pas extrêmement pratique puisque le Raspberry Pi Pico est au dessus. J’aurais préféré avoir 2 rangées de connecteurs un peu déportées (quitte à augmenter encore un peu la taille de la carte).

Carte Pico Robotics Board de Kitronik

Cette carte, permet de fabriquer un robot à 4 roues motrice. Pour info, le prototype ci-dessous utilise des roues mecanum (mais je ne vais pas rentrer dans les détails, ce sera certainement l’objet d’un autre article).

Prototype de robot à 4 roues motrices

Attention, la carte Pico Robotics Board n’utilise pas la même bibliothèque que la Compact Motor Driver vous pouvez la télécharger ici et installer le fichier PicoRobotics.py dans le Raspberry Pi Pico.

Ensuite, c’est exactement le même principe, il indiquez simplement le moteur à piloter (1, 2, 3 ou 4), le sens de rotation (f ou r) et la vitesse (de 0 à 100).

import PicoRobotics
from utime import sleep_ms
board = PicoRobotics.KitronikPicoRobotics()
moteurAvantDroit = 1
moteurAvantGauche = 2
moteurArriereDroit = 3
moteurArriereGauche = 4
marcheAvant = "f"
marcheArriere = "r"


while True:
    board.motorOn(moteurAvantDroit, marcheAvant, 100)
    board.motorOn(moteurAvantGauche, marcheAvant, 100)
    board.motorOn(moteurArriereDroit, marcheAvant, 100)
    board.motorOn(moteurArriereGauche, marcheAvant, 100)
    sleep_ms(2000)
    board.motorOn(moteurAvantDroit, marcheAvant, 0)
    board.motorOn(moteurAvantGauche, marcheAvant, 0)
    board.motorOn(moteurArriereDroit, marcheAvant, 0)
    board.motorOn(moteurArriereGauche, marcheAvant, 0)
    sleep_ms(1000)
    board.motorOn(moteurAvantDroit, marcheArriere, 100)
    board.motorOn(moteurAvantGauche, marcheArriere, 100)
    board.motorOn(moteurArriereDroit, marcheArriere, 100)
    board.motorOn(moteurArriereGauche, marcheArriere, 100)
    sleep_ms(2000)
    board.motorOn(moteurAvantDroit, marcheAvant, 0)
    board.motorOn(moteurAvantGauche, marcheAvant, 0)
    board.motorOn(moteurArriereDroit, marcheAvant, 0)
    board.motorOn(moteurArriereGauche, marcheAvant, 0)
    sleep_ms(1000)

Vous pouvez piloter des servomoteurs classiques ou utiliser des servomoteurs à rotation continue pour faire un robot (un jour, il faudra quand même que je fasse un châssis un peu plus joli).

Robot avec 2 servomoteurs à rotation continue

Pour contrôler un servomoteur, il suffit d’indiquer son numéro (de 1 à 8) et l’angle (de 0 à 180°). Sur les servomoteurs à rotation continue 90° correspond à l’arrêt. Il y a une petite vis pour les recalibrer, mais ça se redérègle très facilement (vous pouvez éventuellement bloquer la vis avec une goutte de colle chaude). À 0°, ils tournent à vitesse maxi dans un sens et à 180° à la vitesse maxi dans l’autre sens. Les autres valeurs sont les vitesses intermédiaires.

import PicoRobotics
from utime import sleep_ms
board = PicoRobotics.KitronikPicoRobotics()
moteurDroit = 1
moteurGauche = 2

while True:
    board.servoWrite(1, 180)
    board.servoWrite(2, 0)
    sleep_ms(2000)
    board.servoWrite(1, 90)
    board.servoWrite(2, 90)
    sleep_ms(1000)
    board.servoWrite(1, 0)
    board.servoWrite(2, 180)
    sleep_ms(2000)
    board.servoWrite(1, 90)
    board.servoWrite(2, 90)
    sleep_ms(1000)

Conclusion

Compte tenu de la faible différence de prix entre les 2 cartes, je pense que le Pico Robotics Board est beaucoup plus intéressante. Elle offre la possibilité de débuter avec un simple robot à 2 roues motrices et d’évoluer ensuite en rajoutant des éléments supplémentaires (roues, bras mobile, pince…).

Vous pourriez même concevoir un robot à 4 pattes (avec 8 servomoteurs) ou qui tient en équilibre (avec 2 moteurs pas à pas). Alors, n’hésitez pas à partager vos créations et surtout amusez vous.

Sources et liens utiles


Laisser un commentaire