1. Introduction

Le projet dont il est question dans ce billet vise à combiner les capacités du Thymio II et de l'Arduino Uno afin de pouvoir contrôler à distance ledit robot. La mise en oeuvre de ce projet nécessite notamment d'user de la communication par signaux infrarouges, qui est la clef pour obtenir un résultat qui permette un contrôle sans fil et en temps réel d'un Thyio, via un Arduino. Ce projet se fixe comme objectif de permettre à une personne de contrôler un Thymio à distance et en temps réel et de le faire interagir avec un autre robot, sous la forme d'un pseudo-jeu. Ce travail peut être divisé par étapes:

1) Acquérir la capacité d'envoyer des signaux infrarouges avec un Arduino.

2) Programmer un Thymio afin qu'il se comporte de la manière indiquée par les données envoyées par l'utilisateur de l'Arduino.

3) Le faire se mouvoir en compagnie d'un autre robot contrôlé de la même manière et créer une interaction entre eux.

2. Matériel et méthodes

Le matériel nécessaire est le suivant :

2x Arduino Uno. Cette petite plaquette et son microcontrôleur peut être programmée afin de gérer l'envoi et la réception de signaux électriques. Son usage en devient donc particulièrement commode pour un projet basé sur l'envoi de signaux infrarouges.

2x Joystick pour Arduino PS2. Ces joysticks spécialement conçus pour l'Arduino lui envoient trois types de données : l'axe X, l'axe Y et l'axe Z. Les deux premiers correspondent à la direction, tandis que le dernier est en fait le bouton sur lequel il est possible d'appuyer

2x Emetteur infrarouge. Ces émetteurs infrarouges conçus pour l'Arduino nécessitent l'installation d'une librairie spéciale afin de pouvoir fonctionner.

2x Thymio II. Ce robot peut être connecté via USB à un ordinateur. De là, un logiciel spécifique permet de le programmer.

Préparation de l'Arduino

Le schéma suivant indique comment brancher l'émetteur et le joystick sur l'Arduino : Untitled_Sketch_2_bb.png

Pour envoyer des signaux infrarouges RC5, il faut installer une librairie externe sur dans le programme Arduino. Nous avons choisi IRremote, dont nous fournissons les références en fin de billet. Cette librairie demande à ce que l'émetteur soit branché impérativement sur la pin 3. De plus, l'axe Z du joystick doit être branché sur une pin digitale. Il ne faut pas perdre de vue que le Thymio ne peut recevoir que selon le protocole RC5. Les signaux envoyés par l'Arduino doivent donc aussi être RC5.

Les pins sur lesquelles le joystick est branché doivent être en INPUT. Les déplacements du joystick renvoient une valeur pour chacun des axes. Dès lors, on décide d'envoyer un signal à partir d'un certain seuil dépassé dans une certaine direction. Ci-dessous, l'utilisateur qui pousse l'axe X à fond déclenche l'envoi d'une certaine valeur par l'émetteur :

if(analogRead(X_pin) > 500)

{

count = (++count % 2);

Serial.println(count);

irsend.sendRC5(0x2, 12);

delay(200);

}

Préparation du Thymio

Pour le Thymio, on définit son comportement en fonction des mêmes valeurs que sur l'Arduino. Si l'utilisateur qui pousse l'axe X en avant envoie 2 au Thymio, ce dernier use de l'événement rc5.command afin de savoir s'il doit avancer ou reculer, ou autre.

Lorsque le Thymio entre en collision avec un objet, il change de couleur et s'arrête. Cette interaction minimale avec son environnement s'écrit comme suit :



onevent tap

if compteur == 0 then

compteur = 1

motor.left.target = 0

motor.right.target = 0

call leds.top(0, 0, 32)

elseif compteur == 1 then

compteur = 0

motor.left.target = 0

motor.right.target = 0

call leds.top(32, 0, 0)

end

La variable compteur est nécessaire pour le faire passer d'une couleur à une autre.

Préparation pour le second utilisateur

Afin de pouvoir utiliser le même procédé sur deux robots différents dans la même pièce, les codes doivent être différents. Il faut tout simplement définir de nouvelles valeurs à envoyer par l'émetteur (et faire correspondre celles du Thymio). Sans cela, les robots obéiront au même code, il sera impossible de les contrôler indépendamment.

L'intégralité des codes est trouvablesur le git.

3. Résultats

Le projet fonctionne : deux personnes peuvent contrôler un robot à distance et en temps réel. Une collision entre les deux machines engendrera un changement de couleur. L'utilisation des infrarouges permet cela, et le joystick offre une certaine ergonomie dans la manoeuvre de l'utilisateur.

4. Discussion

Le projet présente néanmoins un intérêt très limité en l'état. User d'un joystick peut être une bonne idée, mais peut-être peut-il servir à régler la vitesse de déplacement du robot selon l'intensité avec laquelle l'utilisateur pousse dessus. De plus, l'interaction entre les robots est très limitée. La seule activité possible est de les faire se rentrer dedans continuellement afin d'admirer les changements de couleur entre le rouge et le bleu. Ce dernier point pourrait sans doute être amélioré par l'utilisation d'un contrôleur plus évolué qu'un joystick ( qui ne possède qu'un bouton) ou alors la mise à profit d'autres fonctionnalités du Thymio.

5. Conclusion

Malgré ses limitations, le projet est là où il se voulait : il rend possible le contrôle de deux Thymio, indépendants,à distance à l'aide des infrarouges.

Références Librairie Irremote pour envoyer des infrarouges