domingo, septiembre 27, 2009

Wiimote como Joystick en Windows XP



El Wiimote (Wii Remote) de Nintendo puede ser usado bajo Windows XP como joystick para tus juegos favoritos o para cualquier otra función que simule un teclado o mouse ya que cuenta con conectividad Bluetooth y el servicio de Dispositivo de Interfaz Humana (HID).


Para lograr conectar tu Wiimote a Windows XP debes contar con algún radio Bluetooth conectado a tu PC y que esté ejecutando el stack Bluetooth completo (no funciona si usas el driver genérico de este blog, por ejemplo).

En este tutorial se usa el radio Bluetooth por USB ISSCEDRBTA con el software IVT Bluesoleil. Para conectarte al Wiimote sigue estos pasos:

+ Presiona y mantén presionados los botones 1 y 2 del Wiimote.
+ En Bluesoleil inicia una búsqueda de dispositivos Bluetooth (puedes presionar F5).
+ El Wiimote se reporta como RVL-CNT-01 (lo de RVL es porque el Wii se llamaba Revolution cuando era prototipo).
+ Da doble click sobre el Wiimote para indagar sus servicios.
+ Aparecerá únicamente el servicio de HID, conéctate a él.




Una vez conectado sonará como si hubieras conectado un dispositivo USB a Windows y los 4 leds del Wiimote se quedarán prendiendo y apagando. También puedes revisar que se haya conectado correctamente entrando al Administrador de Dispositivos (Propiedades de Mi PC).



Ahora el problema es que bajo los Dispositivos de Juego de Windows XP (Panel de Control) el joystick no aparece con botones ni palancas configurables por lo que hay que usar una aplicación llamada GlovePIE que se encarga de leer el estado del Wiimote.
http://carl.kenner.googlepages.com/glovepie

La aplicación lee el estado del Wiimote y convierte los botones presionados a teclas presionadas en el teclado de tu PC, es decir si presionas el botón Home del Wiimote puedes hacer que simule la presión de la tecla Enter de tu teclado. La configuración de estos parámetros se carga desde los archivos PIE que vienen incluidos con el programa. En mi caso utilizo la siguiente configuración para jugar en emulador de Nintendo (NES):

 


wiimote.Leds = 0
Up = wiimote.Right
Down = wiimote.Left
Left = wiimote.Up
Right = wiimote.Down
Tab = wiimote.Minus
Enter = wiimote.Plus
c = wiimote.One
v = wiimote.Two
z = wiimote.B
x = wiimote.A

Para arrancar la conversión solo presiona el botón Run y listo. Para probar que los datos están siendo leídos puedes abrir un bloc de notas y presionar los botones del Wiimote, verás que aparece texto en la ventana.

Una vez configurados los botones solo debes ir a tu juego o emulador y configurarlos con las teclas que corresponden al control, en esta foto se ve como configuré un control de Nintendo con las teclas que GlovePIE convierte:



Y listo solo basta jugar tu emulador favorito usando tu Wiimote. Hay más archivos PIE en los que se usan los acelerómetros del Wiimote para simular la palanca de los controles, puedes jugar Mario Kart 64 con el movimiento del Wiimote por ejemplo.

Hay muchas otras aplicaciones para probar tu Wiimote si lo que te interesa es usarlo con otros fines, una de ellas es la librería en C# de Brian Peek:
http://blogs.msdn.com/coding4fun/archive/2007/03/14/1879033.aspx



Esta aplicación de prueba en su versión 1.7 incluye todo lo que el Wiimote puede reportar (botones, batería, control de LEDs, vibración o rumble, detección de emisores infrarrojos en la cámara IR) y también todos los dispositivos que puedes conectar en el puerto de expansión (control clásico, balance board, guitarra, etc.). La versión 1.8 ya contiene la prueba del Wii Motion Plus pero tiene varios bugs y es un poco difícil hacerla funcionar.

Puedes observar que la aplicación mide el estado de los acelerómetros del Wiimote en unidades g (9.81m/s2). Cuenta con 3 medidores como se ve en la foto y cada uno mide cuántas gravedades están actuando sobre su eje. Si dejas caer el Wiimote no habrá aceleración actuando sobre él y los ejes X, Y, Z medirán 0g.





Si te interesa más el funcionamiento técnico del Wiimote puedes visitar la página Wiibrew.
http://wiibrew.org/wiki/Wiimote