Construire son robot à base de Raspberry Pi – étape 2 : les moteurs

Etape 1 : construire le châssis
Etape 2 : les moteurs

On l’a vu dans un premier article, construire le châssis du robot est une chose aisée. Voyons maintenant comment faire fonctionner les quatre moteurs. Deux solutions s’offrent à nous.

Faire fonctionner les moteurs

La première, c’est l’utilisation des ports GPIO sans carte de contrôle de moteurs. On branche directement les moteurs sur les ports. Ça fonctionne mais ça limite l’utilisation qu’on peut faire de notre robot. C’est parfait pour faire quelques tests et se faire la main avec le code. On peut en effet facilement démarrer soit en bash soit en python avec la librairie RPi.GPIO.

raspberry-pi-zero-gpio

Si vous avez déjà lu un article sur comment allumer une LED avec votre Raspberry, c’est exactement la même chose. Le problème est que tel quel, vous ne pourrez pas gérer le sens de rotation des moteurs électriques. En effet, les moteurs classiques DC (à courant continu) peuvent fonctionner dans les deux sens de rotation. Il n’ont pourtant que deux fils pour la plupart. Il font donc ajouter en plus du branchement au ports GPIO, un montage électronique pour pouvoir gérer le sens de rotation. Sans ça, votre robot n’ira qu’en marche avant …

Principe de fonctionnement d’un moteur à courant continu :

moteur-courant-continu

Sur ce type de moteur, en inversant les polarités, on inverse également le sens de rotation. Facile 🙂

ZeroBorg : la carte de contrôle tout en un

zeroborg-piborgLa seconde option est d’utiliser une carte de contrôle. Vous en trouverez à tous les prix mais mon choix s’est porté sur le ZeroBorg de PiBorg. Le modèle KS1 pour être précis. Pour à peine plus de 20 euros, il vous permet de contrôler jusqu’à 4 moteurs DC ou 2 moteurs pas à pas. Ca tombe bien, j’ai quatre moteurs à faire fonctionner. Le grand plus, c’est une librairie python avec plusieurs scripts d’exemples qui sont disponibles. Vous les trouverez à cette adresse : https://github.com/piborg/zeroborg

La voici branchée sur mon robot :

robot-complet-dessus

Nous allons maintenant voir comment procéder, depuis l’activation du bus I2C aux premiers tours de roues 🙂

Tout d’abord, il faut savoir que la ZeroBorg utilise le Bus I2C des ports GPIO. Il faut donc l’activer si ce n’est pas déjà fait (par défaut c’est désactivé). Pour faire la manipulation, taper dans un terminal les commandes suivantes (on commence par avoir un système à jour) :

sudo apt-get update
sudo apt-get upgrade

Accessoirement, installer les outils de contrôle de fonctionnement I2C :

sudo apt-get install python-smbus
sudo apt-get install i2c-tools

Maintenant, on peut passer à l’activation du bus :

sudo raspi-config

Vous arrivez sur la fameuse fenêtre bleue :

raspi-config-advanced_options

A l’aide des flèches, descendez jusqu’à l’option 8 « Advanced Options » et appuyez sur entrée.

La fenêtre des options avancées s’ouvre, sélectionnez « A7 I2C » :

raspi-config-i2c

On vous demande alors si vous souhaitez activez I2C. On répond « yes » !

raspi-config-enable_i2c

On vous demande ensuite si le module doit être chargé lors du boot. Encore une fois on répond « yes ».

raspi-config-load_i2c_module_at_boot

Vous revenez ensuite au menu principal, utiliser la touche tabulation pour quitter. Vous devez maintenant rebooter pour que les changements soit pris en compte. On maintenant prêt à installer et utiliser notre ZeroBorg.

Branchements électriques de la carte

Le branchement au Raspberry est facile. Soit on utilise 6 câbles femelle/femelle soit on soude via les PINS le ZeroBorg sous le Raspberry. Personnellement, j’ai choisi le câblage. Voilà notre carte branchée au ports du bus I2C.

zeroborg-branchement

Il reste à l’alimenter. On peut y faire passer entre 2,7 et 10,8 volts. C’est parfait. On va utiliser la sortie 3,3 volts GPIO (broche 17, voir schéma tout en haut de page).

Broche 17 : 3,3 volts
Broche 20 : GND (masse)

zeroborg-alimentation

Nous voilà désormais complètement câblé … non, il reste les moteurs ! Prenez votre petit tournevis plat, il y en a pour 1 minute.

Il suffit de suivre l’exemple de la photo ci-dessous :

zeroborg-cablage-moteurs

Ce coup ci on est prêt. Nous pouvons passer au code 🙂

Comme expliqué en début d’article, le ZeroBorg a une libraire Python créée spécialement pour. Cela facilite grandement la prise en main puisqu’on faire tourner un moteur en quelques lignes de code et en moins de 5 minutes.

Pour ce faire, enchainez les commandes suivantes dans votre terminal :

sudo mkdir /zeroborg
cd /zeroborg
sudo wget http://www.piborg.org/downloads/zeroborg/examples.zip
sudo unzip examples.zip
sudo chmod +x install.sh
./install.sh

Passons au code, en créant un script de test :

sudo nano test.py

Copiez / coller ensuite ce code :

import ZeroBorg
import time
ZB = ZeroBorg.ZeroBorg()
ZB.Init()
ZB.SetMotor1(0.5)
time.sleep(4)
ZB.SetMotor1(0)
exit()

Le code ci-dessus fait fonctionner le moteur 1 à 50% de sa vitesse maximale pendant 4 secondes avant de se couper. Vous l’aurez compris, en ajoutant ZB.SetMotor2(1), le second moteur tournera à 100%.

Une valeur négative le fera tourner en sens inverse. Par exemple pour faire tourner les moteurs 1 et 2 en sens inverse, le code sera :

import ZeroBorg
import time
ZB = ZeroBorg.ZeroBorg()
ZB.Init()
ZB.SetMotor1(-1)    # rotation inverse moteur 1
ZB.SetMotor2(-1)    # rotation inverse moteur 2
time.sleep(4)
ZB.SetMotor1(0)     # arret moteur 1
ZB.SetMotor2(0)     # arret moteur 2
exit()

Facile non ? et bien voilà, nous savons faire tourner nos moteurs en quelques lignes de code. A vous de jouer maintenant 🙂 Utilisez les quatre moteurs, marche avant, marche arrière.

Toutes les fonctions disponibles sont expliquées ici : https://www.piborg.org/zeroborg/examples#api

Pour stopper l’ensemble des moteurs en une ligne :

ZB.MotorsOff()

Pour tourner à droite ou à gauche, il suffit de faire fonctionner les deux moteurs d’un même côté. Par exemple, pour tourner à droite, on fera tourner uniquement les deux moteurs situés sur la droite. Inversement pour tourner à gauche.

Dans le prochain article, nous verrons comment contrôler notre robot avec les flèches du clavier et nous ajouterons des leds et un klaxon.

 

 

 

 

 

Vous avez aimé ? Partagez 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Système anti spam : indiquez les chiffres que vous voyez. *