Manette Wii Nunchuck sous MicroPython

Encore une fois, nous avons eu l'occasion de nous pencher sur l'interface UEXT proposée par les cartes Olimex pour tester une manette Nunchuck avec MicroPython sur ESP8266.

La manette Nunchuck offre une interface très confortable pour contrôler des projets électroniques ou les bolides de Maker. Si la manette n'est guerre plus en vogue sur les consoles de jeux, elle reste un outil très pratique.
MOD-Wii avec connecteur UEXT
Ce qui est génial sur le Nunchuck, c'est que la manette dispose d'un joystick 2 axes + 2 boutons. C'est incroyablement confortable!
De surcroît, la manette inclus également un accéléromètre 3 axes, ce qui permet de savoir si la manette est penchée sur le côté (ou l'avant).

Le connecteur UEXT permet de connecter très facilement la manette sur n'importe quel microcontrôleur... en effet, cette manette exploite une interface I2C. Si vous disposez d'un microcontrôleur avec connecteur UEXT c'est encore plus simple, il suffit de brancher la manette dessus (mais rien ne vous empêche d'utiliser des fiils Dupont pour réaliser d'autres branchements).
Brancher la manette Nunchuck sur un ESP8266 (ESP8266-EVB d'Olimex)
flashé en MicroPython
Arduino c'est bien, MicroPython c'est mieux
Le pilote Arduino existe déjà et est produit par Olimex (voir la fiche produit de la manette Nunchuck).

De notre côté, nous avons travaillé sur le portage du code en MicroPython (voir ce GitHub) dont nous reprenons une partie des exemples ci-dessous.

Par contre, vous aurez peut être besoin de savoir comment flasher MicroPython sur votre ESP8266 (Wemos, Feather, ...) ou ESP8266-EVB avec un câble console.

La bibliothèque MicroPython pour Nunchuck
La bibliothèque Nunchuck pour MicroPython est disponible sur cette page du GitHub ESP8266-uPy.

Cette page reprend également des codes d'exemple.

A titre d'exemple, voici comment lire l'état du joystick.
# Test the Olimex MOD-Wii-UEXT-NUNCHUCK game controler.
# 
# MOD-Wii-UEXT-NUNCHUCK : http://shop.mchobby.be/product.php?id_product=1416 
# MOD-Wii-UEXT-NUNCHUCK : https://www.olimex.com/Products/Modules/Sensors/MOD-WII/MOD-Wii-UEXT-NUNCHUCK/  

from machine import I2C, Pin
from time import sleep_ms
from wiichuck import WiiChuck

i2c = I2C( sda=Pin(2), scl=Pin(4) )
wii = WiiChuck( i2c ) # default address=0x58

while True:
 # Detect direction from boolean property
 direction = ''
 if wii.joy_up:
  direction = 'Up'
 elif wii.joy_down:
  direction = 'Down'
 elif wii.joy_right:
  direction = '>>>'
 elif wii.joy_left:
  direction = '<<<'

 print( "-"*20 )
 # Test button states
 print( "Button C: %s" % wii.c )
 print( "Button Z: %s" % wii.z )
 # print X, Y analog value + detected direction
 print( "Joy X, Y: %4d,%4d  (%s)" % (wii.joy_x, wii.joy_y, direction) )

 wii.update()
 sleep_ms( 150 )

ce qui produit le résultat suivant:

Button C: False
Button Z: False
Joy X, Y:    0, 123  (Up)
--------------------
Button C: False
Button Z: False
Joy X, Y:    0,  28  ()
--------------------
Button C: False
Button Z: False
Joy X, Y:    0,   0  ()
--------------------
Button C: False
Button Z: False
Joy X, Y:    0,  -3  ()
--------------------
Button C: False
Button Z: False
Joy X, Y:    3,-132  (Down)
--------------------
voyez également les autres exemples disponibles sur github.

A propos d' UEXT ?
UEXT est un connecteur qui transporte les signaux d'un bus I2C + bus SPI + Série + alimentation 3.3v. Ce connecteur utile un connectique standardisée IDC 10 broches, rien d'exotique ;-).

Avec UEXT, il est très facile d'ajouter des senseur et des cartes d'extension... il suffit simplement de les brancher ou de raccorder un câble IDC 10 broches, Simplicime!
Parmi nos favoris, il y a le transport du bus I2C permettant d'ajouter facilement plusieurs senseurs ou cartes d'extension (les cartes disposent d'une adresse sur un bus I2C, cela permet d'éviter les collisions de communication). D'un autre côté, le bus SPI permettan des transmissions de données à grande vitesse, ce qui est idéal pour des périphériques tels que des écrans TFT. Le port série (commication asynchrone) peut être rendu compatible avec les standard RS-232, RS-422, RS-485, DMX512, MIDI en utilisant une circuiterie de level-shifting appropriée.
Les connecteurs UEXT sont habituellement disponibles sur les produits Olimex, incluant leurs nano-ordinateurs. UEXT est un approche fantastique pour ajouter des cartes d'extension sur des produits tels que le MicroContrôleur WiFi ESP8266 ou autres cartes microcontroleurs. UEXT est très bien adapté pour le prototypage, l'apprentissage scolaire (pas besoin de fer) et solutions industrielles (Olimex produit des cartes de niveau "Industrial Grade").
Voyez nos extension UEXT ou tous les produits exposant un connecteur UEXT sur le shop, la collection UEXT chez Olimex (import sur demande)UEXT sur wikipedia.

Envie d'en savoir plus?

Aucun commentaire