mbot-xbee-tutorial-by-generation-robots

Téléopérer le robot éducatif mBot avec un module Xbee

Cette entrée a été publiée dans Tutoriels en robotique, et marquée avec , , , , le par .

Ce tutoriel est un exemple de mise en application d’un protocole série pour commander le robot éducatif mBot. Vous pouvez vous approprier le code pour mieux l’intégrer à vos projets (ou par exemple, dans les épreuves de la Robocup Jr).

mbot-robocup-jr-maze

Le robot mBot est très utilisé dans les épreuves de la Robocup Jr

La téléopération d’un robot avec une puce XBee présente 2 gros avantages :

  • Par rapport au pilotage avec du WiFi ou du BlueTooth, sa mise en place est beaucoup plus simple
  • Avec le module XBee, vous allez pouvoir faire remonter les informations en provenance des différents capteurs du mBot, ce que ne permet pas la téléopération depuis l’application MakeBlock pour mBot.

Comment va fonctionner notre montage ?

xbee-arduino-grove-systeme

Le système est composé de 2 modules Xbee (un qui aura le rôle d’émetteur et l’autre de récepteur), d’un robot pédagogique mBot et d’un module qui enverra la commande.

Dans ce tutoriel, ce dernier module sera composé d’une carte Arduino UNO et d’un joystick Grove. Ce système peut être remplacé par une manette Arbotix Commander, qui embarque déjà une puce XBee !

Côté code, nous allons adapter le code déjà existant pour la manette Arbotix Commander au système Arduino + Joystick.

La trame d’envoi des données utilisée ici est composée de 8 octets :

Index (n° octet) Description Exemple
0 nouveau paquet (0xff) 1111 1111 (dec: -1)
1 joystick droit V 0100 0000 (dec: 64)
2 joystick droit H 0000 0000 (dec: 0)
3 joystick gauche V 0000 0000 (dec: 0)
4 joystick gauche H 0000 0000 (dec: 0)/td>
5 états des boutons 0000 0000 (dec: 0)
6 extra 0000 0000 (dec: 0)
7 sécurité 0000 0000 (dec: 0)

Ici, nous avons envoyé sur le second octet (index 1) 64 en décimal, ce qui se traduit en 0100 0000 en binaire.

Dans notre système carte Arduino + joystick, nous utiliserons un seul joystick, les seules données importantes sont donc l’octet 0 (nouveau paquet), 1 (joystick droit V – Vertical), 2 (joystick droit H – Horizontal) et 7 (sécurité).

Pour traduire les valeurs des joysticks en commande moteurs, voilà les formules mathématiques que vous allez utiliser :

Vitesse du moteur droit = joystick droit V – joystick droit H
Vitesse du moteur gauche = joystick droit V + joystick droit H

Ce qui nous donne donc, en utilisant le paquet envoyé précédemment :

Vitesse du moteur droit = 64 – 0 = 64
Vitesse du moteur gauche = 64 +0 = 64

Le robot ira donc tout droit.

Logiciels, librairies, firmware donc vous aurez besoin pour ce tutoriel

Configuration des puces XBee

Chaque puce XBee doit être configurée à l’aide du logiciel XCTU. Répéter les étapes de configuration ci-dessous autant de fois qu’il y a de puces XBee.
1. Connectez votre puce XBee à l’ordinateur via le XBee explorer USB.xbee-explorer-usb-sparkfun
2. Connectez-vous à la puce XBee avec le logiciel XCTU. La vidéo ci-dessous vous explique comment faire.

3. Réglez ensuite les paramètres pour chacun des XBees utilisés (aidez-vous du tableau ci-dessous) :

    • Sélectionnez le XBee à gauche (1) et aller dans l’onglet configuration (2)
    • Changez l’id du XBee (il faut qu’il soit unique) et l’adresse de destination (3)
    • Vérifiez son channel ainsi que le baud rate (identiques entre tous les XBee qui doivent communiquer entre eux) (3)
    • Cliquez sur “Write” pour enregistrer (4)

xbee-chiffres

XBee connecté à Channel Destination address Source address Interface data rate
mBot C 2 1 38400
USB PC C 1 2 38400

Connexions à effectuer sur le robot mBot

xbee-10

Vous trouverez dans le tableau ci-dessous, le récapitulatif des différents raccordements entre le microcontrôleur du robot mBot et la XBee explorer USB.

XBee mBot
5V 5V
GND GND
RX 10
TX 9

Le port 2 du robot mBot est utilisé par la puce XBee, ne rien brancher dessus !

Connexions à faire sur la carte Arduino

xbeet-arduino-mbot-connexion

xbee-arduino-mbot-connexion-2

Vous trouverez dans le tableau ci-dessous, le récapitulatif des différents raccordements entre la carte Arduino, la puce XBee et le joystick Grove.

XBee Joystick Arduino
Vcc 3v3
GND GND GND
RX 9
TX 10
Y A1
X A0
Key (unused)

Installez le firmware de la carte Arduino

  1. Connectez votre Arduino au pc via un câble USB.
  2. Ouvrez le fichier Arduino_code.ino (lien de téléchargement dans les prérequis)
  3. Changez le type de la carte ainsi que le port série en fonction de ce que vous utilisez
  4. Téléversez sur la carte (ctrl + U)

Installez le firmware du robot mBot

  1. Connectez le mBot au pc via un câble USB B
  2. Ouvrez l’IDE Arduino et installez la librairie Makeblock (aide)
  3. Ouvrez le fichier Mbot_code.ino (lien de téléchargement dans les prérequis)
  4. Toujours dans l’IDE Arduino, changez le type de la carte et sélectionnez tool -> board -> arduino uno
  5. Téléverser sur la carte (ctrl + U)

Une fois le firmware correctement installé, redémarrez le robot. C’est la dernière étape !