Publié le 18 août 2024 - par

Anavi Handle : transformez une manette de jeu Nunchuk en souris ou en joystick

La console de jeu Wii utilise des manettes appelées Nunchuk, baptisées ainsi à cause d’une lointaine ressemblance avec le nunchaku… De forme ergonomique, elles comprennent deux boutons (C et Z), un joystick analogique et un accéléromètre 3 axes. Le souci c’est qu’elles sont équipées d’une prise spécifique, qui sort un bus I2C, vers la Wii. Léon Anavi (Anavi Technology) a développé une carte adaptatrice à base d’un module SeeedStudio, qui transforme la manette Nunchuk en simple périphérique USB que vous pouvez utiliser sur PC, Raspberry Pi ou sur un quelconque de vos projets. Je vous présente cet adaptateur dans l’article ci-dessous.

Anavi Handle : transformez une manette de jeu Nunchuk en souris ou en joystick

Déballage


Le kit est arrivé bien protégé dans une boîte en carton.
A l’intérieur j’ai trouvé la manette, la carte Anavi Handle et un boîtier en acrylique. Si vous avez déjà une manette Nunchuk vous pouvez commander uniquement la carte.

La carte est basée sur un module Xiao RP2040 de SeeedStudio. Le connecteur spécial pour la manette Wii fait partie du PCB (circuit imprimé) de la carte.

L’arrière de la carte ne comporte pas de composant.

Si on regarde le connecteur de face on voit qu’il comporte 2 contacts d’un côté et 3 de l’autre.

Cela vous aidera à connecter la manette sur la carte, dans le bon sens.

Deux clips viendront bloquer la prise sur la carte.

Pour débloquer la prise il suffit d’appuyer sur les deux parties arrondis sur les côtés de la prise, les clips s’effacent et on peut enlever la prise sans forcer.
Tout est prêt on peut monter le boîtier avant de passer aux essais.

Montage du boîtier


Préparez le matériel

La protection de la carte Anavi Handle est constituée de deux plaque en acrylique transparent.

Mettez les vis en place et vissez 4 écrous

Insérez la carte

Placez la deuxième plaque et terminez avec les 4 écrous

Vous pouvez utiliser la carte Anavi Handle sans craindre de la laisser traîner sur le bureau ou sur l’établi (que celui qui n’a jamais cramé une carte toute nue me jette la première pierre !)

Le Nunchuk

Présentation

On voit sur cette photo le Nunchuk. Sa forme autorise une bonne prise en main. Sur la partie supérieure, on trouve un joystick analogique, et à l’avant deux boutons poussoirs. Il intègre également un accéléromètre 3 axes de ST Electronics : LIS3L02AL. Sur les clones l’accéléromètre utilisé fonctionne de la même manière.

Le Nunchuk démonté

Sur l’exemplaire reçu avec le kit Anavi Handle, il y a deux vis à enlever pour ouvrir la manette. Un des trous est obturé étiquette qui sert de garantie. Après avoir déclipsé le couvercle, on accède à l’intérieur de la manette.L’intérieur est plutôt dépouillé, on a une carte principale avec le joystick et les circuits intégrés, et à l’avant une petite carte avec juste les deux boutons poussoirs.

Le joystick est un classique joystick analogique miniature qu’on trouve sur beaucoup de manettes de jeu.

Les boutons poussoirs sont des classiques également avec une coupelle en silicone.

Les 4 fils correspondent à l’alimentation et au bus I2C. U2 est le circuit accéléromètre qui fournit les informations sur le déplacement de la manette. Le « grand » circuit à 14 pattes est sans doute un microcontrôleur genre AVR ATtiny84 ou quelque chose comme ça. Il est chargé de recevoir les informations du joystick, de l’accéléromètre et des boutons, puis de les convertir pour envoyer les codes sur le bus I2C.

Le bus I2C

Le Nunchuk Wii utilise un connecteur propriétaire. Vu de face le connecteur possède ces connexions :

Sur le bus I2C, le Nunchuk est SLAVE (esclave) et la Wii est MASTER (maître) et c’est elle qui initialise la communication. Pour communiquer avec le Nunchuk, il faut lui envoyer une commande. Si vous avez un Nunchuk noir, il faut envoyer 2 octets 0xF0, 0x55 pour initialiser le premier registre et 0xFB, 0x55 pour initialiser le second registre. SI le Nunchuk est blanc, envoyez 0x40, 0x00 suivi de 0x00. L’adresse I2C des deux modèles de Nunchuk est 0x52. La fréquence utilisée pour communiquer avec le Wii Nunchuk est de 100KHz.

 Pour récupérer les informations il faut envoyer 0x00 à l’adresse 0x52. Les données sont renvoyées en paquets de 6 octets :

    • Octet 1 : Position X du joystick (0-255)
    • Octet 2 : Position Y du joystick (0-255)
    • Octet 3 : Accélération X (10 bits, les 2 bits de poids faible sont dans l’octet 6)
    • Octet 4 : Accélération Y (10 bits, les 2 bits de poids faible sont dans l’octet 6)
    • Octet 5 : Accélération Z (10 bits, les 2 bits de poids faible sont dans l’octet 6)
    • Octet 6 : Bits de poids faible pour les axes X, Y, Z et état des boutons C et Z

Réponse du Nunchuk

La réponse du Nunchuk comporte 6 octets, ce tableau donne le détail des informations retournées par la manette.  On retrouve ici du codage « à l’ancienne » quand chaque bit comptait. Pour diminuer le nombre d’octets transitant sur le bus I2C, 2 bits des 10 bits de chaque direction de l’accéléromètre sont « compactés » dans le dernier octet, en compagnie de l’état des boutons.

Accéléromètre de la Nunchuk

Détails du fonctionnement de l’accéléromètre de la manette Nunchuk. Les valeurs sont codées sur 10 bits, donc on va de 0 à 1023. La position centrale représente alors 512 et quand on déplace la manette, la valeur décroit jusque 0 dans un sens, et augmente jusque 1023 dans l’autre sens.

Accéléromètre

Les informations de ce capteur ne sont pas exploitées par Anavi Handle qui utilise le joystick et les boutons. Mais… comme le soft est opensource rien ne vous empêche d’écrire votre propre programme et de l’ajouter à l’existant.

L’accéléromètre mesure les déplacements de la manette selon 3 axes

Accéléromètre en nanotechnologie. On distingue la masse inertielle centrale suspendue par 4 ressorts. Lors du déplacement de la manette, la masse montée sur ressorts suit le déplacement avec une certaine inertie, elle se déplace par rapport à son cadres, ce qui est mesuré avec des capteurs capacitifs ou piézoélectriques. Cette vidéo de DeusExSilicium explique cela.

Connecter la carte Anavi Handle

Il y a deux ans je vous avais présenté la carte SeeedStudio Xiao RP2040. C’est cette carte miniature que Léon a retenu pour son projet.


Comme toute carte à base de RP2040, vous pouvez accéder à son contenu. Ici on est en Circuit Python

Par défaut la carte émule une souris, mais en changeant le contenu de ce fichier config.json vous pouvez modifier l’émulation en clavier ou joystick.

Bien entendu si vous n’avez pas envie de rentrer dans le programme, il suffit de connecter la carte et… ça fonctionne. Mais l’intérêt de ce genre de matériel open-source, c’est de pouvoir aller mettre les mains dans le cambouis, non ? (enfin, c’est juste mon avis)
Le joystick de la manette Nunchuk émule une souris . Il y a une zone « morte » autour de la position centrale, il faut être délicat sur le maniement du joystick mais on contrôle sans problème le déplacement du curseur dès qu’on a un peu l’habitude.

On a ensuite une accélération du déplacement. Si vous trouvez que les valeurs ne vous conviennent pas… Vous avez accès au programme.

Conclusion

Une belle application du RP2040. La bibliothèque HID fonctionne très bien. Je l’avais utilisée au FabLab pour développer une souris pour des personnes ayant des problèmes de vue ou de motricité. J’avais utilisé le Raspberry Pi PICO. Ici Léon Anavi a choisi la mini carte Xiao RP2040 et son produit est compact et répond parfaitement à ce qui est annoncé. De plus le développement en open-source garantit aux passionnés de pouvoir accéder à toutes les parties de la réalisation, pour les réutiliser, les modifier etc.
Vous trouverez dans la rubrique Sources ci-dessous des liens qui vous emmèneront sur les sources de ce produit.

ANAVI Handle est désormais disponible chez Mouser :
https://www.mouser.fr/c/embedded-solutions/engineering-tools/embedded-tools-accessories/daughter-cards-oem-boards/?q=CS-ANAVI-HANDLE
En Europe il vaut mieux acheter Anavi Handle chez Mouser où les frais de ports sont moindres (gratuit si achat > 50€). Sur CrowdSupply les frais sont élevés (18$ pour une expédition en Europe).
Les créations de Léon Anavi devraient bientôt être disponibles chez Lectronz.

Lien affilié Amazon : 2 manettes Nunchuk pour 16,99€

Vidéo

Guide d’assemblage

 

Sources

https://anavi.technology/

https://www.mouser.fr/c/embedded-solutions/engineering-tools/embedded-tools-accessories/daughter-cards-oem-boards/?q=CS-ANAVI-HANDLE

https://www.crowdsupply.com/anavi-technology/anavi-handle

https://github.com/AnaviTechnology/anavi-handle

https://github.com/AnaviTechnology/anavi-handle-sw

https://wiki.seeedstudio.com/XIAO-RP2040/

https://fr.wikipedia.org/wiki/T%C3%A9l%C3%A9commande_Wii#Nunchuk

https://www.raspberryme.com/utilisez-votre-nintendo-wii-nunchuk-comme-controleur-usb-avec-ladaptateur-materiel-open-source-anavi-handle-financement-participatif/

https://hackaday.com/blog/?s=nunchuk

 

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.