Differenze tra le versioni di "Wiimote"
(3 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 113: | Riga 113: | ||
Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv. | Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv. | ||
E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti. | E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti. | ||
− | Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di . | + | Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di [http://johnnylee.net/projects/wii/ Johnny Chung Lee] , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa. |
La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri. | La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri. | ||
− | + | == Link Utili == | |
− | + | ||
− | *[http://packages.debian.org/wheezy/bluetooth | + | *Molte informazioni utili sono raccolte in questa [http://tesi.cab.unipd.it/25091/1/Tesi.pdf '''Tesi''']. |
− | + | ||
− | + | *Diversi progetti interessanti tra cui la [http://johnnylee.net/projects/wii/ '''Lavagna elettronica'''] | |
+ | |||
+ | *[http://packages.debian.org/wheezy/bluetooth '''Pacchetto bluetooth'''], [http://wiki.debian.org/BluetoothUser '''Installazione bluetooth'''], [https://github.com/abstrakraft/cwiid '''Librerie Cwiid'''], [http://wiibrew.org/wiki/Wiimote '''Wiibrew.org (altre info sul wiimote)'''] |
Versione attuale delle 14:01, 18 giu 2013
Il controller wiimote
Il controller. Wiimote della console Wii é molto interssante perché in un oggetto di dimensioni contenute concentra in un unico oggetto una alta quantitá di sensori ed attuatori ad esempio:
- una telecamera ad infrarossi in grado di riconosere sorgenti luminose ad infrarossi
- acceleromeri
- diversi pulsanti
- led
- altoparlante
- vibratore
- giroscopi (solo per la versione Motion Plus)
- bluetooth (su cui si interfaccia per trasmettere i dati dei suoi sensori)
tutto ciò con consumi ridotti.
Questa varietá lo rende molto flessibile e utile per diverse applicazioni in diversi campi. Ad esempio puó essere usato per creare una lavagna elettronica multi touch a basso costo, oppure può essere usato in applicazioni didattiche per la fisica oppure può anche diventare fonte di componenti da utilizzare direttamente collegati ad Arduino o Raspberry Pi, ed è molto conveniente se si pensa che si possono acquistare online wiimote con circa una decina di euro.
Installazione e uso delle librerie
Per il dialogo con il wiimote via bluetooth é necessario installare su Raspberry Pi una chiavetta blueooth e i seguenti pacchetti:
sudo apt-get install bluetooth
Controllare lo stato del bluetooth con:
sudo service bluetooth status
Se non è avviato avviarlo con:
/etc/init.d/bluetooth start
e verificare che sia stata creata l'interfaccia tramite il seguente comando:
hcitool dev
Per interfacciarsi con il controller basta installare le librerie con:
sudo apt-get install python-cwiid
L'uso è molto semplice, nella dichiarazione delle variabili possiamo indicare quali dati vogliamo leggere:
import cwiid wm = cwiid.Wiimote() wm.rpt_mode = cwiid.RPT_BTN // rilevo i dati relativi ai pulsanti
wm.state['buttons'] // leggo quali bottoni sono premuti, il valore finale è la somma dei codici dei bottoni premuti
I codici possibili sono:
- 256 e 512: tasti direzionali rispettivamente sinistra e destra
- 2048 e 1024: tasti direzionali rispettivamente sopra e sotto
- 4 e 8: tasti B o A
- 16, 128, 4096 :tasti volume down, tasto home e tasto volume up
- 1 e 2: tasto 2 e tasto 1
Se si vogliono rilevare altri tipi di dati basta metterli in OR binario:
wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_IR // rilevo i dati relativi all'accellerometro e alla finestra IR
wm.state['ir_src'] //dati relativi alla finestra ir wm.state['acc'] //dati relativi all'accellerometro
Altri dati rilevabili sono quelli relativi agli accessori accoppiabili alla porta di espansione presente sul wiimote. Tra cui i due giroscopi per alte e basse velocità, presenti nella tecnologia Motion Plus, che aiutano ad aumentare la sensibilità e consentono di avere una mappatura dei movimenti su tutto lo spazio 3D, e quelli relativi al Nunchuk che è un joystick analogico con due pulsanti dorsali, e anch'esso presenta al suo interno degli accellerometri dai cui si possono rilevare dati utili:
cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK
Per abilitare l'uso del Motion Plus bisogna anche abilitarlo con la chiamata:
wm.enable(cwiid.FLAG_MOTIONPLUS)
Per leggere i dati possiamo fare sempre riferimento alla variabile dizionario "state" facendo riferimento alle chiavi tra apici:
print wm.state {'led': 1, 'rpt_mode': 130, 'ext_type': 4, 'motionplus': {'angle_rate': (8195, 8284, 8167)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 74}
Possiamo anche abilitare alcuni componenti come il vibratore e i led presenti sul wiimote:
wm.state['led'] = 1 // abilito il led 1 wm.state['rumble'] = 1 //abilito la vibrazione
Per l'accoppiamento bisogna premere contemporaneamente i tasti 1 e 2 su wiimote. E' possibile anche connettere uno o più controller specificando l'indirizzo MAC:
wm1 = cwiid.Wiimote("00:11:22:33:44:55") wm2 = cwiid.Wiimote("00:22:11:44:33:55")
Un esempio per leggere lo stato dei pulsanti e dei giroscopi:
#! /usr/bin/python import cwiid import time print "Premi 1+2 sul tuo wiimote" wm = cwiid.Wiimote() wm.enable(cwiid.FLAG_MOTIONPLUS) wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_MOTIONPLUS print "Connesso!" while True: print wm.state time.sleep(0.2)
Altri esempi
Altre Info
La telecamera che si trova nella parte anteriore del controller dialoga con protocollo I2C, eventalmente puó anche essere dissaldato e collegato direttamente ad un processore. Questa telecamera rileva fonti di luce puntiformi e riesce a individuarne fino a 5 contemporaneamente. Davanti alla telecamera é montato un filtro che lascia passare solo gli infrarossi, questo evita che eventuali altre fonti di luce possano ingannare il controller durante il gioco(questo filtro può anche essere rimosso per ottenere l'effetto contrario). Normalmente il controller viene usato davanti al tv e riconosce la direzione in cui é puntato perché vede due led infrarossi posti nella barra che si mette sotto o sopra al tv. E' possibile però lasciare fisso il controller e muovere dei led di fronte alla telecamera per individuare la posizione di oggetti. Una applicazione ormai famosa é una lavagna luminosa creata grazie agli studi di Johnny Chung Lee , in questo caso il wiimote viene posto in posizione fissa e si usa una penna su cui retro è fissato un led infrarosso, in questo modo la successione di posizioni rilevate va a formare una linea come quella di una penna sulla lavagna luminosa. La risoluzione della telecamera è di 1024x768 ed ha un angolo di visione di 33x23 gradi, può rilevare un led infrarosso fino ad una distanza di 2 o 3 metri.
Link Utili
- Molte informazioni utili sono raccolte in questa Tesi.
- Diversi progetti interessanti tra cui la Lavagna elettronica