P35 Hack-a-Wii : Emulation de wiimote pour rendre la Wii accessibles aux personnes handicapées : Différence entre versions

De Wiki de Projets IMA
(Partie 2 : Asservissement d'une WiiMote semaine 3 et 4)
(La manette)
Ligne 109 : Ligne 109 :
 
== Partie 2 : Asservissement d'une WiiMote semaine 3 et 4 ==
 
== Partie 2 : Asservissement d'une WiiMote semaine 3 et 4 ==
 
=== La manette ===
 
=== La manette ===
 +
[[Fichier:Wiimote back inside.png|thumb|right]]

Version du 17 février 2015 à 20:29


Emulation de wiimote avec une kinect



Informations générales

Page de wiki du projet Hack-a-Wii : Emulation de wiimote pour rendre la Wii accessibles aux personnes handicapées

Étudiant Fabien Violier

Tuteur Laurent Grisoni

Contexte : Dans un contexte de handicap physique et/ou mental, des éducateurs utilisent la Wii comme exercice ludique. Cependant, certains utilisateurs ont des difficultés motrice a se servir de la manette de la Wii la WiiMote.

But : Afin de palier à ces problèmes de motricité, il a été proposé de passer par l'utilisation d'une kinnect et de l'émulation d'une WiiMote. Au vue de la période relativement courte allouer au projet, seul la partie émulation de la WiiMote sera abordée.

Présentation générale du projet


Le principe du projet est de se servir d'une kinnect pour jouer sur une Wii afin de palier des problèmes de motricité chez des utilisateurs handicapés.
Le schéma d'une manette de jeu se décomposerai comme suit :
PFE prez du projet global.png

Dans la suite de cette page, il ne sera uniquement question du contrôle de la WiiMote. L'organisation de cette page est relativement chronologique et suit 2 parties principales causées par l'impossibilité de poursuivre la première partie

Partie 1 : émulation d'une WiiMote via des modules Bluetooth semaine 1 et 2

Prise en main du Bluetooth, découverte des modules Bluetooth

Lors de la première réunion du projet, nous avons décidé d'explorer les différents modules Bluetooth usuellement piloté par un plateforme Arduino. Nous avons choisi cette piste car l'Arduino nous permet un contrôle plus "bas niveau" et permettrai un panel de configuration du Bluetooth plus large. L'idée étant de reproduire une WiiMote et d'envoyer les mêmes messages que celle-ci.
Afin que l’illusion soit complète et qu'il n'y ai pas de problème de connexion entre cette reproduction de WiiMote et la Wii, il faut avoir accès à un large panel de configuration comme :

  • le nom
  • l'adresse MAC
  • le code PIN
  • la "Class Of Device" (COD)
  • ...

Au vue de l'état de l'art actuel dans le domaine, les éléments de configuration indispensable à la connexion n'ont pas pu être listé.

Les modules Bluetooth

Le Module série simple d'utilisation
module basic

Ce module permet d'établir une liaison série facilement. Il n'y a pas de configuration possible.
Ce module ne répond dons pas à nos besoin. Nous l'avons rapidement abandonnée pour un module offrant d'avantage de configuration.

Le module HC 06
module HC 06

Ce module permet d’établir une communication série simple, la configuration est rapide et simple. Il n’est cependant pas possible de configurer entièrement le module.
Pour configurer le module, on utilise les commandes AT. Attention toutefois à la tension d’entrée sur la broche Rx, le module accepte du 3.3V il est donc recommandé de faire un pont diviseur de tension sur cette broche.
Le protocole de configuration est le suivant : (pour ce module il ne faut pas envoyer de retour charriot « \r\n », entre chaque commande il est recommandé d’attendre 2secondes.

Emission : AT
Attente
Réception : OK

Il est possible de changer le nom du périphérique, le code PIN ainsi que la vitesse de communication, par défaut la vitesse est de 9600BAUD, cette vitesse resterai utilisable peu importe la vitesse choisie.
Changer le nom : AT+NAMEnomduperipherique
répond OKsetname
Changer le code pin : AT+PINxxxx
répond OKsetpin
Changer la vitesse de transmission : AT+BAUDx ‘x’ allant de 1 à 9
1 correspond à 1200BAUD
4 correspond à 9600 BAUD
Ce module n’est donc pas adaptée à l’émulation d’une wiimote celui-ci n’offrant pas suffisamment de personnalisation du module.

Le module HC 05
module HC 05

Ce module permet d’établir une communication Bluetooth. Ce module permet aussi un large panel de configuration possible. On configure ce module en utilisant des commandes AT.
Le protocole est le suivant : On envoie une commande AT\r\n à une vitesse de 38400 BAUD, La pin « KEY » du module doit être mise à VCC. Le module accepte du 0-5V.
Suite à l’envoie de la commande AT\r\n le module répond OK.

Configuration de la WiiMote

Après avoir connecté la WiiMote à un ordinateur sous linux, l'appel de la fonction hidtools info nous renvoie les informations suivantes.

BD Address:  00:24:1E:B8:87:6F
Device Name: Nintendo RVL-CNT-01
LMP Version: 2.0 (0x3) LMP Subversion: 0x31c
Manufacturer: Broadcom Corporation (15)
Features: 0xbc 0x02 0x04 0x38 0x08 0x00 0x00 0x00
  	 <encryption> <slot offset> <timing accuracy> <role switch>
  	 <sniff mode> <RSSI> <power control> <enhanced iscan>
  	 <interlaced iscan> <interlaced pscan> <AFH cap. slave>

Le site internet wiibrew.org/wiki nous apporte des informations complémentaire sur la configuration

Wii Remote/old Wii Remote Plus
Name Nintendo RVL-CNT-01
Vendor ID 0x057e
Product ID 0x0306
Major Device Class 1280
Minor Device Class 4
Service Class 0
(Summary of all Class Values) 0x002504

Configuration des modules

J'ai essayé de configurer les modules de façon a imiter une WiiMote. Voici la configuration que j'ai utilisé pour le module HC 05.

AT+NAME=Nintendo RVL-CNT-01\r\n nom du module
AT+BIND=0024,1E,B8876F\r\n adresse mac du module
AT+CLASS=2504\r\n (source [1] )
apparaît en manette de jeu lors de la connexion au pc
AT+ROLE=0\r\n (par défaut) slave
AT+PSWD=1234\r\n code PIN du module
AT+CMODE=1\r\n (défaut) le périphérique se connecte sur n'importe quelle adresse

Cette configuration n'a pas permis d'établir une connexion entre la Wii et notre système.
Le site wiibrew.org/wiki indique que le mot de passe Wiimote suit l'adresse mac en ASCII. La configuration suivante a également échoué.

AT+BIND=3635,34,333231\r\n (ce qui correspond en code ASCII à 65,4,321
AT+PSWD=123456\r\n

Conclusion

La WiiMote étant un périphérique utilisant un protocole HID, il n'est pas possible, ou pas encore réalisé, d'établir une connexion en utilisant les modules précédents, il est nécessaire d'utiliser des modules intégrant de base le protocole. Cependant, au vue du temps restant allouer au projet, il a été proposé de changer de point de vue et d'essayer de contrôler la WiiMote au lieu de l'émuler.

Partie 2 : Asservissement d'une WiiMote semaine 3 et 4

La manette