Talaan ng mga Nilalaman:

Arduino Keyboard Joystick Extender Box at Sound Controller Bagay Gamit ang Deej: 8 Hakbang
Arduino Keyboard Joystick Extender Box at Sound Controller Bagay Gamit ang Deej: 8 Hakbang

Video: Arduino Keyboard Joystick Extender Box at Sound Controller Bagay Gamit ang Deej: 8 Hakbang

Video: Arduino Keyboard Joystick Extender Box at Sound Controller Bagay Gamit ang Deej: 8 Hakbang
Video: The World of Wayne Thursday LIVE Stream 2024, Nobyembre
Anonim
Arduino Keyboard Joystick Extender Box at Sound Controller Bagay Gamit ang Deej
Arduino Keyboard Joystick Extender Box at Sound Controller Bagay Gamit ang Deej

Mga Proyekto ng Tinkercad »

Bakit

Para sa isang sandali na nais kong magdagdag ng isang maliit na joystick sa aking keyboard upang makontrol ang mga elemento ng interface, o iba pang mas maliit na mga gawain sa mga laro at simulator (MS Flight Sim, Elite: Mapanganib, Star Wars: Squadrons, atbp).

Gayundin, para sa Elite: Mapanganib, nakikipaglaban ako sa paghahalo ng mga antas ng dami mula sa panlabas na audio (ang built-in na musika, habang mahusay, ay paulit-ulit pagkatapos ng maraming oras sa itim), in-game audio, at panlabas na suporta ng voicepack.

Ang Windows built-in na mapagkukunan ng panghalo ay 'ok', ngunit isang sakit upang lumipat ng mga screen at mga slide-control slider sa gitna ng isang laro. Ang pagkakaroon ng isang pinalawig na kahon ng kontrol sa keyboard ay tila ang paraan upang pumunta. Deej ang nahanap kong solusyon.

Paano

Kamakailan lamang natututo ako tungkol sa Arduino, at natagpuan ang deej na proyekto sa reddit. Mukhang malulutas nito ang pareho ng mga problemang iyon sa isang madaling gamiting pakete. At hahayaan akong mag-disenyo at mag-print ng isang magandang kaso ng 3d.

Ano ang deej?

(mula sa site) ang deej ay isang ** open-source hardware volume mixer ** para sa Windows at Linux PCs. Hinahayaan ka nitong gumamit ng mga slider ng totoong buhay (tulad ng isang DJ!) Upang ** maayos na makontrol ang dami ng iba't ibang mga app ** (tulad ng iyong music player, ang larong iyong nilalaro at ang iyong session ng pag-chat sa boses) nang hindi kinakailangang ihinto kung ano ginagawa mo.

Ang bersyon ko

Upang mapanatili ang maliit na kahon, pumili ako ng mga knobs (rotary linear potentiometer (kaldero = resistors)) kaysa sa mga slider. Functionally gumagana ang pareho. Ang kasalukuyan at tanyag na mga disenyo ng deej ay hindi nagsasama ng isang joystick, kaya't ito ay magiging isang maliit na disenyo ng hybrid. Kung hindi man, ito ay isang medyo tuwid na pagbuo.

Makikipagtulungan ang Deej sa isang Arduino Nano, Pro Micro o Uno, ngunit ang Nano at Pro Micro ay 'opisyal na inirekomenda' ng developer. Pinili ko ang Arduino Pro Micro dahil gusto ko ang joystick, at sinusuportahan ito ng Arduino Joystick Library. Maaari ko ring gamitin ang Arduino Keyboard Library kapag nais kong gamitin ang media keyboard mute function (sa halip na 'soft mute') na may pindutan ng joystick, ngunit iyon ay mas malayo sa kalsada.

Hakbang 1: Mga Panustos

Mga gamit
Mga gamit
Mga gamit
Mga gamit
Mga gamit
Mga gamit

Ang kahon

I-download ang mga STL file (idinisenyo sa Tinkercad):

  • Mga file ng enclosure sa Prusa (https://www.prusaprinters.org/)
  • Thingiverse (paparating na)

Ang hardware (yunit ng produksyon)

  • 1x Arduino Pro Micro
  • 4x 10k rotary (knob) Potentiometers (hindi Rotary Controllers, gumamit ng kaldero)
  • 1x Arduino KY-023 Joystick
  • 5ft scrap cat5 network cable
  • 1x USB A hanggang USB B micro cable (Ang USB A ay ang malaking square connecter, USB B micro ang nasa Arduino Pro Micro)
  • 1x 5mm red LED
  • 1x 220 ohm risistor

Mayroon akong ilang mga labis na bahagi sa paligid kaya naisip kong magtayo ng isang yunit ng pag-unlad upang masubukan ang mga bagay. Ang pagkonekta lamang ng mga bagay sa isang breadboard ay ginagawang mas madali upang mailarawan ang pangwakas na bagay.

  • 1x Arduino Pro Micro
  • 4x 10k rotary (knob) Potentiometers (hindi Rotary Controllers, gumamit ng kaldero)
  • 1x panandalian switch switch button (hard reset switch)
  • 1x USB A hanggang USB B micro cable (Ang USB A ay ang malaking square connecter, USB B micro ang nasa Arduino Pro Micro)
  • sari-saring mga wire ng lumulukso
  • breadboard
  • 1x 5mm red LED
  • 1x 220 ohm risistor

Hakbang 2: Ang Enclosure

Ang Enclosure
Ang Enclosure
Ang Enclosure
Ang Enclosure
Ang Enclosure
Ang Enclosure
Ang Enclosure
Ang Enclosure

Ang disenyo

Nagustuhan ko ang ilan sa iba pang mga disenyo na naitala sa gallery ng komunidad ng deej, kaya batay sa minahan ng mga tampok na gusto ko:

  • Madaling idisenyo at mai-print
  • Hindi makagambala sa aking iba pang mga desktop peripheral
  • Huwag gumamit ng mga turnilyo o fastener upang ma-secure ang enclosure
  • Katulad na disenyo ng aesthetic sa keyboard

Dinisenyo at na-print ko ang dalawang mga prototype bago mag-ayos sa huling disenyo na ito. Nais kong magkaroon ng isang pisikal na bersyon upang mapaglaruan sa espasyo na ginagamit ko ito dahil binibigyan nito ako ng isang mas mahusay na pakiramdam kung paano gagana ang panghuling bagay.

Sandali kong sinimulan ang pagdidisenyo sa Fusion360, ngunit hindi alam ito pati na rin sa Tinkercad kaya't lumipat at nagtrabaho doon.

Dahil ginusto ko ang isang walang disenyo na disenyo, lumikha ako ng isang kahon ng pugad. Ang unang prototype ay may isang manipis na takip at isang malalim na kahon para sa lahat. Pinalitan iyon ng pangalawang disenyo ng isang malalim na takip at isang mababaw na kahon sa ibaba. Kailangan lamang na hawakan ang Arduino Pro Mini kaya't hindi talaga kailangan malaki. Isinama din ang mga embossed na icon.

Ang pangatlong disenyo ay binago ang laki upang magkasya sa puwang sa tabi ng aking keyboard.

Ang print

Nai-print ko ang kahon sa PLA, na pinaprograma ang isang filament / layer swap mula sa Black hanggang Red para sa takip kung saan magsisimulang makita ang mga icon, at muling bumalik sa Itim para sa natitirang takip.

Isang problema

Sa lahat ng ito, ang problema sa pag-mount ng joystick ay isang problema. Kahit na sa pangatlong disenyo, ang stick ay bumubulusok laban sa mga mount sa isang lugar. Ang susunod na pag-ulit ay magkakaroon ng mas mahusay na mga clearances. Maaari akong magtrabaho nang higit pa sa disenyo ngunit nais kong makapunta sa susunod na yugto, pag-install.

Hakbang 3: Ang Circuit

Ang Circuit
Ang Circuit
Ang Circuit
Ang Circuit
Ang Circuit
Ang Circuit

Pinakamasamang trabaho sa mga kable kailanman

Ok, ito ang aking unang buong-buo na proyekto ng Arduino. Oo, nagawa ko na ang mga bagay sa mga breadboard bago at gumagamit ako ng isa upang maitayo ang bersyon ng Pag-unlad na ito, ngunit para sa tunay na katha at pagpupulong, ito ang aking una. Kaya't ang aking mga kable ay parang basura. Ayan, wala na sa paraan:)

Update: Nakagawa ako ng isa pa at ang mga kable ay mas maganda doon. Tingnan ang mga imahe:)

Production unit - Ano ang nangyayari kung saan

Ang Arduino Pro Micro ay isang maliit na maliit na board at magkasya sa hulma ng hulma sa base. Ang mga knobs at joystick ay umaangkop sa kani-kanilang mga butas sa talukap ng mata. Ngunit huwag i-mount ang anumang bagay hanggang sa makuha mo ang kumpetisyon ng paghihinang.

Kable

Wala akong anumang wastong circuit wire, ngunit mayroong isang natirang roll ng solid-core cat5 network cable, kaya iyon ang ginamit ko. Ito ay medyo matigas at marahil ay mas malutong kaysa sa maiiwan tayo circuit wire, ngunit ito ay gumagana.

Ang paglalagay ng mga bahagi sa isang approximation ng kanilang pangwakas na posisyon ng pag-mount, tinantya ko ang distansya, para sa bawat kawad, nagdagdag ng kaunti pa para sa slack, atbp, pagkatapos ay gupitin at i-trim ang kawad. Nag-iwan ako ng dahan-dahan.

Sumangguni sa diagram ng mga kable, pinatakbo ko ang karaniwang lupa (Itim) at VCC (Pula) sa mga knobs at joystick kung saan ipinahiwatig. Dahil ang network cable ay hindi dumating sa mga kulay na ito, pumili lang ako ng isang kulay at pinananatili ang aking mga kable na pare-pareho sa pagpapaandar.

Ang indibidwal na Palayok. ang mga linya ng analog (Dilaw) ay tumakbo sa mga pin na A0 - A3. Ang mga linya ng Joystick (Orange), na analog din, ay tumakbo sa I / O pin 8 at 9. Ang mga ito ay itatalaga bilang Analog sa Arduino code bilang A8 at A9.

Ang Joystick switch pin (Blue) ay tumakbo sa pin 7. Ito ay magiging isang digital pin sa code.

Pagkakabukod

Dahil ang matigas na kawad na ito ay isisilok sa isang maliit na puwang, pinili kong insulate ang aking mga koneksyon sa panghinang na may isang malusog na manika ng mainit na natunaw na pandikit. Pagkatapos ay inilagay ang lahat sa lugar at nagpatakbo ng isang simpleng pagsubok sa board at ang mga kaldero gamit ang bersyon ng Arduino Halimbawa ng AnalogInput na code - binago upang mabasa ang lahat ng mga kaldero.

Pangalawang bersyon

Ang huling dalawang imahe sa itaas ay ipinapakita ang susunod na kahon na aking itinatayo. Ang isang ito ay magkakaroon ng 5 mga knobs at isang pansamantalang pindutan ng push para sa pipi. Walang joystick. Parehong sukat ng kahon.

Hakbang 4: Tinatapos ang Hardware

Tinatapos ang Hardware
Tinatapos ang Hardware

Sa oras na na-install ko ang Joystick, napagtanto kong walang maraming clearance sa pagitan ng board at ng mga header ng pin na naiwan sa Pro Micro.

Matapos ang isang maliit na maingat na baluktot ng mga header ng pin, at isang muling paggamit ng mainit na natutunaw na pandikit (para sa pagkakabukod), ang enclosure ay sarado nang maayos.

Ang pag-install ng mga kaldero ay nagpunta nang walang sagabal.

Muli kasama ang mga wires

Ang mga solidong kawad na core ay medyo matigas, at maaaring maging malutong kung masyadong maraming beses na baluktot, kaya maingat na tiklop ang mga ito (na walang matalim na sulok) sa magagamit na puwang. Ang ilan sa akin ay masyadong mahaba at nangangailangan ng kaunting labis na natitiklop.

Kapag ang lahat ay naayos na sa lugar, magkasya lamang ang base sa itaas at dapat kang matapos sa hardware ….

Ngunit teka, mayroon pa

Siyempre, pagkatapos ng ilang linggo ng paggamit, nagpasya akong kailangan ko ng isang tagapagpahiwatig upang ipaalam sa akin kung ano ang katayuan ng malambot na naka-code na function na Mute.

Matapos i-edit ang code upang idagdag sa pag-andar ng LED (tingnan ang susunod na seksyon), mabilis kong na-solder ang LED / wires / resistor at ikinonekta ang mga ito sa board.

Gumugol ako ng mas maraming oras upang mag-drill ang butas sa tuktok ng kaso dahil hindi ko nais na mapahamak ang tuktok na tapusin. Minarkahan ko ang isang gitnang lugar, kinubkob ito, at pagkatapos ay nag-spun ng isang drill bit upang gawin ang butas.

Ang karagdagang pag-iingat na pag-file ay nalinis ang butas at natiyak ang isang magandang masikip na press-fit upang matiyak na ang LED ay hindi nakausli nang napakalayo sa itaas ng tuktok.

Hakbang 5: Ang Software

Ang software
Ang software
Ang software
Ang software
Ang software
Ang software

Pangkalahatang-ideya

Kaya, ito ay isang proseso ng dalawang bahagi.

  1. Kunin at unawain kung paano gumagana ang Deej at i-edit ang Config.yaml file
  2. I-edit ang Arduino code upang tumugma sa nais na hardware at mga tampok
  3. Kunin ang Arduino Joystick library

Sa aking kaso, nais ko ang mga tampok na ito:

  • Mga knob na kumokontrol sa mga antas (Mic at output)
  • I-mute ang switch
  • 2 axis joystick na kinikilala ng Windows para sa paggamit ng application

Mga Antas

Deej medyo inaalagaan ang unang punto pagdating. Hindi ko sinabunutan ang pagpapaandar na ito

I-mute ang switch

Natutukoy ko nang maaga na gagamitin ko ang pindutin / switch sa Joystick bilang isang functional na pindutang pipi.

Kapag sinuri mo ang code, makikita mo na pinili ko (una) na gumamit ng isang 'malambot' na pipi - kapag pinindot ang pindutan, ang dami ng MIC ay nabawasan sa zero (at ang LED ay naiilawan). Kapag pinindot ito muli, ang dami ng MIC ay ibinalik sa dating setting at ang LED ay napapatay.

Sa paglaon ay titingnan ko ang pagpapatupad ng Arduino keyboard library upang i-toggle ang katayuang I-mute sa pamamagitan ng pinalawak na media Keyboard code set.

Pagpapatupad ng Joystick

Kinakailangan nito ang paggamit ng Arduino Joystick library upang matiyak na ang joystick ay kinikilala bilang isang HID aparato ng Windows at dahil dito sa anumang laro / application.

Ako ay isang maliit na noob pagdating sa pag-coding at natagpuan ang dokumentasyon ng library ng Joystick na medyo kalat-kalat sa aktwal na bahagi ng pagpapatupad - ngunit isang maliit na nakatuon na googling ang humantong sa akin sa iba pang mga halimbawa na nakatulong sa akin na maunawaan kung ano ang nangyayari. Suriin ang seksyon ng mga mapagkukunan sa dulo para sa mga detalye.

Ang kailangan ko lang gawin ay makilala ang mga X / Y pin, basahin ang kanilang estado at ipadala iyon sa library ng Joystick. Ang Arduino ay lumitaw bilang isang Leonardo sa Windows, at maayos na na-configure bilang isang aparato ng Joystick.

Nagawa kong i-set up ito sa Elite Dangerous, sa tabi ng aking umiiral na pag-setup ng HOTAS at maayos na kontrolin ng Joystick ang mga bagay at hindi sumasalungat sa HOTAS. Gumagana rin ito nang maayos sa Star Wars: Squadrons - Itinakda ko ito bilang isang mabilis na toggle upang i-set up ang mga kalasag habang nakikipaglaban.

Ang mga file na gumagana sa aking pag-set up ng Joystick

Na-upload ko ang aking kasalukuyang (Oktubre 2020) na mga file sa Codepile.

  • Arduino code (.ino file)
  • Deej config.yaml

Hakbang 6: Wakas

Tapusin
Tapusin

Kaya, tapos na ang isang ito. Gumagana ito at mas nasiyahan ako sa kung paano ito nagkakasama. At medyo natutunan ko pa ang tungkol sa disenyo ng hardware, pagsasama, at pagprograma ng Arduino.

Hakbang 7: Addendum..dum..dum

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

VLC - ang kasindak-sindak na audio at video player na iyon ay may kaunting kakatwa kung saan ang antas ng lakas ng tunog, kapag kontrolado sa labas, ay tumatalon mula 0% hanggang 27% na ish. Hindi ito nangyayari kapag inaayos ang antas gamit ang kontrol ng dami ng in-app na interface, sa mga panlabas na kontrol lamang tulad ng Deej.

Ang developer ng Deej ay mabilis na natagpuan ang isang in-VLC workaround na gumagawa ng trabaho, tingnan ang imahe sa itaas:

"… Kung nais mong huwag paganahin ang pag-uugaling" Pagsubaybay "na magagawa mo ito sa pamamagitan ng pagbabago ng audio output module ng VLC. Ginamit ko ang DirectX sa aking mga pagtatangka dito. Kailangan mong i-restart ang VLC upang magkabisa ang pagbabago. (Magkakaroon ka pa rin magkaroon ng isang sesyon ng audio windows at makontrol ito sa pamamagitan ng deej, pipigilan lamang nito ang volume bar ng VLC mula sa paglipat nito)"

Hakbang 8: Karagdagang Mga Mapagkukunan

Karagdagang Mga Mapagkukunan
Karagdagang Mga Mapagkukunan

Natagpuan sa pamamagitan ng makapangyarihang Goog, na nakalista sa walang partikular na pagkakasunud-sunod …

  • Arduino Joystick Library (v2) - kinakailangan upang isama ang joystick
  • Sparkfun Pro Micro hookup guide - mahusay na mapagkukunan tungkol sa Arduino na ito
  • deej - ang software na hinihimok ang mga knobs
  • Mga Uri ng USB Connector - sino ang may alam na maraming mga pagkakaiba-iba?
  • Mga Pinout ng Arduino Pro Micro Analog
  • Arduino Leonardo Gaming Joystick - Si Leonardo ay katulad ng Pro Micro, mas malaki lamang
  • Hindi nakita ang port ng Arduino Pro Micro (Clone) (Solusyon) - kapag binatilyo mo ang iyong Pro Micro (ginawa ko)
  • Arduino Leonardo / Micro bilang isang Game Controller / Joystick
  • Halimbawa ng paggamit ng isang multimedia key upang mute - gamit ang library ng HID Project
  • HID Project library halimbawa code upang mag-pause / maglaro ng media
  • Ang isa pang halimbawa ng code na nagpapakita ng gamepad controller.
  • ArduinoGamingController_updated - magandang paglalarawan ng code ng paggamit ng Joystick Library
  • Ang bagay ng calculator ng LED Resistor - upang malaman kung gaano kalaki ang isang risistor na kakailanganin mo sa iyong proyekto
  • Icon library - flaticon.com - pinagmulan ng mga larawang ginamit sa itaas ng mga knobs
  • Isa pang Resistor ng Kulay ng Resistor - mag-click sa isang kulay at viola!

Inirerekumendang: