Old:Wiimote: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (ha spostato Wiimote a Old:Wiimote)
 
(23 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
Questa piccola guida va in soccorso di quanti vorrebbero spegnere il pc da una sessione attiva di XFCE4 senza dover tornare al DM in uso e senza ricorrere all'uso di una shell. Per fare ci� useremo "sudo":
{{Old}}
<pre>
$ su
Password:
# apt-get update
# apt-get install sudo
</pre>
Il primo passo � quello di editare il file <tt>/etc/sudoers</tt>.


Sebbene il file <tt>/etc/sudoers</tt> possa essere ditato con qualsiasi editor, � molto pi� sicuro usare visudo. Infatti <code>visudo</code> non � altro che una versione leggermente modificata dell'editor <code>vim</code> che non permette di salvare il file <tt>sudoers</tt> se esso contiene errori (in realt� � anche possibile associare a visudo un editor diverso da <code>vim</code>, ma questa � un'altra storia ;-)).
=Introduzione=
Il Wiimote è un controller prodotto dalla Nintendo usato come controller per la console Wii.
È possibile utilizzarlo per controllare numerose applicazioni nell'ambiente Linux, questa guida fornisce una descrizione del suo utilizzo e
di come sfruttare la libreria [http://abstrakraft.org/cwiid/ Cwiid ] per il suo uso all'interno di una applicazione in C o C++.
===Funzionamento===
Il funzionamento è spiegato bene [http://en.wikipedia.org/wiki/Wii_Remote nelle pagine wikipedia].


Lanciamo dunque <code>visudo</code> dopo esserci loggati come root in una console:
Riassumendo brevemente, il controller è composto da una telecamera infrarossi che punta verso la parte anteriore, i vari tasti e un trasmettitore interno Bluetooth. Dopo aver effettuato il collegamento sarà possibile ricevere i comandi del joypad nonché le immagine raccolte dalla mini-videocamera. Proprio grazie a quest'ultime sarà possibile, eseguendo la triangolazione della luce emanata dai led infrarosso, calcolare la direzione in cui punta il WiiMote.
<pre>
$ su
Password:
# visudo
</pre>
Ecco pi� o meno quello che dovrebbe apparire:
<pre>
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#


# Host alias specification
Una alternativa è quella di utilizzare il comando Wii come telecamera fissa e quindi di adoperare una penna IR per scrivere sul video come se si fosse su una lavagna luminosa. Con questa grande intuizione nasce l'economica, ma funzionante e funzionale, '''WiiLD'''.
===Hardware necessario===
Per poter adoperare il WiiMote sono necessari, oltre al controller stesso:
* una serie di led infrarossi, può essere sia la barra fornita con la Wii stessa sia 4/5 led infrarossi sciolti da posizionare lungo un bordo del televisore [modalità di solo puntamento];
* un trasmettitore bluetooth per ricevere i segnali sul computer;
* una penna IR [modalità WiiLD], facilmente autocostruibile.


# User alias specification
====Come costruire la penna IR====


# Cmnd alias specification
Attenzione al LED utilizzato.


# User privilege specification
Lista esempi:
root    ALL=(ALL) ALL
</pre>
Come in vim, all'avvio di visudo ci si ritrova in "command mode" e non � possibile inserire testo. Per inserire qualcosa nel file dobbiamo entrare in "insert mode" premendo "i" (oppure <tt>[Ins]</tt>): in basso a sinistra deve apparire "INSERISCI".


Per ottenere quello che vogliamo, sar� sufficiente aggiungere una piccola linea, che abiliter� tutti gli utenti nel gruppo adm ad eseguire i comandi di shutdown e reboot dal menu di xfce:
=Installazione=
<pre>
Ci sono varie librerie a disposizione, il sito di riferimento è sicuramente http://abstrakraft.org/cwiid/, sito di sviluppo della libreria Cwiid che è la più completa e testata. Vediamo cosa installare a seconda dell'uso di cui andremo a fare del nostro Wii.
%adm    ALL=(root) NOPASSWD: /usr/sbin/xfsm-shutdown-helper
</pre>
Il risultato finale del nostro sudoers sar� quindi:
<pre>
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#


# Host alias specification
==WiiMote come sistema di puntamento==
<pre>aptitude install lswm wminput wmgui</pre>
<pre>modprobe uinput</pre>


# User alias specification
==La WiiLD==
<pre>aptitude install gtkwhiteboard</pre>


# Cmnd alias specification
==Configurazione del sistema==
Per poter utilizzare il Wiimote sotto Linux è necessario che sia attivo il modulo del kernel relativo al usbhid, in Ubuntu digitare:
<pre># modprobe usbhid</pre>


# User privilege specification
altrimenti [[Debian Kernel Howto |Ricompilare il kernel]] e attivarne il modulo.
root    ALL=(ALL) ALL
%adm    ALL=(root) NOPASSWD: /usr/sbin/xfsm-shutdown-helper
</pre>
Ora salviamo il nostro file ed usciamo da visudo. Per fare questo premiamo ESC per tornare in "command mode" e poi:
<pre>
:wq
</pre>


Dopo aver riavviato X e rifatto il login, ogni utente appartenete al gruppo adm sar� abilitato alle azioni di riavvio e spegnimento direttamente dal men� di xfce.
==Pacchetti necessari==
Installare i seguenti pacchetti con il nostro amato apt-get:
<pre># apt-get install autoconf awk bison flex bluez-utils bluez-hcidump
# apt-get install hcitool autotools-dev libbluetooth2-dev libgtk2.0-dev flex bison libcwiid1 libcwiid1-dev</pre>


Per una raccolta dei comandi di vim leggete [http://www.siforge.org/articles/2003/12/15-guida_vim.html qui].
Ora lanciamo hcitool scan premendo contemporaneamente i tasti 1 e 2
<pre>$ hcitool  scan
Scanning ...
        00:19:1D:6B:3D:A3      Nintendo RVL-CNT-01</pre>


Se l'operazione riesce il sistema è pronto per essere utilizzato.


----
=Utilizzo della libreria Cwiid=
A disposizione avrete dei comandi che vi permetteranno di utilizzare il vostro controller:
*wminput: permette di utilizzare il wiimote come un mouse;
*wmgui: è un'interfaccia grafica per testare tutti gli eventi del controller;


Autore: [[Utente:Jango|jango]]
==Esempio di implementazione in un programma C ==
Un [http://abstrakraft.org/cwiid/browser/trunk/wmdemo/wmdemo.c?rev=179 esempio ] lo si trova sul sito di cwiid  oppure all'interno della directory con i
[http://abstrakraft.org/cwiid/downloads/cwiid-0.6.00.tgz  sorgenti] del programma nella directory wmdemo.


Revisione: ~ The Noise
In linea generale c'è una struttura dati messa a disposizione dall'API (cwiid_state) che viene passata ad una chiamata (cwiid_get_state) la quale aggiorna la descrizione dello stato dei sensori presenti sul wiimote in quel momento.
Prima di far questo ci sarà una fase di connessione (cwiid_open) che chiederà il BBSID, un codice identificativo che abbiamo precedentemente visto
durante la chiamata del comando "hcitool scan".


[[Categoria:Xfce]][[Categoria:Tips&Tricks]]
 
=Problematiche varie=
Per risolvere eventuali problemi vi invito sia a postare sulla pagina "discussioni" sia sul forum debianizzati.org. La guida è ancora in fase di stesura, quindi ogni critica e consiglio sarà ben voluto.
 
==Problematiche hardware==
===Videocamera IR===
Attenzione che altre fonti di luce possono emettere raggi infrarossi. Ad esempio candele, ma soprattutto il sole. Se adoperato in piena luce solare la telecamera potrebbe essere accecata o fortemente disturbata.
 
 
===LED IR===
Attenzione che i led sono direzionali (con un angolo di puntamento in genere attorno ai 30°) quindi attenzione a non utilizzarli storti. Per utilizzare la WiiLD sarebbe meglio adoperare un led IR ad alta potenza rispetto ai classici in commercio.

Versione attuale delle 18:48, 3 nov 2019

Emblem-important.png Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica.



Introduzione

Il Wiimote è un controller prodotto dalla Nintendo usato come controller per la console Wii. È possibile utilizzarlo per controllare numerose applicazioni nell'ambiente Linux, questa guida fornisce una descrizione del suo utilizzo e di come sfruttare la libreria Cwiid per il suo uso all'interno di una applicazione in C o C++.

Funzionamento

Il funzionamento è spiegato bene nelle pagine wikipedia.

Riassumendo brevemente, il controller è composto da una telecamera infrarossi che punta verso la parte anteriore, i vari tasti e un trasmettitore interno Bluetooth. Dopo aver effettuato il collegamento sarà possibile ricevere i comandi del joypad nonché le immagine raccolte dalla mini-videocamera. Proprio grazie a quest'ultime sarà possibile, eseguendo la triangolazione della luce emanata dai led infrarosso, calcolare la direzione in cui punta il WiiMote.

Una alternativa è quella di utilizzare il comando Wii come telecamera fissa e quindi di adoperare una penna IR per scrivere sul video come se si fosse su una lavagna luminosa. Con questa grande intuizione nasce l'economica, ma funzionante e funzionale, WiiLD.

Hardware necessario

Per poter adoperare il WiiMote sono necessari, oltre al controller stesso:

  • una serie di led infrarossi, può essere sia la barra fornita con la Wii stessa sia 4/5 led infrarossi sciolti da posizionare lungo un bordo del televisore [modalità di solo puntamento];
  • un trasmettitore bluetooth per ricevere i segnali sul computer;
  • una penna IR [modalità WiiLD], facilmente autocostruibile.

Come costruire la penna IR

Attenzione al LED utilizzato.

Lista esempi:

Installazione

Ci sono varie librerie a disposizione, il sito di riferimento è sicuramente http://abstrakraft.org/cwiid/, sito di sviluppo della libreria Cwiid che è la più completa e testata. Vediamo cosa installare a seconda dell'uso di cui andremo a fare del nostro Wii.

WiiMote come sistema di puntamento

aptitude install lswm wminput wmgui
modprobe uinput

La WiiLD

aptitude install gtkwhiteboard

Configurazione del sistema

Per poter utilizzare il Wiimote sotto Linux è necessario che sia attivo il modulo del kernel relativo al usbhid, in Ubuntu digitare:

# modprobe usbhid

altrimenti Ricompilare il kernel e attivarne il modulo.

Pacchetti necessari

Installare i seguenti pacchetti con il nostro amato apt-get:

# apt-get install autoconf awk bison flex bluez-utils bluez-hcidump 
# apt-get install hcitool autotools-dev libbluetooth2-dev libgtk2.0-dev flex bison libcwiid1 libcwiid1-dev

Ora lanciamo hcitool scan premendo contemporaneamente i tasti 1 e 2

$ hcitool  scan
 Scanning ...
        00:19:1D:6B:3D:A3       Nintendo RVL-CNT-01

Se l'operazione riesce il sistema è pronto per essere utilizzato.

Utilizzo della libreria Cwiid

A disposizione avrete dei comandi che vi permetteranno di utilizzare il vostro controller:

  • wminput: permette di utilizzare il wiimote come un mouse;
  • wmgui: è un'interfaccia grafica per testare tutti gli eventi del controller;

Esempio di implementazione in un programma C

Un esempio lo si trova sul sito di cwiid oppure all'interno della directory con i sorgenti del programma nella directory wmdemo.

In linea generale c'è una struttura dati messa a disposizione dall'API (cwiid_state) che viene passata ad una chiamata (cwiid_get_state) la quale aggiorna la descrizione dello stato dei sensori presenti sul wiimote in quel momento. Prima di far questo ci sarà una fase di connessione (cwiid_open) che chiederà il BBSID, un codice identificativo che abbiamo precedentemente visto durante la chiamata del comando "hcitool scan".


Problematiche varie

Per risolvere eventuali problemi vi invito sia a postare sulla pagina "discussioni" sia sul forum debianizzati.org. La guida è ancora in fase di stesura, quindi ogni critica e consiglio sarà ben voluto.

Problematiche hardware

Videocamera IR

Attenzione che altre fonti di luce possono emettere raggi infrarossi. Ad esempio candele, ma soprattutto il sole. Se adoperato in piena luce solare la telecamera potrebbe essere accecata o fortemente disturbata.


LED IR

Attenzione che i led sono direzionali (con un angolo di puntamento in genere attorno ai 30°) quindi attenzione a non utilizzarli storti. Per utilizzare la WiiLD sarebbe meglio adoperare un led IR ad alta potenza rispetto ai classici in commercio.