Laboratorio didattico di ingegneria dell'informazione

Progetto Mouse3D

Progetto di un mouse 3D con sensori di movimento (accelerometri) e sensori di rotazione (giroscopi).

Componenti principali

Per la costruzione del mouse 3D abbiamo impiegato una scheda elettronica dotata di accelerometri e di giroscopi in grado di rilevare gli spostamenti e le rotazioni della scheda in tutte le direzioni dello spazio.

La scheda utilizzata è la "Atomic IMU 6 Degrees of Freedom - XBee Ready" prodotta da Sparkfun (www.sparkfun.com). È possibile reperire la documentazione completa alla pagina: https://www.sparkfun.com/products/9812

Vista dall'alto della scheda Sparkfun

La scheda è dotata di tre accelerometri disposti ortogonalmente sugli assi x, y e z dello spazio e possiede tre giroscopi che rilevano le rotazioni attorno ai tre assi sopra citati (rispettivamente roll, pitch e yaw).

Disposizione degli assi e rotazioni attorno ad essi

La comunicazione tra scheda e computer avviene tramite bus seriale.

Per permettere l'utilizzo del mouse su quei computer che non dispongono della porta seriale, abbiamo scelto di utilizzare un convertitore seriale/USB Prolific PL2303 che permette di interfacciare la scheda al computer tramite una porta USB.

Convertitore seriale-USB

Realizzazione

La realizzazione è stata molto semplice, in quanto la scheda, già completa di tutto, ha richiesto solo la saldatura del cavetto di comunicazione, dal quale prelevare anche l'alimentazione a 5V in corrente continua fornita dalla porta USB.

Driver Linux

Per facilitare l'implementazione del driver, abbiamo scelto di utilizzare la piattaforma Linux che dispone di librerie open-source ben documentate.

Prendendo come riferimento il file sermouse.c, incluso in ogni versione del kernel Linux, abbiamo sviluppato il nostro driver sermouse3d.c per ricevere i dati dalla scheda ed inviare i comandi di spostamento al sistema operativo.

La scheda fornisce le letture dei 6 sensori inviando in uscita una sequenza ordinata di byte.

La struttura che la descrive è riportata nella sequente figura:

Sequenza di byte in uscita dalla scheda Sparkfun

Per delimitare l'inizio e la fine della sequenza la scheda invia rispettivamente i codici ASCII delle lettere 'A' e 'Z'.

I dati provenienti dai singoli sensori vengono letti da un convertitore ADC a 10 bit, per cui l'invio delle singole misure deve avvenire tramite 2 byte (per convenzione viene spedito prima il byte più significativo e a seguire quello meno significativo).

La sequenza è composta dai seguenti valori:

  • contatore di sequenza
  • accelerazione lungo l'asse X
  • accelerazione lungo l'asse Y
  • accelerazione lungo l'asse Z
  • accelerazione angolare Pitch
  • accelerazione angolare Roll
  • accelerazione angolare Yaw

Per ulteriori dettagli sulla configurazione della scheda si faccia riferimento al Manuale Atomic IMU 6DOF.

Prima di lanciare il driver è necessario impostare la velocità di comunicazione con la scheda a 115200 baud/s. Per fare ciò abbiamo scritto il programma mouse3d_start.c che esegue gli opportuni settaggi della porta seriale.

Installazione

Per utilizzare il mouse 3D è sufficiente lanciare il comando ./init.bat contenuto nella cartella sources una volta entrati nella shell di linux come amministratori.

Ecco un paio di video realizzati navigando su StreetView a Udine.

Contatti

Cognome Nome Email
Edotti Andrea edo.andrea@hotmail.it
Errante Matteo matteoerrante@alice.it
Simonetti Michele michele_simo@libero.it
Tonetto Enrico tonettoe@gmail.com

Ringraziamenti

Un sentito ringraziamento al prof. Mirko Loghi per l'aiuto fornitoci durante la creazione del driver Linux.

© Edotti A. - Errante M. - Simonetti M. - Tonetto E. - Università degli Studi di Udine - a.a. 2012/2013