Sommario:

Tastiera Arduino Joystick Extender Box e Sound Controller Cosa usando Deej: 8 passaggi
Tastiera Arduino Joystick Extender Box e Sound Controller Cosa usando Deej: 8 passaggi

Video: Tastiera Arduino Joystick Extender Box e Sound Controller Cosa usando Deej: 8 passaggi

Video: Tastiera Arduino Joystick Extender Box e Sound Controller Cosa usando Deej: 8 passaggi
Video: #28 - Arduino Music Controller for WIndows 2024, Dicembre
Anonim
Tastiera Arduino Joystick Extender Box e Sound Controller Cosa usando Deej
Tastiera Arduino Joystick Extender Box e Sound Controller Cosa usando Deej

Progetti Tinkercad »

Come mai

Da un po' desideravo aggiungere un piccolo joystick alla mia tastiera per controllare gli elementi dell'interfaccia o altre attività più piccole nei giochi e nei simulatori (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons, ecc.).

Inoltre, per Elite: Dangerous, ho avuto difficoltà a mixare i livelli di volume dall'audio esterno (la musica incorporata, sebbene buona, diventa ripetitiva dopo molte ore in nero), l'audio in-game e il supporto del voicepack esterno.

Il mixer sorgente integrato di Windows è "ok", ma è una seccatura cambiare schermo e cursori di controllo del mouse nel bel mezzo di un gioco. Avere una scatola di controllo della tastiera estesa sembrava la strada da percorrere. Deej è la soluzione che ho trovato.

Come

Di recente ho appreso di Arduino e mi sono imbattuto nel progetto deej su reddit. Sembrava che questo avrebbe risolto entrambi i problemi in un pratico pacchetto. E mi permetterebbe di progettare e stampare un'elegante custodia 3D.

Cos'è il deej?

(dal sito) deej è un **mixer di volumi hardware open source** per PC Windows e Linux. Ti consente di utilizzare gli slider della vita reale (come un DJ!) per **controllare senza problemi i volumi di diverse app** (come il tuo lettore musicale, il gioco che stai giocando e la tua sessione di chat vocale) senza dover interrompere ciò stai facendo.

La mia versione

Per mantenere la scatola piccola, ho optato per le manopole (potenziometro lineare rotativo (pot = resistori)) anziché i cursori. Funzionalmente funzionano allo stesso modo. I design deej attuali e popolari non includono un joystick, quindi questo sarà un po' un ibrido di design. Altrimenti, è una build piuttosto semplice.

Deej funzionerà con Arduino Nano, Pro Micro o Uno, ma Nano e Pro Micro sono "raccomandati ufficialmente" dallo sviluppatore. Ho scelto Arduino Pro Micro perché volevo il joystick e la libreria Joystick Arduino lo supporta. Posso anche usare la libreria di tastiere Arduino quando voglio usare la funzione di silenziamento della tastiera multimediale (piuttosto che il "soft mute") con il pulsante del joystick, ma è più avanti.

Passaggio 1: materiali di consumo

Forniture
Forniture
Forniture
Forniture
Forniture
Forniture

La scatola

Scarica i file STL (progettati in Tinkercad):

  • File allegati a Prusa (https://www.prusaprinters.org/)
  • Thingiverse (prossimamente)

L'hardware (unità di produzione)

  • 1x Arduino Pro Micro
  • Potenziometri rotativi 4x 10k (manopola) (non controller rotanti, utilizzare potenziometri)
  • 1x Joystick Arduino KY-023
  • Cavo di rete cat5 di scarto da 5 piedi
  • 1x cavo micro da USB A a USB B (USB A è il grande connettore quadrato, USB B micro è quello che c'è su Arduino Pro Micro)
  • 1x LED rosso da 5 mm
  • 1x resistenza da 220 ohm

Avevo alcune parti extra in giro, quindi ho pensato di creare un'unità di sviluppo su cui testare le cose. Il semplice collegamento di elementi a una breadboard ha reso più semplice visualizzare la cosa finale.

  • 1x Arduino Pro Micro
  • Potenziometri rotativi 4x 10k (manopola) (non controller rotanti, utilizzare potenziometri)
  • 1x interruttore a pulsante momentaneo (interruttore di ripristino hardware)
  • 1x cavo micro da USB A a USB B (USB A è il grande connettore quadrato, USB B micro è quello che c'è su Arduino Pro Micro)
  • ponticelli assortiti
  • tagliere
  • 1x LED rosso da 5 mm
  • 1x resistenza da 220 ohm

Passaggio 2: il recinto

Il recinto
Il recinto
Il recinto
Il recinto
Il recinto
Il recinto
Il recinto
Il recinto

Il design

Mi sono piaciuti alcuni degli altri design profilati nella galleria della community di deej, quindi ho basato le mie caratteristiche che mi sono piaciute:

  • Facile da progettare e stampare
  • Non intralciare le mie altre periferiche desktop
  • Non utilizzare viti o elementi di fissaggio per fissare l'involucro
  • Estetica del design simile alla tastiera

Ho progettato e stampato due prototipi prima di stabilirmi su questo progetto finale. Mi piace avere una versione fisica con cui giocare nello spazio in cui lo sto usando perché mi dà un'idea migliore di come funzionerà l'oggetto finale.

Ho iniziato brevemente a progettare in Fusion360, ma non lo conosco bene come Tinkercad, quindi sono passato e ho lavorato lì.

Dato che volevo un design senza viti, ho creato una scatola di nidificazione. Il primo prototipo aveva un coperchio sottile e una scatola profonda per tutto. Il secondo design lo ha sostituito con un coperchio profondo e una scatola dal fondo poco profondo. Doveva solo contenere l'Arduino Pro Mini, quindi non aveva bisogno di essere grande. Incorporate anche le icone in rilievo.

Il terzo design è stato ridimensionato per adattarsi allo spazio accanto alla mia tastiera.

la stampa

Ho stampato la scatola in PLA, programmando uno scambio filamento/strato da nero a rosso per il coperchio dove le icone avrebbero appena iniziato a essere visibili, e di nuovo su nero per il resto del coperchio.

Un problema

Durante tutto questo, il supporto del joystick è stato un problema. Anche nel terzo design, lo stick va a sbattere contro i supporti in un punto. La prossima iterazione avrà autorizzazioni migliori. Avrei potuto lavorare di più sul design ma volevo passare alla fase successiva, l'installazione.

Passaggio 3: il circuito

Il circuito
Il circuito
Il circuito
Il circuito
Il circuito
Il circuito

Il peggior lavoro di cablaggio di sempre

Ok, questo è il mio primo progetto Arduino completo. Sì, ho già fatto cose su breadboard e ne sto usando uno per creare la versione di sviluppo di questo, ma per quanto riguarda la fabbricazione e l'assemblaggio, questo è il mio primo. Quindi il mio cablaggio sembra una merda. Ecco, questo è fuori mano:)

Aggiornamento: da allora ne ho costruito un altro e il cablaggio è molto più bello lì. Guarda le immagini:)

Unità di produzione -- Cosa sta andando dove

L'Arduino Pro Micro è una piccola scheda e si inserisce nella sezione sagomata nella base. Manopole e joystick si inseriscono nei rispettivi fori nel coperchio. Ma non montare nulla fino a quando non avrai gareggiato con la saldatura.

Cablaggio

Non avevo alcun cavo di circuito adeguato, ma avevo un rotolo avanzato di cavo di rete cat5 a nucleo solido, quindi è quello che ho usato. È un po' più rigido e forse più fragile del cavo del circuito a trefoli, ma funziona.

Disponendo i componenti in un'approssimazione della loro posizione di montaggio finale, ho stimato la distanza, per ciascun filo, aggiunto un po' di più per il gioco, ecc., quindi tagliato e rifilato il filo. Ho lasciato molto spazio.

Facendo riferimento allo schema elettrico, ho fatto passare il comune di massa (Nero) e VCC (Rosso) alle manopole e al joystick dove indicato. Poiché il cavo di rete non è disponibile in questi colori, ho semplicemente scelto un colore e ho mantenuto il cablaggio coerente con la funzione.

Il vaso individuale. le linee analogiche (gialle) andavano ai pin A0 - A3. Le linee del Joystick (Arancione), anch'esse analogiche, andavano ai pin I/O 8 e 9. Questi dovranno essere designati come Analog nel codice Arduino come A8 e A9.

Il pin dell'interruttore del joystick (blu) è andato al pin 7. Questo sarà un pin digitale nel codice.

Isolamento

Dal momento che questo filo rigido verrà inserito in un piccolo spazio, ho deciso di isolare le mie connessioni di saldatura con una sana dose di colla a caldo. Quindi ha riposto tutto al suo posto ed ha eseguito un semplice test sulla scheda e sui vasi utilizzando la versione del codice AnalogInput di esempio di Arduino, modificato per leggere tutti i vasi.

Seconda versione

Le ultime due immagini sopra mostrano la prossima scatola che sto costruendo. Questo avrà 5 manopole e un pulsante momentaneo per il mute. Nessun joystick. Stesse dimensioni della scatola.

Passaggio 4: finitura dell'hardware

Finire l'hardware
Finire l'hardware

Quando ho installato il Joystick, mi sono reso conto che non c'era molto spazio tra la sua scheda e le intestazioni dei pin lasciate sul Pro Micro.

Dopo un po' di piegatura attenta delle intestazioni dei pin e una nuova applicazione di colla a caldo (per l'isolamento), l'involucro si è chiuso correttamente.

L'installazione delle pentole è avvenuta senza intoppi.

Di nuovo con i fili

I fili a nucleo solido sono un po' rigidi e possono essere fragili se piegati troppe volte, quindi piegali con cura (senza spigoli vivi) nello spazio disponibile. Alcuni dei miei erano troppo lunghi e richiedevano un po' di piegatura extra.

Una volta che tutto è a posto, basta montare la base sulla parte superiore e dovresti aver finito con l'hardware…

Ma aspetta, c'è di più

Ovviamente, dopo alcune settimane di utilizzo, ho deciso che avevo bisogno di un indicatore per farmi sapere qual è lo stato della funzione MUTE codificata via software.

Dopo aver modificato il codice per aggiungere la funzionalità LED (vedere la sezione successiva), ho rapidamente saldato il LED / fili / resistenza e li ho collegati alla scheda.

Ho passato più tempo a praticare il foro attraverso la parte superiore del case perché non volevo rovinare la finitura superiore. Ho segnato un punto centrale, l'ho ammaccato, poi ho fatto girare a mano una punta da trapano per fare il buco.

Un'ulteriore accurata limatura ha ripulito il foro e ha assicurato un buon accoppiamento a pressione per garantire che il LED non sporgesse troppo al di sopra della superficie superiore.

Passaggio 5: il software

Il software
Il software
Il software
Il software
Il software
Il software

Panoramica

Quindi, questo è un processo in due parti.

  1. Ottieni e comprendi come funziona Deej e modifica il file Config.yaml
  2. Modifica il codice Arduino in modo che corrisponda all'hardware e alle funzionalità desiderate
  3. Ottieni la libreria Arduino Joystick

Nel mio caso, volevo queste caratteristiche:

  • Manopole che controllano i livelli (microfono e uscita)
  • Interruttore muto
  • Joystick a 2 assi riconosciuto da Windows per l'uso dell'applicazione

livelli

Deej si prende cura del primo punto così com'è. Non ho modificato questa funzionalità

Interruttore muto

Avevo deciso all'inizio che avrei usato il pulsante/interruttore nel Joystick come pulsante di disattivazione dell'audio.

Quando esamini il codice, vedrai che ho scelto (inizialmente) di utilizzare un mute "soft" - quando viene premuto il pulsante, il volume del MIC viene ridotto a zero (e il LED è acceso). Quando viene premuto di nuovo, il volume del microfono viene riportato all'impostazione precedente e il LED si spegne.

Alla fine cercherò di implementare la libreria di tastiere Arduino per attivare o disattivare lo stato Mute attraverso il set di codici della tastiera multimediale esteso.

Implementazione del joystick

Ciò richiede l'uso della libreria Arduino Joystick per garantire che il joystick venga riconosciuto come dispositivo HID da Windows e di conseguenza da qualsiasi gioco/applicazione.

Sono un po' un principiante quando si tratta di codificare e ho trovato la documentazione della libreria Joystick un po' scarsa sul lato dell'implementazione effettiva, ma un po' di googling mirato mi ha portato ad altri esempi che mi hanno aiutato a capire cosa sta succedendo. Controlla la sezione risorse alla fine per i dettagli.

Tutto quello che dovevo fare era identificare i pin X/Y, leggere il loro stato e inviarlo alla libreria Joystick. L'Arduino è apparso come un Leonardo per Windows ed è stato configurato correttamente come dispositivo Joystick.

Sono stato in grado di configurarlo in Elite Dangerous, insieme alla mia configurazione HOTAS esistente e fare in modo che il Joystick controlli correttamente le cose e non entri in conflitto con l'HOTAS. Funziona bene anche in Star Wars: Squadrons: l'ho impostato come un interruttore rapido per impostare gli scudi durante il combattimento.

I file che funzionano con la configurazione del mio Joystick

Ho caricato i miei file attuali (ottobre 2020) su Codepile.

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

Passaggio 6: fine

Fine
Fine

Bene, questo è fatto. Funziona e sono piuttosto soddisfatto di come è venuto insieme. E ho imparato qualcosa in più sulla progettazione hardware, sull'integrazione e sulla programmazione Arduino.

Passaggio 7: addendum..dum..dum

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

VLC: quel fantastico lettore audio e video ha una piccola stranezza in cui il livello del volume, quando controllato esternamente, salta dallo 0% al 27%. Questo non accade quando si regola il livello utilizzando il controllo del volume dell'interfaccia in-app, ma solo con controlli esterni come Deej.

Lo sviluppatore Deej ha trovato rapidamente una soluzione alternativa in-VLC che fa il lavoro, vedere l'immagine sopra:

"…se vuoi disabilitare questo comportamento di "Tracciamento" puoi farlo cambiando il modulo di uscita audio di VLC. Ho usato DirectX nei miei tentativi qui. Dovrai riavviare VLC affinché la modifica abbia effetto. (avrai comunque avere una sessione audio di Windows ed essere in grado di controllarla tramite deej, questo impedirà solo alla barra del volume di VLC di muoversi con essa)"

Passaggio 8: risorse aggiuntive

Risorse addizionali
Risorse addizionali

Trovato tramite il potente Goog, elencato in nessun ordine particolare…

  • Libreria Joystick Arduino (v2) - necessaria per integrare il joystick
  • Guida al collegamento Sparkfun Pro Micro: una buona risorsa su questo Arduino
  • deej - il software che pilota le manopole
  • Tipi di connettori USB: chi sapeva che c'erano così tante varianti?
  • Piedinatura micro analogica Arduino Pro
  • Arduino Leonardo Gaming Joystick - Leonardo è simile a Pro Micro, solo più grande
  • Porta Arduino Pro Micro (clona) non rilevata (soluzione) - quando blocchi il tuo Pro Micro (l'ho fatto)
  • Arduino Leonardo/Micro come controller di gioco/joystick
  • Esempio di utilizzo di un tasto multimediale per disattivare l'audio - utilizzando la libreria del progetto HID
  • Codice di esempio della libreria di progetti HID per mettere in pausa/riprodurre contenuti multimediali
  • Un altro esempio di codice che mostra il controller del gamepad.
  • ArduinoGamingController_updated - buona descrizione del codice dell'utilizzo della libreria Joystick
  • Cosa calcolatrice di resistori LED - per scoprire quanto è grande un resistore di cui avresti bisogno nel tuo progetto
  • Libreria icone - flaticon.com - fonte delle immagini utilizzate sopra le manopole
  • Un altro decodificatore di colori per resistori: fai clic su un colore e una viola!

Consigliato: