La Wiimote communique avec le Wii via une liaison sans fil Bluetooth. Le contrôleur Bluetooth est une puce Broadcom 2042, qui est conçu pour être utilisé avec les appareils HID (interaction homme <-> machine).
La Wiimote n'apparait pas par défaut dans les périphériques Bluetooth. Il faut la
synchroniser, soit en appuyant sur A + B + 1 + 2, ou en appuyant sur le bouton de
synchronisation rouge dans l'emplacement où se trouve les piles. Une fois dans ce mode, la Wiimote peut être détecté par la Wii (ou un PC) et synchronisé. Pendant le mode synchronisation les 4 LED de la wiimote clignotent.La Wiimote peut alorscommuniquer avec la Wii (ou le PC).
L'interface entre les 2 est composée de 14 Entrées et 10 Sorties.
Les sorties :
0x11 : LED de la wiimote
0x12 : Contrôle des capteurs de mouvements
0x13 : Vibration
0x14 : Vibration
0x15 : Vibration
0x16 : Inconnu
0x17 : Inconnu
0x18 : Inconnu
0x19 : Vibration
0x1A : Vibration
Les entrées :
0x20 : Port d'extension (nunchuk, manette classique)
0x21 : Non utilisé
0x22 : Non utilisé
0x30 : Boutons (A,B,1,2,Home,-,+)
0x31 : Detections de mouvements
0x32 : Non utilisé
0x33 : Detections de mouvements
0x34 : Non utilisé
0x35 : Detections de mouvements
0x36 : Non utilisé
0x37 : Detections de mouvements
0x3D : Non utilisé
0x3E : Detections de mouvements
0x3F : Detections de mouvements
Les sorties correspondent aux paquets de données envoyés de la Wii (ou du PC) à la Wiimote
Les entrées correspondent aux paquets de données envoyés de la Wiimote à la Wii (ou du PC).
Dans le champ de données d'un paquet, on trouve alors des informations de ce type :
"A1 30 00 00"
A1 veut dire qu'on observe un paquet entrant (ça serait 52 pour un paquet sortant), sur l'entrée n°30 (30), avec à la suite 4 octets de données qui correspondent donc à l'état des boutons.
Voici plus de détails par rapports aux entrées :
Les boutons :
Les données "A1 30 00 08", veulent dire que le bouton A est actif.
Un paquet avec les données "A1 30 00 00" est envoyé quand aucun bouton n'est enfoncé.
Si le bouton 1 et 2 sont actif, on aura un paquet avec les données "A1 30 00 03" (0x0001 + 0x0002).
Voici les valeurs hexadécimales pour chaque bouton :
1 : 0x0001
2 : 0x0002
A : 0x0004
B : 0x0008
- : 0x0010
Home : 0x0080
Flèche Gauche : 0x0100
Flèche Droit : 0x0200
Flèche Haut : 0x0400
Flèche Bas : 0x0800
+ : 0x1000
Détection de mouvement :
Par défaut, la Wiimote n'envoie pas les informations concernant la détection de mouvement.
Pour activer l'envoi, il faut envoyé un paquet sur la sortie n°12 de ce type "51 12 00 31"
le dernier octet (31), permet de spécifier sur quel entrée, la wiimote doit envoyer le flux d'information correspondant (31,33,35,37,3E ou 3F).
Dès que la wiimote reçoit ce paquet (51 12 00 31), elle va envoyer en temps réel les
informations des capteurs sur l'entrée 31.
Pour arrêter le streaming, il suffit d'envoyer un paquet avec ces données "51 12 02 30".
On aura des paquets de données de ce type en streaming :
"a1 31 40 00 86 8a a5"
Si on aurait utilisé l'entrée 33, on aurait eu :
"a1 33 40 00 86 8a a5 ff ff ff ff ff ff ff ff ff ff ff ff ff"
tout les FF étant des bits de bourrage, car les informations des capteurs de mouvements n'ont besoins que de 5 octets.
L'entrée 31 permet de transférer 5 octets à la fois, l'entrée 33 => 17 octets, l'entrée 35,37,3E et 3F => 19 octets.
Dans le paquet de donnée "a1 31 40 00 86 8a a5", 86 8A et A5 sont les états des 3 axes de la wiimote (voir dessin).
3ème octet de données (86) => Axe X
4ème octet de données (8A) => Axe Y
5ème octet de données (A5) => Axe Z
Le détecteur utilise un système de coordonnées avec l'axe des abscisses positive à la gauche, et l'axe Z positif ascendant. Les forces sur chaque axe sont digitalisées en entiers non signés de 8 bits, le zéro correspond à 0x80.
On a donc 256 états possible par axe allant de -128 à 128.
Les sorties :
4 LED des joueurs :
La wiimote contient 4 LED qui indique le numéro du joueur correspondant à la Wiimote.
Comme vu ci-dessus, on utilise la sortie n°11, chaque paquet contient 1 octet de données.
Exemple : "52 11 10" ce paquet permet d'allumer la LED n°1.
LED 1 => 10 (10000 en binaire)
LED 2 => 08 (01000 en binaire)
LED 3 => 04 (00100 en binaire)
LED 4 => 02 (00010 en binaire)
Pour allumer les 4 LED, il faut mettre 1E (11110 en binaire).
Le retour de force (vibreur) :
Les informations d'activation/désactivation du vibreur circulent au choix sur la sortie
13,14,15,19 ou 1A en envoyant un paquet de ce type :
"52 13 01" (01 pour activer le vibro)
"52 13 00" (00 pour désactiver le vibro)
Ce texte est une traduction de la documentation disponible ici : Wii Live CD
Un driver est en cours de développement pour Linux, un driver devrait également voir le jour rapidement pour Windows maintenant que le protocole d'échanges entre la Wiimote et la Wii est décryptée.
Inscription à :
Publier les commentaires (Atom)
1 commentaire:
Super ! vivement que ça marche sur PC :P
Enregistrer un commentaire