Sommario:

Controller Lapcade Arcade: 6 passaggi (con immagini)
Controller Lapcade Arcade: 6 passaggi (con immagini)

Video: Controller Lapcade Arcade: 6 passaggi (con immagini)

Video: Controller Lapcade Arcade: 6 passaggi (con immagini)
Video: Quando provi a fare un complimento a una ragazza... 2024, Dicembre
Anonim
Lapcade Arcade Controller
Lapcade Arcade Controller

Non sono un gran giocatore. Quando ero bambino, ero più interessato a vedere come funzionavano che a interpretarli. Posso contare da una parte a quanti giochi arcade ho giocato regolarmente. Detto questo, sarebbe facile per qualcuno trovare strano che mi prendessi il tempo per costruire un controller arcade. Tuttavia, è uno dei miei progetti preferiti fino ad oggi. Oltre ad essere impegnativo da progettare, codificare e costruire, è anche un ricordo di un'era passata di robusti pulsanti meccanici e joystick.

Sono finiti i giorni dell'Arcade, ma puoi ancora avere la sensazione di un classico gioco arcade direttamente nel tuo salotto. Quindi, qui vi presento il Lapcade. Se sei come me e ti piace costruire cose più che giocare, potresti goderti questa build. Se hai domande o suggerimenti non inclusi nella sezione "idee per la versione 2" di seguito, lascia un commento.

Passaggio 1: Panoramica

Panoramica
Panoramica
Panoramica
Panoramica

Cos'è questa cosa?

Innanzitutto, nota cosa non è Lapcade:

  • Non è una console di gioco.
  • Non ha giochi né ha la capacità di caricare e giocare.
  • Non si collega a TV o monitor.

La Lapcade è una tastiera Bluetooth. Niente di più, niente di meno.

Ne parlo perché c'è stata un po' di confusione su questo punto. Ho avuto molte domande su quali giochi possono essere caricati su di esso e che tipo di interfaccia video utilizza - non può e non lo fa! Dipende interamente dal PC a cui lo colleghi e, a tal proposito, il cielo è il limite. Se il tuo dispositivo può accettare una tastiera Bluetooth, allora Lapcade dovrebbe funzionare con essa. Non l'ho provato ma ho visto altri progetti che hanno utilizzato la EZ-Key (descritta di seguito) collegata a dispositivi palmari. Quindi, in teoria, puoi collegare questo dispositivo a qualsiasi computer con Windows, Linux, ChromeOS, MAC, ecc., nonché Raspberry Pi, Android, iOS e altri che supportano Bluetooth v2.1. Tuttavia, potrebbe essere necessaria la modifica dei codici chiave.

Pre-versione 1

Inizialmente, ho trovato un prodotto chiamato Adafruit Bluefruit EZ-Key bluetooth HID (dispositivo di interfaccia umana - pensa alla tastiera) che mi avrebbe permesso di connettere pulsanti cliccabili familiari e inviare sequenze di tasti come una tastiera. Quando ho realizzato per la prima volta un controller basato sull'EZ-Key, ho seguito una serie di istruzioni per creare un controller semplice e diretto e ha funzionato alla grande. Ho usato il controller in un telaio di legno pesante senza problemi per alcuni mesi. Tuttavia, sei limitato a 12 ingressi e non c'è modo di cambiare il codice chiave trasmesso dal dispositivo senza riprogrammare i pin di ingresso EZ-Key.

Poiché stavo usando il mio media center Kodi per visualizzare i giochi installati, volevo passare dal controllo del media center al gioco senza dover utilizzare più controller/telecomandi. Volevo anche che il dispositivo si regolasse in modo che mio figlio mancino potesse usarlo come voleva.

Stavo anche usando 4 batterie AA per alimentare il dispositivo e fuori dalla scatola non sembrava avere una modalità a basso consumo. Le batterie si sarebbero prosciugate in un giorno o due anche se non venivano utilizzate.

Quindi, su sollecitazione di un mio amico, ho deciso di costruire una versione programmabile dello stesso controller che avesse cambi di modalità rapidi, mi permettesse di utilizzare lo stesso dispositivo per controllare più applicazioni, potrebbe anche essere "capovolto" per la mano sinistra uso ed era in una custodia per laptop che era molto inferiore alla mia attuale soluzione da 10 libbre.

Era tempo per un aggiornamento.

Versione 1 Obiettivi del progetto di design:

  • Flessibile
  • Ricaricabile
  • Per mancini e destri
  • Nessun cavo
  • Leggero

Volevo che questo nuovo design fosse flessibile. I controlli devono essere modificabili al volo senza dover riprogrammare i componenti ogni volta che è necessario eseguire un test o una modifica. Ciò significava che era necessaria un'interfaccia sul controller per scegliere le "modalità" di funzionamento. Ad ogni pulsante e posizione del joystick dovrebbero essere associati codici chiave diversi. Quegli stessi controlli dovrebbero essere usati anche per selezionare le diverse modalità.

L'EZ-Key non era direttamente programmabile in tempo reale, quindi la soluzione successiva sarebbe stata quella di utilizzare un controller come un Arduino per gestire le funzionalità. La EZ-Key verrebbe utilizzata esclusivamente per trasmettere i codici chiave al PC tramite Bluetooth. Ho scelto Arduino Pro Mini per la sua compatibilità diretta con l'UNO (con cui avevo già esperienza) e per le sue dimensioni compatte.

Non volevo avere a che fare con le batterie con questa nuova scatola come ho fatto con il predecessore del Lapcade, quindi ho scelto di utilizzare una batteria ricaricabile ai polimeri di litio e una scheda di alimentazione/caricamento. Ciò significava che potevo semplicemente usare un caricabatterie USB standard. Significava anche che non avrei dovuto aprire la custodia ogni volta che le batterie si scaricavano. Sia l'EZ-Key che il PowerBoost 500C dispongono di indicatori che devono essere trasferiti nella parte superiore del controller per lo stato di associazione e l'indicazione di batteria scarica. Ho aggiunto alcuni LED al design in modo da poter riflettere questi pratici indicatori di stato per l'utente durante il funzionamento.

Man mano che i test del mio design sono maturati, ho scoperto che molte delle mie idee originali non erano come mi aspettavo. Ad esempio, l'indicatore LBO sul PowerBoost non funziona come previsto quando è collegato a un microcontrollore. Permetterà alla corrente di passare attraverso la massa comune dalla batteria mentre il dispositivo è "spento" o disabilitato, la spia LBO si accenderà e rimarrà accesa. Anche altri nel forum di Adafruit hanno riscontrato questo problema e hanno offerto una soluzione migliore nel campionamento della tensione della batteria direttamente su un ingresso analogico. Una volta che la tensione scende a un certo livello, è il momento di informare l'utente che la batteria sta per spegnersi.

Passaggio 2: cosa ti serve

Elenco delle parti elettroniche

Questo finì per diventare una build abbastanza complicata. Non devi usare le stesse parti che ho usato io, ma se usi una parte sostitutiva, assicurati di capire come interagirà con gli altri circuiti e codice. Sebbene sia lieto di offrire suggerimenti, non posso aiutare a risolvere i problemi relativi al codice o alle diverse configurazioni.

1 Arduino Pro Mini 5V - Mi piace il Pro perché è compatto. È possibile utilizzare qualsiasi scheda compatibile con pin/interrupt Uno con il codice fornito

1 Adafruit Bluefruit EZ-Key bluetooth HID - Come descritto sopra, questo è il bluetooth HID che consente la trasmissione dei codici chiave al PC host.

1 MCP23017 - Espansore porta i2c 16 input/output -Questo chip viene utilizzato per aggiungere altri 16 input all'Arduino tramite il protocollo di comunicazione I2C

1 Adafruit PowerBoost 500 + Charger - Questa è la scheda di controllo dell'alimentazione per alimentare il Lapcade e caricare il LiPo

1 batteria ai polimeri di litio (ho usato 2500 mAh, ma puoi usare una capacità superiore / inferiore)

1 Joystick Arcade a 8 vie - Si prega di consultare la sezione "pensieri per la versione 2" di seguito relativa ai joystick

9 Pulsanti Arcade - Colori e serigrafie assortiti

2 pulsanti momentanei illuminati: ho usato questi 2 pulsanti per i pulsanti Center 4 e 5 e sono di Adafruit: Rosso (Centro 4), Blu (Centro 5)

1 Pulsante di blocco illuminato Ho usato questo per il pulsante di accensione di Adafruit: Green

2 LED Utilizzati per fare riferimento al segnale di accoppiamento e alla batteria scarica. Ho usato due parti RadioShack 2760270 e 2760271

Schermo LCD 1 16 x 2

1 Zaino LCD I2C/SPI - Utilizzato per la comunicazione I2C al display 16x2.

1 Cavo di prolunga USB per montaggio a pannello - Utilizzato per estendere il connettore USB micro-b di PowerBoost alla parete dell'armadio.

1 PCB per breadboard a grandezza naturale Adafruit Perma-Proto - Non necessario, ma rende il montaggio permanente molto più semplice.

5 resistori da 220 Ohm

7 resistori da 1K Ohm

2 resistori da 2,2K Ohm

1 resistenza da 4,7K Ohm

18 connettori femmina a forcella n. 10 - Per il collegamento ai contatti dei pulsanti arcade. Consigliato sopra la saldatura poiché i pulsanti alla fine si usurano.

Cavo di collegamento calibro 22 - Ho usato un cavo di collegamento solido anziché intrecciato per realizzare una gestione del cavo indipendente. Questo era puramente a scopo dimostrativo e non è raccomandato in quanto il filo solido è fragile e soggetto a rotture.

I seguenti articoli non sono necessari ma renderanno più semplice il montaggio e, in caso di tostatura di un componente, ne faciliteranno la sostituzione:

  • Presa IC - per chip da 0.3" a 28 pin
  • Presa IC - per chip da 0,6" a 28 pin
  • Intestazione femmina da 0,1" (almeno 1 intestazione da 36 pin)

Parti del gabinetto:

  • 3 12 x 24 pannelli di betulla da 1/8 di pollice
  • 1 12 x 24 pannello acrilico trasparente da 1/8 di pollice

File:

  • Lapcade V1.xlsx - Il foglio di calcolo menzionato di seguito che contiene le connessioni del circuito.
  • LapcadeV1-code.zip - File zip contenente il codice Arduino scritto per questo progetto.
  • Lapcade_v1.zip - File zip contenente i disegni in formato svg per il cabinet.
  • LapcadeV1-Circuit_Diagram_Large.zip - File zip contenente una versione ad alta risoluzione dello schema circuitale fritzing mostrato di seguito.

Link a più risorse:

  • Documentazione sulla chiave EZ di Adafruit Bluefruit
  • Adafruit PowerBoost 500 + documentazione
  • Documentazione dello zaino LCD I2C/SPI
  • MCP23017 Documentazione dell'estensore della porta I2C
  • Libreria Arduino Adafruit MCP23017

Fase 3: Assemblaggio - Il Gabinetto

Assemblaggio - Il Gabinetto
Assemblaggio - Il Gabinetto
Assemblaggio - Il Gabinetto
Assemblaggio - Il Gabinetto
Assemblaggio - Il Gabinetto
Assemblaggio - Il Gabinetto
Assemblaggio - Il Gabinetto
Assemblaggio - Il Gabinetto

Volevo avere una scatola molto leggera che potesse anche essere battuta. Senza diventare troppo esotici con i materiali, leggero equivale a sottile e sottile di solito equivale a fragile. L'utente principale del Lapcade sarebbe probabilmente il mio giovane figlio a cui piace "premere" i pulsanti e "navigare" il joystick con estremo entusiasmo. Sebbene sia bravo a non far cadere le cose, è riuscito a consumare i microinterruttori industriali in un joystick in pochi mesi.

Per superare questo problema e poiché il Lapcade è largo 20 , il mio design ha aggiunto due nervature verticali che fissano i lati superiore e sinistro e destro. Durante il montaggio a secco, il design è stato in grado di resistere a 70 libbre di libri posizionati su di esso. Una volta incollato, la scatola è diventata ancora più resistente. Dopo aver ricevuto i materiali tagliati, inizialmente ho allentato tutti i pannelli per assicurarmi che funzionassero. Poi li ho leggermente levigati e spolverati d'aria. Ho usato la colla per legno per attaccare i pezzi insieme.

I libri nelle foto sottostanti sono stati posizionati per fare pressione sui pezzi appena incollati fino a quando non si sono fissati. Una volta che la colla si è asciugata, ho levigato i bordi. Il mio progetto ha intenzionalmente sfalsato i pannelli in modo che sporgessero un po' dagli angoli. Questo mi permetterebbe di arrotondare gli angoli durante la levigatura senza entrare troppo nel giunto.

Dopo aver pulito le superfici, ho poi applicato diverse mani di poliuretano, lasciando indurire tra una mano e l'altra. Il risultato è stato una scatola di legno leggera con un coperchio inferiore in acrilico. Inizialmente volevo una scatola completamente trasparente, ma quando mi ha inviato le parti "di prova" in betulla, ho subito cambiato idea. Non era solo più leggero, era anche un bel ritorno all'idea del gioco in cabina. I file SVG sono sotto.

Nota: questo è un disegno multistrato e ogni strato rappresenta una serie di tagli su un foglio di materiale. Quando invii una stampa alla taglierina, assicurati che tutti gli altri strati siano nascosti prima di tagliare.

Un'altra nota: quando ho disegnato l'area per il display LCD, ho usato un display che avevo a disposizione per le misurazioni. Tra il momento in cui ho realizzato il disegno e in seguito ho inserito le parti nella custodia, avevo utilizzato il display LCD originale in un altro progetto e ne avevo ordinato uno sostitutivo. A quanto pare, i fori di montaggio per il secondo erano leggermente diversi dall'originale e alla fine non si sono allineati. Quindi, fai attenzione prima di tagliare il materiale per ricontrollare che le parti che hai inserito nei fori nel disegno.

Una terza nota: non ho incluso un ritaglio per il cavo di ricarica USB nel disegno originale semplicemente perché non ero sicuro di dove volevo metterlo in modo che non interferisse con l'uso. Successivamente ho tagliato i fori per questo sul lato sinistro molto vicino a dove vedi la parola "Lapcade" nelle immagini sottostanti. La versione 2 avrà la porta di ricarica in una posizione ancora diversa.:)

Passaggio 4: Assemblaggio - Elettronica

Assemblaggio - Elettronica
Assemblaggio - Elettronica
Assemblaggio - Elettronica
Assemblaggio - Elettronica
Assemblaggio - Elettronica
Assemblaggio - Elettronica
Assemblaggio - Elettronica
Assemblaggio - Elettronica

Per prima cosa diamo un'occhiata allo schema elettrico mostrato sopra.

La prima cosa da notare qui è che i binari di alimentazione e di massa della breadboard. Le rotaie con la linea blu sono massa (-) e le rotaie con la linea rossa sono potenza (+). Questo è standard ma ne prendo nota perché la linea comune del joystick (filo nero) è collegata all'alimentazione e non a terra. In Fritzing ho usato il colore del filo del joystick piuttosto che il colore della convenzione e ho pensato che potesse causare un po' di confusione, quindi meglio toglierlo di mezzo.

Collegamenti dei componenti

Piuttosto che provare a dichiarare ogni connessione in forma lunga qui (il pin analogico Arduino 0 passa attraverso un resistore da 220 ohm al pin PowerBoost Bat), ho creato un foglio di calcolo che contiene tutte le connessioni dal punto di vista del componente. Quindi, nella scheda Arduino del foglio di calcolo, vedrai APM A0 -> 2.2K OHM -> PB Bat e nella scheda PowerBoost vedrai PB BAT -> 2.2K OHM -> APM A0. Si prega di consultare la sezione delle risorse di seguito per tutti i file associati a questo progetto.

Un'altra nota sul foglio di calcolo è che alcuni dispositivi mostrano due colonne di connessione. Questo serve per mostrare più di una connessione a un pin. Ad esempio, ciascuna delle connessioni del joystick, tranne il cavo comune, utilizza un resistore pull-down per garantire che l'estensione della porta riceva un segnale alto o basso solido. Per mostrare questo per il Joystick 2, vedrai due colonne per il collegamento, una per il cavo del joystick al pin MCP 21 e l'altra per una connessione dal pin 21 attraverso un resistore a terra. Sono sicuro che ci sono modi migliori per documentarlo, ma temo che tu sia bloccato con i miei modi di fare le cose su questo.:)

Ciascuno dei pulsanti arcade ha un contatto comune (com), un contatto normalmente aperto (no) e normalmente chiuso (nc). Per ciascuno di questi pulsanti, sto usando le connessioni com e nc.

Passaggio 5: codice

Codice
Codice

Prima di tutto, devo dare credito dove è dovuto. Mi sono basato molto sul seguente articolo per codificare il Lapcade:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid Un ringraziamento speciale a Benjamin Gould per un progetto ben scritto e documentato!

Quindi, al centro di questo progetto c'è una tastiera. Dal punto di vista del PC, il Lapcade è semplicemente una tastiera collegata tramite bluetooth, cosa in cui l'EZ-Key è così bravo. Prende i complicati protocolli, tempi e codici Bluetooth e li incapsula in modo che tutto ciò che devo fare con arduino sia inviargli i codici chiave. Per fare ciò, ho usato le mappe di codice nel progetto sopra e i miei array per creare modalità operative. Ogni modalità cambia ciò che viene premuto lo stesso pulsante sul Lapcade e ciò che viene inviato al PC. Ci sono tre modalità operative "incorporate" e tutte le modalità successive sono modalità applicative.

Modalità operative

Di seguito vengono riepilogate le modalità operative del Lapcade:

  1. Avvio - Questa modalità verifica la connettività con il PC e imposta le variabili di avvio. Se l'EZ-Key non è associato a un PC, passa alla modalità di associazione
  2. Accoppiamento - In questa modalità l'EZ-Key è in attesa di essere accoppiato a un PC.
  3. Selezione modalità: questa modalità consente all'utente di selezionare la modalità dell'applicazione da utilizzare. In questa modalità non vengono inviati codici chiave al PC. Sono disponibili anche selezioni di modalità rapide basate sulla modalità dell'applicazione precedente. Ad esempio, premendo la modalità e quindi il pulsante giocatore due quando si è in modalità giocatore 1 Mame cambia semplicemente la modalità senza dover cercare e selezionare Giocatore 2 Mame sul display.

Modalità di applicazione

Le modalità dell'applicazione vengono utilizzate per inviare i codici chiave appropriati al PC in base all'applicazione in cui si trova l'utente. Ad esempio in modalità Kodi il tasto azione 2 invia "P" che è pausa. In Mame, quello stesso pulsante invia il tasto Alt sinistro. Se si desidera utilizzare il controller per giocare a Minecraft per PC, è sufficiente aggiungere le mappe di array appropriate.

Ogni applicazione deve essere definita in 4 array di dati.

  • mode - Questo array contiene il testo che verrà presentato sullo schermo per ogni modalità. Per utilizzare la seconda riga del display, è sufficiente posizionare un ~ nell'array come interruzione di riga.
  • keyModes[14] - Questa matrice di matrice contiene i codici chiave inviati al PC. Ogni riga di 14 elementi rappresenta i singoli pulsanti per le mappature dei codici chiave.
  • keyModifiers[14] - Questo array di matrici contiene i modificatori del codice tasto per ogni sequenza di tasti, ad esempio tenendo premuto il tasto Maiusc.
  • quickMode[3] - Questa matrice di matrice contiene il modello di selezione della modalità rapida per la modalità corrente.

Operazione base

All'accensione il sistema entra in modalità di avvio dove lo stato della connessione Bluetooth viene verificato e mostrato all'utente. L'Arduino ottiene lo stato dell'EZ-Key contando e cronometrando gli impulsi dal pin L1 dell'EZ-Key. Ci sono quattro sottostati per la modalità di avvio:

  • Associazione: l'EZ-Key è in modalità di associazione attiva in attesa di essere collegata a un dispositivo.
  • Associato ma non connesso: l'EZ-Key è stato associato in precedenza ma non è attualmente connesso al dispositivo host.
  • Associato e connesso: l'EZ-Key è accoppiato e la connessione è stata stabilita con l'host. A questo punto il sistema passerà a Mode Select.
  • Stato sconosciuto - L'EZ-Key restituisce un codice sconosciuto o c'è un'interferenza di segnale che sta producendo uno schema di segnale sconosciuto. Il sistema tratterrà e avviserà l'utente. Deve riavviare se ciò si verifica.

Se il sistema è associato ma non riesce a connettersi al PC, il sistema rimarrà nello stato di connessione in modalità di avvio. Se l'utente tiene premuto il pulsante Esc mentre accende il dispositivo, salterà il controllo della connessione Bluetooth e procederà alla selezione della modalità.

Se il sistema non è stato precedentemente accoppiato, la modalità di avvio verrà seguita dalla modalità di associazione. In questo stato il sistema trasmetterà che è disponibile per l'associazione. Una volta scoperto e collegato a un host, passerà a Mode Select. Il dispositivo può essere disassociato in Mode Select premendo il pulsante Azione 1.

In Mode Select, le azioni del joystick su e giù ti sposteranno attraverso le modalità di applicazione disponibili sul display LCD. Per selezionare una delle modalità, premere il pulsante di invio (centro 5).

Una volta in una modalità applicazione, ciascuno dei pulsanti e il joystick invieranno i codici dei tasti secondo le mappe dei tasti specificate nei quattro array come descritto sopra.

Modalità rapide

Una volta selezionata una modalità di applicazione, viene impostata la definizione della modalità rapida. In parole povere, le modalità rapide sono le modalità di applicazione selezionabili dai primi tre pulsanti centrali (Centro 1-3). Questi tre pulsanti corrispondono all'elemento dell'array nella matrice.

Ad esempio, nella configurazione corrente, quando si utilizza Mame in modalità giocatore 1 (modalità 4 o la quinta modalità definita), quindi premendo il pulsante modalità e quindi il pulsante giocatore due carica l'elemento array [4][1] modalità rapida (Arduino usa 0 indicizzazione dell'array di base) che è 5. Il sistema passa quindi alla modalità di applicazione 5 che è Mame, giocatore 2.

Passaggio 6: Idee per la versione 2

Display a pulsanti - Immagino che non sia possibile pianificare tutto, ma c'è un'idea di design che vorrei avere all'inizio per la versione uno: pannelli LCD a pulsanti individuali. È diventato chiaro molto rapidamente dopo aver costruito che solo sapere in quale modalità ti trovi non significa che ricordi cosa fa ogni pulsante, specialmente dopo che te ne sei allontanato per un paio di giorni o mesi. Vorrei davvero aver aggiunto una sorta di piccolo display sopra o sopra ogni pulsante che mostrasse qual è la sua azione attuale. Questo è in cima alla mia lista per la versione 2.

Joystick a 4 vie vs Joystick a 8 vie - Un'altra cosa che è diventata chiara quando ho iniziato a usare il joystick è che i giochi più vecchi non erano pensati per usare joystick a 8 vie. Il caso in questione è pac-man. Da quando ho costruito questo controller, ho scoperto che esistono joystick che possono essere commutati meccanicamente da 4 vie a 8 vie. Sì, quello è nell'elenco e se hai intenzione di giocare ai classici giochi arcade, passa a uno che è modificabile. Ovviamente, assicurati di tenere conto delle modifiche al cablaggio e alla programmazione in base al joystick con cui finisci. Ecco alcuni fornitori di controlli arcade classici:

  • https://www.ultimarc.com/controls.html
  • https://groovygamegear.com/webstore/index.php?main…

Pulsanti "Flipper" lato destro e sinistro - La versione 2 aggiungerà sicuramente un pulsante ciascuno al lato sinistro e destro del cabinet. Un possibile utilizzo sarà per i flipper.

Altri controlli: sto valutando la possibilità di aggiungere altri controlli comuni come trackball e/o spinner alla versione successiva. Poiché l'EZ-Key è in grado di trasmettere le coordinate del mouse, questo non dovrebbe essere troppo difficile.

Programmazione integrata - La prossima versione deve avere la capacità di aggiungere nuove configurazioni senza aprire il case. Volevo aggiungere questo alla versione 1, ma ha richiesto più tempo e risorse di me.

Concorso Wireless
Concorso Wireless
Concorso Wireless
Concorso Wireless

Secondo Premio al Wireless Contest

Consigliato: