Indholdsfortegnelse:

Arduino Keyboard Joystick Extender Box og Sound Controller Thing Using Deej: 8 trin
Arduino Keyboard Joystick Extender Box og Sound Controller Thing Using Deej: 8 trin

Video: Arduino Keyboard Joystick Extender Box og Sound Controller Thing Using Deej: 8 trin

Video: Arduino Keyboard Joystick Extender Box og Sound Controller Thing Using Deej: 8 trin
Video: #184 Make an Arduino USB Volume Control - Ideal Beginner's Project 2024, December
Anonim
Arduino Keyboard Joystick Extender Box og Sound Controller Thing Using Deej
Arduino Keyboard Joystick Extender Box og Sound Controller Thing Using Deej

Tinkercad -projekter »

Hvorfor

I et stykke tid har jeg ønsket at tilføje et lille joystick til mit tastatur for at styre grænsefladeelementer eller andre mindre opgaver i spil og simulatorer (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons osv.).

Også for Elite: Dangerous har jeg kæmpet med at blande lydstyrkeniveauer fra ekstern lyd (den indbyggede musik, mens den er god, bliver gentagende efter mange timer i sort), lyd i spillet og ekstern voicepack-understøttelse.

Windows indbygget kildemixer er 'ok', men det er ondt at skifte skærme og musestyringsskydere midt i et spil. At have en udvidet tastaturbetjeningsboks syntes at være vejen. Deej er den løsning, jeg fandt.

Hvordan

Jeg har for nylig lært om Arduino og stødte på deej -projektet på reddit. Det så ud til at dette ville løse begge disse problemer i en praktisk pakke. Og det ville lade mig designe og udskrive en smart 3d -sag.

Hvad er deej?

(fra webstedet) deej er en ** open-source hardware volume mixer ** til Windows og Linux pc'er. Det lader dig bruge virkelige skyder (som en DJ!) Til ** problemfrit at styre mængderne af forskellige apps ** (f.eks. Din musikafspiller, det spil, du spiller og din stemmechatsession) uden at skulle stoppe hvad du gør.

Min version

For at holde kassen lille, valgte jeg knapper (roterende lineært potentiometer (gryder = modstande)) frem for skydere. Funktionelt fungerer de ens. Nuværende og populære deej -designs inkluderer ikke et joystick, så dette vil være lidt af en designhybrid. Ellers er det en temmelig ligetil fremstilling.

Deej vil arbejde med en Arduino Nano, Pro Micro eller Uno, men Nano og Pro Micro er 'officielt anbefalet' af udvikleren. Jeg valgte Arduino Pro Micro, fordi jeg ville have joysticket, og Arduino Joystick Library understøtter det. Jeg kan også bruge Arduino -tastaturbiblioteket, når jeg vil bruge medietastaturets lydløs -funktion (frem for den 'bløde dæmpning') med joystick -knappen, men det er længere nede ad vejen.

Trin 1: Forbrugsvarer

Forbrugsvarer
Forbrugsvarer
Forbrugsvarer
Forbrugsvarer
Forbrugsvarer
Forbrugsvarer

Kassen

Download STL -filerne (designet i Tinkercad):

  • Vedhæftede filer på Prusa (https://www.prusaprinters.org/)
  • Thingiverse (kommer snart)

Hardware (produktionsenhed)

  • 1x Arduino Pro Micro
  • 4x 10k roterende (knop) Potentiometre (ikke roterende controllere, brug gryder)
  • 1x Arduino KY-023 joystick
  • 5ft skrot cat5 netværkskabel
  • 1x USB A til USB B mikrokabel (USB A er den store firkantede forbindelse, USB B micro er hvad der er på Arduino Pro Micro)
  • 1x 5 mm rød LED
  • 1x 220 ohm modstand

Jeg havde nogle ekstra dele rundt omkring, så jeg tænkte, at jeg ville bygge en udviklingsenhed til at teste tingene ud på. Bare at forbinde tingene til et brødbræt gjorde det lettere at visualisere den sidste ting.

  • 1x Arduino Pro Micro
  • 4x 10k roterende (knop) Potentiometre (ikke roterende controllere, brug gryder)
  • 1x øjeblikkelig trykknapkontakt (hard reset -kontakt)
  • 1x USB A til USB B mikrokabel (USB A er den store firkantede forbindelse, USB B micro er hvad der findes på Arduino Pro Micro)
  • diverse jumperwires
  • brødbræt
  • 1x 5 mm rød LED
  • 1x 220 ohm modstand

Trin 2: Vedlægget

Indhegningen
Indhegningen
Indhegningen
Indhegningen
Indhegningen
Indhegningen
Indhegningen
Indhegningen

Designet

Jeg kunne godt lide nogle af de andre designs, der blev profileret i deej -community -galleriet, så baseret på mine funktioner, som jeg kunne lide:

  • Let at designe og udskrive
  • Kom ikke i vejen for mine andre stationære periferiudstyr
  • Brug ikke skruer eller fastgørelseselementer til at fastgøre kabinettet
  • Lignende design æstetisk til tastaturet

Jeg designede og printede to prototyper, inden jeg besluttede mig for dette endelige design. Jeg kan godt lide at have en fysisk version at lege med i det rum, jeg bruger den i, da det giver mig en bedre fornemmelse af, hvordan det endelige objekt vil fungere.

Jeg begyndte kort tid at designe i Fusion360, men kender det ikke så godt som Tinkercad så skiftede og arbejdede der.

Da jeg ville have et skrueløst design, skabte jeg en redekasse. Første prototype havde et tyndt låg og en dyb æske til alt. Andet design byttede det ud med et dybt låg og en lav bundkasse. Det skulle kun indeholde Arduino Pro Mini, så det behøvede virkelig ikke at være stort. Inkluderede også de prægede ikoner.

Tredje design blev ændret til at passe til rummet sammen med mit tastatur.

Trykket

Jeg printede boksen i PLA og programmerede en filament / lag -swap fra sort til rød for låget, hvor ikonerne lige ville begynde at være synlige, og igen tilbage til sort for resten af låget.

Et problem

Alt dette var joystick -beslaget et problem. Selv i det tredje design støder pinden op mod beslagene ét sted. Den næste iteration vil have bedre clearances. Jeg kunne have arbejdet mere med designet, men ville gerne videre til den næste fase, installation.

Trin 3: Kredsløbet

Kredsløbet
Kredsløbet
Kredsløbet
Kredsløbet
Kredsløbet
Kredsløbet

Det værste ledningsarbejde nogensinde

Ok, dette er mit første fulde Arduino-projekt. Ja, jeg har tidligere gjort ting på brødbrætter og bruger en til at bygge udviklingsversionen af dette, men hvad angår faktisk fremstilling og samling, er dette mit første. Så mine ledninger ligner lort. Der er det af vejen:)

Opdatering: Jeg har siden bygget en anden, og ledningerne er meget pænere der. Se billederne:)

Produktionsenhed - Hvad sker der hvor

Arduino Pro Micro er et lille bitte bræt og vil passe ind i den støbte sektion i bunden. Knopper og joystick passer i deres respektive huller i låget. Men monter ikke noget, før du får loddekonkurrencen.

Ledninger

Jeg havde ikke en ordentlig kredsløbstråd, men havde en restrulle af solid-core cat5 netværkskabel, så det var det, jeg brugte. Det er lidt stivere og måske mere sprødt end den strandede kredsløbstråd, men det virker.

Ved at lægge komponenterne ud i en tilnærmelse til deres endelige monteringsposition, estimerede jeg afstanden, for hver ledning, tilføjede lidt mere til slack osv., Derefter klippede og trimmede tråden. Jeg efterlod en masse slap.

Med henvisning til ledningsdiagrammet løb jeg den fælles jord (sort) og VCC (rød) til knapperne og joysticket, hvor det er angivet. Da netværkskablet ikke findes i disse farver, valgte jeg bare en farve og holdt mine ledninger i overensstemmelse med funktionen.

Den enkelte Pot. analoge linjer (gul) løb til ben A0 - A3. Joysticklinjerne (orange), også analoge, løb til I/O -ben 8 og 9. Disse skal betegnes som analoge i Arduino -koden som A8 og A9.

Joystick switch pin (blå) løb til pin 7. Dette vil være en digital pin i koden.

Isolering

Da denne stive ledning vil blive proppet ind i et lille rum, valgte jeg at isolere mine loddeforbindelser med en sund klat hot-melt lim. Derefter gemte alt på plads og kørte en simpel test på tavlen og gryderne ved hjælp af version af Arduino -eksempelet AnalogInput -kode - ændret til at læse alle gryderne.

Anden version

De to sidste billeder ovenfor viser den næste boks, jeg bygger. Denne vil have 5 knapper og en kortvarig trykknap til lydløs. Intet joystick. Kasse i samme størrelse.

Trin 4: Afslut hardware

Afslutning af hardware
Afslutning af hardware

Da jeg havde installeret joysticket, indså jeg, at der ikke var megen afstand mellem kortet og stiftoverskrifterne på Pro Micro.

Efter lidt omhyggelig bøjning af stifthovederne og en påføring af smeltelim (til isolering) lukkede kabinettet ordentligt.

Installation af gryderne gik uden problemer.

Igen med ledningerne

Solide kernetråde er lidt stive og kan være sprøde, hvis de bøjes for mange gange, så fold dem forsigtigt (uden skarpe hjørner) ind i det ledige rum. Nogle af mine var for lange og krævede lidt ekstra foldning.

Når alt er sat på plads, skal du bare montere basen på toppen, og du skal være færdig med hardware….

Men vent, der er mere

Efter et par ugers brug besluttede jeg naturligvis, at jeg havde brug for en indikator for at fortælle mig, hvad status for den blødkodede MUTE-funktion er.

Efter at have redigeret koden for at tilføje LED -funktionaliteten (se næste afsnit) lod jeg hurtigt LED / ledninger / modstand op og sluttede dem til kortet.

Jeg brugte mere tid på at bore hullet gennem toppen af sagen, da jeg ikke ville ødelægge den øverste finish. Jeg markerede en midterste plet, bukkede den og spandt derefter en borekrone i hånden for at lave hullet.

Yderligere omhyggelig arkivering ryddede op i hullet og sikrede en dejlig stram prespasning for at sikre, at LED'en ikke stak for langt ud over den øverste overflade.

Trin 5: Softwaren

Softwaren
Softwaren
Softwaren
Softwaren
Softwaren
Softwaren

Oversigt

Så dette er en todelt proces.

  1. Få og forstå, hvordan Deej fungerer, og rediger filen Config.yaml
  2. Rediger Arduino -koden, så den matcher hardwaren og de ønskede funktioner
  3. Få Arduino Joystick -biblioteket

I mit tilfælde ville jeg have disse funktioner:

  • Knopper, der styrer niveauer (mikrofon og output)
  • Lydløs kontakt
  • 2 -akset joystick genkendt af Windows til applikationsbrug

Niveauer

Deej tager sig stort set af det første punkt, som det kommer. Jeg har ikke justeret denne funktionalitet

Lydløs kontakt

Jeg havde tidligt fastslået, at jeg skulle bruge presse/kontakten i joysticket som en funktionel lydløs knap.

Når du undersøger koden, vil du se, at jeg (oprindeligt) har valgt at bruge en 'blød' lydløs - når der trykkes på knappen, reduceres MIC -lydstyrken til nul (og LED'en lyser). Når der trykkes på den igen, vender MIC -lydstyrken tilbage til den tidligere indstilling, og lysdioden slukkes.

Til sidst vil jeg se på implementering af Arduino -tastaturbiblioteket for at skifte lydløs -status gennem det udvidede medietastaturkodesæt.

Joystick implementering

Dette kræver brug af Arduino Joystick -biblioteket for at sikre, at joysticket genkendes som en HID -enhed af Windows og følgelig af ethvert spil/program.

Jeg er lidt af en noob når det kommer til kodning og fandt dokumentationen til Joystick -biblioteket lidt sparsom på selve implementeringssiden - men lidt fokuseret googling førte mig til andre eksempler, der hjalp mig med at forstå, hvad der foregår. Se afsnittet ressourcer i slutningen for at få flere oplysninger.

Alt jeg skulle gøre var at identificere X/Y -benene, læse deres tilstand og sende det til joystick -biblioteket. Arduino optrådte som en Leonardo til Windows, og var korrekt konfigureret som en joystick -enhed.

Jeg var i stand til at konfigurere det i Elite Dangerous sammen med mit eksisterende HOTAS -setup og få joysticket til at styre tingene ordentligt og ikke være i konflikt med HOTAS. Det fungerer også godt i Star Wars: Squadrons - jeg har det indstillet som en hurtig skifte for at opsætte skjoldene, mens du er i kamp.

Filerne, der fungerer med mit joystick -setup

Jeg har uploadet mine nuværende (oktober 2020) filer til Codepile.

  • Arduino -kode (.ino -fil)
  • Deej config.yaml

Trin 6: Afslut

Ende
Ende

Nå, denne er færdig. Det virker, og jeg er ret tilfreds med, hvordan det kom sammen. Og jeg lærte lidt mere om hardware design, integration og Arduino programmering.

Trin 7: Tillæg..dum..dum

Tillæg..dum..dum
Tillæg..dum..dum

VLC - den fantastiske lyd- og videospiller har en lille underlighed, hvor lydstyrkeniveauet, når det styres eksternt, hopper fra 0% til 27% ish. Dette sker ikke, når niveauet justeres ved hjælp af volumenkontrol i grænsefladen i appen, kun med eksterne kontroller som Deej.

Deej-udvikleren fandt hurtigt en in-VLC-løsning, der gør jobbet, se billedet ovenfor:

"… hvis du vil deaktivere denne" Sporing "-adfærd, kan du gøre det ved at ændre VLCs lydoutputmodul. Jeg brugte DirectX i mine forsøg her. Du skal genstarte VLC, for at ændringen kan træde i kraft. (Du vil stadig har en Windows -lydsession og kan styre den via deej, dette forhindrer bare, at VLC -volumenlinjen bevæger sig med den)"

Trin 8: Yderligere ressourcer

Yderligere ressourcer
Yderligere ressourcer

Fundet via den mægtige Goog, opført i ingen særlig rækkefølge …

  • Arduino Joystick Library (v2) - nødvendigt for at integrere joysticket
  • Sparkfun Pro Micro tilslutningsguide - god ressource om denne Arduino
  • deej - softwaren, der driver knapperne
  • USB -stikstyper - hvem vidste, at der var så mange varianter?
  • Arduino Pro Micro Analog Pinouts
  • Arduino Leonardo Gaming Joystick - Leonardo ligner Pro Micro, kun større
  • Arduino Pro Micro (klon) port ikke registreret (løsning) - da du murede din Pro Micro (jeg gjorde)
  • Arduino Leonardo/Micro som spilcontroller/joystick
  • Eksempel på brug af en multimedie -nøgle til at slå lyden fra - ved hjælp af HID -projektbiblioteket
  • HID Projektbibliotek eksempelkode til pause / afspilning af medier
  • Et andet kodeeksempel, der viser gamepad -controlleren.
  • ArduinoGamingController_updated - god kodebeskrivelse af Joystick Library -brugen
  • LED -modstandsberegner - for at finde ud af, hvor stor en modstand du skal bruge i dit projekt
  • Ikonbibliotek - flaticon.com - kilde til de billeder, der bruges over knapperne
  • En anden modstandsfarvedekoder - klik på en farve og bratsch!

Anbefalede: