dimanche 26 janvier 2020

Robot Raspberry Pi


Le robot que nous allons assembler dans ce tutoriel est une plate-forme mobile dont le mouvement est contrôlé par un Rasbperry Pi. Pour l'instant, le robot ne comportera pas de capteurs qui lui permettraient de prendre des décisions de façon autonome: il sera plutôt contrôlé par des commandes  que nous lui procurerons par SSH à partir d'un autre ordinateur ou d'un téléphone. Bien entendu, des capteurs pourront être ajoutés au robot dans une étape subséquente.

 Matériel
  • Un Raspberry Pi capable de communiquer en WiFi. N'importe quel modèle fera l'affaire, j'en ai même profité pour mettre à contribution mon antique Raspberry Pi 1 modèle B (muni d'une petite clé WiFi). Il faut que la communication SSH soit activée dans le logiciel "Configuration du Raspberry Pi".


  • Une plate-forme mobile munie de deux roues, chaque roue étant contrôlée par son propre moteur à courant continu. C'est relativement facile de s'en procurer une toute faite. Si vous préférez la construire vous-même, assurez-vous d'utiliser des moteurs munis d'une boîte d'engrenages, sinon les roues tourneront beaucoup trop vite.

  • Un pilote de moteur: il s'agit d'un petit circuit qui sert d'intermédiaire entre le Raspberry Pi et les moteurs, car le courant nécessaire pour faire tourner un moteur est beaucoup trop intense pour les délicates broches GPIO du Raspberry Pi. Dans ce tuto, j'utilise le module L298N photographié ci-contre, mais il existe plusieurs autres possibilités­. Si vous préférez utiliser le L293D, par exemple, vous trouverez des informations utiles dans cet article concernant le contrôle de moteurs à courant continu avec un Rasperry Pi. Le script en python fourni un peu plus loin dans le présent billet devrait fonctionner correctement peu importe le pilote de moteur que vous utiliserez.
  • Une source d'alimentation pour le Raspberry Pi. J'ai utilisé un chargeur mobile pour téléphone ("USB power bank") qui a rempli son rôle à la perfection. 

  • Une source d'alimentation pour les moteurs: on évite bien des problèmes potentiels en utilisant une source d'alimentation dédiée aux moteurs, distincte de celle qui alimente le Raspberry Pi. Pour mes tests, j'ai utilisé un accumulateur NiMH de 9 V, qui n'est certainement pas le meilleur choix (avec sa capacité de 175 mAh, mon robot n'ira pas très loin). Une batterie LiPo ou Li-Ion de 7,4 V ou 6 piles de format AA auraient été des choix plus appropriés.
Schéma du circuit

Le module L298N comporte des broches d'alimentations (GND et +12), 6 entrées qui permettent au Raspberry Pi de contrôler les moteurs (ENA, IN1, IN2, IN3, IN4, ENB), et 4 sorties vers les moteurs (OUT1, OUT2, OUT3, OUT4). Il y a également une sortie 5 V, que je n'ai pas utilisée.
  • Broche +12 du L298N: Borne positive de l'alimentation des moteurs (12 V est un maximum).
  • Broche GND du L298N: Borne négative de l'alimentation des moteurs et une broche GND du Raspberry Pi.
  • OUT1 et OUT2 du L298N branchées à un des moteurs.
  • OUT3 et OUT4 du L298N branchées à l'autre moteur
  • ENA du L298N broche BCM 25 (BOARD 22) du Raspberry Pi
  • IN1 du L298N  broche BCM 23 (BOARD 16) du Raspberry Pi
  • IN2 du L298N broche BCM 12 (BOARD 18) du Raspberry Pi
  • IN3 du L298N broche BCM 10 (BOARD 19) du Raspberry Pi
  • IN4 du L298N broche BCM 9 (BOARD 21) du Raspberry Pi
  • ENB du L298N broche BCM 11 (BOARD 23) du Raspberry Pi


Script en Python

Pour contrôler le robot, j'ai installé dans le Raspberry Pi le script en Python ci-dessous, et je l'ai exécuté par SSH au moyen d'un téléphone ou d'un autre ordinateur.

Les commandes sont des chiffres de 0 à 9, dont la disposition respecte une certaine logique si vous utilisez un pavé numérique:
    numeric-keypad
  • 5: Arrêt. Les deux moteurs sont à l'arrêt (broche "enable" au niveau logique bas).
  • 8: Marche avant en ligne droite: les deux moteurs tournent dans le même sens.
  • 2: Marche arrière en ligne droite: les deux moteurs tournent dans le même sens.
  • 4: Rotation vers la gauche: les deux moteurs tournent en sens contraire
  • 6: Rotation vers la droite: les deux moteurs tournent en sens contraire
  • 7: Virage à gauche en avançant: le moteur de droite tourne, mais pas celui de gauche
  • 9: Virage à droite en avançant: le moteur de gauche tourne, mais pas celui de droite
  • 1: Virage à gauche en reculant: le moteur de droite tourne, mais pas celui de gauche
  • 3: Virage à droite en reculant: le moteur de gauche tourne, mais pas celui de droite
  • 0: Arrêt du programme
-
-


Pour terminer, une courte vidéo du véhicule en action:



À lire également:

En utilisant un Arduino plutôt qu'un Raspberry Pi, j'avais fait un robot qui se déplace selon une trajectoire pré-programmée, un robot téléguidé, un robot suiveur de ligne, un robot éviteur d'obstacles...


Yves Pelletier (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire