arduino-mando-wii-wiichuck

Controlar Arduino con el mando Nunchuk de la Wii (WiiChuck)

¿Qué es un Wiichuck?

El Wiichuck, o Wii Nunchuk, es un mando adicional para la consola Wii. El mando emplea el bus I2C, por lo que resulta sencillo conectar este mando a un autómata o procesador como Arduino para tener un gran controlador para nuestros proyectos.

El Wiichuck es una pequeña joya de la tecnología. Integra un acelerómetro LIS3L02AL de tres ejes, una palanca analógica de 2 ejes y dos botones en un único dispositivo pequeño y ergonómico. Al ser un dispositivo fabricado en grandes cantidades ha permitido que esté disponible en precios bajos.

El Nunchuk se conecta al mando primario de la Wii por medio de un cable. Podemos cortar este cable y conectarlo a Arduino o, mucho más conveniente, usar módulos PCB disponibles que se insertan en el conector del Wiichuck y permiten conectarlo sin dañarlo.

El Wii Nunchuk es un mando genial para añadir a nuestros proyectos. Por ejemplo, podemos usarlo para controlar una torreta con servos, manejar un brazo robótico, un vehículo, un hexápodo o un robot bípedo.

Precio

El Nunchuk de la Wii es un mando excelente en relación prestación precio. Podemos encontrarlos por 3€ en vendedores internacionales de eBay o AliExpress.

arduino-wiichuck-componente

En cuanto al módulo de conexión del Wiichuck con Arduino, podemos encontrarlo por 0.60€. Por ese precio, merece la pena ahorrarse el trabajo de cortar y soldar el cable, además de que evitamos dañar el Wiichuck.

arduino-wiichuck-adaptador

Esquema de montaje

Si usamos un adaptador la conexión es muy sencilla. Introducimos el módulo en el mando Wii, y lo alimentamos conectando Vcc y Gnd, respectivamente, a 3.3V y Gnd en Arduino.

Por otro lado, emplearemos empleamos los pines del bus I2C en Arduino para establecer comunicación con el Wiichuck. Simplemente conectamos el pin SDA y SCL de Arduino con los pines correspondientes del Wii Nunchuk.

Por tanto, la conexión resulta la siguiente,

arduino-wiichuck-esquema

Que vista desde el lado de Arduino quedaría así.

arduino-Wiichuck-conexion

Si optamos por no comprar el adaptador y conectar con el mando directamente, tendremos que conectar cables al mando, bien sea cortando y soldando su conductor o introduciendo terminales en el conector. El siguiente esquema muestra el patillaje del conector del WiiChuck.

arduino-Wiichuck-detalle

En Arduino Uno, Nano y Mini Pro, SDA es el pin A4 y el SCK el pin A5. Para otros modelos de Arduino consultar el esquema patillaje correspondiente.

El mando de la Wii funciona a 3.3V. Alimentarlo a tensiones superiores (como 5V) dañara el mando.

Ejemplos de código

Para realizar la lectura del Wii Nunchuk usaremos la librería desarrollada por jnw.walker y actualizada por coopermaa disponible en este enlace.

La librería proporciona ejemplos de código, que resulta aconsejable revisar. Por ejemplo, el siguiente código muestra los valores leídos del WiiChuck

//GND - GND
//VCC - VCC
//SDA - Pin A4
//SCL - Pin A5

#include <Wiichuck.h>
#include <Wire.h>

Wiichuck wii;

void setup() {
  Serial.begin(9600);
  wii.init(); 
  wii.calibrate();
}

void loop() {
  if (wii.poll()) {
    Serial.print("joy:");
    Serial.print(wii.joyX());
    Serial.print(", ");
    Serial.print(wii.joyY());
    Serial.print("  \t");
    
    Serial.print("accle:");
    Serial.print(wii.accelX());
    Serial.print(", ");
    Serial.print(wii.accelY());
    Serial.print(", ");
    Serial.print(wii.accelZ());
    Serial.print("  \t");
    
    Serial.print("button:");
    Serial.print(wii.buttonC());
    Serial.print(", ");
    Serial.print(wii.buttonZ());
    Serial.println("");
  }
  
  delay(100);
}

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github. github-full