Creative Commons BY-NC-ND 2.5Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti: basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni potete farlo tranquillamente.

ORbit16™ Joystick BitPack™

Autore: Giovanni Bernardo | Data pubblicazione: 18 gennaio 2012
Categorie: ORbit16™

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. Il contributo richiesto è di €12, comprensivo 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.

Prima di procedere seguite le istruzioni riportate nella pagina servizi.

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

NOTA: Ad ogni modo in questi giorni devono arrivarmi dei componenti per realizzare altri Joystick Bitpack™, per cui se siete interessati anche ai componenti o alla scheda già montata e collaudata, mandatemi una email attraverso la sezione contatti. Avviso però che i componenti saranno disponibili per massimo 2/3 persone (nota: unica differenza rispetto alle foto è che l’header sarà nero anzichè giallo e l’header per l’UART sarà di tipo normale, non polarizzato).

Link alla pagina ufficiale del progetto

Galleria fotografica

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? SettoreZero è realizzato soltanto con contenuti originali: tutti gli articoli sono curati con passione dagli autori e nulla viene copiato da altri siti. Supporta e mantieni in vita SettoreZero con una donazione: basta soltanto un caffè o una birra. Puoi supportare SettoreZero anche con uno dei progetti elencati nella sezione servizi o partecipare anche tu con un tuo articolo/progetto personale.

Se desiderate che SettoreZero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa.

Puoi andare alla fine dell'articolo e lasciare un commento. I trackback e i ping non sono attualmente consentiti.

  1. #1 da Alberto89 il 13 febbraio 2014

    Buongiorno,
    mi sarebbe piaciuto utilizzare una scheda come questa per comandare il mio robot a distanza tramite i moduli Xbee Pro 868MHz.
    Mi potesti spiegare in che modo potrei fare?

    Il problema è che io non volevo utilizzare, possibilmente, Orbit16, visto che non ha l’alloggiamento per il modulo Xbee, ma piuttosto un’altra scheda che acquisterei da robotitaly (XBee – USB Board http://www.robot-italy.com/it/xbee-usb-board.html ) chi conosce bene. Con questa avrei la possibilità sia di collegare i vari input analogici e digitali direttamente al modulo sia di poter inviare dei comandi dal computer anziché dal joystick.

    Ho già delle schede in mio possesso:

    – ( http://www.robot-italy.com/it/muin-usb-pic18f2550-multi-interface-usb-board.html ) questa che ho acquistato da RobotItaly, avendo un Pic, mi permetterebbe anche di inviare comandi al robot direttamente, senza che sia lui a richiederli (cosa che mi piacerebbe molto). il problema è che, se non sbaglio, non posso inviare comandi dal computer pur avendo la porta USB. non posso collegare gli input direttamente al modulo xbee ma posso comunque collegarli al microcontrollore.

    -( http://ftp1.digi.com/support/documentation/xbibudev_referenceguide.pdf ) da qua posso collegare gli input direttamente al modulo xbee e posso inviare i comandi dal computer ma non posso programmarlo per inviare autonomamente i segnali del joystick al robot.

    Se mi puoi aiutare mi faresti un grande piacere e acquisterei, se si può sfruttare in questo caso, la tua scheda del joystick.
    grazie!

Devi essere collegato per lasciare un commento.

  1. Ancora nessun trackback
settorezero.com e il logo Zroid™ ©2007÷2015 Giovanni Bernardo - E' vietata la copia e la distribuzione anche parziale dei contenuti di questo sito web senza l'esplicito consenso dell'autore.
I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia a cui vanno aggiunte le condizioni d'uso definite nel disclaimer.
settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge. Settorezero fa uso dei cookie leggi l'informativa estesa.
Creative Commons BY-NC-ND 2.5
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.