Realizziamo un mouse “accelerato” con le MLA

Nonostante il titolo suggerisca tutt'altro questo articolo non parla di mouse con problemi di iperattività bensì descrive la realizzazione di un mouse che, anziché essere pilotato dai classici sensori ottici (o da trasduttori di posizione angolari per i mouse più datati), viene pilotato da accelerometri utili ad individuare il movimento eseguito.Risulta subito evidente che il progetto ha finalità didattiche e nello specifico ha lo scopo di approfondire il mondo delle librerie che Microchip mette a disposizione degli sviluppatori; in questo caso particolare verranno prese in considerazioni le Microchip Library for Application (MLA) le quali, combinate opportunamente con del codice applicativo, realizzeranno un vero e proprio mouse che si muove in relazione all'angolo di inclinazione degli accelerometri. Ovviamente il microcontrollore utilizzato per questo progetto sarà un microcontrollore Microchip.

 

MICROCHIP LIBRARY FOR APPLICATION O MLA

Come molte altre case produttrici di microcontrollori anche la Microchip mette a disposizione degli sviluppatori, una vasta gamma di librerie scaricabili gratuitamente dal sito, perfettamente integrabili con il sistema di sviluppo MPLAB.X e ben corredate di esempi “ready to use”. Tra gli stack realizzati da queste librerie troviamo ovviamente anche l’USB, sia host sia device, e una molteplicità di esempi che realizzano i dispositivi USB più comuni (mouse, tastiera, bridge RS232, …).

Prima di lascarsi travolgere dall'entusiasmo e iniziare a realizzare una miriade di applicazioni, è utile fare un paio di piccole ma fondamentali precisazioni: innanzitutto è utile precisare che fino a pochi anni fa la microchip rilasciava queste librerie per tutte le famiglie di PIC che vanno dai PIC16 fino ai PIC32, ad oggi invece sono stati esclusi dalle MLA i PIC 32 i quali però trovano ampio supporto nelle harmony, un altro framework altrettanto completo, corredato di numerosi esempi e ad alta integrazione; una seconda cosa da tener presente è che non tutte le funzioni implementate dall’MLA sono previste per tutte le famiglie di PIC, come mostrato nella tabella seguente:

tabella mla

Per poter utilizzare queste librerie è sufficiente collegarsi al sito internet indicato sopra, scaricare l’ultima versione e quindi procedere all'installazione. Durante questa fase il software provvederà alla copia di tutto il framework necessario e di alcuni esempi che sono utili per iniziare a mettere mano a queste librerie. La struttura della cartella creata è mostrata di seguito:

path_tree

 

Di tutte le cartelle, le due più importanti sono:

  • la cartella “framework” contiene il nocciolo delle librerie MLA ossia tutti i file sorgente che implementano gli stack,
  • la cartella “app” che contiene una serie di esempi tra cui quelli che prevedono l’utilizzo del protocollo USB.

Il nostro progetto partirà proprio dall'esempio “hid_mouse” contenuto nella cartella “app->usb->device” e che realizza una movimento continuo del mouse come a disegnare un rettangolo.

path_tree_example

 

Questo esempio verrà modificato in modo da implementare il nostro mouse pilotato da accelerometri.

 

ACCELEROMETRO TINKERKIT 3 ASSI

Per quanto riguarda l’accelerometro è stato adottato l’accelerometro tinkerKit 3 assi, acquistabile presso lo store di Arduino. La scelta è ricaduta su questo articolo perché oltre ad avere prezzo e dimensioni contenute (2,5x2,5 cm), monta sia l’accelerometro LIS344AL della ST sia tutta l’elettronica utile al condizionamento del segnale in uscita al dagli accelerometri.

accelerometro

 

Senza addentrarci troppo nel funzionamento del chip della ST e quindi dell’intero circuito, è sufficiente sapere, per la realizzazione di questo progetto, che le tre uscite corrispondenti ai tre assi X, Y e Z, forniscono una tensione proporzionale all’accelerazione applicata e che può variare tra 0V e Vdd (fino a 5V); quando sugli assi è applicata un’accelerazione di 1g sulle uscite è presente una tensione di circa Vdd/2.

 

LOW PIN COUNT USB DEV KIT

Quando si sceglie di realizzare un dispositivo USB solitamente ci si orienta verso dei microcontrollori che hanno periferiche dedicate, in modo che l’hardware sarà per la maggior parte integrato e la componentistica accessoria si limita a qualche componente. Nonostante questi vantaggi offerti oramai da quasi tutti i microcontrollori di fascia medio-alta, ci sono tuttavia una serie di accortezze da dover comunque tenere in considerazione durante la progettazione e realizzazione dei sistemi con periferica USB; una tra tutte è quella che riguarda i collegamenti tra microcontrollore e connettore USB i quali, se fatti senza i giusti criteri, possono compromettere il corretto funzionamento del protocollo.

Tutti questi aspetti da dover tenere in considerazione rappresentano un’àncora per la progettazione e realizzazione del dispositivo, soprattutto se si è alle prime armi con il mondo dell’USB. In queste situazioni è utile avvalersi dell’aiuto delle case costruttrici di microcontrollori che solitamente forniscono delle demo board pronte all’uso e con le quali è possibile iniziare a sviluppare il nostro progetto senza troppo preoccuparci della realizzazione dell’hardware. Nel nostro caso di si è scelto di adottare la Low Pin Count USB Dev kit della Microchip, la quale è predisposta per lo sviluppo di applicazioni USB e adotta il PIC18F14K50.

 

low_pin_count_uChip

La scelta è ricaduta su questa demo board fondamentalmente per due motivi: il prezzo contenuto e il micro adottato, il quale è un 8 bit e quindi adatto anche per altri progetti che non necessitano una connettività di tipo USB.

Questa scheda ha a bordo diversa componentistica utile allo sviluppo di più applicazioni, ma nel nostro cosa verrà utilizzato il pulsante, il led D4, il connettore USB e il microcontrollore ovviamente.

Per la programmazione di questa scheda è stato utilizzato il PICkit3, sempre della Microchip, collegato al connettore J6 (indicato con il numero 4):

low_pin_count_uChip_dett

Per quanto riguarda il debug invece le cose sono leggermente più complicate, infatti è necessario sostituire il microcontrollore con il “debug l’header” fornito in dotazione con la scheda e quindi connettere il PicKit3 al J1 della medesima:

header

 

Questa operazione è necessaria in quanto il PIC18F14K50 non ha a bordo la periferica di debug, posseduta invece nel microcontrollore della “debug header” (PIC18F14K50 ICD).

 

NOTA: la scheda appena mostrata non è più venduta dalla Microchip ed è stata sostituita dalla nuova versione presente sempre sul sito Microchip; per questo progetto è stata adottata la versione datata (ma comunque valida e funzionante) in quanto già in mio possesso. Tutto quello detto fin’ora rimane comunque valido.

 

DESCRIZIONE DEL PROGETTO

Hardware

Come già accennato ciò che deve realizzare il nostro progetto è un mouse che si muove tramite l’orientamento dell’accelerometro TinkerKit 3 assi; siccome questo accelerometro [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3064 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend