INHOUDSOPGAWE:

Arduino -sleutelbord -joystick -uitbreidingskas en klankbeheerder met behulp van Deej: 8 stappe
Arduino -sleutelbord -joystick -uitbreidingskas en klankbeheerder met behulp van Deej: 8 stappe

Video: Arduino -sleutelbord -joystick -uitbreidingskas en klankbeheerder met behulp van Deej: 8 stappe

Video: Arduino -sleutelbord -joystick -uitbreidingskas en klankbeheerder met behulp van Deej: 8 stappe
Video: "avrdude: ser_open(): can't set com-state for \\.\COM4" - tuto driver Arduino [EN/FR] 2024, Desember
Anonim
Arduino -sleutelbord -joystick -uitbreidingskas en klankbeheerder met behulp van Deej
Arduino -sleutelbord -joystick -uitbreidingskas en klankbeheerder met behulp van Deej

Tinkercad -projekte »

Hoekom

Ek wou al 'n rukkie 'n klein joystick by my sleutelbord voeg om koppelvlakelemente of ander kleiner take in speletjies en simulators te beheer (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons, ens.).

Vir Elite: Dangerous sukkel ek ook om volumevlakke van eksterne klank te meng (die ingeboude musiek, terwyl dit goed is, word herhaaldelik na baie ure in die swart), klank in die spel en ondersteuning vir eksterne stempakke.

Die ingeboude bronmenger van Windows is 'ok', maar dit is moeilik om van skerm na muis te skakel en muisbeheer te skuif. Om 'n uitgebreide sleutelbordkontrolebox te hê, was die regte pad. Deej is die oplossing wat ek gevind het.

Hoe

Ek het onlangs geleer oor Arduino, en op die deej -projek op reddit afgekom. Dit het gelyk asof albei hierdie probleme in een handige pakket sou oplos. En dit sou my toelaat om 'n handige 3D -kissie te ontwerp en te druk.

Wat is deej?

(van die webwerf af) deej is 'n ** open-source hardeware volume menger ** vir Windows en Linux rekenaars. Hiermee kan u werklike skuifknoppies (soos 'n DJ!) Gebruik om die volumes van verskillende programme moeiteloos ** te beheer (soos u musiekspeler, die spel wat u speel en u stemkletsessie) sonder om te stop jy doen.

My weergawe

Om die boks klein te hou, het ek gekies vir knoppe (roterende lineêre potensiometer (potte = weerstande)) eerder as skuifbalkies. Funksioneel werk hulle dieselfde. Huidige en gewilde deej -ontwerpe bevat nie 'n joystick nie, so dit sal 'n bietjie van 'n ontwerpbaster wees. Andersins is dit 'n redelik eenvoudige bou.

Deej sal saam met 'n Arduino Nano, Pro Micro of Uno werk, maar die Nano en Pro Micro word 'amptelik aanbeveel' deur die ontwikkelaar. Ek het die Arduino Pro Micro gekies omdat ek die joystick wou hê, en die Arduino Joystick Library ondersteun dit. Ek mag ook die Arduino -sleutelbordbiblioteek gebruik as ek die media -sleutelbord se dempfunksie (eerder as die 'sagte demp') met die joystick -knoppie wil gebruik, maar dit is verder in die pad.

Stap 1: Voorrade

Voorrade
Voorrade
Voorrade
Voorrade
Voorrade
Voorrade

Die boks

Laai die STL -lêers af (ontwerp in Tinkercad):

  • Omhulsellêers by Prusa (https://www.prusaprinters.org/)
  • Thingiverse (kom binnekort)

Die hardeware (produksie -eenheid)

  • 1x Arduino Pro Micro
  • 4x 10k roterende (knop) potensiometers (nie roterende kontroleerders nie, gebruik potte)
  • 1x Joystick Arduino KY-023
  • 5ft afval cat5 netwerk kabel
  • 1x USB A tot USB B mikrokabel (USB A is die groot vierkantige aansluiting, USB B micro is wat op die Arduino Pro Micro is)
  • 1x 5 mm rooi LED
  • 1x 220 ohm weerstand

Ek het 'n paar ekstra onderdele gehad, so ek het gedink ek sou 'n ontwikkelingseenheid bou om dinge uit te toets. Net om dinge aan 'n broodbord te koppel, het dit makliker gemaak om die finale ding te visualiseer.

  • 1x Arduino Pro Micro
  • 4x 10k roterende (knop) potensiometers (nie roterende kontroleerders nie, gebruik potte)
  • 1x kort drukknopskakelaar (skakelaar vir harde reset)
  • 1x USB A tot USB B mikrokabel (USB A is die groot vierkantige aansluiting, USB B micro is wat op die Arduino Pro Micro is)
  • diverse trui van drade
  • broodbord
  • 1x 5 mm rooi LED
  • 1x 220 ohm weerstand

Stap 2: Die omhulsel

Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel

Die ontwerp

Ek hou van sommige van die ander ontwerpe wat in die deej -gemeenskapsgalery geprofileer is, en ek het die funksies waarvan ek gehou het, gebaseer:

  • Maklik om te ontwerp en te druk
  • Belemmer my ander randapparatuur op die tafel nie
  • Moenie skroewe of bevestigingsmiddels gebruik om die omhulsel vas te maak nie
  • Soortgelyke ontwerp -estetika as die sleutelbord

Ek het twee prototipes ontwerp en gedruk voordat ek met hierdie finale ontwerp besluit het. Ek hou daarvan om 'n fisiese weergawe te hê in die ruimte waarin ek dit gebruik, aangesien dit my 'n beter idee gee van hoe die finale voorwerp sal werk.

Ek het kortliks begin ontwerp in Fusion360, maar ek weet dit nie so goed nie, aangesien Tinkercad so oorgeskakel het en daar gewerk het.

Aangesien ek 'n skroeflose ontwerp wou hê, het ek 'n neskas gemaak. Die eerste prototipe het 'n dun deksel en 'n diep boks vir alles. Die tweede ontwerp het dit verruil met 'n diep deksel en 'n vlak onderkas. Dit moes slegs die Arduino Pro Mini bevat, sodat dit nie regtig groot hoef te wees nie. Bevat ook die reliëf -ikone.

Die derde ontwerp is aangepas om die ruimte langs my sleutelbord te pas.

Die afdruk

Ek het die boks in PLA gedruk en 'n filament / laag -wissel van swart na rooi geprogrammeer vir die deksel waar die ikone net begin sigbaar word, en weer terug na swart vir die res van die deksel.

N probleem

Hierdeur was die joystick -houer 'n probleem. Selfs in die derde ontwerp, stamp die stok op een plek teen die houers. Die volgende iterasie sal beter opruimings hê. Ek kon meer aan die ontwerp gewerk het, maar wou verder gaan met die volgende fase, installasie.

Stap 3: Die stroombaan

Die stroombaan
Die stroombaan
Die stroombaan
Die stroombaan
Die stroombaan
Die stroombaan

Slegste bedrading werk ooit

Ok, dit is my eerste volledige Arduino-projek. Ja, ek het al voorheen dinge op broodplate gedoen en ek gebruik een om die ontwikkelingsweergawe hiervan te bou, maar dit is eintlik my eerste om dit te vervaardig en te monteer. My bedrading lyk dus soos 'n kak. Daar is dit uit die pad:)

Opdatering: ek het sedertdien nog een gebou en die bedrading is baie beter daar. Kyk na die beelde:)

Produksie -eenheid - wat gaan waarheen

Die Arduino Pro Micro is 'n klein bordjie en pas in die gevormde gedeelte in die basis. Knoppe en joystick pas in hul onderskeie gate in die deksel. Maar moenie iets monteer voordat u die soldeerkompetisie kry nie.

Bedrading

Ek het nie 'n behoorlike stroomkabel nie, maar ek het 'n oorblywende rol soliede kern cat5-netwerkkabel gehad, so dit is wat ek gebruik het. Dit is 'n bietjie stywer en miskien broser as die gestrande kring, maar dit werk.

Ek het die komponente in 'n benadering van hul finale monteerposisie uiteengesit, en ek het die afstand vir elke draad beraam, 'n bietjie meer bygevoeg vir slap, ens. Ek het baie slap gelaat.

Met verwysing na die bedradingsdiagram, het ek die gemeenskaplike grond (swart) en VCC (rooi) na die knoppe en joystick gehardloop, waar aangedui. Aangesien die netwerkkabel nie in hierdie kleure kom nie, het ek net 'n kleur gekies en my bedrading in ooreenstemming met die funksie gehou.

Die individuele Pot. analoog lyne (geel) loop na penne A0 - A3. Die joysticklyne (oranje), ook analoog, loop na I/O -penne 8 en 9. Dit moet in die Arduino -kode as analoog aangewys word as A8 en A9.

Die joystick -skakelaarpen (blou) loop na pen 7. Dit sal 'n digitale pen in die kode wees.

Isolasie

Aangesien hierdie stywe draad in 'n klein spasie gestop gaan word, het ek besluit om my soldeerverbindings te isoleer met 'n gesonde klont warmsmeltgom. Plaas dan alles op sy plek en voer 'n eenvoudige toets op die bord en die potte met die weergawe van die Arduino -voorbeeld AnalogInput -kode - aangepas om al die potte te lees.

Tweede weergawe

Die laaste twee beelde hierbo wys die volgende boks wat ek bou. Hierdie een het 5 knoppies en 'n kort drukknop vir die demp. Geen joystick nie. Dieselfde grootte boks.

Stap 4: Voltooi die hardeware

Die afwerking van die hardeware
Die afwerking van die hardeware

Teen die tyd dat ek die joystick geïnstalleer het, het ek besef dat daar nie veel speling was tussen die bord en die penkoppe op die Pro Micro nie.

Na 'n bietjie versigtige buiging van die penkoppe en 'n herbrand van smeltgom (vir isolasie), sluit die omhulsel behoorlik.

Die installering van die potte het sonder probleme plaasgevind.

Weer met die drade

Soliede kerndrade is 'n bietjie styf en kan bros wees as dit te veel keer gebuig word, en vou dit dan versigtig (sonder skerp hoeke) in die beskikbare ruimte. Sommige van my was te lank en het 'n bietjie ekstra vou nodig gehad.

Sodra alles vasgesteek is, pas die basis aan die bokant, en u moet klaar wees met die hardeware …

Maar wag, daar is meer

Natuurlik, na 'n paar weke se gebruik, het ek besluit dat ek 'n aanwyser nodig het om my te laat weet wat die status van die sagte kode MUTE-funksie is.

Nadat ek die kode gewysig het om die LED -funksie by te voeg (sien volgende afdeling), het ek vinnig die LED / drade / weerstand gesoldeer en aan die bord gekoppel.

Ek het meer tyd daaraan bestee om die gat deur die bokant van die kas te boor, aangesien ek nie die bo -afwerking wou bederf nie. Ek het 'n middelpunt gemerk, dit ingeduik en 'n boorpunt met die hand gespin om die gat te maak.

Bykomende versorging maak die gat skoon en sorg vir 'n goeie druk om te verseker dat die LED nie te ver bo die boonste oppervlak uitsteek nie.

Stap 5: Die sagteware

Die sagteware
Die sagteware
Die sagteware
Die sagteware
Die sagteware
Die sagteware

Oorsig

Dit is dus 'n tweeledige proses.

  1. Ontdek hoe Deej werk en wysig die Config.yaml -lêer
  2. Wysig die Arduino -kode om by die hardeware en funksies te pas
  3. Kry die Arduino Joystick -biblioteek

In my geval wou ek hierdie funksies hê:

  • Knoppe wat vlakke beheer (mikrofoon en uitset)
  • Demp skakelaar
  • 2 -as -joystick wat deur Windows herken word vir toepassingsgebruik

Vlakke

Deej sorg pretty much vir die eerste punt soos dit kom. Ek het hierdie funksie nie aangepas nie

Demp skakelaar

Ek het al vroeg besluit dat ek die pers/skakelaar in die joystick as 'n funksionele dempknoppie gaan gebruik.

As u die kode ondersoek, sal u sien dat ek (aanvanklik) gekies het om 'n 'sagte' demp te gebruik - as u op die knoppie druk, word die MIC -volume verminder tot nul (en die LED brand). As dit weer ingedruk word, word die MIC -volume teruggekeer na die vorige instelling en word die LED gedoof.

Uiteindelik sal ek kyk na die implementering van die Arduino -sleutelbordbiblioteek om die demp -status deur die uitgebreide mediatoetsenbordkode te verander.

Joystick -implementering

Dit vereis die gebruik van die Arduino Joystick -biblioteek om te verseker dat die joystick deur Windows erken word en gevolglik deur enige speletjie/toepassing.

Ek is 'n bietjie van 'n noob as dit kom by kodering, en ek vind die dokumentasie van die Joystick -biblioteek effens yl aan die werklike implementeringskant - maar 'n bietjie gefokusde google het my na ander voorbeelde gelei wat my gehelp het om te verstaan wat aan die gang is. Gaan die hulpbronne -afdeling aan die einde na vir meer inligting.

Al wat ek hoef te doen was om die X/Y -penne te identifiseer, hul toestand te lees en dit na die Joystick -biblioteek te stuur. Die Arduino verskyn as 'n Leonardo vir Windows, en is behoorlik gekonfigureer as 'n joystick -toestel.

Ek kon dit in Elite Dangerous instel, saam met my bestaande HOTAS -opstelling, en die joystick kon dinge behoorlik beheer en nie in konflik wees met die HOTAS nie. Dit werk ook goed in Star Wars: Squadrons - ek het dit as 'n vinnige skakel om die skilde op te stel in die geveg.

Die lêers wat werk met my joystick -opstelling

Ek het my huidige (Oktober 2020) lêers opgelaai na Codepile.

  • Arduino -kode (.ino -lêer)
  • Deej config.yaml

Stap 6: Einde

Einde
Einde

Wel, hierdie een is klaar. Dit werk en ek is baie tevrede met hoe dit bymekaar gekom het. En ek het 'n bietjie meer geleer oor hardeware -ontwerp, integrasie en Arduino -programmering.

Stap 7: Addendum..dum..dum

Bylae..dum..dum
Bylae..dum..dum

VLC - die wonderlike klank- en videospeler het 'n bietjie vreemdheid, waar die volume, as ekstern beheer word, van 0% na 27% spring. Dit gebeur nie as u die vlak aanpas met behulp van die volume-beheer in die app-koppelvlak nie, slegs met eksterne kontroles soos Deej.

Die Deej-ontwikkelaar het vinnig 'n in-VLC-oplossing gevind wat die werk doen, sien die prent hierbo:

"… as u hierdie" Tracking "-gedrag wil deaktiveer, kan u dit doen deur die klankuitsetmodule van VLC te verander. Ek het DirectX in my pogings hier gebruik. U moet VLC herlaai voordat die verandering in werking tree. (U sal steeds het 'n Windows -klanksessie en kan dit via deej beheer word, dit sal net verhoed dat die VLC -volumebalk daarmee beweeg)"

Stap 8: Bykomende hulpbronne

Bykomende hulpbronne
Bykomende hulpbronne

Gevind via die magtige Goog, gelys in geen spesifieke volgorde nie …

  • Arduino Joystick Library (v2) - nodig om die joystick te integreer
  • Sparkfun Pro Micro -aansluitingsgids - goeie bron oor hierdie Arduino
  • deej - die sagteware wat die knoppe dryf
  • Tipes USB -verbindings - wie het geweet dat daar soveel variante is?
  • Arduino Pro Micro Analog Pinouts
  • Arduino Leonardo Gaming Joystick - Leonardo is soortgelyk aan Pro Micro, net groter
  • Arduino Pro Micro (Clone) -poort nie opgespoor nie (oplossing) - as u u Pro Micro baksteen (ek het)
  • Arduino Leonardo/Micro as 'n spelbeheerder/joystick
  • Voorbeeld van die gebruik van 'n multimediasleutel om te demp - met behulp van die HID -projekbiblioteek
  • HID Projekbiblioteek -voorbeeldkode om media te onderbreek / speel
  • Nog 'n voorbeeld van die kode wat die gamepad -kontroleerder wys.
  • ArduinoGamingController_updated - goeie kodebeskrywing van die gebruik van die joystick -biblioteek
  • LED Resistor -sakrekenaar - om uit te vind hoe groot 'n weerstand u in u projek benodig
  • Ikoonbiblioteek - flaticon.com - bron van die beelde wat bo die knoppe gebruik word
  • Nog 'n weerstandskleurdecodeerder - klik op 'n kleur en altviool!

Aanbeveel: