Tartalomjegyzék:

Arduino billentyűzet joystick bővítő doboz és hangvezérlő dolog a Deej használatával: 8 lépés
Arduino billentyűzet joystick bővítő doboz és hangvezérlő dolog a Deej használatával: 8 lépés

Videó: Arduino billentyűzet joystick bővítő doboz és hangvezérlő dolog a Deej használatával: 8 lépés

Videó: Arduino billentyűzet joystick bővítő doboz és hangvezérlő dolog a Deej használatával: 8 lépés
Videó: arduino uno + usb shield + bluetooth dongle + xbox one s controller 2024, November
Anonim
Arduino billentyűzet joystick bővítő doboz és hangvezérlő dolog a Deej használatával
Arduino billentyűzet joystick bővítő doboz és hangvezérlő dolog a Deej használatával

Tinkercad projektek »

Miért

Egy ideje szeretnék egy kis joystickot hozzáadni a billentyűzetemhez az interfész elemek vezérléséhez, vagy más kisebb feladatokat a játékokban és szimulátorokban (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons stb.).

Továbbá az Elite: Dangerous esetében küszködtem a hangerőszint keverésével a külső audióból (a beépített zene, bár jó, de ismétlődő lesz sok óra után a fekete színben), a játékon belüli hanggal és a külső hangcsomag-támogatással.

A Windows beépített forráskeverője „rendben” van, de a képernyő közepén és az egérvezérlő csúszkák váltása a játék közepén fájdalmas. Úgy tűnt, hogy a kibővített billentyűzetvezérlő doboz az út. Deej a megoldás, amit találtam.

Hogyan

Nemrég tanultam az Arduino -ról, és találkoztam a deej projekttel a reddit -en. Úgy tűnt, ez megoldja mind a két problémát egy praktikus csomagban. És lehetővé tenné, hogy megtervezzek és kinyomtassak egy remek 3D -s tokot.

Mi az a deej?

(a webhelyről) A deej egy ** nyílt forráskódú hardver-keverő ** Windows és Linux számítógépekhez. Lehetővé teszi, hogy valós csúszkákkal (például DJ!) ** zökkenőmentesen vezérelje a különböző alkalmazások hangerejét ** (például a zenelejátszót, a játékot és a hangcsevegést) anélkül, hogy le kellene állítania csinálod.

Az én verzióm

Annak érdekében, hogy a doboz kicsi legyen, a gombok (forgó lineáris potenciométer (edények = ellenállások)) mellett döntöttem a csúszkák helyett. Funkcionálisan ugyanúgy működnek. A jelenlegi és népszerű deej tervek nem tartalmaznak joystickot, így ez egy kicsit dizájn hibrid lesz. Ellenkező esetben ez egy meglehetősen egyszerű konstrukció.

Deej egy Arduino Nano, Pro Micro vagy Uno készülékkel fog dolgozni, de a Nano és a Pro Micro „hivatalosan ajánlott” a fejlesztő számára. Az Arduino Pro Micro -t választottam, mert a joystickot akartam, és az Arduino Joystick Library támogatja. Használhatom az Arduino billentyűzet -könyvtárat is, amikor a média billentyűzet némítási funkcióját (a „lágy némítás” helyett) szeretném használni a joystick gombbal, de ez az úton van.

1. lépés: Kellékek

Kellékek
Kellékek
Kellékek
Kellékek
Kellékek
Kellékek

A doboz

Töltse le az STL fájlokat (Tinkercad -ban tervezve):

  • Mellékletek a Prusa -n (https://www.prusaprinters.org/)
  • Thingiverse (hamarosan)

A hardver (termelési egység)

  • 1x Arduino Pro Micro
  • 4x 10k forgó (gombos) potenciométer (nem forgóvezérlők, használjon edényeket)
  • 1x Arduino KY-023 joystick
  • 5 lábas cat5 hálózati kábel
  • 1x USB A - USB B mikrokábel (az USB A a nagy négyzet alakú csatlakozó, az USB B micro az Arduino Pro Micro része)
  • 1x 5 mm -es piros LED
  • 1x 220 ohmos ellenállás

Volt néhány extra alkatrészem a környéken, ezért úgy gondoltam, hogy felépítek egy fejlesztési egységet, hogy kipróbáljam a dolgokat. Ha csak összekapcsolja a dolgokat egy kenyérsütő táblával, könnyebb volt elképzelni a végső dolgot.

  • 1x Arduino Pro Micro
  • 4x 10k forgó (gombos) potenciométer (nem forgóvezérlők, használjon edényeket)
  • 1x pillanatnyi nyomógombos kapcsoló (hard reset kapcsoló)
  • 1x USB A - USB B mikrokábel (az USB A a nagy négyzet alakú csatlakozó, az USB B micro az Arduino Pro Micro része)
  • válogatott jumper vezetékek
  • kenyeretábla
  • 1x 5 mm -es piros LED
  • 1x 220 ohmos ellenállás

2. lépés: A ház

A Melléklet
A Melléklet
A Melléklet
A Melléklet
A Melléklet
A Melléklet
A Melléklet
A Melléklet

A dizájn

Tetszett néhány más, a deej közösségi galériában profilozott dizájn, tehát az általam kedvelt funkciók alapján:

  • Könnyen tervezhető és nyomtatható
  • Ne akadályozza más asztali perifériáimat
  • Ne használjon csavarokat vagy rögzítőelemeket a ház rögzítéséhez
  • A billentyűzethez hasonló esztétikai kialakítás

Két prototípust megterveztem és kinyomtattam, mielőtt ennek a végleges tervnek a megoldása mellett döntöttem. Szeretem, ha van egy fizikai verzióm, amellyel játszhatok abban a térben, ahol használom, mert így jobban érzékelhetem a végső objektum működését.

Röviden elkezdtem tervezni a Fusion360 -ban, de nem ismerem olyan jól, mint a Tinkercad, így átváltottam és ott dolgoztam.

Mivel csavarmentes kivitelre vágytam, létrehoztam egy fészkelődobozt. Az első prototípusnak vékony fedele és mély doboza volt mindenhez. A második kivitel ezt mély fedéllel és sekély alsó dobozzal cserélte ki. Csak az Arduino Pro Mini -t kellett tartania, így valóban nem kellett nagynak lennie. Szintén beépítették a dombornyomott ikonokat.

A harmadik kialakítást átméretezték, hogy illeszkedjen a billentyűzetem melletti helyhez.

A nyomtatás

A dobozt PLA -ban kinyomtattam, programozva egy izzószál / réteg cserét Fekete -ről Vörösre a fedél számára, ahol az ikonok csak akkor kezdenek láthatóvá válni, és ismét vissza a Fekete -re a fedél többi részében.

Probléma

Mindezek során a joystick rögzítése jelentett problémát. Még a harmadik kivitelben is a bot egy helyben ütközik a tartókhoz. A következő iterációnál jobb lesz a szabadság. Dolgozhattam volna többet a tervezésen, de szerettem volna a következő fázisra, a telepítésre lépni.

3. lépés: Az áramkör

Az áramkör
Az áramkör
Az áramkör
Az áramkör
Az áramkör
Az áramkör

A legrosszabb vezetékes munka valaha

Ok, ez az első teljes Arduino projektem. Igen, korábban már dolgoztam kenyérpadlón, és ezt használom a fejlesztői verzió elkészítéséhez, de ami a tényleges gyártást és összeszerelést illeti, ez az első. Szóval a huzalozásom baromságnak tűnik. Ott ez nem áll útban:)

Frissítés: Azóta építettem egy másikat, és a vezetékek sokkal szebbek. Nézd meg a képeket:)

Gyártó egység - Mi történik hova

Az Arduino Pro Micro egy apró kis tábla, és illeszkedik az alap formázott részéhez. A gombok és a joystick illeszkednek a fedél lyukaiba. De ne szereljen fel semmit, amíg meg nem kapja a forrasztási versenyt.

Vezeték

Nem volt megfelelő áramköri vezetékem, de volt egy maradék tekercs tömör magú cat5 hálózati kábel, tehát ezt használtam. Kicsit merevebb és talán törékenyebb, mint a sodrott áramkör, de működik.

Az alkatrészeket a végleges szerelési helyzetükhöz közelítve fektettem le, becsültem a távolságot minden egyes huzalhoz, hozzáadtam még egy kicsit a lazasághoz stb., Majd elvágtam és levágtam a vezetéket. Nagy lazaságot hagytam.

A bekötési rajzra hivatkozva a közös földet (fekete) és a VCC -t (piros) a gombokhoz és a joystickhoz futtattam, ahol feltüntették. Mivel a hálózati kábel nem ilyen színű, csak kiválasztottam egy színt, és a vezetékeim összhangban maradtak a funkcióval.

Az egyéni edény. analóg vonalak (sárga) az A0 - A3 érintkezőkig vezettek. A Joystick vonalak (narancssárga), szintén analógok, a 8 -as és 9 -es I/O érintkezőkhöz vezettek. Ezeket az Arduino kódban Analógként kell jelölni, mint A8 és A9.

A joystick kapcsoló csapja (kék) a 7 -es tűre futott. Ez egy digitális tű lesz a kódban.

Szigetelés

Mivel ezt a merev huzalt kis helyre fogják tömni, úgy döntöttem, hogy a forrasztási kapcsolataimat egészséges, meleg olvadékragasztóval szigetelöm. Ezután mindent a helyére rakott, és lefuttatott egy egyszerű tesztet a táblán és az edényeken az Arduino Példa AnalogInput kódjának verziójával - az összes edény olvasásához módosítva.

Második verzió

A fenti két utolsó kép mutatja a következő dobozt, amit építek. Ennek 5 gombja és egy pillanatnyi nyomógombja lesz a némításhoz. Nincs joystick. Ugyanazon méretű doboz.

4. lépés: A hardver befejezése

A hardver befejezése
A hardver befejezése

Mire feltelepítettem a joystickot, rájöttem, hogy nincs nagy távolság a tábla és a Pro Micro -n maradt tűfej között.

A tűcsapok kis óvatos hajlítása és a felolvasztott ragasztó (szigeteléshez) újbóli felhordása után a ház megfelelően záródott.

Az edények felszerelése gond nélkül ment.

Ismét a vezetékekkel

A tömör magvezetékek kissé merevek, és törékenyek lehetnek, ha túl sokszor hajlítják őket, ezért óvatosan hajtsa be őket (éles sarkok nélkül) a rendelkezésre álló helyre. Néhány enyém túl hosszú volt, és egy kis extra összecsukást igényeltek.

Miután minden a helyére került, csak illessze az alapot a tetejére, és készen kell állnia a hardverrel….

De várj, van még több

Természetesen néhány hét használat után úgy döntöttem, hogy szükségem van egy mutatóra, amely tájékoztatja a lágy kódú MUTE funkció állapotáról.

A LED funkciók hozzáadásához szükséges kód szerkesztése után (lásd a következő részt) gyorsan felforrasztottam a LED / vezetékeket / ellenállást, és csatlakoztattam őket a panelhez.

Több időt töltöttem a lyuk fúrásával a tok tetején, mivel nem akartam elcsavarni a felső felületet. Kijelöltem egy középső foltot, behorpadtam, majd kézzel megforgattam egy fúrót a lyuk elkészítéséhez.

További óvatos reszelés megtisztította a lyukat, és biztosította a szoros préselést, hogy a LED ne nyúljon túl messze a felső felület felett.

5. lépés: A szoftver

A szoftver
A szoftver
A szoftver
A szoftver
A szoftver
A szoftver

Áttekintés

Tehát ez egy két részből álló folyamat.

  1. Ismerje meg és értse meg a Deej működését, és szerkessze a Config.yaml fájlt
  2. Szerkessze az Arduino kódot, hogy megfeleljen a kívánt hardvernek és funkcióknak
  3. Szerezze be az Arduino joystick könyvtárat

Esetemben ezeket a funkciókat akartam:

  • Gombok, amelyek szabályozzák a szinteket (mikrofon és kimenet)
  • Némítás kapcsoló
  • 2 tengelyes joystick, amelyet a Windows felismer az alkalmazás használatához

Szintek

Deej nagyjából gondoskodik az első pontról, ahogy jön. Ezt a funkciót nem módosítottam

Némítás kapcsoló

Korán elhatároztam, hogy a Joystick sajtóját/kapcsolóját funkcionális némítógombként fogom használni.

Amikor megvizsgálja a kódot, látni fogja, hogy (kezdetben) a "lágy" némítást választottam - a gomb megnyomásakor a MIC hangereje nullára csökken (és a LED világít). Ha ismét megnyomja, a MIC hangerő visszaáll az előző beállításra, és a LED kialszik.

Végül az Arduino billentyűzetkönyvtár megvalósítását fogom vizsgálni, hogy a némítás állapotát a kiterjesztett média billentyűzet kódkészleten keresztül kapcsoljam.

Joystick megvalósítás

Ez megköveteli az Arduino Joystick könyvtár használatát annak biztosítására, hogy a joystickot HID eszközként ismerje fel a Windows, következésképpen minden játék/alkalmazás.

Kicsit bunkó vagyok a kódolás terén, és a Joystick könyvtár dokumentációját kissé szűkösnek találtam a tényleges megvalósítási oldalon - de egy kis koncentrált googleolás más példákhoz vezetett, amelyek segítettek megérteni, mi történik. Részletekért nézze meg a végén található erőforrások részt.

Csak annyit kellett tennem, hogy beazonosítom az X/Y csapokat, elolvasom az állapotukat és elküldöm a Joystick könyvtárba. Az Arduino Leonardo -ként jelent meg a Windows számára, és megfelelően volt beállítva Joystick -eszközként.

Sikerült beállítani az Elite Dangerous -ban, a meglévő HOTAS beállításaim mellett, és a Joystick -ot megfelelően irányítani, és nem ütközni a HOTAS -szal. A Star Wars: Squadronsban is jól működik - gyors kapcsolóként állítottam be a pajzsok felállítását harc közben.

A Joystick beállítással működő fájlok

Feltöltöttem aktuális (2020. okt.) Fájljaimat a Codepile -be.

  • Arduino kód (.ino fájl)
  • Deej config.yaml

6. lépés: Vége

Vége
Vége

Nos, ez elkészült. Működik, és elégedett vagyok azzal, ahogy összejött. És kicsit többet tanultam a hardvertervezésről, az integrációról és az Arduino programozásról.

7. lépés: Kiegészítés..dum..dum

Kiegészítés..dum..dum
Kiegészítés..dum..dum

VLC - ennek a fantasztikus audio- és videolejátszónak van egy kis furcsasága, ahol a hangerő külső vezérlés esetén 0% -ról 27% -ra ugrik. Ez nem történik meg, amikor a szintet az alkalmazáson belüli felület hangerőszabályzójával állítja be, csak külső vezérlőkkel, például a Deej-vel.

A Deej fejlesztője gyorsan megtalálta a VLC-n belüli megoldást, amely elvégzi a feladatot, lásd a fenti képet:

"… ha le szeretné tiltani ezt a" követési "viselkedést, akkor ezt a VLC hangkimeneti moduljának megváltoztatásával teheti meg. Itt a DirectX -et használtam. A módosítás életbe léptetéséhez újra kell indítania a VLC -t. (Akkor is rendelkezzen egy Windows audio munkamenettel, és vezérelje azt a deej -en keresztül, ez csak megakadályozza, hogy a VLC hangerőszabályzó együtt mozogjon vele)"

8. lépés: További források

További források
További források

A hatalmas Goog -on keresztül találtuk meg, külön sorrendben felsorolva…

  • Arduino Joystick Library (v2) - a joystick integrálásához szükséges
  • Sparkfun Pro Micro csatlakoztatási útmutató - jó forrás erről az Arduino -ról
  • deej - a gombokat vezérlő szoftver
  • USB csatlakozó típusok - ki tudta, hogy ennyi változat létezik?
  • Arduino Pro mikro analóg érintkezők
  • Arduino Leonardo Gaming Joystick - A Leonardo hasonló a Pro Micro -hoz, csak nagyobb
  • Az Arduino Pro Micro (klón) port nem észlelhető (Megoldás) - amikor a Pro Micro -t összekötötte (én)
  • Arduino Leonardo/Micro játékvezérlőként/Joystick
  • Példa multimédiás kulcs elnémítására - a HID Project könyvtár használatával
  • HID Projekt könyvtár példakód média szüneteltetéséhez / lejátszásához
  • Egy másik kód példa a gamepad vezérlőjét mutatja.
  • ArduinoGamingController_updated - a Joystick Library használatának jó kódleírása
  • LED ellenállás számológép - hogy megtudja, mekkora ellenállásra van szüksége a projektben
  • Ikonkönyvtár - flaticon.com - a gombok felett használt képek forrása
  • Egy másik ellenállásos szín dekódoló - kattintson egy színre és brácsára!

Ajánlott: