Innholdsfortegnelse:
- Trinn 1: Rekvisita
- Trinn 2: Vedlegget
- Trinn 3: Kretsen
- Trinn 4: Fullfør maskinvaren
- Trinn 5: Programvaren
- Trinn 6: Slutt
- Trinn 7: Tillegg..dum..dum
- Trinn 8: Ytterligere ressurser
Video: Arduino Keyboard Joystick Extender Box and Sound Controller Thing Using Deej: 8 Steps
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:20
Tinkercad -prosjekter »
Hvorfor
En stund har jeg ønsket å legge til en liten joystick på tastaturet mitt for å kontrollere grensesnittelementer eller andre mindre oppgaver i spill og simulatorer (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons, etc).
Også for Elite: Dangerous har jeg slitt med å blande volumnivåer fra ekstern lyd (den innebygde musikken, mens den er god, blir repeterende etter mange timer i svart), lyd i spillet og ekstern voicepack-støtte.
Windows innebygd kildemikser er 'ok', men det er vondt å bytte skjerm og musekontrollglidebrytere midt i et spill. Å ha en utvidet tastaturkontrollboks virket som veien å gå. Deej er løsningen jeg fant.
Hvordan
Jeg har nylig lært om Arduino, og kom over deej -prosjektet på reddit. Det så ut til at dette ville løse begge problemene i en praktisk pakke. Og det ville la meg designe og skrive ut en fin 3d -etui.
Hva er deej?
(fra nettstedet) deej er en ** open-source maskinvarevolummikser ** for Windows og Linux-PCer. Den lar deg bruke virkelige glidebrytere (som en DJ!) For å ** sømløst kontrollere volumene til forskjellige apper ** (for eksempel musikkspilleren din, spillet du spiller og stemmechat-økten) uten å måtte stoppe hva du gjør.
Min versjon
For å holde boksen liten valgte jeg knotter (roterende lineært potensiometer (potter = motstander)) i stedet for glidere. Funksjonelt fungerer de det samme. Nåværende og populære deej -design inkluderer ikke en joystick, så dette blir litt av en designhybrid. Ellers er det en ganske rett frembygning.
Deej vil jobbe med en Arduino Nano, Pro Micro eller Uno, men Nano og Pro Micro er 'offisielt anbefalt' av utvikleren. Jeg valgte Arduino Pro Micro fordi jeg ønsket joysticken, og Arduino Joystick Library støtter den. Jeg kan også bruke Arduino -tastaturbiblioteket når jeg vil bruke mediatastaturets dempefunksjon (i stedet for den "myke dempingen") med joystick -knappen, men det er lenger ned på veien.
Trinn 1: Rekvisita
Boksen
Last ned STL -filene (designet i Tinkercad):
- Vedleggsfiler på Prusa (https://www.prusaprinters.org/)
- Thingiverse (kommer snart)
Maskinvaren (produksjonsenhet)
- 1x Arduino Pro Micro
- 4x 10k roterende (knott) Potensiometre (ikke roterende kontroller, bruk potter)
- 1x Arduino KY-023 joystick
- 5ft skrap cat5 nettverkskabel
- 1x USB A til USB B mikrokabel (USB A er den store firkantede kontakten, USB B micro er det som er på Arduino Pro Micro)
- 1x 5 mm rød LED
- 1x 220 ohm motstand
Jeg hadde noen ekstra deler rundt, så jeg tenkte jeg skulle bygge en utviklingsenhet for å teste ting ut på. Bare å koble ting til et brødbrett gjorde det lettere å visualisere det siste.
- 1x Arduino Pro Micro
- 4x 10k roterende (knott) Potensiometre (ikke roterende kontroller, bruk potter)
- 1x øyeblikkelig trykknappbryter (hard reset -bryter)
- 1x USB A til USB B mikrokabel (USB A er den store firkantede kontakten, USB B micro er det som er på Arduino Pro Micro)
- diverse hoppetråder
- brødbrett
- 1x 5 mm rød LED
-
1x 220 ohm motstand
Trinn 2: Vedlegget
Designet
Jeg likte noen av de andre designene som er profilert i deej -fellesskapsgalleriet, så basert på mine funksjoner som jeg likte:
- Enkel å designe og skrive ut
- Kommer ikke i veien for mine andre stasjonære eksterne enheter
- Ikke bruk skruer eller festemidler for å feste kabinettet
- Lignende designestetikk til tastaturet
Jeg designet og skrev ut to prototyper før jeg bestemte meg for denne endelige designen. Jeg liker å ha en fysisk versjon å leke med i rommet jeg bruker den i, da den gir meg en bedre følelse av hvordan det endelige objektet vil fungere.
Jeg begynte kort å designe i Fusion360, men vet det ikke så godt som Tinkercad så byttet om og jobbet der.
Siden jeg ønsket et skrueløst design, laget jeg en hekkeboks. Den første prototypen hadde et tynt lokk og en dyp boks for alt. Andre design byttet den med et dypt lokk og en grunne bunnboks. Den måtte bare holde Arduino Pro Mini, så det trengte virkelig ikke å være stort. Inkluderte også de pregede ikonene.
Tredje design ble endret for å passe til plassen ved siden av tastaturet mitt.
Trykket
Jeg skrev ut boksen i PLA, og programmerte en filament / lagbytte fra svart til rødt for lokket der ikonene bare ville begynne å være synlige, og igjen tilbake til svart for resten av lokket.
Et problem
Gjennom hele dette var joystickfeste et problem. Selv i det tredje designet støter pinnen mot festene på ett sted. Den neste iterasjonen vil få bedre klareringer. Jeg kunne ha jobbet mer med designet, men ønsket å gå videre til neste fase, installasjon.
Trinn 3: Kretsen
Verste ledningsjobben noensinne
Ok, dette er mitt første fullstendige Arduino-prosjekt. Ja, jeg har gjort ting på brødbrett før og bruker en til å bygge utviklingsversjonen av dette, men når det gjelder å faktisk produsere og montere, er dette min første. Så ledningene mine ser ut som dritt. Det er ute av veien:)
Oppdatering: Jeg har siden bygget en annen og ledningene er mye hyggeligere der. Se bildene:)
Produksjonsenhet - Hva skjer hvor
Arduino Pro Micro er et bitte lite brett og vil passe inn i den støpte delen i basen. Knotter og joystick passer i de respektive hullene i lokket. Men ikke monter noe før du får loddeturneringen.
Kabling
Jeg hadde ikke noen ordentlig kretsledning, men hadde en restrulle med solid-core cat5 nettverkskabel, så det er det jeg brukte. Den er litt stivere og kanskje mer sprø enn den strandede kretsledningen, men den fungerer.
Når jeg la komponentene tilnærmet til sin endelige monteringsposisjon, estimerte jeg avstanden for hver ledning, la til litt mer for slakk osv., Deretter klippet og trimmet tråden. Jeg la mye slakk.
Med henvisning til koblingsskjemaet, kjørte jeg felles grunn (svart) og VCC (rød) til knappene og joysticken der det er angitt. Siden nettverkskabelen ikke kommer i disse fargene, valgte jeg bare en farge og holdt ledningene i samsvar med funksjonen.
Den individuelle potten. analoge linjer (gul) gikk til pinne A0 - A3. Joystick -linjene (oransje), også analoge, kjørte til I/O -pinner 8 og 9. Disse må betegnes som analoge i Arduino -koden som A8 og A9.
Joystick -bryteren (blå) gikk til pin 7. Dette vil være en digital pin i koden.
Isolasjon
Siden denne stive tråden kommer til å bli proppet inn i et lite rom, valgte jeg å isolere loddeforbindelsene mine med en sunn klatt varmsmeltelim. Deretter stoppet alt på plass og kjørte en enkel test på tavlen og grytene ved hjelp av versjon av Arduino -eksempelet AnalogInput -kode - modifisert for å lese alle grytene.
Andre versjon
De to siste bildene ovenfor viser den neste boksen jeg bygger. Denne vil ha 5 knapper og en øyeblikkelig trykknapp for dempen. Ingen joystick. Kasse i samme størrelse.
Trinn 4: Fullfør maskinvaren
Da jeg hadde installert styrespaken, innså jeg at det ikke var mye klaring mellom brettet og tapphodene igjen på Pro Micro.
Etter litt forsiktig bøyning av stifthodene og en påføring av smeltelim (for isolasjon), luktes kabinettet ordentlig.
Installasjonen av grytene gikk uten problemer.
Igjen med ledningene
Solide kjerneledninger er litt stive og kan være sprø hvis de bøyes for mange ganger, så brett dem forsiktig (uten skarpe hjørner) inn i tilgjengelig plass. Noen av mine var for lange og krevde litt ekstra bretting.
Når alt er festet på plass, er det bare å sette basen på toppen og du bør være ferdig med maskinvaren ….
Men vent, det er mer
Selvfølgelig, etter noen ukers bruk, bestemte jeg meg for at jeg trengte en indikator for å gi meg beskjed om statusen for den mykt kodede MUTE-funksjonen.
Etter å ha redigert koden for å legge til i LED -funksjonaliteten (se neste avsnitt), loddet jeg raskt opp LED / ledninger / motstand og koblet dem til kortet.
Jeg brukte mer tid på å bore hullet gjennom toppen av saken, da jeg ikke ønsket å ødelegge den øverste finishen. Jeg markerte et senterpunkt, bulket det og spunnet deretter en borekrutt for å lage hullet.
Ytterligere forsiktig arkivering ryddet opp i hullet og sørget for en fin stram trykkpass for å sikre at LED-en ikke stakk for langt over toppflaten.
Trinn 5: Programvaren
Oversikt
Så dette er en todelt prosess.
- Få og forstå hvordan Deej fungerer og rediger Config.yaml -filen
- Rediger Arduino -koden for å matche maskinvaren og funksjonene du ønsker
- Skaff deg Arduino Joystick -biblioteket
I mitt tilfelle ønsket jeg disse funksjonene:
- Knotter som styrer nivåene (mikrofon og utgang)
- Demp bryter
- 2 -akset joystick gjenkjent av Windows for applikasjonsbruk
Nivåer
Deej tar stort sett vare på det første punktet som det kommer. Jeg har ikke justert denne funksjonaliteten
Demp bryter
Jeg hadde tidlig bestemt meg for at jeg skulle bruke trykk/bryteren i styrespaken som en funksjonell dempeknapp.
Når du undersøker koden, vil du se at jeg (først) har valgt å bruke en 'myk' dempning - når du trykker på knappen, reduseres MIC -volumet til null (og lysdioden lyser). Når den trykkes igjen, går MIC -volumet tilbake til den forrige innstillingen og LED -en slukkes.
Til slutt vil jeg se på implementering av Arduino -tastaturbiblioteket for å veksle dempestatusen gjennom det utvidede medietastaturkodesettet.
Joystick -implementering
Dette krever bruk av Arduino Joystick -biblioteket for å sikre at joysticken blir gjenkjent som en HID -enhet av Windows og følgelig av et hvilket som helst spill/program.
Jeg er litt av en noob når det gjelder koding og fant dokumentasjonen på joystick -biblioteket litt sparsom på selve implementeringssiden - men litt fokusert googling førte meg til andre eksempler som hjalp meg å forstå hva som skjer. Sjekk ressursdelen til slutt for detaljer.
Alt jeg måtte gjøre var å identifisere X/Y -pinnene, lese tilstanden deres og sende den til styrespakbiblioteket. Arduino dukket opp som en Leonardo for Windows, og var riktig konfigurert som en joystick -enhet.
Jeg klarte å sette det opp i Elite Dangerous, sammen med mitt eksisterende HOTAS -oppsett, og få styrespaken til å kontrollere ting riktig og ikke komme i konflikt med HOTAS. Det fungerer også bra i Star Wars: Squadrons - jeg har det satt som et raskt bytte for å sette opp skjoldene mens du er i kamp.
Filene som fungerer med mitt joystick -oppsett
Jeg har lastet opp mine nåværende (oktober 2020) filer til Codepile.
- Arduino -kode (.ino -fil)
- Deej config.yaml
Trinn 6: Slutt
Vel, denne er ferdig. Det fungerer, og jeg er ganske fornøyd med hvordan det ble sammen. Og jeg lærte litt mer om maskinvaredesign, integrering og Arduino -programmering.
Trinn 7: Tillegg..dum..dum
VLC - den fantastiske lyd- og videospilleren har en liten merkelighet der volumnivået, når det styres eksternt, hopper fra 0% til 27% ish. Dette skjer ikke når du justerer nivået med volumkontrollen i appen, bare med eksterne kontroller som Deej.
Deej-utvikleren fant raskt en in-VLC-løsning som gjør jobben, se bildet ovenfor:
"… hvis du vil deaktivere denne" Sporing "-atferden, kan du gjøre det ved å endre VLCs lydutgangsmodul. Jeg brukte DirectX i mine forsøk her. Du må starte VLC på nytt for at endringen skal tre i kraft. (Du vil fortsatt har en Windows -lydøkt og kan kontrollere den via deej, dette forhindrer bare at VLC -volumlinjen beveger seg med den)"
Trinn 8: Ytterligere ressurser
Funnet via den mektige Goog, oppført i ingen spesiell rekkefølge …
- Arduino Joystick Library (v2) - nødvendig for å integrere joysticken
- Sparkfun Pro Micro -tilkoblingsguide - god ressurs om denne Arduino
- deej - programvaren som driver knappene
- Typer USB -kontakter - hvem visste at det var så mange varianter?
- Arduino Pro Micro Analog Pinouts
- Arduino Leonardo Gaming Joystick - Leonardo ligner på Pro Micro, bare større
- Arduino Pro Micro (Clone) port ikke oppdaget (løsning) - når du murer Pro Micro (jeg gjorde)
- Arduino Leonardo/Micro som spillkontroller/joystick
- Eksempel på bruk av en multimedienøkkel for å dempe - ved å bruke HID -prosjektbiblioteket
- HID Prosjektbibliotek eksempelkode for å pause / spille av medier
- Et annet kodeeksempel som viser spillkontrollen.
- ArduinoGamingController_updated - god kodebeskrivelse av Joystick Library -bruken
- LED Resistor calculator thingie - for å finne ut hvor stor motstand du trenger i prosjektet ditt
- Ikonbibliotek - flaticon.com - kilde til bildene som brukes over knappene
- En annen motstandsfargedekoder - klikk på en farge og bratsj!
Anbefalt:
Deej Box - 5 glidebrytere: 8 trinn (med bilder)
Deej Box - 5 glidebrytere: Dette er min oppfatning av Deej -prosjektet som lar deg kontrollere volumene av PC -programmer individuelt og er veldig enkelt å konfigurere til individuelle behov. Designet mitt har fem glidebrytere med magnetiske, byttbare merker for å identifisere hver glidebryter. Det er con
Hardware and Software Hack Smart Devices, Tuya and Broadlink LEDbulb, Sonoff, BSD33 Smart Plug: 7 Steps
Hardware and Software Hack Smart Devices, Tuya and Broadlink LEDbulb, Sonoff, BSD33 Smart Plug: I denne instruksjonsfilen viser jeg deg hvordan jeg blinket flere smarte enheter med min egen fastvare, så jeg kan kontrollere dem av MQTT via mitt Openhab -oppsett. Jeg vil legge til nye enheter da jeg hacket dem. Selvfølgelig er det andre programvarebaserte metoder for å blinke tilpassede
Spill Dinosaur Game Using Arduino and Python3: 5 Steps
Spill Dinosaur -spill ved hjelp av Arduino og Python3: Prosjektbeskrivelse De fleste av oss har spilt dinosaurspill av google da internett ikke fungerte, og hvis du ikke har spilt dette spillet, ikke bekymre deg nå, men ikke på en konvensjonell måte ved å trykke på knapper, men ved å bruke bevegelse av hånden din. Så i dette
Roll and Pitch Axis Gimbal for GoPro Using Arduino - Servo and MPU6050 Gyro: 4 Steps
Roll and Pitch Axis Gimbal for GoPro Using Arduino - Servo and MPU6050 Gyro: Denne instruerbare ble opprettet for å oppfylle prosjektkravet til Makecourse ved University of South Florida (www.makecourse.com) Målet med dette prosjektet var å bygge en 3-akset Gimbal for GoPro ved å bruke Arduino nano + 3 servomotorer +
555 Timer With a Decade Counter and LEDs and Piezo Buzzer; basic Description of Circuit: 6 Steps
555 Timer With a Decade Counter and LEDs and Piezo Buzzer; grunnleggende beskrivelse av krets: Denne kretsen består av tre deler. De er en piezo -summer som produserer lyd. En kode (program) spiller "Happy Birthday" av Arduino gjennom piezo. Det neste trinnet er en 555 timer som vil produsere pulser som fungerer som en klokke