Indholdsfortegnelse:

Lapcade Arcade Controller: 6 trin (med billeder)
Lapcade Arcade Controller: 6 trin (med billeder)

Video: Lapcade Arcade Controller: 6 trin (med billeder)

Video: Lapcade Arcade Controller: 6 trin (med billeder)
Video: 07 29 81 2024, Juni
Anonim
Lapcade Arcade Controller
Lapcade Arcade Controller

Jeg er ikke meget af en spiller. Da jeg var barn, var jeg mere interesseret i at se, hvordan de fungerede, end jeg var i at spille dem. Jeg kan på en hånd regne med, hvor mange arkadespil jeg regelmæssigt spillede. Når det er sagt, ville det være let for nogen at finde det underligt, at jeg ville tage mig tid til at bygge en arkadekontroller. Det er dog et af mine foretrukne projekter til dato. Udover at være udfordrende at designe, kode og bygge, er det også en påmindelse om en tidligere æra med robuste mekaniske knapper og joysticks.

Borte er Arcades dage, men du kan stadig have fornemmelsen af et klassisk arkadespil lige i din egen stue. Så her præsenterer jeg Lapcade for dig. Hvis du er ligesom mig og nyder at bygge ting mere end at spille, kan du måske lide denne konstruktion. Hvis du har spørgsmål eller forslag, der ikke er inkluderet i afsnittet "ideer til version 2" nedenfor, kan du efterlade en kommentar.

Trin 1: Oversigt

Oversigt
Oversigt
Oversigt
Oversigt

Hvad er denne ting?

Bemærk først, hvad Lapcade ikke er:

  • Det er ikke en spillekonsol.
  • Det har ingen spil, og det har heller ikke evnen til at indlæse og spille spil.
  • Det kan ikke tilsluttes et tv eller en skærm.

Lapcade er et Bluetooth -tastatur. Intet mere, intet mindre.

Jeg tager dette op, fordi der har været en vis forvirring omkring dette punkt. Jeg har haft mange spørgsmål om, hvilke spil der kan indlæses på det, og hvilken slags videointerface det bruger - det kan ikke og ikke! Det er helt afhængigt af den pc, du tilslutter den til, og i den forbindelse er himlen grænsen. Hvis din enhed kan acceptere et Bluetooth -tastatur, skal Lapcade arbejde med det. Jeg har ikke prøvet det, men jeg har set andre projekter, der har brugt EZ-nøglen (beskrevet nedenfor) forbundet til håndholdte enheder. Så teoretisk set kan du slutte denne enhed til enhver computer, der kører Windows, Linux, ChromeOS, MAC osv. Samt Raspberry Pi, Android, iOS og andre, der understøtter Bluetooth v2.1. Ændring af nøglekoder kan dog være påkrævet.

Pre-version 1

Oprindeligt fandt jeg et produkt kaldet Adafruit Bluefruit EZ -Key bluetooth HID (Human interface device - think keyboard), der ville tillade mig at forbinde velkendte klikknapper og sende tastetryk som et tastatur. Da jeg først byggede en controller baseret på EZ-nøglen, fulgte jeg et sæt instruktioner for at bygge en enkel og ligetil controller, og det fungerede fantastisk. Jeg brugte controlleren i en tung træramme uden problemer i et par måneder. Du er dog begrænset til 12 indgange, og der er ingen måde at ændre nøglekoden, der sendes af enheden, uden at omprogrammere EZ-Key-indgangsstifterne.

Da jeg brugte mit Kodi mediecenter til at vise installerede spil, ville jeg skifte mellem at styre mediecenteret og gameplay uden at skulle bruge flere controllere / fjernbetjeninger. Jeg ville også have enheden til at justere, så min venstrehåndede søn kunne bruge den, som han kunne lide.

Jeg brugte også 4 AA -batterier til at drive enheden, og ud af boksen så det ikke ud til at have en lav strømtilstand. Batterier ville blive suget tørre på en dag eller to, selvom de ikke blev brugt.

Så på opfordring fra en af mine venner besluttede jeg at bygge en programmerbar version af den samme controller, der havde hurtige tilstandsændringer, ville give mig mulighed for at bruge den samme enhed til at styre flere applikationer, kunne også "vendes" til venstre hånd brug og var i en bærbar taske, der var langt mindre end min nuværende 10 lb løsning.

Det var tid til en opgradering.

Version 1 DesignProjektmål:

  • Fleksibel
  • Genopladelig
  • For venstreorienterede og højreorienterede
  • Ingen snore
  • Letvægts

Jeg ville have, at dette nye design skulle være fleksibelt. Kontrolelementerne skal kunne ændres i farten uden at skulle omprogrammere komponenterne hver gang der skal foretages en test eller ændring. Dette betød, at der skulle være en grænseflade på controlleren for at vælge "driftstilstande". Hver knap og joystick-position skulle have forskellige nøglekoder tilknyttet. De samme kontroller skal også bruges til at vælge de forskellige tilstande.

EZ-nøglen var ikke direkte programmerbar i realtid, så den næste løsning ville være at bruge en controller som en Arduino til at styre funktionalitet. EZ-nøglen ville udelukkende blive brugt til at overføre nøglekoderne til pc'en via Bluetooth. Jeg valgte Arduino Pro Mini på grund af dens direkte kompatibilitet med UNO (som jeg allerede havde erfaring med) og på grund af dens kompakte størrelse.

Jeg ville ikke beskæftige mig med batterier med denne nye boks, som jeg gjorde med Lapcades forgænger, så jeg valgte at bruge et genopladeligt litiumpolymerbatteri og oplader/forsyningskort. Dette betød, at jeg bare kunne bruge en standard USB -oplader. Det betød også, at jeg ikke skulle åbne kassen hver gang batterierne døde. EZ-nøglen og PowerBoost 500C har begge indikatorer, der skulle overføres til toppen af controlleren for parringsstatus og lavt batteriniveau. Jeg tilføjede nogle lysdioder til designet, så jeg kunne afspejle disse praktiske statusindikatorer for brugeren under drift.

Da test af mit design modnet, opdagede jeg, at flere af mine originale ideer ikke var, som jeg havde forventet. For eksempel fungerer LBO -indikatoren på PowerBoost ikke som forventet, når den er bundet til en mikrokontroller. Det vil tillade strøm at passere gennem den fælles jord fra batteriet, mens enheden er "slukket" eller deaktiveret, LBO -lampen lyser og forbliver tændt. Andre i Adafruit -forummet var også stødt på dette problem og tilbød en bedre løsning ved prøveudtagning af batterispændingen direkte på en analog indgang. Når spændingen falder til et bestemt niveau, er det tid til at lade brugeren vide, at batteriet er ved at lukke.

Trin 2: Hvad du har brug for

Elektronisk reservedelsliste

Dette endte med at blive en ret kompliceret bygning. Du behøver ikke at bruge de samme dele, som jeg gjorde, men hvis du bruger en erstatningsdel, skal du sørge for at forstå, hvordan den vil interagere med de andre kredsløb og kode. Selvom jeg er glad for at komme med forslag, kan jeg ikke hjælpe med at fejlfinde kode eller problemer til forskellige konfigurationer.

1 Arduino Pro Mini 5V - Jeg kan godt lide Pro’en, fordi den er kompakt. Du kan bruge ethvert Uno pin/interrupt -kompatibelt kort med den medfølgende kode

1 Adafruit Bluefruit EZ -Key bluetooth HID - Som beskrevet ovenfor er dette bluetooth HID, der gør det muligt at overføre nøglekoder til værts -pc'en.

1 MCP23017 - i2c 16 input/output port expander -Denne chip bruges til at tilføje 16 flere input til Arduino gennem I2C kommunikationsprotokol

1 Adafruit PowerBoost 500 + oplader - Dette er strømkontrolkortet til strømforsyning af Lapcade og opladning af LiPo

1 litiumpolymerbatteri (jeg brugte 2500mAh, men du kan bruge højere / lavere kapacitet)

