Innholdsfortegnelse:

Lapcade Arcade Controller: 6 trinn (med bilder)
Lapcade Arcade Controller: 6 trinn (med bilder)

Video: Lapcade Arcade Controller: 6 trinn (med bilder)

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

Jeg er ikke mye av en spiller. Da jeg var liten, var jeg mer interessert i å se hvordan de fungerte enn jeg spilte dem. Jeg kan telle på en hånd hvor mange arkadespill jeg jevnlig spilte. Når det er sagt, ville det være lett for noen å finne det rart at jeg ville ta meg tid til å bygge en arkadekontroller. Imidlertid er det et av mine favorittprosjekter til nå. I tillegg til å være utfordrende å designe, kode og bygge, er det også en påminnelse om en tidligere epoke med robuste mekaniske knapper og joysticks.

Borte er Arcades dager, men du kan fortsatt ha følelsen av et klassisk arkadespill rett i din egen stue. Så her presenterer jeg Lapcade. Hvis du er som meg og liker å bygge ting mer enn å spille, kan du like denne bygningen. Hvis du har spørsmål eller forslag som ikke er inkludert i delen "ideer til versjon 2" nedenfor, kan du legge igjen en kommentar.

Trinn 1: Oversikt

Oversikt
Oversikt
Oversikt
Oversikt

Hva er dette?

Vær først oppmerksom på hva Lapcade ikke er:

  • Det er ikke en spillkonsoll.
  • Den har ingen spill, og den har heller ikke muligheten til å laste og spille spill.
  • Den kobles ikke til en TV eller skjerm.

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

Jeg tar dette opp fordi det har vært en del forvirring rundt dette punktet. Jeg har hatt mange spørsmål om hvilke spill som kan lastes på det og hva slags videogrensesnitt det bruker - det kan ikke og ikke! Det er helt avhengig av PC -en du kobler den til, og i den forbindelse er himmelen grensen. Hvis enheten din kan godta et Bluetooth -tastatur, bør Lapcade fungere med det. Jeg har ikke prøvd det, men jeg har sett andre prosjekter som har brukt EZ-nøkkelen (beskrevet nedenfor) koblet til håndholdte enheter. Så teoretisk sett kan du koble denne enheten til hvilken som helst datamaskin som kjører Windows, Linux, ChromeOS, MAC, etc. samt Raspberry Pi, Android, iOS og andre som støtter Bluetooth v2.1. Endring av nøkkelkoder kan imidlertid være nødvendig.

Pre-versjon 1

Opprinnelig fant jeg et produkt kalt Adafruit Bluefruit EZ -Key bluetooth HID (Human interface device - think keyboard) som ville tillate meg å koble til kjente klikkbare knapper og sende tastetrykk som et tastatur. Da jeg først bygde ut en kontroller basert på EZ-Key, fulgte jeg et sett med instruksjoner for å bygge en enkel og rett frem kontroller, og det fungerte bra. Jeg brukte kontrolleren i en tung treramme uten problemer i noen måneder. Du er imidlertid begrenset til 12 innganger, og det er ingen måte å endre nøkkelkoden som sendes av enheten uten å omprogrammere EZ-Key-inngangspinnene.

Da jeg brukte mitt Kodi mediesenter for å vise installerte spill, ønsket jeg å veksle mellom å kontrollere mediesenteret og spill uten å måtte bruke flere kontrollere / fjernkontroller. Jeg ønsket også å få enheten til å justere slik at min venstrehendte sønn kunne bruke den som han ville.

Jeg brukte også 4 AA -batterier for å drive enheten, og ut av esken så det ikke ut til å ha lav strømmodus. Batterier ville bli suget tørre på en dag eller to, selv om de ikke ble brukt.

Så på oppfordring fra en venn av meg bestemte jeg meg for å bygge en programmerbar versjon av den samme kontrolleren som hadde raske modusendringer, som ville tillate meg å bruke den samme enheten til å kontrollere flere applikasjoner, og kunne også "vendes" for venstre hånd bruk og var i et bærbart etui som var langt mindre enn min nåværende 10 lb løsning.

Det var på tide med en oppgradering.

Versjon 1 DesignProject Goals:

  • Fleksibel
  • Oppladbar
  • For Venstre og Høyre
  • Ingen ledninger
  • Lett

Jeg ønsket at denne nye designen skulle være fleksibel. Kontrollene må kunne endres i farten uten å måtte omprogrammere komponentene hver gang en test eller endring må utføres. Dette betydde at det måtte være et grensesnitt på kontrolleren for å velge "moduser" for drift. Hver knapp og joystickposisjon må ha forskjellige nøkkelkoder knyttet til den. De samme kontrollene må også brukes til å velge de forskjellige modusene.

EZ-nøkkelen var ikke direkte programmerbar i sanntid, så den neste løsningen ville være å bruke en kontroller som en Arduino for å administrere funksjonalitet. EZ-nøkkelen vil bare bli brukt til å overføre nøkkelkodene til PC-en via Bluetooth. Jeg valgte Arduino Pro Mini på grunn av den direkte kompatibiliteten med UNO (som jeg allerede hadde erfaring med) og på grunn av den kompakte størrelsen.

Jeg ville ikke forholde meg til batterier med denne nye boksen som jeg gjorde med forgjengeren til Lapcade, så jeg valgte å bruke et oppladbart litiumpolymerbatteri og lader/forsyningskort. Dette betydde at jeg bare kunne bruke en standard USB -lader. Det betydde også at jeg ikke måtte åpne etuiet hver gang batteriene døde. EZ-nøkkelen og PowerBoost 500C har begge indikatorer som måtte overføres til toppen av kontrolleren for sammenkoblingsstatus og indikasjon på lavt batterinivå. Jeg la til noen lysdioder i designet slik at jeg kunne gjenspeile disse hendige statusindikatorene for brukeren under drift.

Etter hvert som testing av designet mitt modnet, oppdaget jeg at flere av mine originale ideer ikke var som jeg hadde forventet. For eksempel fungerer ikke LBO -indikatoren på PowerBoost som forventet når den er knyttet til en mikrokontroller. Det vil tillate strøm å passere gjennom felles bakken fra batteriet mens enheten er "av" eller deaktivert, LBO -lampen lyser og forblir tent. Andre i Adafruit -forumet hadde også støtt på dette problemet og tilbød en bedre løsning ved prøvetaking av batterispenningen direkte på en analog inngang. Når spenningen synker til et visst nivå, er det på tide å gi brukeren beskjed om at batteriet er i ferd med å slå seg av.

Trinn 2: Det du trenger

Elektronisk deleliste

Dette endte opp med å bli en ganske komplisert konstruksjon. Du trenger ikke å bruke de samme delene som jeg gjorde, men hvis du bruker en erstatningsdel, sørg for at du forstår hvordan den vil samhandle med de andre kretsene og koden. Selv om jeg gjerne gir forslag, kan jeg ikke hjelpe med å feilsøke kode eller problemer for forskjellige konfigurasjoner.

1 Arduino Pro Mini 5V - Jeg liker Pro fordi den er kompakt. Du kan bruke et hvilket som helst Uno pin/interrupt -kompatibelt kort med koden som følger med

1 Adafruit Bluefruit EZ -Key bluetooth HID - Som beskrevet ovenfor er dette bluetooth HID som gjør at nøkkelkoder kan overføres til vert -PCen.

1 MCP23017 - i2c 16 input/output port expander -Denne brikken brukes til å legge til 16 flere innganger til Arduino gjennom I2C kommunikasjonsprotokoll

1 Adafruit PowerBoost 500 + lader - Dette er strømkontrollkortet for å drive Lapcade og lade LiPo

1 litiumpolymerbatteri (jeg brukte 2500mAh, men du kan bruke høyere / lavere kapasitet)

1 8 -veis Arcade Joystick - Se delen "tanker for versjon 2" nedenfor angående joysticks

9 Arcade Trykknapper - Assorterte farger og skjermavtrykk

2 opplyste øyeblikkelige trykknapper - Jeg brukte disse 2 knappene for Center 4 og 5 knappene og er fra Adafruit: Rød (Center 4), Blue (Center 5)

1 Belyst trykknapp jeg brukte denne til strømknappen fra Adafruit: Grønn

2 lysdioder Brukes til å referere til paringssignal og lavt batterinivå. Jeg brukte to RadioShack -deler 2760270 og 2760271

1 16 x 2 LCD -skjerm

1 I2C/SPI LCD -ryggsekk - Brukes til I2C -kommunikasjon til 16x2 -displayet.

1 USB -forlengelseskabel på panelmontering - Brukes til å utvide PowerBoosts mikro -b USB -kontakt til skapets vegg.

1 Adafruit Perma-Proto Breadboard PCB i full størrelse-Ikke nødvendig, men gjør permanent montering så mye enklere.

5 220 Ohm motstander

7 1K Ohm motstander

2 2,2K ohm motstander

1 4,7K ohm motstand

18 #10 kvinnelige spadekontakter - For tilkobling til arkadeknappkontaktene. Anbefales over lodding da knappene til slutt vil slites ut.

22 gauge tilkoblingstråd - Jeg brukte solid tilkoblingstråd i stedet for å være strandet for å lage ledende ledning. Dette var utelukkende for demonstrasjonsformål og anbefales ikke, da solid tråd er sprø og utsatt for brudd.

Følgende elementer er ikke påkrevd, men vil gjøre mounging enklere, og hvis du skåler en komponent, blir det lettere å bytte ut:

  • IC -kontakt - for 28 -pinners 0,3 "brikker
  • IC -kontakt - for 28 -pinners 0,6 "brikker
  • 0,1 "kvinnelig topptekst (minst 1 36 -pins header)

Skap deler:

  • 3 12 x 24 1/8 tommer bjørkpaneler
  • 1 12 x 24 1/8 tommer klart akrylpanel

Filer:

  • Lapcade V1.xlsx - Regnearket nevnt nedenfor som har kretsforbindelsene.
  • LapcadeV1-code.zip - Zip -fil som inneholder Arduino -koden skrevet for dette prosjektet.
  • Lapcade_v1.zip - Zip -fil som inneholder svg -tegningene for skapet.
  • LapcadeV1-Circuit_Diagram_Large.zip - Zip -fil som inneholder en høyoppløselig versjon av fritzing -kretsdiagrammet vist nedenfor.

Lenker til flere ressurser:

  • Adafruit Bluefruit EZ-Key-dokumentasjon
  • Adafruit PowerBoost 500 + dokumentasjon
  • I2C/SPI LCD -ryggsekkdokumentasjon
  • MCP23017 I2C Port Extender Documentation
  • Adafruit MCP23017 Arduino bibliotek

Trinn 3: Montering - Skapet

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

Jeg ønsket å ha en veldig lett boks som også kunne slå. Uten å bli for eksotisk med materialer, er likt tynn og tynn vanligvis sprø. Hovedbrukeren av Lapcade vil trolig være min unge sønn som liker å "trykke" på knappene og "navigere" joysticken med ekstrem entusiasme. Selv om han er flink til ikke å slippe ting, klarte han å slite ut de industrielle mikrobryterne i en joystick i løpet av få måneder.

For å overvinne dette problemet, og siden Lapcade er 20 bred, la designet mitt til i to vertikale ribber som fester øvre og venstre og høyre side. Under tørr montering var designet i stand til å tåle 70 lbs bøker plassert på det. Etter liming, esken ble enda mer holdbar. Etter å ha mottatt de kuttede materialene, løsnet jeg først alle panelene sammen for å være sikker på at de fungerte. Jeg pusset dem deretter lett og luftet støv. Jeg brukte trelim for å feste bitene sammen.

