ORbit16™ Joystick BitPack™

Il Joystick Bitpack™ è una scheda di espansione per ORbit16™ che permette di implementare un Joystick USB HID + Seriale completo di 2 assi analogici e 8 pulsanti. La sua realizzazione è davvero molto semplice: è possibile realizzarla su una normale basetta a singola faccia in formato quarto di eurocard (50x75mm da ridurre poi eventualmente a 50×70).

Una delle altre caratteristiche che non avevo elencato per ORbit16™ è anche questa: la possibilità di utilizzare formati di basette standard quando andiamo ad utilizzare la fotoincisione. L’utilizzo del formato 1/4 di eurocard permette di utilizzare i pin di espansione più interni della scheda, lasciando liberi quelli esterni per eventuali connessioni parallele o collegamento di strumentazione (oscilloscopi/analizzatori logici/tester ecc).

Dicevo: ORbit16™ si trasforma in un Joystick USB HID: la scheda verrà difatti riconosciuta dal PC come un normale Gamepad ed è possibile utilizzarla con i nostri giochi preferiti. L’esempio è adattato da quello identificato “Device – HID – Joystick” presente nella MAL. In aggiunta a tale esempio (oltre all’adattamento e all’implementazione di tutte le funzionalità del joystick compresa la lettura degli assi analogici mediante il convertitore AD integrato) ho aggiunto una connessione UART, utile se si vuole, ad esempio, utilizzare il joystick per il controllo di un robot, magari attraverso un modulo XBee o altri tipi di interfacciamento.

Di default la UART è configurata per lavorare a 57600,n,8,1 e fornisce in uscita i dati nel seguente formato:

X:127 Y:127 B:128

Viene in pratica fornito il valore dei due assi X e Y in formato unsigned char, il valore 127 (o prossimo ad esso, dipende dalle tolleranze dei trimmer del joystick) indica la posizione centrale. Per l’asse X un valore superiore a 127 indica uno spostamento a destra, minore di 127 a sinistra. Per l’asse Y un valore superiore a 127 indica uno spostamento verso il basso, al contrario un valore inferiore a 127 indica spostamento verso il basso. Il valore che segue B: indica lo stato degli 8 pulsanti. Ogni pulsante imposta ad uno (pulsante premuto) o a zero il relativo bit in questo valore.

Sugli IO ai quali vengono collegati i pulsanti viene sfruttata la funzionalità delle resistenze di pullup integrate. Sappiamo che questa funzione è prevista sui pin Change Notification, indicati con CNx sul datasheet e aventi anche la caratteristica di generare un interrupt al cambio di stato. Questa funzione viene sfruttata su tutti gli IO dei pulsanti tranne su RB7 (CN23) per il quale è già prevista una resistenza di pullup su ORbit16™, essendo tale pulsante utilizzato anche dal bootloader; ad ogni modo questo pulsante è riportato per comodità anche sul Joystick Bitpack™, così come il led che segnala il funzionamento del joystick.

In questo video è mostrato il funzionamento del Joystick Bitpack™ collegato contemporaneamente tramite USB (dati letti dal mio programma Joytester) e tramite adattatore USB/Seriale a 3.3V (dati letti da Hyperterminal) :

Nella seguente tabella è riassunto il collegamento degli IO con gli utilizzatori presenti sul Joystick Bitpack™

I/OUtilizzatoreChange Notification pinUsoNote
RB13S1CN13Pulsante 1 (quadrato)
RB2S2CN6Pulsante 2 (X)
RB1S3CN5Pulsante 3 (cerchio)
RB3S4CN7Pulsante 4 (triangolo)
RB9S5CN21Pulsante 9 (select)
RB8S6CN22Pulsante 10 (start)
RB7S7CN23 (non usato)Pulsante 6 (R1)In parallelo con SW2 su ORbit16, che ha già la resistenza di pullup
RB0S8CN4Pulsante 5 (L1)Attivato su pressione dello stick
MCLRS9ResetIn parallelo con SW1 su ORbit16
RB5LEDIn parallelo con DL2 su ORbit16
AN0 (RA0)Asse X
AN1 (RA1)Asse Y
RB14UART1 RX
RB15UART1 TX

Nei download (ricordo: riservati a coloro che hanno acquistato una ORbit16™), sono presenti il progetto MPLAB completo di sorgenti, lo schema elettrico e la documentazione per realizzare la scheda di espansione in casa mediante fotoincisione.

L’elenco dei componenti necessari per la realizzazione del Joystick Bitpack™  è il seguente:

  • un mini-joystick analogico, tipo quello dei controller della PS2, acquistabile su Robot-Italy. Questo tipo di joystick ha anche un pulsante attivato dalla pressione dello stick.
  • 4 pulsanti (tactile switch) in formato più grande del normale: 12×12 mm, muniti di cappucci colorati (Robot-Italy)
  • 4 pulsanti da PCB in formato classico 6x6mm
  • 1 led da 3mm
  • 1 resistenza 330Ω ¼W
  • 1 resistenza 560Ω ¼W
  • due header maschio da 20pin, da montare sulla scheda allo stesso modo descritto qui
  • un header da 4 pin (o connettore polarizzato come quello che ho usato io, visibile nelle foto) se volete utilizzare l’uscita UART

Come ottenere un Joystick BitPack™ per ORbit16™

Per questa scheda non ho previsto di farmi realizzare un PCB industriale dal momento che lo scopo di realizzare ORbit16™ nel modo che ho progettato è proprio quello di permettere a tutti di realizzarsi gli accessori in maniera facile. Ad ogni modo se non siete in grado di realizzare la basetta da soli, posso realizzarvela io e spedirla tramite posta ordinaria.

Chi richiede un PCB del Joystick BitPack™ per ORbit16™ contribuisce alle spese di gestione di settorezero.com. E’ richiesta una donazione minima di €10, comprensiva di spese di spedizione con posta ordinaria (viene fornito il solo PCB senza componenti). Il PCB è realizzato con il metodo della fotoincisione su basette Bungard FR4, singola faccia, e forato con punte in Widia su trapano a colonna. La qualità ottenuta è visibile nelle foto sotto. Se non volete inviare denaro sono disponibile anche ad eseguire scambio di materiali: seguite le istruzioni riportate nella pagina servizi.

Per quanto riguarda i componenti necessari per completare il PCB potete trovarli tutti su Robot-Italy.

Link alla pagina ufficiale del progetto

Galleria fotografica

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)