Cuprins:

Tastatură Arduino Joystick Extender Box și controler de sunet, folosind Deej: 8 pași
Tastatură Arduino Joystick Extender Box și controler de sunet, folosind Deej: 8 pași

Video: Tastatură Arduino Joystick Extender Box și controler de sunet, folosind Deej: 8 pași

Video: Tastatură Arduino Joystick Extender Box și controler de sunet, folosind Deej: 8 pași
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Noiembrie
Anonim
Tastatură Arduino Joystick Extender Box și controler de sunet, folosind Deej
Tastatură Arduino Joystick Extender Box și controler de sunet, folosind Deej

Proiecte Tinkercad »

De ce

De ceva vreme îmi doresc să adaug un mic joystick la tastatură pentru a controla elementele interfeței sau alte sarcini mai mici în jocuri și simulatoare (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons etc.).

De asemenea, pentru Elite: Dangerous, m-am străduit să amestec nivelurile de volum de la sunetul extern (muzica integrată, deși este bună, devine repetitivă după multe ore în negru), audio în joc și asistență vocală externă.

Windows mixerul sursă încorporat este „ok”, dar este dificil să comutați ecranele și cursorele de control al mouse-ului în mijlocul unui joc. Având o cutie de control extinsă a tastaturii părea calea de urmat. Deej este soluția pe care am găsit-o.

Cum

Am aflat recent despre Arduino și am dat peste proiectul deej pe reddit. Se părea că acest lucru va rezolva ambele probleme într-un singur pachet la îndemână. Și m-ar lăsa să proiectez și să imprim o carcasă 3d inteligentă.

Ce este deej?

(de pe site) deej este un ** mixer de volum hardware open-source ** pentru computerele Windows și Linux. Vă permite să utilizați glisoare din viața reală (cum ar fi un DJ!) Pentru a ** controla fără probleme volumele diferitelor aplicații ** (cum ar fi playerul dvs. de muzică, jocul pe care îl jucați și sesiunea de chat vocal) fără a trebui să opriți ce ce faci.

Versiunea mea

Pentru a menține cutia mică, am optat pentru butoane (potențiometru liniar rotativ (ghivece = rezistențe)) mai degrabă decât glisante. Funcțional funcționează la fel. Modelele de deej actuale și populare nu includ un joystick, deci acesta va fi un pic hibrid de design. În caz contrar, este o versiune destul de simplă.

Deej va lucra cu un Arduino Nano, Pro Micro sau Uno, dar Nano și Pro Micro sunt „recomandate oficial” de către dezvoltator. Am ales Arduino Pro Micro pentru că voiam joystick-ul, iar Biblioteca Arduino Joystick îl susține. De asemenea, pot folosi Arduino Keyboard Library când vreau să folosesc funcția de mutare a tastaturii media (mai degrabă decât „soft mut”) cu butonul joystick, dar acest lucru este mai departe pe drum.

Pasul 1: consumabile

Provizii
Provizii
Provizii
Provizii
Provizii
Provizii

Cutia

Descărcați fișierele STL (proiectate în Tinkercad):

  • Fișiere de anexe la Prusa (https://www.prusaprinters.org/)
  • Thingiverse (în curând)

Hardware-ul (unitatea de producție)

  • 1x Arduino Pro Micro
  • 4x Potențiometre rotative (buton) de 10k (nu controlere rotative, utilizați vase)
  • 1x joystick Arduino KY-023
  • Cablu de rețea cat5 de fier vechi
  • 1x cablu micro USB A la USB B (USB A este conectorul mare pătrat, USB B micro este ceea ce se află pe Arduino Pro Micro)
  • 1x LED roșu de 5 mm
  • 1x rezistor de 220 ohmi

Aveam câteva piese în plus, așa că m-am gândit să construiesc o unitate de dezvoltare pentru a testa lucrurile. Simpla conectare a lucrurilor la o placă de analiză a făcut mai ușoară vizualizarea ultimului lucru.

  • 1x Arduino Pro Micro
  • Potențiometre rotative 4x (buton) de 10k (nu controlere rotative, utilizați vase)
  • 1x comutator momentan cu buton (comutator de resetare hard)
  • 1x cablu micro USB A la USB B (USB A este conectorul mare pătrat, USB B micro este ceea ce se află pe Arduino Pro Micro)
  • fire de jumper asortate
  • panou de masă
  • 1x LED roșu de 5 mm
  • 1x rezistor de 220 ohmi

Pasul 2: incinta

Incinta
Incinta
Incinta
Incinta
Incinta
Incinta
Incinta
Incinta

Design-ul

Mi-au plăcut câteva dintre celelalte modele profilate în galeria comunității deej, așa că mi-am bazat pe caracteristicile care mi-au plăcut:

  • Ușor de proiectat și imprimat
  • Nu te împiedica de celelalte periferice ale mele de desktop
  • Nu utilizați șuruburi sau elemente de fixare pentru a fixa carcasa
  • Design estetic similar cu tastatura

Am proiectat și tipărit două prototipuri înainte de a mă baza pe acest design final. Îmi place să am o versiune fizică cu care să mă joc în spațiul în care o folosesc, deoarece îmi oferă o mai bună înțelegere a modului în care va funcționa obiectul final.

Am început să proiectez pe scurt în Fusion360, dar nu știu la fel de bine ca Tinkercad, așa că am trecut și am lucrat acolo.

Din moment ce doream un design fără șuruburi, am creat o cutie de cuib. Primul prototip avea un capac subțire și o cutie adâncă pentru orice. Al doilea design l-a schimbat cu un capac adânc și o cutie de fund superficial. Trebuia doar să dețină Arduino Pro Mini, așa că nu trebuia să fie mare. De asemenea, au fost încorporate pictogramele în relief.

Al treilea design a fost redimensionat pentru a se potrivi spațiului alături de tastatura mea.

Imprimarea

Am tipărit cutia în PLA, programând un schimb de filament / strat de la negru la roșu pentru capacul în care pictogramele ar începe să fie vizibile și din nou înapoi la negru pentru restul capacului.

O problemă

În tot acest timp, montarea joystick-ului a fost o problemă. Chiar și în al treilea design, bățul se lovește de monturi într-un singur loc. Următoarea iterație va avea spații mai bune. Aș fi putut lucra mai mult la proiectare, dar am vrut să trec la faza următoare, instalarea.

Pasul 3: Circuitul

Circuitul
Circuitul
Circuitul
Circuitul
Circuitul
Circuitul

Cea mai proastă lucrare de cablare vreodată

Ok, acesta este primul meu proiect complet Arduino. Da, am mai făcut lucruri pe panouri și folosesc una pentru a construi versiunea de dezvoltare, dar în ceea ce privește fabricarea și asamblarea, aceasta este prima mea. Deci cablajul meu arată ca o prostie. Acolo, asta e în afara drumului:)

Actualizare: De atunci am construit altul și cablajul este mult mai frumos acolo. Vezi imaginile:)

Unitatea de producție - Ce se întâmplă unde

Arduino Pro Micro este o placă mică și se va potrivi în secțiunea turnată din bază. Butoanele și joystick-ul se potrivesc în orificiile respective din capac. Dar nu montați nimic până nu obțineți competiția de lipire.

Cablare

Nu am avut niciun fir de circuit adecvat, dar am avut o rola rămasă de cablu de rețea cat5 solid-core, deci asta am folosit. Este puțin mai rigid și poate mai fragil decât firul circuitului torsadat, dar funcționează.

Așezând componentele într-o aproximare a poziției lor finale de montare, am estimat distanța, pentru fiecare fir, am adăugat ceva mai mult pentru slăbire etc., apoi am tăiat și tăiat firul. Am lăsat multă slăbiciune.

Referindu-mă la schema de cablare, am pornit la sol (negru) și VCC (roșu) la butoane și joystick acolo unde este indicat. Deoarece cablul de rețea nu vine în aceste culori, am ales doar o culoare și mi-am păstrat cablajul în concordanță cu funcția.

Oala individuală. liniile analogice (galbene) mergeau către pinii A0 - A3. Liniile Joystick (portocaliu), de asemenea, analogice, au rulat la pinii I / O 8 și 9. Acestea vor trebui să fie desemnate ca analogice în codul Arduino ca A8 și A9.

Pinul comutatorului joystick-ului (Albastru) a trecut la pinul 7. Acesta va fi un pin digital în cod.

Izolatie

Deoarece acest fir rigid va fi umplut într-un spațiu mic, am optat pentru a-mi izola conexiunile de lipit cu o păpușă sănătoasă de adeziv topit la cald. Apoi a pus totul în loc și a efectuat un test simplu pe tablă și pot-uri folosind versiunea codului Arduino Exemplu AnalogInput - modificat pentru a citi toate pot-urile.

A doua versiune

Ultimele două imagini de mai sus arată următoarea casetă pe care o construiesc. Acesta va avea 5 butoane și un buton momentan pentru mut. Fără joystick. Cutie de aceeași dimensiune.

Pasul 4: Finalizarea hardware-ului

Finalizarea hardware-ului
Finalizarea hardware-ului

În momentul în care am instalat joystick-ul, mi-am dat seama că nu există prea mult spațiu liber între placa și anteturile pinului rămase pe Pro Micro.

După o îndoire puțin atentă a anteturilor pinului și o reaplicare a lipiciului topit la cald (pentru izolare), carcasa s-a închis corect.

Instalarea ghivecelor a mers fără probleme.

Din nou cu firele

Sârmele cu miez solid sunt puțin rigide și pot fi fragile dacă sunt flexate de prea multe ori, așadar pliați-le cu atenție (fără colțuri ascuțite) în spațiul disponibil. Unele dintre mine erau prea lungi și necesitau un pic de pliere suplimentară.

Odată ce totul este așezat la locul său, pur și simplu puneți baza pe partea de sus și ar trebui să fiți terminat cu hardware-ul …

Dar așteaptă, mai sunt

Desigur, după câteva săptămâni de utilizare, am decis că am nevoie de un indicator care să mă anunțe care este starea funcției MUTE cu cod soft.

După ce am editat codul de adăugat în funcționalitatea LED (vezi secțiunea următoare), am lipit rapid LED-ul / firele / rezistorul și le-am conectat la placă.

Am petrecut mai mult timp să găuresc gaura prin partea superioară a carcasei, deoarece nu am vrut să marcez finisajul superior. Am marcat un punct central, l-am cufundat, apoi am rotit manual un burghiu pentru a face gaura.

O filare atentă suplimentară a curățat gaura și a asigurat o presare strânsă și strânsă pentru a se asigura că LED-ul nu iese prea mult deasupra suprafeței superioare.

Pasul 5: Software-ul

Software-ul
Software-ul
Software-ul
Software-ul
Software-ul
Software-ul

Prezentare generală

Deci, acesta este un proces în două părți.

  1. Obțineți și înțelegeți cum funcționează Deej și editați fișierul Config.yaml
  2. Editați codul Arduino pentru a se potrivi cu hardware-ul și caracteristicile dorite
  3. Obțineți biblioteca Arduino Joystick

În cazul meu, am dorit aceste caracteristici:

  • Butoane care controlează nivelurile (microfon și ieșire)
  • Comutator mut
  • Joystick cu 2 axe recunoscut de Windows pentru utilizarea aplicației

Nivele

Deej se ocupă destul de mult de primul punct pe măsură ce vine. Nu am modificat această funcționalitate

Comutator mut

M-am hotărât de la început că voi folosi apăsarea / comutatorul din joystick ca buton funcțional de mutare.

Când examinați codul, veți vedea că am ales (inițial) să folosesc un sunet „moale” - când butonul este apăsat, volumul MIC este redus la zero (și LED-ul este aprins). Când este apăsat din nou, volumul MIC este readus la setarea anterioară și LED-ul se stinge.

În cele din urmă, mă voi uita la implementarea bibliotecii de tastatură Arduino pentru a comuta starea Mute prin setul de cod de tastatură media extins.

Implementarea joystick-ului

Acest lucru necesită utilizarea bibliotecii Arduino Joystick pentru a se asigura că joystick-ul este recunoscut ca un dispozitiv HID de către Windows și, prin urmare, de orice joc / aplicație.

Sunt un pic neobișnuit atunci când vine vorba de codificare și am găsit documentația bibliotecii Joystick un pic cam rară în ceea ce privește implementarea efectivă - dar un pic de googling concentrat m-a condus la alte exemple care m-au ajutat să înțeleg ce se întâmplă. Verificați secțiunea de resurse la final pentru detalii.

Tot ce trebuia să fac era să identific pinii X / Y, să le citesc starea și să trimit asta la biblioteca Joystick. Arduino a apărut ca un Leonardo pentru Windows și a fost configurat corespunzător ca un dispozitiv Joystick.

Am reușit să-l configurez în Elite Dangerous, alături de configurarea existentă HOTAS și să am Joystick-ul să controleze corect lucrurile și să nu intre în conflict cu HOTAS. Funcționează bine și în Războiul Stelelor: Escadrile - Am setat ca o comutare rapidă pentru a configura scuturile în timpul luptei.

Fișierele care funcționează cu configurarea mea Joystick

Mi-am încărcat fișierele actuale (octombrie 2020) în Codepile.

  • Cod Arduino (fișier.ino)
  • Deej config.yaml

Pasul 6: Sfârșit

Sfârșit
Sfârșit

Ei bine, acesta este gata. Funcționează și sunt destul de mulțumit de modul în care a venit împreună. Și am învățat ceva mai multe despre proiectarea hardware, integrarea și programarea Arduino.

Pasul 7: Addendum..dum..dum

Addendum..dum..dum
Addendum..dum..dum

VLC - acel player audio și video minunat are o ciudățenie în care nivelul de volum, atunci când este controlat extern, sare de la 0% la 27% ish. Acest lucru nu se întâmplă atunci când reglați nivelul utilizând controlul volumului interfeței în aplicație, numai cu controale externe precum Deej.

Dezvoltatorul Deej a găsit rapid o soluție în VLC care face treaba, vezi imaginea de mai sus:

"… dacă doriți să dezactivați acest comportament de" urmărire ", puteți face acest lucru schimbând modulul de ieșire audio al VLC. Am folosit DirectX în încercările mele aici. Va trebui să reporniți VLC pentru ca schimbarea să aibă efect. aveți o sesiune audio Windows și puteți să o controlați prin deej, acest lucru va împiedica bara de volum VLC să se miște cu ea)"

Pasul 8: Resurse suplimentare

Resurse aditionale
Resurse aditionale

Găsit prin intermediul puternicului Goog, listat într-o ordine specială …

  • Arduino Joystick Library (v2) - necesară pentru a integra joystick-ul
  • Ghid de conectare Sparkfun Pro Micro - resursă bună despre acest Arduino
  • deej - software-ul care acționează butoanele
  • Tipuri de conector USB - cine știa că există atât de multe variante?
  • Pin-uri Arduino Pro Micro Analog
  • Arduino Leonardo Gaming Joystick - Leonardo este similar cu Pro Micro, doar că este mai mare
  • Portul Arduino Pro Micro (Clonare) nu a fost detectat (Soluție) - când vă faceți cărămida Pro Micro (am făcut-o)
  • Arduino Leonardo / Micro ca controler de joc / joystick
  • Exemplu de utilizare a unei chei multimedia pentru a dezactiva sunetul - folosind biblioteca HID Project
  • Cod de exemplu de bibliotecă HID Project pentru a întrerupe / reda conținut media
  • Un alt exemplu de cod care arată controlerul gamepad.
  • ArduinoGamingController_updated - descriere bună a codului de utilizare a bibliotecii Joystick
  • Calculator LED pentru rezistențe - pentru a afla cât de mare este un rezistor de care ai avea nevoie în proiectul tău
  • Biblioteca de pictograme - flaticon.com - sursa imaginilor utilizate deasupra butoanelor
  • Un alt decodor de culoare rezistor - faceți clic pe o culoare și viola!

Recomandat: