Taula de continguts:

Tecla Arduino Joystick Extender Box i controlador de so amb Deej: 8 passos
Tecla Arduino Joystick Extender Box i controlador de so amb Deej: 8 passos

Vídeo: Tecla Arduino Joystick Extender Box i controlador de so amb Deej: 8 passos

Vídeo: Tecla Arduino Joystick Extender Box i controlador de so amb Deej: 8 passos
Vídeo: Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 2024, Desembre
Anonim
Teclat Arduino Joystick Extender Box i cosa del controlador de so mitjançant Deej
Teclat Arduino Joystick Extender Box i cosa del controlador de so mitjançant Deej

Projectes Tinkercad »

Per què

Fa temps que volia afegir un petit joystick al teclat per controlar els elements de la interfície o altres tasques més petites en jocs i simuladors (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons, etc.).

A més, per a Elite: Dangerous, he estat lluitant per barrejar els nivells de volum de l'àudio extern (la música integrada, tot i que és bona, es repeteix després de moltes hores en negre), l'àudio del joc i el suport de paquets de veu externs.

El mesclador de fonts integrat per Windows està "bé", però és difícil canviar de pantalla i de control lliscant del ratolí enmig d'un joc. Tenir una caixa de control de teclat ampliada semblava el camí a seguir. Deej és la solució que he trobat.

Com

Recentment he estat coneixent Arduino i em vaig trobar amb el projecte deej a reddit. Semblava que això solucionaria tots dos problemes en un paquet útil. I em permetria dissenyar i imprimir una astuta caixa en 3D.

Què és deej?

(del lloc) deej és un ** mesclador de volum de maquinari de codi obert ** per a ordinadors Windows i Linux. Us permet utilitzar control lliscants de la vida real (com un DJ!) Per ** controlar sense problemes els volums de diferents aplicacions ** (com ara el reproductor de música, el joc que esteu jugant i la vostra sessió de xat de veu) sense haver d’aturar el que Estàs fent.

La meva versió

Per mantenir la caixa petita, vaig optar per poms (potenciòmetre lineal rotatiu (olles = resistències)) en lloc de lliscadors. Funcionalment funcionen igual. Els dissenys de deej populars i actuals no inclouen un joystick, de manera que serà una mica híbrid de disseny. En cas contrari, és una versió bastant senzilla.

Deej treballarà amb un Arduino Nano, Pro Micro o Uno, però el desenvolupador "recomana oficialment" Nano i Pro Micro. Vaig triar l’Arduino Pro Micro perquè volia el joystick i la Biblioteca Arduino Joystick ho admet. També puc fer servir la biblioteca de teclats Arduino quan vulgui utilitzar la funció de silenci del teclat multimèdia (en lloc del "silenci suau") amb el botó del joystick, però això és més avall.

Pas 1: subministraments

Subministraments
Subministraments
Subministraments
Subministraments
Subministraments
Subministraments

La Caixa

Descarregueu els fitxers STL (dissenyats a Tinkercad):

  • Fitxers adjunts a Prusa (https://www.prusaprinters.org/)
  • Thingiverse (properament)

El maquinari (unitat de producció)

  • 1 Arduino Pro Micro
  • Potenciòmetres rotatius 4x (pomos) de 10k (no controladors rotatius, utilitzeu olles)
  • 1 joystick Arduino KY-023
  • Cable de xarxa cat5 de ferralla de 5 peus
  • 1x cable micro USB A a USB B (l'USB A és el gran connector quadrat, el micro USB B és el que hi ha a l'Arduino Pro Micro)
  • 1x LED vermell de 5 mm
  • 1x resistència de 220 ohm

Tenia algunes parts addicionals al voltant, així que vaig pensar construir una unitat de desenvolupament per provar les coses. Només connectar coses a una taula de treball facilitava la visualització de l’últim.

  • 1 Arduino Pro Micro
  • Potenciòmetres rotatius 4x (pomos) de 10k (no controladors rotatius, utilitzeu olles)
  • 1 commutador momentani de polsador (interruptor de reinici dur)
  • 1x cable micro USB A a USB B (l'USB A és el gran connector quadrat, el micro USB B és el que hi ha a l'Arduino Pro Micro)
  • variats cables de pont
  • taulell de pa
  • 1x LED vermell de 5 mm
  • 1x resistència de 220 ohm

Pas 2: el recinte

El recinte
El recinte
El recinte
El recinte
El recinte
El recinte
El recinte
El recinte

El disseny

M'han agradat alguns dels altres dissenys que es perfilen a la galeria de la comunitat deej, de manera que he basat la meva en les funcions que més m'han agradat:

  • Fàcil de dissenyar i imprimir
  • No m’interposi als altres perifèrics d’escriptori
  • No utilitzeu cargols ni fixacions per assegurar el tancament
  • Disseny similar al teclat

Vaig dissenyar i imprimir dos prototips abans de decidir-me per aquest disseny final. M'agrada tenir una versió física amb la qual jugar en l'espai en què l'utilitzo, ja que em dóna una millor idea de com funcionarà l'objecte final.

Vaig començar a dissenyar breument a Fusion360, però no ho sé tan bé com Tinkercad, així que vaig canviar i vaig treballar allà.

Com que volia un disseny sense cargols, vaig crear una caixa niu. El primer prototip tenia una tapa fina i una caixa profunda per a tot. El segon disseny el va canviar amb una tapa profunda i una caixa inferior poc profunda. Només havia de contenir l'Arduino Pro Mini, de manera que realment no necessitava ser gran. També es van incorporar les icones en relleu.

El tercer disseny s’ha redimensionat perquè s’adapti a l’espai al costat del meu teclat.

La impressió

Vaig imprimir la caixa en PLA, programant un intercanvi de filaments / capes de negre a vermell per la tapa on les icones començarien a ser visibles, i de nou a Negre per a la resta de la tapa.

Un problema

Tot i això, el muntatge del joystick va ser un problema. Fins i tot en el tercer disseny, el pal xoca contra les muntures en un sol lloc. La propera iteració tindrà millors distàncies. Podria haver treballat més en el disseny, però volia passar a la següent fase, la instal·lació.

Pas 3: el circuit

El Circuit
El Circuit
El Circuit
El Circuit
El Circuit
El Circuit

El pitjor treball de cablejat de la història

D’acord, aquest és el meu primer projecte Arduino complet. Sí, ja he fet coses a les taules de revisió i n’estic fent servir una per construir la versió de desenvolupament d’aquesta, però pel que fa a la fabricació i al muntatge, aquesta és la meva primera. Així que el meu cablejat sembla una merda. Allà, això està fora del camí:)

Actualització: des de llavors n'he construït un altre i el cablejat és molt millor aquí. Veure les imatges:)

Unitat de producció: què passa on?

L'Arduino Pro Micro és una petita tauleta que s'adapta a la secció modelada de la base. Els poms i el joystick caben als seus respectius forats de la tapa. Però no monteu res fins que no pugueu competir per soldar.

Cablejat

No tenia cap cable de circuit adequat, però sí que em sobrava un cable de xarxa cat5 de nucli sòlid, així que és el que he utilitzat. És una mica més rígid i potser més fràgil que el cable de circuit encallat, però funciona.

Disposant els components en una aproximació de la seva posició de muntatge final, vaig estimar la distància, per a cada filferro, hi vaig afegir una mica més per deixar anar, etc., i després vaig tallar i retallar el fil. Vaig deixar molta folga.

Referint-me al diagrama de cablejat, vaig passar el terreny comú (negre) i el VCC (vermell) als comandaments i al joystick on s’indicava. Com que el cable de xarxa no ve en aquests colors, només he agafat un color i he mantingut el cablejat coherent amb la funció.

L’olla individual. les línies analògiques (grogues) funcionaven fins als pins A0 - A3. Les línies del joystick (taronja), també analògiques, funcionaven als pins 8 i 9. d'E / S. Aquests hauran de ser designats com a analògics al codi Arduino com A8 i A9.

El pin del commutador del joystick (blau) va passar al pin 7. Aquest serà un pin digital al codi.

Aïllament

Com que aquest cable dur es farcirà en un espai reduït, vaig optar per aïllar les meves connexions de soldadura amb una bona quantitat de cola de fusió en calent. A continuació, ho va ficar tot al seu lloc i va fer una prova senzilla a la pissarra i als pots mitjançant la versió del codi d'Arduino Example AnalogInput, modificat per llegir tots els pots.

Segona versió

Les dues darreres imatges anteriors mostren el següent quadre que estic construint. Aquest tindrà 5 comandaments i un polsador momentani per silenciar. Sense joystick. Caixa de la mateixa mida.

Pas 4: finalització del maquinari

Acabant el maquinari
Acabant el maquinari

Quan vaig instal·lar el joystick, em vaig adonar que no quedava gaire espai entre el tauler i les capçaleres dels pins al Pro Micro.

Després de doblegar una mica amb cura les capçaleres dels pins i tornar a aplicar la cola de fusió en calent (per a l'aïllament), el recinte es va tancar correctament.

La instal·lació de les olles va passar sense problemes.

De nou amb els cables

Els cables de nucli sòlid són una mica rígids i poden ser trencadissos si es flexionen massa vegades, així que plegueu-los amb cura (sense cantonades esmolades) a l’espai disponible. Alguns dels meus eren massa llargs i requerien una mica de plegament addicional.

Una vegada que tot estigui ficat al seu lloc, només cal que fixeu la base a la part superior i hauríeu d'acabar amb el maquinari …

Però espereu, n’hi ha més

Per descomptat, després d’unes setmanes d’ús, vaig decidir que necessitava un indicador per fer-me saber quin és l’estat de la funció MUTE de codi suau.

Després d'editar el codi per afegir-lo a la funcionalitat LED (vegeu la secció següent), he soldat ràpidament el LED / cables / resistència i els he connectat a la placa.

Vaig dedicar més temps a perforar el forat per la part superior de la caixa, ja que no volia marcar l’acabat superior. Vaig marcar una taca central, la vaig abollir i després vaig girar a mà una broca per fer el forat.

Un fitxer acurat addicional va netejar el forat i va assegurar un bon ajustament premsat per garantir que el LED no sobresortís massa per sobre de la superfície superior.

Pas 5: el programari

El programari
El programari
El programari
El programari
El programari
El programari

Visió general

Per tant, es tracta d’un procés en dues parts.

  1. Obteniu i enteneu com funciona Deej i editeu el fitxer Config.yaml
  2. Editeu el codi Arduino perquè coincideixi amb el maquinari i les funcions desitjades
  3. Obteniu la biblioteca Arduino Joystick

En el meu cas, volia aquestes funcions:

  • Pomos que controlen els nivells (micròfon i sortida)
  • Interruptor de silenci
  • Joystick de 2 eixos reconegut per Windows per a l'ús de l'aplicació

Nivells

Deej s’encarrega pràcticament del primer punt tal com arriba. No vaig modificar aquesta funcionalitat

Interruptor de silenci

Al principi, havia decidit que anava a utilitzar el polsador / interruptor del joystick com a botó de silenci funcional.

Quan examineu el codi, veureu que he escollit (inicialment) utilitzar un silenci "suau": quan es prem el botó, el volum del MIC es redueix a zero (i el LED s'encén). Quan es torna a prémer, el volum MIC es torna a la configuració anterior i el LED s’apaga.

Finalment, estudiaré la implementació de la biblioteca de teclat Arduino per canviar l'estat Silencia mitjançant el conjunt de codis del teclat multimèdia ampliat.

Implementació del joystick

Això requereix l’ús de la biblioteca Arduino Joystick per garantir que el joystick sigui reconegut com a dispositiu HID per Windows i, per tant, per qualsevol joc o aplicació.

Sóc una mica desconcertant pel que fa a la codificació i he trobat la documentació de la biblioteca Joystick una mica escassa pel que fa a la implementació real, però una mica de google centrat em va portar a altres exemples que em van ajudar a entendre què passa. Consulteu la secció de recursos al final per obtenir més informació.

Tot el que havia de fer era identificar els pins X / Y, llegir el seu estat i enviar-los a la biblioteca Joystick. L'Arduino va aparèixer com a Leonardo per a Windows i estava configurat correctament com a dispositiu Joystick.

Vaig poder configurar-lo a Elite Dangerous, al costat de la meva configuració HOTAS existent i que el joystick controlés correctament les coses i no entrés en conflicte amb HOTAS. També funciona bé a Star Wars: Esquadrons: ho tinc configurat com a commutació ràpida per configurar els escuts durant el combat.

Els fitxers que funcionen amb la configuració del meu joystick

He penjat els meus fitxers actuals (octubre de 2020) a Codepile.

  • Codi Arduino (fitxer.ino)
  • Deej config.yaml

Pas 6: finalitzar

Final
Final

Bé, aquest ja està fet. Funciona i estic força satisfet de com es va unir. I vaig aprendre una mica més sobre el disseny de maquinari, la integració i la programació d’Arduino.

Pas 7: addenda..dum..dum

Addenda..dum..dum
Addenda..dum..dum

VLC: aquest increïble reproductor d’àudio i vídeo té una mica estrany on el nivell de volum, quan es controla externament, salta del 0% al 27% ish. Això no passa quan s'ajusta el nivell mitjançant el control de volum de la interfície de l'aplicació, només amb controls externs com Deej.

El desenvolupador Deej va trobar ràpidament una solució in-VLC que fa la feina; vegeu la imatge superior:

"… si voleu desactivar aquest comportament de" seguiment ", podeu fer-ho canviant el mòdul de sortida d'àudio de VLC. He utilitzat DirectX en els meus intents aquí. Haureu de reiniciar VLC perquè el canvi tingui efecte. tenir una sessió d'àudio de Windows i poder controlar-la mitjançant deej, això evitarà que la barra de volum VLC es mogui amb ella)"

Pas 8: recursos addicionals

Recursos addicionals
Recursos addicionals

Trobat a través del poderós Goog, que no apareix en cap ordre concret …

  • Arduino Joystick Library (v2): necessària per integrar el joystick
  • Guia de connexió Sparkfun Pro Micro: un bon recurs sobre aquest Arduino
  • deej: el programari que acciona els comandaments
  • Tipus de connectors USB: qui sabia que hi havia tantes variants?
  • Pinouts analògics micro Arduino Pro
  • Arduino Leonardo Gaming Joystick: Leonardo és similar al Pro Micro, només és més gran
  • No s'ha detectat el port Arduino Pro Micro (Clone) (solució): quan es tapa el Pro Micro (ho he fet)
  • Arduino Leonardo / Micro com a controlador de jocs / Joystick
  • Exemple d'utilitzar una clau multimèdia per silenciar - mitjançant la biblioteca HID Project
  • Codi d'exemple de la biblioteca HID Project per posar en pausa / reproduir contingut multimèdia
  • Un altre exemple de codi que mostra el controlador del gamepad.
  • ArduinoGamingController_updated: bona descripció del codi de l’ús de la biblioteca Joystick
  • Calculadora de resistències LED: per esbrinar quina mida necessiteu en el vostre projecte
  • Biblioteca d'icones - flaticon.com - font de les imatges utilitzades a sobre dels comandaments
  • Another Resistor Color Decoder: feu clic a un color i viola.

Recomanat: