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 ).
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 ?
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.
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 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
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
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
- Connectez votre Arduino au pc via un câble USB.
- Ouvrez le fichier Arduino_code.ino (lien de téléchargement dans les prérequis)
- Changez le type de la carte ainsi que le port série en fonction de ce que vous utilisez
- Téléversez sur la carte (ctrl + U)
Installez le firmware du robot mBot
- Connectez le mBot au pc via un câble USB B
- Ouvrez l’IDE Arduino et installez la librairie Makeblock (aide)
- Ouvrez le fichier Mbot_code.ino (lien de téléchargement dans les prérequis)
- Toujours dans l’IDE Arduino, changez le type de la carte et sélectionnez tool -> board -> arduino uno
- Téléverser sur la carte (ctrl + U)
Une fois le firmware correctement installé, redémarrez le robot. C’est la dernière étape !