Bøkene på bildene nedenfor ble plassert for å legge press på de nylimte bitene til de satte seg. Når limet var herdet, slipte jeg kantene. Designet mitt kompenserte bevisst panelene slik at de ville stikke litt ut i hjørnene. Dette ville tillate meg å avrunde hjørnene under slipingen uten å komme for mye inn i skjøten.

Etter rengjøring av overflatene påførte jeg flere lag polyuretan - slik at det kunne herdes mellom strøkene. Resultatet var en lett trekasse med bunndeksel i akryl. Jeg hadde opprinnelig ønsket en helt klar boks, men da han sendte meg "test" -delene fra bjørken, ombestemte jeg meg umiddelbart. Det var ikke bare lettere, det var et fint kast tilbake til ideen om skapspill. SVG -filene er nedenfor.

Vær oppmerksom på: Dette er en flerlagstegning, og hvert lag representerer ett sett kutt på ett ark. Når du sender en utskrift til kutteren din, må du kontrollere at alle de andre lagene er skjult før du kutter.

En annen merknad: Da jeg tegnet området for LCD -skjermen, brukte jeg en skjerm jeg hadde for hånden for målinger. Mellom tiden jeg tegnet tegningen og senere monterte delene i saken, hadde jeg brukt den originale LCD -skjermen i et annet prosjekt og bestilt en erstatning. Som det viser seg, var monteringshullene for den andre litt annerledes enn originalen, og den endte ikke opp. Så vær forsiktig før du kutter materialet for å dobbeltsjekke at delene du har passer til hullene på tegningen.

En tredje merknad: Jeg inkluderte ikke en kutt for USB -ladekabelen i den originale tegningen, bare fordi jeg ikke var sikker på hvor jeg ville legge den, slik at den ikke ville forstyrre bruken. Jeg kuttet senere hullene for det på venstre side veldig nær der du ser ordet "Lapcade" på bildene nedenfor. Versjon 2 vil ha ladeporten i en annen posisjon.:)

Trinn 4: Montering - Elektronikk

Montering - Elektronikk
Montering - Elektronikk
Montering - Elektronikk
Montering - Elektronikk
Montering - Elektronikk
Montering - Elektronikk
Montering - Elektronikk
Montering - Elektronikk

La oss først se på koblingsskjemaet vist ovenfor.

Den første tingen å merke seg her er at kraft- og bakkeskinnene på brødbrettet. Skinnene med den blå linjen er slipt (-) og skinnene med den røde linjen er strøm (+). Dette er standard, men jeg noterer det fordi styrespaken (svart ledning) er koblet til strøm og ikke jord. I Fritzing brukte jeg ledningsfargen på joysticken i stedet for konvensjonelle farger og tenkte at det kan føre til forvirring - så det er best å få det ut av veien.

Komponenttilkoblinger

I stedet for å prøve å angi hver tilkobling i lang form her (Arduino analog pin 0 går gjennom en 220 ohm resistor til PowerBoost Bat pin), opprettet jeg et regneark som inneholder alle tilkoblingene 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 ressursdelen nedenfor for alle filene som er knyttet til dette prosjektet.

En annen merknad om regnearket er at noen enheter viser to tilkoblingskolonner. Dette er for å vise mer enn én tilkobling til en pin. For eksempel bruker hver av joystick-tilkoblingene bortsett fra den vanlige ledningen en nedtrekksmotstand for å sikre at portforlengeren mottar et solid høyt eller lavt signal. For å vise dette for joystick 2, vil du se to kolonner for tilkobling, den ene for joystickwiren til MCP 21 -pinnen og den andre for en tilkobling fra pin 21 gjennom en motstand til jord. Jeg er sikker på at det finnes bedre måter å dokumentere dette på, men jeg er redd du er fast i mine måter å gjøre ting på denne.:)

Hver av arkadeknappene har en felles (com), en normalt åpen (nei) og normalt lukket (nc) kontakt. For hver av disse knappene bruker jeg com- og nc -tilkoblinger.

Trinn 5: Kode

Kode
Kode

Først og fremst må jeg gi æren der det skyldes. Jeg stolte sterkt på følgende artikkel for å kode Lapcade:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid Spesiell takk til Benjamin Gould for et velskrevet og dokumentert prosjekt!

Så, i hjertet av dette prosjektet er et tastatur. Sett fra PC-en er Lapcade ganske enkelt et tastatur som er koblet til via bluetooth, og det er det EZ-tasten er så god til. Den tar de kompliserte Bluetooth -protokollene, tidspunktene og kodene og innkapsler dem slik at alt jeg trenger å gjøre med arduino er å sende den nøkkelkoder. For å gjøre det brukte jeg kodekartene i prosjektet ovenfor og mine egne matriser for å lage driftsmoduser. Hver modus endrer hva de samme knappene gjør på Lapcade og hva som blir sendt til PCen. Det er tre "innebygde" driftsmoduser, og alle modusene etter det er applikasjonsmoduser.

Driftsmoduser

Følgende oppsummerer driftsmodiene for Lapcade:

  1. Oppstart - Denne modusen ser etter tilkobling til PC -en og angir oppstartsvariabler. Hvis EZ-nøkkelen ikke er sammenkoblet med en PC, endres den til sammenkoblingsmodus
  2. Paring - I denne modusen venter EZ -nøkkelen på å bli koblet til en PC.
  3. Modusvalg - Denne modusen lar brukeren velge hvilken applikasjonsmodus som skal brukes. Ingen nøkkelkoder blir sendt til PC -en i denne modusen. Det er også hurtigmodusvalg basert på forrige applikasjonsmodus. For eksempel trykker du på mode og deretter på to -knappen for spilleren når du er i Mame player 1 -modus, bare bytter modus uten å måtte søke og velge Mame Player 2 på displayet.

Søknadsmoduser

Applikasjonsmoduser brukes til å sende passende nøkkelkoder til pc -en basert på hvilket program brukeren er i. For eksempel i Kodi -modus sender handling 2 -tasten "P" som er pause. I Mame sender den samme knappen den venstre Alt -tasten. Hvis du ville bruke kontrolleren til å spille Minecraft for PC -en, er alt du trenger å gjøre, å legge til de riktige matrisekartene.

Hver applikasjon må defineres i 4 matriser med data.

  • modus - Denne matrisen inneholder teksten som vil bli vist på skjermen for hver modus. For å bruke den andre linjen i displayet, plasserer du bare en ~ i matrisen som et linjeskift.
  • keyModes [14] - Denne matrisearrayen inneholder nøkkelkodene som sendes til PCen. Hver linje med 14 elementer representerer individuelle knapper til tilordninger med nøkkelkoder.
  • keyModifiers [14] - Denne matrisearrayen inneholder nøkkelkodemodifikatorene for hvert tastetrykk, for eksempel å holde inne shift -tasten.
  • quickMode [3] - Dette matrisearrayet inneholder hurtigmodusvalgmønsteret for gjeldende modus.

Grunnleggende bruk

Når systemet slås på, går det i oppstartsmodus der statusen for Bluetooth -tilkoblingen sjekkes og vises for brukeren. Arduinoen får statusen til EZ-nøkkelen ved å telle og timere pulser fra EZ-nøkkels L1-pinne. Det er fire delstatuser for oppstartsmodus:

  • Paring - EZ -nøkkelen er i aktiv sammenkoblingsmodus og venter på å bli koblet til en enhet.
  • Paret, men ikke tilkoblet - EZ -nøkkelen har blitt paret tidligere, men er ikke koblet til vertsenheten for øyeblikket.
  • Paret og tilkoblet - EZ -nøkkelen er paret og forbindelsen er etablert med verten. På dette tidspunktet går systemet videre til modusvalg.
  • Ukjent status - EZ -nøkkelen returnerer en ukjent kode, eller det er signalforstyrrelser som produserer et ukjent signalmønster. Systemet vil holde og varsle brukeren. Må starte på nytt hvis dette skjer.

Hvis systemet er paret med, men ikke kan koble til PCen, vil systemet forbli i tilkoblingstilstand i oppstartsmodus. Hvis brukeren holder inne rømningsknappen mens han slår på enheten, hopper den over Bluetooth -tilkoblingskontrollen og fortsetter til modusvalg.

Hvis systemet ikke har blitt paret tidligere, vil oppstartsmodus bli etterfulgt av paringsmodus. I denne tilstanden vil systemet kringkaste at det er tilgjengelig for sammenkobling. Når den er oppdaget og festet til av en vert, går den videre til modusvalg. Enheten kan kobles fra i modusvalg ved å trykke på handling 1 -knappen.

I modusvalg vil opp- og ned -joystick -handlingene bevege deg gjennom de tilgjengelige applikasjonsmodusene på LCD -skjermen. For å velge en av modusene, trykk på enter -knappen (senter 5).

Når de er i en applikasjonsmodus, vil hver av knappene og styrespaken sende nøkkelkoder per tastene som er angitt i de fire matrisene som beskrevet ovenfor.

Raske moduser

Når en applikasjonsmodus er valgt, er den raske modusdefinisjonen angitt. Enkelt sagt, Quick Modes er applikasjonsmodusene som kan velges med de tre første senterknappene (Center 1-3). Disse tre knappene tilsvarer matriseelementet på tvers i matrisen.

For eksempel, i den nåværende konfigurasjonen, når du bruker Mame i spiller 1 -modus (modus 4 eller den femte modusen er definert), deretter trykker du på modusknappen og deretter spillerens to -knapp laster hurtigmodus [4] [1] array -elementet (Arduino bruker 0 base array indexing) som er 5. Systemet bytter deretter til Application Mode 5 som er Mame, spiller 2.

Trinn 6: Ideer for versjon 2

Knappvisning - Jeg antar at du ikke kan planlegge alt, men det er en designidee jeg skulle ønske jeg hadde hatt tidlig for versjon én - individuelle LCD -paneler med knapper. Det ble veldig raskt etter at du bygde at bare å vite hvilken modus du er i ikke betyr at du husker hva hver knapp gjør - spesielt etter at du har gått bort fra den i et par dager eller måneder. Jeg skulle virkelig ønske jeg hadde lagt til en slags liten skjerm på eller over hver knapp som viste hva den nåværende handlingen er. Denne er øverst på listen min for versjon 2.

4-veis vs 8-veis styrespak-En annen ting som ble klart når jeg begynte å bruke styrespaken var at eldre spill ikke var ment å bruke 8-veis styrespaker. Case in point er pac-man. Siden jeg bygde denne kontrolleren, har jeg funnet ut at det er joysticks der ute som kan byttes mekanisk fra 4-veis til 8-veis. Jepp, den er på listen, og hvis du planlegger å spille klassiske arkadespill, er det bare å hoppe til en som kan endres. Sørg selvfølgelig for at du redegjør for endringene i ledninger og programmering basert på styrespaken du ender med. Her er noen leverandører av klassiske arkadekontroller:

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

Høyre og venstre side "Flipper" -knapper - Versjon 2 vil definitivt legge til en knapp hver til venstre og høyre side av skapet. En mulig bruk vil være for flipperspill.

Andre kontroller - Jeg ser på levedyktigheten til å legge til andre vanlige kontroller som en styrekule og / eller en spinner til neste versjon. Siden EZ-nøkkelen er i stand til å overføre musekoordinater, bør dette ikke være for vanskelig.

Innebygd programmering - Den neste versjonen må ha muligheten til å legge til nye konfigurasjoner uten å åpne saken. Jeg ønsket å legge dette til versjon 1, men det krevde mer tid og ressurser enn jeg hadde.

Trådløs konkurranse
Trådløs konkurranse
Trådløs konkurranse
Trådløs konkurranse

Andre pris i den trådløse konkurransen

Anbefalt: