Box Bot
Aimeriez-vous construire votre propre robot ? Alors, ne cherchez pas plus loin que le Box Bot, qui est une bonne introduction à la robotique à base de Pi.
1. Choisissez votre châssis
Un carton peut constituer un excellent squelette pour votre robot, mais il en faut un avec suffisamment de place pour contenir le Raspberry Pi, le boîtier de piles et le câblage. Si vous voulez que le robot puisse être piloté sans fil, vous aurez aussi besoin d’espace pour des éléments supplémentaires.
2. Ajoutez les moteurs et les roues
Fixez les moteurs, les roues et la roulette pivotante sous le carton en les collant avec du scotch double face. Les roues sont à l’avant et la roulette boule à l’arrière. Percez deux petits trous sous le carton pour pouvoir passer les câbles du moteur (voir l’illustration).
3. Connectez la carte contrôleur
La carte contrôleur se connecte aux broches du GPIO de votre Raspberry Pi 3 (voir schéma). Si vous avez un modèle de Pi différent, avec un autre nombre de broches, allez sur le site Web Cambridge Raspberry Jam pour des informations sur le détail des connexions.
4. Câblez le tout
Assurez-vous que les piles sont insérées dans le boîtier, mais que le boîtier n’est pas allumé. Les câbles du boîtier doivent être reliés selon le schéma. Connectez le moteur droit à « Motor A » sur la carte contrôleur et le moteur gauche à « Motor B ». Pour le moment, le sens des câbles du moteur n’a pas d’importance.
5. Codez les roues
Les broches du GPIO pilotent les moteurs. On utilise les broches 9 et 10 pour contrôler le moteur A (moteur droit) et les broches 7 et 8 pour le moteur B (moteur gauche). Branchez votre Pi à une alimentation, un écran, une souris et un clavier, puis saisissez les commandes suivantes dans un terminal afin de créer un répertoire pour tout le code du robot :
cd ~
mkdir EduKitRobotics
cd EduKitRobotics
Ensuite, saisissez une commande pour créer un nouveau script Python dans l’éditeur Nano :
nano 3-motors.py
À présent, entrez le code suivant :
# CamJam EduKit 3 - Robotics
# Worksheet 3 – Code de test du moteur
import RPi.GPIO as GPIO # Import de la bibliothèque GPIO
import time # Import de la bibliothèque time
# Définition des modes GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# Définition des modes des broches GPIO
GPIO.setup(7, GPIO.OUT)
GPIO.setup(8, GPIO.OUT)
GPIO.setup(9, GPIO.OUT)
GPIO.setup(10, GPIO.OUT)
# Arrêt de tous les moteurs
GPIO.output(7, 0)
GPIO.output(8, 0)
GPIO.output(9, 0)
GPIO.output(10, 0)
# Allumage du moteur droit en marche avant
GPIO.output(9, 0)
GPIO.output(10, 1)
# Allumage du moteur gauche en marche avant
GPIO.output(7, 0)
GPIO.output(8, 1)
# Attente d’une seconde
time.sleep(1)
# Réinitialisation des broches GPIO (et arrêt des moteurs)
GPIO.cleanup()
Quand vous avez collé le code, appuyez sur Ctrl + X puis Y, et la touche Entrée pour enregistrer le fichier.
6. Testez les roues
Votre robot naissant étant toujours connecté à la souris, au clavier et à l’écran, allumez le boîtier de piles. Soulevez votre robot de telle sorte que ses roues ne touchent plus le sol et saisissez la commande suivante dans un terminal afin d’exécuter votre script Python :
sudo python3 3-motors.py
Les deux roues doivent tourner une seconde. Si l’une des roues tourne dans le mauvais sens, il suffit de permuter les deux câbles reliant le moteur en question à la carte contrôleur. Quand les deux roues tournent correctement, vous avez un robot qui peut avancer en ligne droite.
7. Ajoutez la direction
Chaque moteur utilise deux broches du GPIO du Pi. En activant et en désactivant ces broches selon différentes combinaisons, votre robot va pouvoir se déplacer en avant, en arrière, à gauche et à droite. Nous allons créer un nouveau script Python dans Nano avec la commande suivante saisie dans un terminal :
cd ~/EduKitRobotics nano 4-driving.py
Retournez sur le site du livre et collez le code suivant :
# CamJam EduKit 3 - Robotics
# Worksheet 4 – Rouler et tourner
import RPi.GPIO as GPIO # Import de la bibliothèque GPIO
import time # Import de la bibliothèque time
# Définition des modes GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# Définition des variables pour les broches GPIO du moteur
pinMotorAForwards = 10
pinMotorABackwards = 9
pinMotorBForwards = 8
pinMotorBBackwards = 7
# Définition des modes des broches GPIO
GPIO.setup(pinMotorAForwards, GPIO.OUT)
GPIO.setup(pinMotorABackwards, GPIO.OUT)
GPIO.setup(pinMotorBForwards, GPIO.OUT)
GPIO.setup(pinMotorBBackwards, GPIO.OUT)
# Arrêt de tous les moteurs
def StopMotors():
GPIO.output(pinMotorAForwards, 0)
GPIO.output(pinMotorABackwards, 0)
GPIO.output(pinMotorBForwards, 0)
GPIO.output(pinMotorBBackwards, 0)
# Allumage des deux moteurs en marche avant
def Forwards():
GPIO.output(pinMotorAForwards, 1)
GPIO.output(pinMotorABackwards, 0)
GPIO.output(pinMotorBForwards, 1)
GPIO.output(pinMotorBBackwards, 0)
# Allumage des deux moteurs en marche arrière
def Backwards():
GPIO.output(pinMotorAForwards, 0)
GPIO.output(pinMotorABackwards, 1)
GPIO.output(pinMotorBForwards, 0)
GPIO.output(pinMotorBBackwards, 1)
GPIO.cleanup()
Quand c’est fait, pressez les touches Ctrl + X puis Y, et Entrée pour sauver le fichier. Dans un terminal, saisissez la commande suivante pour exécuter le code (votre robot ne se déplacera pas, mais il va contrôler le code à la rechercher d’erreurs) :
sudo python3 4-driving.py
8. Ajoutez le mouvement
Pour déplacer votre robot, vous devez modifier le code que vous avez saisi à l’étape précédente. Ajoutez les lignes suivantes, juste avant la dernière ligne de code, GPIO.cleanup() :
Forwards()
time.sleep(1)
Backwards()
time.sleep(1)
StopMotors()
Exécutez à nouveau le script avec python3 4-driving.py. Votre robot va avancer pendant une seconde puis reculer pendant une seconde. Assurez-vous que le câble d’alimentation du Raspberry Pi est assez long pour que votre robot soit libre de ses mouvements.
9. Prenez le contrôle
Vous aurez besoin d’adapter le code pour ajouter le mouvement à gauche et à droite. Modifiez le script driving.py une dernière fois en ajoutant ces lignes avant les lignes de l’étape 8 :
# Tourner à gauche
def Left():
GPIO.output(pinMotorAForwards, 0)
GPIO.output(pinMotorABackwards, 1)
GPIO.output(pinMotorBForwards, 1)
GPIO.output(pinMotorBBackwards, 0)
# Tourner à droite
def Right():
GPIO.output(pinMotorAForwards, 1)
GPIO.output(pinMotorABackwards, 0)
GPIO.output(pinMotorBForwards, 0)
GPIO.output(pinMotorBBackwards, 1)
Left()
time.sleep(0.5)
Right()
time.sleep(0.5)
Exécutez à nouveau le code (avec Python3 4-driving.py) et votre robot devrait serpenter sur le sol.
Maintenant, modifiez les nombres saisis dans la dernière section du code, à côté des time.sleep. Ces chiffres déterminent la durée, en secondes, des mouvements de votre robot dans les différentes directions.
En modifiant ce code, vous pouvez tracer une route pour votre robot.
Rendez-vous sur le site Web CamJam (camjam.me) si vous voulez aller encore plus loin avec le Box Bot !