1 8 -vejs Arcade Joystick - Se afsnittet "tanker til version 2" nedenfor om joysticks

9 Arcade trykknapper - Assorterede farver og skærmbilleder

2 oplyste kortvarige trykknapper - jeg brugte disse 2 knapper til Center 4 og 5 knapper og er fra Adafruit: Rød (Center 4), Blå (Center 5)

1 Belyst låseknap Jeg brugte dette til tænd / sluk -knappen fra Adafruit: Grøn

2 lysdioder Bruges til at referere til parringssignal og lavt batteriniveau. Jeg brugte to RadioShack -dele 2760270 og 2760271

1 16 x 2 LCD -skærm

1 I2C/SPI LCD rygsæk - Bruges til I2C kommunikation til 16x2 displayet.

1 USB -forlængerkabel til panelmontering - bruges til at forlænge PowerBoosts mikro -b USB -stik til skabets væg.

1 Adafruit Perma-Proto Breadboard PCB i fuld størrelse-Ikke nødvendigt, men gør permanent montering så meget lettere.

5 220 Ohm modstande

7 1K Ohm modstande

2 2,2K Ohm modstande

1 4,7K Ohm modstand

18 #10 Kvindelige Spade -stik - Til tilslutning til arkadeknapkontakterne. Anbefales over lodning, da knapperne i sidste ende slides.

22 gauge tilslutningstråd - Jeg brugte solid tilslutningstråd frem for strandet for at lave fritstående ledning. Dette var udelukkende til demonstrationsformål og anbefales ikke, da solid tråd er sprød og tilbøjelig til at gå i stykker.

Følgende emner er ikke påkrævede, men vil gøre mounging enklere, og hvis du skåler en komponent, bliver udskiftningen lettere:

  • IC -fatning - til 28 -benede 0,3 "chips
  • IC -fatning - til 28 -benede 0,6 "chips
  • 0,1 "kvindelig header (mindst 1 36 pin header)

Skabsdele:

  • 3 12 x 24 1/8 tommer birk paneler
  • 1 12 x 24 1/8 tommer klart akrylpanel

Filer:

  • Lapcade V1.xlsx - Nedenstående regneark, der har kredsløbstilslutningerne.
  • LapcadeV1-code.zip - Zip -fil, der indeholder Arduino -koden skrevet til dette projekt.
  • Lapcade_v1.zip - Zip -fil, der indeholder svg -tegningerne til kabinettet.
  • LapcadeV1-Circuit_Diagram_Large.zip - Zip -fil, der indeholder en version med høj opløsning af fritzing -kredsløbsdiagrammet vist nedenfor.

Links til flere ressourcer:

  • Adafruit Bluefruit EZ-Key-dokumentation
  • Adafruit PowerBoost 500 + dokumentation
  • I2C/SPI LCD -rygsækdokumentation
  • MCP23017 I2C Port Extender -dokumentation
  • Adafruit MCP23017 Arduino bibliotek

Trin 3: Montering - kabinettet

Forsamling - Kabinettet
Forsamling - Kabinettet
Forsamling - Kabinettet
Forsamling - Kabinettet
Forsamling - Kabinettet
Forsamling - Kabinettet
Forsamling - Kabinettet
Forsamling - Kabinettet

Jeg ville have en meget let kasse, der også kunne tage tæsk. Uden at blive for eksotisk med materialer, er letvægt lig med tyndt og tyndt som regel sprødt. Den primære bruger af Lapcade ville sandsynligvis være min unge søn, der kan lide at "trykke" på knapperne og "navigere" joysticket med ekstrem entusiasme. Selvom han er god til ikke at tabe ting, lykkedes det ham at slide de industrielle mikrokontakter i et joystick inden for et par måneder.

For at overvinde dette problem, og da Lapcade er 20 bred, tilføjede mit design to lodrette ribber, der sikrer den øverste og venstre og højre side. Under tør montering var designet i stand til at modstå 70 lbs bøger, der blev lagt på det. Når det var limet, æsken blev endnu mere holdbar. Efter at have modtaget de udskårne materialer, passede jeg i første omgang alle panelerne sammen for at sikre, at de fungerede. Jeg slibede dem derefter let og støvede luft. Jeg brugte trælim til at fastgøre stykkerne sammen.

Bøgerne på nedenstående fotos blev placeret for at lægge pres på de nylimede stykker, indtil de satte sig. Når limen var hærdet, slibede jeg kanterne. Mit design kompenserede bevidst panelerne, så de ville stikke lidt ud i hjørnerne. Dette ville give mig mulighed for at afrunde hjørnerne under slibning uden at komme for meget ind i fugen.

Efter rengøring af overfladerne påførte jeg derefter flere lag polyurethan - så det kunne hærde mellem lagene. Resultatet var en let trækasse med bunddæksel i akryl. Jeg havde oprindeligt ønsket en helt klar kasse, men da han sendte mig birket "test" -delene, ændrede jeg straks mening. Det var ikke kun lettere, det var et godt kast tilbage til ideen om kabinetspil. Svg -filerne er herunder.

Bemærk: Dette er en tegning i flere lag, og hvert lag repræsenterer et sæt udskæringer på et ark materiale. Når du sender et tryk til din kutter, skal du sørge for, at alle de andre lag er skjult, før du skærer dem.

En anden note: Da jeg tegnede området til LCD -displayet, brugte jeg et display, jeg havde til rådighed, til målinger. Mellem den tid, jeg lavede tegningen og senere monterede delene i sagen, havde jeg brugt den originale LCD i et andet projekt og bestilt en udskiftning. Som det viser sig, var monteringshullerne til den anden en smule anderledes end originalen og sluttede ikke op. Så pas på, før du skærer dit materiale, for at kontrollere, at de dele, du har, passer til hullerne i tegningen.

En tredje bemærkning: Jeg inkluderede ikke en udskæring til USB -opladningskablet i den originale tegning, simpelthen fordi jeg ikke var sikker på, hvor jeg ville placere det, så det ikke forstyrrede brugen. Jeg skar senere hullerne til det på venstre side meget tæt på, hvor du ser ordet "Lapcade" i billederne herunder. Version 2 vil have opladningsporten i endnu en anden position.:)

Trin 4: Montering - Elektronik

Montering - Elektronik
Montering - Elektronik
Montering - Elektronik
Montering - Elektronik
Montering - Elektronik
Montering - Elektronik
Montering - Elektronik
Montering - Elektronik

Lad os først se på ledningsdiagrammet vist ovenfor.

Første ting at bemærke her er, at brødbrættets kraft og jordskinner. Skinnerne med den blå linje er slebet (-) og skinnerne med den røde linje er strøm (+). Dette er standard, men jeg noterer det, fordi joystickets fælles linje (sort ledning) er tilsluttet strøm og ikke jord. I Fritzing brugte jeg joystickets trådfarve frem for konventionelle farver og tænkte, at det kunne forårsage forvirring - så det er bedst at få det af vejen.

Komponentforbindelser

I stedet for at forsøge at angive hver forbindelse i lang form her (Arduino analog pin 0 går gennem en 220 ohm resister til PowerBoost Bat pin), oprettede jeg et regneark, der indeholder alle forbindelser fra komponentens synspunkt. Så på Arduino -fanen i regnearket ser du APM A0 -> 2.2K OHM -> PB Bat og på PowerBoost -fanen ser du PB BAT -> 2.2K OHM -> APM A0. Se venligst ressourceafsnittet nedenfor for alle de filer, der er knyttet til dette projekt.

En anden bemærkning om regnearket er, at nogle enheder viser to forbindelseskolonner. Dette er for at vise mere end én forbindelse til en pin. For eksempel bruger hver af joystickforbindelserne undtagen den fælles ledning en pull-down-modstand for at sikre, at portforlængeren modtager et solidt højt eller lavt signal. For at vise dette for Joystick 2, vil du se to kolonner for tilslutning, den ene er for joystickwiren til MCP 21 -stiften og den anden for en forbindelse fra pin 21 gennem en modstand til jord. Jeg er sikker på, at der er bedre måder at dokumentere dette på, men jeg er bange for, at du sidder fast med mine måder at gøre ting på denne.:)

Hver af arkadeknapperne har en fælles (com), en normalt åben (nej) og normalt lukket (nc) kontakt. For hver af disse knapper bruger jeg com- og nc -forbindelser.

Trin 5: Kode

Kode
Kode

Først og fremmest skal jeg give kredit, hvor det skyldes. Jeg stolede stærkt på følgende artikel for at kode Lapcade:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid Særlig tak til Benjamin Gould for et velskrevet og dokumenteret projekt!

Så i hjertet af dette projekt er et tastatur. Set fra pc'ens synspunkt er Lapcade simpelthen et tastatur forbundet via bluetooth, hvilket er hvad EZ-nøglen er så god til. Det tager de komplicerede Bluetooth -protokoller, tidspunkter og koder og indkapsler dem, så alt hvad jeg skal gøre med arduinoen er at sende det nøglekoder. For at gøre det brugte jeg kodekortene i projektet ovenfor og mine egne arrays til at oprette driftstilstande. Hver tilstand ændrer, hvad de samme knapper gør på Lapcade, og hvad der sendes til pc'en. Der er tre "indbyggede" driftstilstande, og alle tilstande efter dem er applikationstilstande.

Operationelle tilstande

Følgende opsummerer Lapcades operationelle tilstande:

  1. Opstart - Denne tilstand kontrollerer tilslutning til pc'en og angiver opstartsvariabler. Hvis EZ-nøglen ikke er parret med en pc, skifter den til parringstilstand
  2. Parring - I denne tilstand venter EZ -nøglen på at blive parret med en pc.
  3. Tilstandsvalg - Denne tilstand giver brugeren mulighed for at vælge, hvilken applikationstilstand der skal bruges. Der sendes ingen nøglekoder til pc'en i denne tilstand. Der er også hurtige tilstandsvalg baseret på den tidligere applikationstilstand. For eksempel trykke på mode og derefter afspillerens to -knap i tilstanden Mame player 1 skifter simpelthen tilstanden uden at skulle søge og vælge Mame Player 2 på displayet.

Ansøgningsmetoder

Applikationstilstande bruges til at sende passende nøglekoder til pc'en baseret på hvilket program brugeren er i. For eksempel i Kodi -tilstand sender handling 2 -tasten "P", som er pause. I Mame sender den samme knap den venstre Alt -tast. Hvis man ville bruge controlleren til at spille Minecraft til pc'en, er det eneste, der skal gøres, at tilføje de relevante array -kort.

Hver applikation skal defineres i 4 matrixdata.

  • mode - Denne matrix indeholder den tekst, der vil blive vist på skærmen for hver tilstand. For at bruge den anden linje i displayet skal du blot placere et ~ i arrayet som et linjeskift.
  • keyModes [14] - Dette matrix array indeholder nøglekoderne sendt til pc'en. Hver linje med 14 elementer repræsenterer individuelle knapper til tilknytninger til nøglekoder.
  • keyModifiers [14] - Dette matrix array indeholder nøglekode modifikatorer for hvert tastetryk, f.eks. at holde shift -tasten nede.
  • quickMode [3] - Dette matrixarray indeholder det hurtige tilstandsmønster for den aktuelle tilstand.

Grundlæggende betjening

Når systemet tændes, går det i opstartstilstand, hvor status for Bluetooth -forbindelsen kontrolleres og vises for brugeren. Arduinoen får status for EZ-nøglen ved at tælle og timing af impulserne fra EZ-nøglens L1-pin. Der er fire delstatusser til opstartstilstand:

  • Parring - EZ -nøglen er i aktiv parringstilstand og venter på at blive knyttet til en enhed.
  • Parret, men ikke forbundet - EZ -nøglen er tidligere blevet parret, men er i øjeblikket ikke forbundet til værtenheden.
  • Parret og forbundet - EZ -nøglen er parret, og forbindelsen er etableret med værten. På dette tidspunkt går systemet videre til tilstandsvalg.
  • Ukendt status - EZ -nøglen returnerer en ukendt kode, eller der er signalinterferens, der producerer et ukendt signalmønster. Systemet gemmer og giver brugeren besked. Skal genstarte, hvis dette sker.

