Oct 232010
 

wiilinArticolo tratto dalle slide di Daniele Napolitano nella sua presentazione al linux day 2009.

Il Wiimote è il rivoluzionario controller di gioco creato dalla Nintendo per la sua console Wii ed ha cambiato il concetto di videogioco rendendo il giocatore al centro delle interazioni fisiche del gioco.
Mentre nei normali controller di gioco la massima interazione col videogioco erano i pulsanti e il force feedback, nel Wiimote abbiamo sensori di movimento e di puntamento, così da sapere cosa sta facendo e dov’ è il giocatore in relazione al televisore.

Quindi è:
Per i giocatori: un controller di gioco
Per gli smanettoni: un concentrato di tecnologia


Anatomia di un Wiimote

Da cosa è composto questo controller?

wiimote

  • Unità a radiofrequenza
  • Pulsanti
  • Accelerometri
  • Videocamera ad infrarossi
  • 4 LED
  • Force Feedback
  • Altoparlante
  • Memoria Flash
  • Registri di controllo
  • Porta d’espansione
  • Batterie

Comunicazione Wireless

Il Wiimote utilizza lo standard Bluetooth per il collegamento e
agisce come una normale periferica HID (ma senza autenticazione), pertanto usa un sistema di report (massimo 100 al secondo) per comunicare col pc host.
Per essere visibile è necessario premere insieme i pulsanti 1 e 2
oppure il pulsante synch nel vano batterie.

Con il comando hcitool viene rilevato così:

$ hcitool scan
Scanning ...
00:17:AB:39:8E:05 Nintendo RVL-CNT-01

Pulsanti

Il Wiimote possiede 11 pulsanti direttamente controllabili.
Il pulsante Power termina la connessione tra l’host e il Wiimote.
Pare non ci sia modo di cambiare questo comportamento.

Accelerometri
wiimote2

Il Wiimote possiede un accelerometro funzionante sui 3 assi spaziali: X, Y e Z.

Il range di accelerazioni rilevabili va da -3G a +3G con il 10% di sensibilità. Il valore assoluto viene codificato in modo unsigned su 8 bit.

Videocamera IR

wiimote4
Per il puntamento sullo schermo la Wii usa l’accoppiata di una videocamera infrarossi presente sul Wiimote e della Sensor Bar, ovvero due gruppi di LED IR.
La videocamera permette di individuare fino a 4 punti su una
matrice di 1027×768 punti. Usa 3 byte per ogni punto per determinare
posizione e dimensioni.

LED

Il Wiimote possiede 4 LED utilizzati durante il gioco per
determinare il numero dei giocatori.

I LED posso essere pilotati separatemente ma è possibile cambiare il loro stato (ON/OFF) alla velocità massima di circa 1 volta al
secondo.

Force Feedback

wiimote5

l controller ha in sè ́ anche un piccolo motore con una massa fuori
asse in modo da simulare una vibrazione.

Le modalità di controllo disponibili sono solo acceso/spento.

Altoparlante

Oltre a tutto ciò è presente pure un piccolo altoparlante di bassa
qualità per riprodurre dei suoni durante il gioco.

Detto altoparlante è di bassa qualità e può riprodurre suoni fino a
4200Hz. La riproduzione avviene in streaming dalla Wii.

  • Riproduzione in streaming a pacchetti
  • Può riprodurre suoni fino a 4200Hz
  • La codifica dei suoni pare essere 4bit ADPCM

Memoria interna

Memoria EEPROM (16KiB) usata per:

  • Offset accelerometri
  • Dati Mii

Memoria RAM (5.5KiB) usata per:

  • Registri di controllo

Implementazioni OSS

La libreria Cwiid

Su GNU/Linux sono state create diverse librerie per accedere
facilmente al Wiimote, una di queste è Cwiid.

Cwiid permette di cercare un Wiimote rilevabile tramite il
sottosistema bluetooth standard ed effettuare la connessione.
Funziona sui seguenti linguaggi:

  • C
  • C++
  • Python

wminput

Questo programma basato su Cwiid permette di creare una nuova
periferica di ingresso controllata dal Wiimote grazie al modulo del
kernel uinput (Userspace Input).
Il programma è strutturato a plugin per i più disparati utilizzi, tra
cui:

  • Puntatore con tracciamento IR
  • Puntatore con accelerometri (rileva l’inclinazione del Wiimote)
  • Semplice joypad

gtkwhiteboard

Questo programma basato sul lavoro di Johnny Chung Lee permette di creare una lavagna luminosa con solo un videoproiettore, un Wiimote e una speciale penna IR.
Se avete già un videoproiettore, con circa 30/40€ in più potrete avere una lavagna luminosa che nulla ha da invidiare a quelle commerciali vendute per alcune centinaia di Euro.

Demo:

Riferimenti:

Linux day 2009 Gulp : http://www.gulp.linux.it/wiki/Linux_Day_2009/Slide

Video originale di Daniele Napolitano (in Italiano) http://www.gulp.linux.it/~alberto/video/ld2009/wiimote_su_linux_ld2009_lq.ogg

Popular Posts:

Flattr this!

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*