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


arduino-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.

Anuncio:

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 leidos 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);
}
Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección tutoriales de Arduino

Descarga el código

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



5 3 votes
Article Rating

Anuncio:

Previous Controlar Arduino con un mando a distancia infrarrojo
Next Guardar variables en Arduino y la memoria no volatil EEPROM
2 Comments
oldest
newest
Inline Feedbacks
View all comments
Andrés Lorite
4 years ago

He seguido los pasos y a la hora de compilar da este error:

“Arduino:1.8.7 (Windows 10), Tarjeta:”Arduino/Genuino Uno”

C:\Users\alori\Downloads\arduino-1.8.7-windows\arduino-1.8.7\libraries\Wiichuck\Wiichuck.cpp:1:22: fatal error: WProgram.h: No such file or directory

compilation terminated.

exit status 1
Error compilando para la tarjeta Arduino/Genuino Uno.”

He probado tanto con un Ide instalable, como con uno ejecutable y con ambos da el mismo error.

Gracias