Hvis systemet er parret med, men ikke kan oprette forbindelse til pc'en, forbliver systemet i forbindelsestilstand i opstartstilstand. Hvis brugeren holder Escape -knappen nede, mens enheden tændes, springer den Bluetooth -forbindelseskontrollen over og fortsætter til Mode Select.

Hvis systemet ikke tidligere er blevet parret, efterfølges opstartstilstand med parringstilstand. I denne tilstand sender systemet, at det er tilgængeligt til parring. Når det er opdaget og knyttet til en vært, går det videre til tilstandsvalg. Enheden kan ophæves i tilstandsvalg ved at trykke på knappen Action 1.

I tilstandsvalg vil op og ned -joystick -handlingerne føre dig gennem de tilgængelige applikationstilstande på LCD -displayet. For at vælge en af tilstande skal du trykke på enter -knappen (center 5).

Når de er i en applikationstilstand, sender hver af knapperne og joysticket tastaturkoder pr. Tastekort, der er angivet i de fire arrays som beskrevet ovenfor.

Hurtige tilstande

Når en applikationstilstand er valgt, er den hurtige tilstandsdefinition indstillet. Kort sagt, hurtige tilstande er applikationstilstande, der kan vælges med de tre første centerknapper (center 1-3). Disse tre knapper svarer til matrixelementet på tværs i matrixen.

For eksempel i den aktuelle konfiguration, når du bruger Mame i afspiller 1 -tilstand (tilstand 4 eller den femte tilstand defineret), tryk derefter på tilstandsknappen og derefter afspillerens to knap indlæser quickmode [4] [1] array -elementet (Arduino bruger 0 base array indexing) som er 5. Systemet skifter derefter til Application Mode 5, som er Mame, player 2.

Trin 6: Ideer til version 2

Button Display - jeg gætter på, at du ikke kan planlægge alt, men der er en designidé, jeg ville ønske, jeg havde tidligt til version én - individuelle knap -LCD -paneler. Det blev meget hurtigt klart efter opbygningen, at bare at vide, hvilken tilstand du er i, betyder ikke, at du husker, hvad hver knap gør - især efter at du er gået væk fra det i et par dage eller måneder. Jeg ville virkelig ønske, at jeg havde tilføjet en slags lille skærm på eller over hver knap, der viste, hvad dens aktuelle handling er. Denne er øverst på min liste til version 2.

4-vejs vs 8-vejs joystick-En anden ting, der blev klart, da jeg begyndte at bruge joysticket, var, at ældre spil ikke var beregnet til at bruge 8-vejs joysticks. Case in point er pac-man. Siden jeg byggede denne controller, har jeg fundet ud af, at der er joysticks derude, der kan skiftes mekanisk fra 4-vejs til 8-vejs. Ja, den ene er på listen, og hvis du planlægger at spille klassiske arkadespil, skal du bare springe til en, der kan ændres. Sørg naturligvis for, at du redegør for ændringer i ledninger og programmering baseret på det joystick, du ender med. Her er nogle leverandører af klassiske arkadekontroller:

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

Højre og venstre side "Flipper" -knapper - Version 2 vil helt sikkert tilføje en knap hver til venstre og højre side af kabinettet. En mulig brug vil være til flipperspil.

Andre kontroller - Jeg ser på levedygtigheden af at tilføje andre almindelige kontroller som en trackball og / eller en spinner til den næste version. Da EZ-nøglen er i stand til at overføre musekoordinater, burde dette ikke være for svært.

Onboard -programmering - Den næste version skal have mulighed for at tilføje nye konfigurationer uden at åbne sagen. Jeg ville føje dette til version 1, men det krævede mere tid og ressourcer, end jeg havde.

Trådløs konkurrence
Trådløs konkurrence
Trådløs konkurrence
Trådløs konkurrence

Anden pris i den trådløse konkurrence

Anbefalede: