Wiimote windows

De WikiRobotics
Saltar a: navegación, buscar

Introducción

Hace tiempo se publicó en esta web Pywii como leer el mando de la Wii desde el PC usando Linux. Ahora quiero continuar ese trabajo para hacer lo mismo pero en Windows. En internet hay mucha información, por lo que he tenido que probar diferentes aplicaciones hasta que me he quedado con un conjunto de ellas. Las seleccionadas me han permitido programar el mando tanto en C++, C# y Visual Basic, en el entorno de Visual Studio 2005.
En estos últimos meses han sido muchas las personas que han ido publicando su código y que gracias a ellas he conseguido tener mi entorno funcionando. Gracias a Johnny C. Lee que ha hecho unas aplicaciones tan divertidas que me han motivado lo suficiente para poder hacer mis proyectos. Gracias a Brian Peek por la librería para Windows y a Glitter por el porting a C++.
Más información la he sacado a partir de la página:
http://www.wiili.org/index.php/Main_Page
http://www.wiili.org/index.php/Wiimote_driver#Windows_XP_Notes

y la librería que he decidido usar es:

Wiimote.lib

Conectando el mando de la Wii al XP

Antes tenía un portátil sin Bluetooth, por lo que me compré un USB-Bluetooth con BlueSoleil y me funcionó a la primera. Es decir, le dí a busar dispositivos, encontró el "NINTENDO RVL-CNT-01" y luego ejecuté el WiinRemote y/o el GlovePie y ya estaba usando el mando.

Ahora tengo un DELL Inspiron 6400 con Bluetooth integrado y lo que he buscado es descubrir el mando sin necesidad de tocar el software de Windows. Me ha dado un poco de guerra pero en "google" me han dado la respuesta. Para conectarme al mando sigo las primero he seguido las siguientes instrucciones:

  • Pulsar botón derecho sobre el icono Bluetooth en la barra de tareas y sobre "Asistente de configuración Bluetooth".
  • Escoger la opción "Sé que servicio deseo utilizar y quiero encontrar un dispositivo Bluetooth que lo ofrezca".
  • De los dispositivos disponibles escoger "Dispositivo de interfaz humana" y "Siguiente" al tiempo que pulsamos los botones 1+2 del Wiimote.
  • Escoger"Finalizar" y el Wiimote estará ahora conectado.
  • Para comprobarlo mira el iconito Bluetooth de la barra de tareas. Si está de color verde es que el Wiimote se ha conectado, si está de color blanco es que no.

Para que me funcione correctamente, además, he tenido que hacer lo siguiente: Ir al administrador de dispositivos hardware, y en dispositivos HID he tenido que quitar el "Virtual Bluetooth device". Luego he escaneado nuevos dispositivos, windows me ha sacado la típica pantalla de que ha encontrado algo nuevo, y tras aceptar en todos los pasos me ha vuelto a detectar el "Virtual Bluetooth device".
Ahora sí. Con el Wiinremote he podido probar el mando de nuevo.

Probando el Wiimote

He probado dos programas, el primero la versión 1.13 del Wiinremote, soy capaz de usar las capacidades implementadas y me he hecho un puntero infrarrojo para localizarlo en el espacio, pero como este software está programado en Delphi, y yo no tengo ni idea de usarlo, he preferido buscar otra librería. Pero he de dedir que como programa de prueba para comprobar que el mando funciona es muy bueno.
El otro entorno es el software desarrollado por Jonny Chung Lee que usa la librería Wiimote por Brian Peek's para acceder al mando. Esta programada en C# y aunque estoy más familiarizado con el C++ he decidido utilizar este último junto con el Visual Studio 2005.
Para probar la librería y sus fuentes estoy usando directamente el código de ejemplo que viene con la propia librería, es muy fácil y en muy poco tiempo he empezado a desarrollar mis propios ejemplos.
También he probado la librería WiiYourself, que es un porting de la anterior pero para C++. Viene un programa de ejemplo para consola que demuestra las funcionalidades de sonido del mando de la Wii. Al paquete software anterior he tenido que añadir los archivos "hidsdi.h, hid.lib, hidusage.h, hidpi.h" para poder compilar.

Mi primer programa

El primer programa es muy simple, se trata de una pantalla con 4 checkbox de manera que en función del PAD del mando se activen o desactiven. ¿Para qué sirve un programa tan simple? Pues para ver que soy capaz de tener el entorno en marcha sin código en exceso.

El código del programa está en C# y como entorno de compilación he usado el Visual Studio 2005
La librería que he usado es la que he mencionado arriba:
Wiimote.lib


Descarga
Ejemplo básico

Moviendo un robot con el mando de la Wii

Ahora hemos metido un poco más de complejidad al programa. Hemos configurado la Wiimotelib.dll para enviar reportes de aceleración y botones, y según su valor mandamos al robot una orden determinada de movimiento.

Para activar la conexión con el Wiimote hay que activar el check que pone Wiimote.
Si queremos usar los acelerómetros (Y,X) en lugar del Pad hay que activar el check que pone analógico.
El programa es el siguiente: Ejemplo Avanzado


Según el robot que tengamos, tendremo que tener un firmware u otro. En concreto:

Documentación

Enlaces