Taula de continguts:

Lapcade Arcade Controller: 6 passos (amb imatges)
Lapcade Arcade Controller: 6 passos (amb imatges)

Vídeo: Lapcade Arcade Controller: 6 passos (amb imatges)

Vídeo: Lapcade Arcade Controller: 6 passos (amb imatges)
Vídeo: 07 29 81 2024, Juny
Anonim
Lapcade Arcade Controller
Lapcade Arcade Controller

No sóc molt jugador. Quan era petit, tenia més interès a veure com funcionaven que a tocar-los. Puc comptar d’una banda amb quants jocs d’arcade he jugat regularment. Dit això, seria fàcil que algú trobés estrany que em dediqués el temps a construir un controlador arcade. Tot i això, és un dels meus projectes preferits fins ara. A més de ser difícil de dissenyar, codificar i construir, també és un recordatori d’una era passada de botons mecànics i joysticks resistents.

S’han acabat els temps d’Arcade, però encara podeu tenir la sensació d’un joc arcade clàssic al vostre propi saló. Així doncs, aquí us presento el Lapcade. Si sou com jo i us agrada construir coses més que jugar, és possible que gaudiu d'aquesta construcció. Si teniu alguna pregunta o suggeriment que no estigui inclosa a la secció "idees per a la versió 2", deixeu un comentari.

Pas 1: Visió general

Visió general
Visió general
Visió general
Visió general

Què és això?

En primer lloc, tingueu en compte què no és Lapcade:

  • No és una consola de jocs.
  • No té jocs ni té la capacitat de carregar i jugar.
  • No es connecta a un televisor ni a un monitor.

El Lapcade és un teclat Bluetooth. Ni més ni menys.

Vaig plantejar-ho perquè hi ha hagut certa confusió al voltant d’aquest punt. He tingut moltes preguntes sobre quins jocs s’hi poden carregar i quin tipus d’interfície de vídeo utilitza: no pot ni ho fa. Depèn completament del PC al qual el connecteu i, en aquest sentit, el cel és el límit. Si el vostre dispositiu pot acceptar un teclat Bluetooth, Lapcade hauria de funcionar amb ell. No ho he provat, però he vist altres projectes que han utilitzat la tecla EZ (descrita a continuació) connectada a dispositius de mà. Així, teòricament, podeu connectar aquest dispositiu a qualsevol ordinador amb Windows, Linux, ChromeOS, MAC, etc., així com a Raspberry Pi, Android, iOS i altres que admetin Bluetooth v2.1. Tanmateix, pot ser que calgui modificar els codis de clau.

Pre-versió 1

Originalment, vaig trobar un producte anomenat Adafruit Bluefruit EZ-Key bluetooth HID (dispositiu d’interfície humana - pensa teclat) que em permetia connectar botons clics familiars i enviar pulsacions de teclat com un teclat. Quan vaig construir un controlador basat en la tecla EZ, vaig seguir un seguit d’instruccions per construir un controlador senzill i directe i va funcionar molt bé. Vaig utilitzar el controlador en un marc pesat de fusta sense problemes durant uns mesos. Tanmateix, esteu limitat a 12 entrades i no hi ha manera de canviar el codi de tecles transmès pel dispositiu sense reprogramar els pins d'entrada de la tecla EZ.

Mentre feia servir el centre multimèdia Kodi per mostrar els jocs instal·lats, volia canviar entre controlar el centre multimèdia i el joc sense haver d’utilitzar diversos controladors / comandaments a distància. També volia que el dispositiu s’ajustés perquè el meu fill esquerrà el pogués fer servir com li agradés.

També feia servir 4 bateries AA per alimentar el dispositiu i, fora de la caixa, no semblava que tingués un mode de baix consum. Les bateries s’assequarien en un o dos dies, encara que no s’utilitzessin.

Per tant, a instàncies d’un amic meu, vaig decidir construir una versió programable del mateix controlador que tingués canvis ràpids de mode, em permetria fer servir el mateix dispositiu per controlar diverses aplicacions, i també es podria “donar la volta” a la mà esquerra i estava en una funda per a portàtils que era molt inferior a la meva solució actual de 10 lliures.

Era el moment d’una actualització.

Objectius de DesignProject de la versió 1:

  • Flexible
  • Recarregable
  • Per a esquerrans i dretans
  • Sense cordons
  • Lleuger

Volia que aquest nou disseny fos flexible. Els controls han de ser canviants sobre la marxa sense haver de reprogramar els components cada vegada que calgui fer una prova o canvi. Això significava que calia que hi hagués una interfície al controlador per triar els "modes" de funcionament. Cada posició del botó i del joystick hauria de tenir diferents codis de tecles associats. Aquests mateixos controls també haurien d’utilitzar-se per seleccionar també els diferents modes.

L'EZ-Key no era programable directament en temps real, de manera que la següent solució seria utilitzar un controlador com un Arduino per gestionar la funcionalitat. La tecla EZ només s’utilitzaria per transmetre els codis de clau al PC mitjançant Bluetooth. Vaig triar l'Arduino Pro Mini per la seva compatibilitat directa amb la UNO (amb la qual ja tenia experiència) i per la seva mida compacta.

No volia tractar les bateries amb aquesta nova caixa, com ho vaig fer amb el predecessor de Lapcade, així que vaig optar per utilitzar una bateria recarregable de polímer de liti i una placa de carregador / subministrament. Això significava que podia utilitzar un carregador USB estàndard. També volia dir que no hauria d’obrir la caixa cada cop que es mourien les bateries. L’EZ-Key i el PowerBoost 500C tenen indicadors que calia transferir a la part superior del controlador per a l’estat de sincronització i la indicació de la bateria baixa. He afegit alguns LED al disseny per poder reflectir aquests útils indicadors d'estat a l'usuari durant el funcionament.

Quan les proves del meu disseny van madurar, vaig descobrir que diverses de les meves idees originals no eren les que esperava. Per exemple, l'indicador LBO del PowerBoost no funciona com s'esperava quan es connecta a un microcontrolador. Permetrà que el corrent passi pel terreny comú des de la bateria mentre el dispositiu està "apagat" o desactivat, la llum LBO s'encén i es manté encesa. Altres del fòrum d'Adafruit també havien trobat aquest problema i oferien una millor solució en el mostreig de la tensió de la bateria directament en una entrada analògica. Un cop el voltatge baixa a un nivell determinat, és hora de fer saber a l’usuari que la bateria està a punt d’apagar-se.

Pas 2: el que necessiteu

Llista de peces electròniques

Això es va acabar convertint en una construcció força complicada. No heu d’utilitzar les mateixes parts que jo, però si feu servir una peça substitutòria, assegureu-vos d’entendre com interactuarà amb els altres circuits i codis. Tot i que estic encantat d’oferir suggeriments, no puc evitar resoldre problemes de codi o problemes per a diferents configuracions.

1 Arduino Pro Mini 5V: el Pro m'agrada perquè és compacte. Podeu utilitzar qualsevol tauler compatible Uno pin / interrupt amb el codi proporcionat

1 Adafruit Bluefruit EZ-Key bluetooth HID: tal com s'ha descrit anteriorment, aquest és el bluetooth HID que permet transmetre els codis de clau al PC amfitrió.

1 MCP23017 - Expandidor de ports d'entrada / sortida i2c 16: aquest xip s'utilitza per afegir 16 entrades més a l'Arduino mitjançant el protocol de comunicacions I2C

1 carregador Adafruit PowerBoost 500 + - Aquesta és la placa de control de potència per alimentar el Lapcade i carregar el LiPo

1 bateria de polímer de liti (he utilitzat 2500 mAh, però podeu fer servir una capacitat més alta / inferior)

1 Joystick Arcade de 8 vies: consulteu la secció "Pensaments per a la versió 2" següent relacionada amb els joysticks

9 botons premuts Arcade: colors i serigrafies variats

2 polsadors momentanis il·luminats: he utilitzat aquests 2 botons per als botons centrals 4 i 5 i són d'Adafruit: vermell (centre 4), blau (centre 5)

1 Polsador de bloqueig il·luminat L'he utilitzat per al botó d'engegada d'Adafruit: Verd

2 LED que s’utilitzen per fer referència al senyal d’aparellament i a la bateria baixa. He utilitzat dues parts de RadioShack 2760270 i 2760271

1 pantalla LCD de 16 x 2

1 motxilla I2C / SPI LCD: s'utilitza per a la comunicació I2C a la pantalla de 16x2.

1 cable d'extensió USB muntat al tauler: s'utilitza per estendre el connector USB micro-b del PowerBoost a la paret de l'armari.

1 Adafruit Perma-Proto PCB de mida completa: no és necessari, però facilita molt el muntatge permanent.

5 resistències de 220 Ohm

7 resistències 1K Ohm

2 resistències de 2,2K Ohm

1 resistència de 4,7 k ohmis

18 # 10 Connectors femella de pala: per connectar-se als contactes del botó arcade. Es recomana una soldadura excessiva, ja que els botons esgotaran.

Fil de connexió de calibre 22: he utilitzat filferro de connexió sòlid en lloc de varat per tal de gestionar el cablejat de forma independent. Això es va fer exclusivament amb finalitats de demostració i no es recomana ja que el filferro sòlid és fràgil i propens a trencar-se.

Els elements següents no són obligatoris, però facilitaran el muntatge i, en cas que torreu un component, en facilitarà la substitució:

  • Socket IC: per a xips de 0,3 "de 28 pins
  • Socket IC: per a xips de 0,6 "de 28 pins
  • Capçalera femenina de 0,1 "(capçalera de 1 36 pins com a mínim)

Parts del gabinet:

  • 3 panells de bedoll de 12 x 24 1/8 polzades
  • 1 panell acrílic transparent de 12 x 24 1/8 polzades

Fitxers:

  • Lapcade V1.xlsx: el full de càlcul esmentat a continuació que té les connexions del circuit.
  • LapcadeV1-code.zip: fitxer zip que conté el codi Arduino escrit per a aquest projecte.
  • Lapcade_v1.zip: fitxer zip que conté els dibuixos svg del gabinet.
  • LapcadeV1-Circuit_Diagram_Large.zip - Fitxer Zip que conté una versió en alta resolució del diagrama de circuits fritzing que es mostra a continuació.

Enllaços a més recursos:

  • Documentació Eaf-Key d’Adafruit Bluefruit
  • Documentació d'Adafruit PowerBoost 500 +
  • Documentació de la motxilla LCD I2C / SPI
  • MCP23017 Documentació de l’extensor de ports I2C
  • Biblioteca Adafruit MCP23017 Arduino

Pas 3: Muntatge: el gabinet

Assemblea - El gabinet
Assemblea - El gabinet
Assemblea - El gabinet
Assemblea - El gabinet
Assemblea - El gabinet
Assemblea - El gabinet
Assemblea - El gabinet
Assemblea - El gabinet

Volia tenir una caixa molt lleugera que també pogués patir una pallissa. Sense posar-se massa exòtics amb els materials, el pes lleuger és fi i el prim sol ser fràgil. L'usuari principal de Lapcade probablement seria el meu fill petit, a qui li agrada "prémer" els botons i "navegar" pel joystick amb un entusiasme extrem. Tot i que és bo no deixar caure coses, va aconseguir desgastar els micro interruptors industrials en un joystick en pocs mesos.

Per superar aquest problema i com que Lapcade fa una amplada de 20 , el meu disseny es va afegir en dues nervadures verticals que asseguren els costats superior i esquerre i dret. Durant el muntatge en sec, el disseny va ser capaç de suportar 70 lliures de llibres col·locats. la caixa es va fer encara més duradora. Després de rebre els materials tallats, inicialment vaig deixar anar tots els panells junts per assegurar-me que funcionessin. Després els vaig llejar lleugerament i vaig empolsinar-los amb aire. Vaig utilitzar cola de fusta per unir les peces.

Els llibres de les fotos següents es van col·locar per pressionar les peces acabades d’enganxar fins que es fixessin. Un cop curada la cola, vaig llisar les vores. El meu disseny compensava intencionadament els panells perquè quedessin una mica a les cantonades. Això em permetria arrodonir les cantonades durant el polit sense entrar massa a l’articulació.

Després de netejar les superfícies, vaig aplicar diverses capes de poliuretà, cosa que permetia curar entre capes. El resultat va ser una caixa de fusta lleugera amb una coberta inferior d’acrílic. Originalment havia volgut una caixa totalment clara, però quan em va enviar les peces de "prova" de bedoll, de seguida vaig canviar d'opinió. No només va ser més lleuger, va suposar un bon retorn a la idea dels jocs de gabinet. Els fitxers svg són a continuació.

Tingueu en compte que es tracta d'un dibuix de diverses capes i que cada capa representa un conjunt de talls en una fulla de material. Quan envieu una impressió al tallador, assegureu-vos que totes les altres capes estiguin amagades abans de tallar-les.

Una altra nota: quan vaig dibuixar l'àrea per a la pantalla LCD, vaig fer servir una pantalla que tenia a mà per mesurar. Entre el moment en què vaig elaborar el dibuix i, posteriorment, vaig ajustar les peces de la caixa, havia utilitzat la pantalla LCD original en un altre projecte i vaig demanar una substitució. Resulta que els forats de muntatge del segon eren lleugerament diferents de l’original i acabaven sense alinear-se. Per tant, tingueu cura abans de tallar el material per comprovar que les parts que teniu s’ajusten als forats del dibuix.

Una tercera nota: no vaig incloure cap retall del cable de càrrega USB al dibuix original simplement perquè no estava segur d’on volia posar-lo, de manera que no interfereixi en l’ús. Més tard li vaig tallar els forats al costat esquerre molt a prop d'on veieu la paraula "Lapcade" a les imatges següents. La versió 2 tindrà el port de càrrega en una posició diferent.:)

Pas 4: Muntatge: electrònica

Muntatge - Electrònica
Muntatge - Electrònica
Muntatge - Electrònica
Muntatge - Electrònica
Muntatge - Electrònica
Muntatge - Electrònica
Muntatge - Electrònica
Muntatge - Electrònica

Primer fem una ullada al diagrama de cablejat que es mostra més amunt.

El primer que cal tenir en compte aquí és que els rails d’alimentació i de terra de la taula de suport. Els rails amb la línia blava són terra (-) i els rails amb la línia vermella són elèctrics (+). Això és estàndard, però en faig una nota perquè la línia comuna del joystick (cable negre) està connectada a l’alimentació i no a terra. A Fritzing vaig fer servir el color filferro del joystick en lloc del color convencional i vaig pensar que podia causar certa confusió, així que és millor treure-ho del camí.

Connexions de components

En lloc d’intentar establir totes les connexions de forma llarga aquí (el pin analògic Arduino 0 passa per una resistència de 220 ohm al pin PowerBoost Bat), he creat un full de càlcul que conté totes les connexions des del punt de vista del component. Per tant, a la pestanya Arduino del full de càlcul, veureu APM A0 -> 2.2K OHM -> PB Bat i a la pestanya PowerBoost veureu PB BAT -> 2.2K OHM -> APM A0. Consulteu la secció de recursos següent per a tots els fitxers associats amb aquest projecte.

Una altra nota sobre el full de càlcul és que alguns dispositius mostren dues columnes de connexió. Es tracta de mostrar més d’una connexió a un pin. Per exemple, cadascuna de les connexions del joystick, excepte el cable comú, utilitza una resistència desplegable per assegurar-se que el prolongador de ports rep un senyal sòlid alt o baix. Per mostrar-ho per al Joystick 2, veureu dues columnes per a la connexió, una per al cable del joystick al pin MCP 21 i l’altra per a una connexió des del pin 21 a través d’una resistència a terra. Estic segur que hi ha maneres millors de documentar-ho, però em temo que us queda enganxat amb les meves maneres de fer les coses.:)

Cadascun dels botons arcade té un contacte comú (com), un contacte obert (no) i normalment tancat (nc). Per a cadascun d’aquests botons, estic fent servir connexions com i nc.

Pas 5: Codi

Codi
Codi

En primer lloc, he de donar el crèdit allà on és degut. Vaig confiar molt en el següent article per codificar Lapcade:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid Agraïments especials a Benjamin Gould per un projecte ben escrit i documentat.

Per tant, al centre d’aquest projecte hi ha un teclat. Des del punt de vista de l’ordinador, el Lapcade és simplement un teclat connectat mitjançant bluetooth que és el que tan bé té la tecla EZ. Pren els complicats protocols, temps i codis Bluetooth i els encapsula de manera que tot el que necessito fer amb l’arduino és enviar-li codis de clau. Per fer-ho, he utilitzat els mapes de codi del projecte anterior i les meves pròpies matrius per crear modes operatius. Cada mode canvia el que fan els mateixos botons que es premen a Lapcade i el que s'envia al PC. Hi ha tres modes operatius "integrats" i tots els modes posteriors són modes d'aplicació.

Modes operatius

A continuació es resumeixen els modes operatius de Lapcade:

  1. Inici: aquest mode comprova la connectivitat amb l'ordinador i estableix les variables d'inici. Si la tecla EZ no està emparellada amb un PC, canvia al mode de sincronització
  2. Emparellament: en aquest mode, la tecla EZ espera que es vinculi amb un PC.
  3. Selecció de mode: aquest mode permet a l'usuari seleccionar el mode d'aplicació que vol utilitzar. En aquest mode no s’envien codis de claus al PC. També hi ha seleccions de mode ràpid basades en el mode d’aplicació anterior. Per exemple, prement el mode i, a continuació, el botó del reproductor dos en mode Mame player 1 simplement canvia el mode sense haver de buscar i seleccionar Mame Player 2 a la pantalla.

Modes d'aplicació

Els modes d'aplicació s'utilitzen per enviar codis de tecla adequats al PC segons l'aplicació en què es troba l'usuari. Per exemple, en mode Kodi, la tecla d'acció 2 envia "P" que és una pausa. A Mame, aquest mateix botó envia la tecla Alt esquerra. Si es volia utilitzar el controlador per reproduir Minecraft per a PC, tot el que caldria fer és afegir els mapes de matriu adequats.

Cal que cada aplicació estigui definida en 4 matrius de dades.

  • mode : aquesta matriu conté el text que es mostrarà a la pantalla per a cada mode. Per utilitzar la segona línia de la pantalla, simplement poseu un ~ a la matriu com a salt de línia.
  • keyModes [14]: aquesta matriu conté els codis de tecles enviats al PC. Cada línia de 14 elements representa botons individuals per assignar codis de claus.
  • keyModifiers [14]: aquesta matriu conté els modificadors de codi de tecles per a cada pulsació de tecles, com ara mantenir premuda la tecla Maj.
  • quickMode [3]: aquesta matriu conté el patró de selecció de mode ràpid per al mode actual.

Operació bàsica

Quan el sistema està engegat, entra en mode d'inici on es comprova l'estat de la connexió Bluetooth i es mostra a l'usuari. L'Arduino obté l'estat de la tecla EZ comptant i temporitzant els impulsos des del pin L1 de la tecla EZ. Hi ha quatre subestats per al mode d'inici:

  • Emparellament: la tecla EZ està en mode d’emparellament actiu esperant a connectar-se a un dispositiu.
  • Parellat però no connectat: la tecla EZ s'ha emparellat anteriorment, però actualment no està connectada al dispositiu amfitrió.
  • Parellat i connectat: la tecla EZ està emparellada i la connexió s'ha establert amb l'amfitrió. En aquest moment, el sistema passarà a Selecció de mode.
  • Estat desconegut: la tecla EZ torna un codi desconegut o hi ha interferències de senyal que produeixen un patró de senyal desconegut. El sistema retindrà i notificarà a l'usuari. Cal reiniciar-lo si es produeix.

Si el sistema està emparellat amb però no es pot connectar al PC, el sistema es mantindrà en estat de connexió en mode d'inici. Si l’usuari manté premut el botó d’escapament mentre engega el dispositiu, saltarà la comprovació de la connexió Bluetooth i procedirà a Selecció de mode.

Si el sistema no s’ha aparellat prèviament, el mode d’emparellament succeirà al mode d’inici. En aquest estat, el sistema emetrà que està disponible per a la sincronització. Un cop l’amfitrió l’hagi descobert i s’hi afegirà, passarà a Selecció de mode. El dispositiu es pot desemparellar en selecció de mode prement el botó Acció 1.

A la selecció de mode, les accions del joystick amunt i avall us mouran pels modes d'aplicació disponibles a la pantalla LCD. Per seleccionar un dels modes, premeu el botó d'inici (centre 5).

Un cop en mode d'aplicació, cadascun dels botons i el joystick enviaran codis de teclat segons els mapes de tecles especificats a les quatre matrius tal com es descriu anteriorment.

Modes ràpids

Un cop seleccionat el mode d'aplicació, es defineix la manera ràpida. En poques paraules, els modes ràpids són els modes d'aplicació seleccionables pels tres primers botons centrals (centre 1-3). Aquests tres botons corresponen a l'element de matriu de la matriu.

Per exemple, a la configuració actual, quan s'utilitza Mame en mode reproductor 1 (Mode 4 o el cinquè mode definit), a continuació, prement el botó de mode i, a continuació, el botó de dos reproductors carrega l'element de matriu de mode ràpid [4] [1] (Arduino utilitza 0 base array indexing) que és 5. El sistema canvia al mode d'aplicació 5 que és Mame, jugador 2.

Pas 6: idees per a la versió 2

Pantalla de botons: suposo que no ho podeu planificar tot, però hi ha una idea de disseny que m'agradaria tenir primerenca per a la primera versió: panells LCD de botons individuals. Va quedar clar molt ràpidament després de construir que el fet de saber en quin mode es troba no vol dir que recordi el que fa cada botó, sobretot després d’haver-ne apartat durant un parell de dies o mesos. M’agradaria haver afegit algun tipus de pantalla petita a sobre o a sobre de cada botó que mostri quina és la seva acció actual. Aquest es troba al capdamunt de la llista per a la versió 2.

4-Way vs 8-Way Joystick: una altra cosa que va quedar clar un cop vaig començar a utilitzar el joystick era que els jocs més antics no estaven destinats a utilitzar joysticks de 8 vies. El cas és Pac-Man. Des que he construït aquest controlador, he descobert que hi ha joysticks capaços de canviar mecànicament de 4 a 8. Sí, aquest és a la llista i, si teniu previst jugar a jocs arcade clàssics, només heu de passar a un altre que es pugui canviar. Per descomptat, assegureu-vos que tingueu en compte els canvis en el cablejat i la programació basats en el joystick amb què us acabeu. Aquests són alguns proveïdors de controls arcade clàssics:

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

Botons "Flipper" del costat dret i esquerre: la versió 2 afegirà definitivament un botó cadascun al costat esquerre i dret de l'armari. Un ús possible serà per a les pinyes.

Altres controls: miro la viabilitat d’afegir altres controls comuns com un trackball i / o un spinner a la següent versió. Com que la tecla EZ és capaç de transmetre coordenades del ratolí, això no hauria de ser massa difícil.

Programació integrada: la següent versió ha de tenir la possibilitat d'afegir noves configuracions sense obrir la caixa. Volia afegir això a la versió 1, però requeria més temps i recursos del que tenia.

Concurs sense fils
Concurs sense fils
Concurs sense fils
Concurs sense fils

Accèssit al Concurs Wireless

Recomanat: