Table des matières:

Boîtier d'extension de joystick de clavier Arduino et contrôleur de son utilisant Deej : 8 étapes
Boîtier d'extension de joystick de clavier Arduino et contrôleur de son utilisant Deej : 8 étapes

Vidéo: Boîtier d'extension de joystick de clavier Arduino et contrôleur de son utilisant Deej : 8 étapes

Vidéo: Boîtier d'extension de joystick de clavier Arduino et contrôleur de son utilisant Deej : 8 étapes
Vidéo: PERSONNE ne parle de cette console (et ça me rend zinzin) 2024, Juillet
Anonim
Boîtier d'extension de joystick de clavier Arduino et contrôleur de son utilisant Deej
Boîtier d'extension de joystick de clavier Arduino et contrôleur de son utilisant Deej

Projets Tinkercad »

Pourquoi

Cela faisait un moment que je voulais ajouter un petit joystick à mon clavier pour contrôler des éléments d'interface, ou d'autres petites tâches dans les jeux et simulateurs (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons, etc.).

De plus, pour Elite: Dangerous, j'ai eu du mal à mélanger les niveaux de volume de l'audio externe (la musique intégrée, bien que bonne, devient répétitive après de nombreuses heures dans le noir), l'audio du jeu et la prise en charge du pack vocal externe.

Le mélangeur de sources intégré à Windows est "correct", mais difficile de changer d'écran et de curseurs de contrôle de la souris au milieu d'un jeu. Avoir un boîtier de contrôle de clavier étendu semblait la voie à suivre. Deej est la solution que j'ai trouvée.

Comment

J'ai récemment découvert Arduino et je suis tombé sur le projet deej sur reddit. Il semblait que cela résoudrait ces deux problèmes dans un seul paquet pratique. Et cela me permettrait de concevoir et d'imprimer une coque 3D astucieuse.

Qu'est-ce que le deej ?

(du site) deej est un **mélangeur de volume matériel open-source** pour les PC Windows et Linux. Il vous permet d'utiliser des curseurs réels (comme un DJ !) tu fais.

Ma version

Pour garder la petite boîte, j'ai opté pour des boutons (potentiomètre linéaire rotatif (pots = résistances)) plutôt que des curseurs. Fonctionnellement, ils fonctionnent de la même manière. Les conceptions actuelles et populaires de deej n'incluent pas de joystick, ce sera donc un peu un hybride de conception. Sinon, c'est une construction assez simple.

Deej fonctionnera avec un Arduino Nano, Pro Micro ou Uno, mais les Nano et Pro Micro sont « officiellement recommandés » par le développeur. J'ai choisi l'Arduino Pro Micro parce que je voulais le joystick, et la bibliothèque Arduino Joystick le prend en charge. Je peux également utiliser la bibliothèque de claviers Arduino lorsque je souhaite utiliser la fonction de sourdine du clavier multimédia (plutôt que la « sourdine douce ») avec le bouton du joystick, mais c'est plus loin.

Étape 1: Fournitures

Fournitures
Fournitures
Fournitures
Fournitures
Fournitures
Fournitures

La boîte

Téléchargez les fichiers STL (conçus dans Tinkercad):

  • Fichiers de pièces jointes chez Prusa (https://www.prusaprinters.org/)
  • Thingiverse (à venir)

Le matériel (unité de production)

  • 1x Arduino Pro Micro
  • 4x 10k potentiomètres rotatifs (bouton) (pas de contrôleurs rotatifs, utilisez des pots)
  • 1x manette Arduino KY-023
  • Câble réseau cat5 de ferraille de 5 pieds
  • 1x câble micro USB A vers USB B (USB A est le gros connecteur carré, micro USB B est ce qu'il y a sur l'Arduino Pro Micro)
  • 1x LED rouge 5mm
  • 1x résistance 220 ohms

J'avais quelques pièces supplémentaires, alors j'ai pensé construire une unité de développement pour tester les choses. Le simple fait de connecter des éléments à une maquette a permis de visualiser plus facilement le résultat final.

  • 1x Arduino Pro Micro
  • 4x potentiomètres rotatifs 10k (bouton) (pas de contrôleurs rotatifs, utilisez des pots)
  • 1x bouton-poussoir momentané (interrupteur de réinitialisation matérielle)
  • 1x câble micro USB A vers USB B (USB A est le gros connecteur carré, micro USB B est ce qu'il y a sur l'Arduino Pro Micro)
  • fils de liaison assortis
  • planche à pain
  • 1x LED rouge 5mm
  • 1x résistance 220 ohms

Étape 2: L'enceinte

L'enceinte
L'enceinte
L'enceinte
L'enceinte
L'enceinte
L'enceinte
L'enceinte
L'enceinte

La conception

J'ai aimé certaines des autres conceptions présentées dans la galerie de la communauté deej, donc j'ai basé la mienne des fonctionnalités que j'ai aimées:

  • Facile à concevoir et à imprimer
  • Ne pas gêner mes autres périphériques de bureau
  • Ne pas utiliser de vis ou d'attaches pour fixer le boîtier
  • Esthétique de conception similaire au clavier

J'ai conçu et imprimé deux prototypes avant de m'arrêter sur ce design final. J'aime avoir une version physique avec laquelle jouer dans l'espace dans lequel je l'utilise, car cela me donne une meilleure idée de la façon dont l'objet final fonctionnera.

J'ai brièvement commencé à concevoir dans Fusion360, mais je ne le connais pas aussi bien que Tinkercad, alors j'ai basculé et travaillé là-bas.

Comme je voulais un design sans vis, j'ai créé un nichoir. Le premier prototype avait un couvercle mince et une boîte profonde pour tout. La deuxième conception a remplacé cela par un couvercle profond et une boîte inférieure peu profonde. Il ne devait contenir que l'Arduino Pro Mini, il n'avait donc pas besoin d'être grand. Également incorporé les icônes en relief.

Le troisième design a été redimensionné pour s'adapter à l'espace à côté de mon clavier.

L'empreinte

J'ai imprimé la boîte en PLA, en programmant un échange filament / couche du noir au rouge pour le couvercle où les icônes commenceraient juste à être visibles, puis de nouveau au noir pour le reste du couvercle.

Un problème

Tout au long de cela, le support du joystick était un problème. Même dans la troisième conception, le bâton heurte les supports en un seul endroit. La prochaine itération aura de meilleurs dégagements. J'aurais pu travailler davantage sur la conception, mais je voulais passer à la phase suivante, l'installation.

Étape 3: Le circuit

Le circuit
Le circuit
Le circuit
Le circuit
Le circuit
Le circuit

Le pire travail de câblage de tous les temps

Ok, c'est mon premier projet Arduino complet. Oui, j'ai déjà fait des choses sur des maquettes et j'en utilise une pour construire la version de développement de celle-ci, mais en ce qui concerne la fabrication et l'assemblage, c'est ma première. Donc mon câblage ressemble à de la merde. Là, c'est à l'écart:)

Mise à jour: j'en ai construit un autre depuis et le câblage y est beaucoup plus agréable. Voir les images:)

Unité de production -- Qu'est-ce qui va où

L'Arduino Pro Micro est une toute petite carte et s'adaptera à la section moulée de la base. Les boutons et le joystick s'insèrent dans leurs trous respectifs dans le couvercle. Mais ne montez rien tant que la soudure n'est pas en compétition.

Câblage

Je n'avais pas de fil de circuit approprié, mais j'avais un reste de câble réseau cat5 à âme solide, c'est donc ce que j'ai utilisé. C'est un peu plus rigide et peut-être plus cassant que le fil de circuit toronné, mais cela fonctionne.

Disposant les composants dans une approximation de leur position de montage finale, j'ai estimé la distance, pour chaque fil, ajouté un peu plus pour le mou, etc., puis j'ai coupé et coupé le fil. J'ai laissé beaucoup de mou.

En se référant au schéma de câblage, j'ai couru la masse commune (noir) et VCC (rouge) aux boutons et au joystick où indiqué. Étant donné que le câble réseau n'est pas disponible dans ces couleurs, j'ai juste choisi une couleur et j'ai gardé mon câblage cohérent avec la fonction.

Le Pot individuel. les lignes analogiques (jaunes) se dirigeaient vers les broches A0 - A3. Les lignes du joystick (Orange), également analogiques, se dirigeaient vers les broches d'E/S 8 et 9. Celles-ci devront être désignées comme analogiques dans le code Arduino comme A8 et A9.

La broche de l'interrupteur du joystick (bleu) s'est dirigée vers la broche 7. Ce sera une broche numérique dans le code.

Isolation

Étant donné que ce fil rigide va être fourré dans un petit espace, j'ai choisi d'isoler mes connexions de soudure avec une bonne cuillerée de colle thermofusible. Ensuite, j'ai tout mis en place et j'ai effectué un test simple sur la carte et les pots en utilisant la version du code Arduino Example AnalogInput - modifié pour lire tous les pots.

Deuxième version

Les deux dernières images ci-dessus montrent la prochaine boîte que je construis. Celui-ci aura 5 boutons et un bouton poussoir momentané pour la sourdine. Pas de manette. Boîte de même taille.

Étape 4: Finition du matériel

Finition du matériel
Finition du matériel

Au moment où j'ai installé le joystick, j'ai réalisé qu'il n'y avait pas beaucoup d'espace entre sa carte et les en-têtes de broche laissés sur le Pro Micro.

Après un petit pliage prudent des en-têtes des broches et une nouvelle application de colle thermofusible (pour l'isolation), le boîtier s'est correctement fermé.

L'installation des pots s'est déroulée sans accroc.

Encore avec les fils

Les fils à âme pleine sont un peu rigides et peuvent être cassants s'ils sont trop fléchis, alors pliez-les soigneusement (sans angles vifs) dans l'espace disponible. Certains des miens étaient trop longs et nécessitaient un peu de pliage supplémentaire.

Une fois que tout est en place, placez simplement la base sur le dessus et vous devriez avoir terminé avec le matériel….

Mais attendez, il y a plus

Bien sûr, après quelques semaines d'utilisation, j'ai décidé que j'avais besoin d'un indicateur pour me faire savoir quel est l'état de la fonction MUTE codée en douceur.

Après avoir édité le code pour ajouter la fonctionnalité LED (voir la section suivante), j'ai rapidement soudé la LED / les fils / la résistance et les ai connectés à la carte.

J'ai passé plus de temps à percer le trou dans le haut du boîtier car je ne voulais pas gâcher la finition supérieure. J'ai marqué un point central, je l'ai cabossé, puis j'ai fait tourner à la main un foret pour faire le trou.

Un limage supplémentaire soigneux a nettoyé le trou et assuré un bon ajustement serré pour s'assurer que la LED ne dépasse pas trop au-dessus de la surface supérieure.

Étape 5: Le logiciel

Les logiciels
Les logiciels
Les logiciels
Les logiciels
Les logiciels
Les logiciels

Aperçu

Il s'agit donc d'un processus en deux parties.

  1. Obtenez et comprenez le fonctionnement de Deej et modifiez le fichier Config.yaml
  2. Modifiez le code Arduino pour qu'il corresponde au matériel et aux fonctionnalités souhaités
  3. Obtenez la bibliothèque Arduino Joystick

Dans mon cas, je voulais ces fonctionnalités:

  • Boutons qui contrôlent les niveaux (micro et sortie)
  • Commutateur de silencieux
  • Joystick 2 axes reconnu par Windows pour une utilisation applicative

Niveaux

Deej s'occupe à peu près du premier point au fur et à mesure. Je n'ai pas modifié cette fonctionnalité

Commutateur de silencieux

J'avais déterminé très tôt que j'allais utiliser le bouton/interrupteur du joystick comme bouton de sourdine fonctionnel.

Lorsque vous examinez le code, vous verrez que j'ai choisi (initialement) d'utiliser une sourdine "douce" - lorsque le bouton est enfoncé, le volume du MIC est réduit à zéro (et la LED est allumée). Lorsqu'il est à nouveau enfoncé, le volume MIC revient à son réglage précédent et la LED s'éteint.

Finalement, je chercherai à implémenter la bibliothèque de clavier Arduino pour basculer le statut Muet via le jeu de codes de clavier multimédia étendu.

Implémentation du joystick

Cela nécessite l'utilisation de la bibliothèque Arduino Joystick pour s'assurer que le joystick est reconnu comme un périphérique HID par Windows et par conséquent par n'importe quel jeu/application.

Je suis un peu novice en matière de codage et j'ai trouvé la documentation de la bibliothèque Joystick un peu clairsemée du côté de l'implémentation réelle - mais un peu de recherche ciblée sur Google m'a conduit à d'autres exemples qui m'ont aidé à comprendre ce qui se passe. Consultez la section des ressources à la fin pour plus de détails.

Tout ce que j'avais à faire était d'identifier les broches X/Y, de lire leur état et de l'envoyer à la bibliothèque Joystick. L'Arduino est apparu comme un Leonardo pour Windows et était correctement configuré en tant que périphérique Joystick.

J'ai pu le configurer dans Elite Dangerous, parallèlement à ma configuration HOTAS existante et faire en sorte que le joystick contrôle correctement les choses et n'entre pas en conflit avec le HOTAS. Cela fonctionne également bien dans Star Wars: Squadrons - je l'ai configuré comme une bascule rapide pour configurer les boucliers pendant le combat.

Les fichiers qui fonctionnent avec ma configuration Joystick

J'ai téléchargé mes fichiers actuels (octobre 2020) sur Codepile.

  • Code Arduino (fichier.ino)
  • Deej config.yaml

Étape 6: Fin

Finir
Finir

Eh bien, celui-ci est fait. Cela fonctionne et je suis plutôt satisfait de la façon dont cela s'est déroulé. Et j'en ai appris un peu plus sur la conception matérielle, l'intégration et la programmation Arduino.

Étape 7: Addenda..dum..dum

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

VLC -- cet impressionnant lecteur audio et vidéo a une petite bizarrerie où le niveau de volume, lorsqu'il est contrôlé de l'extérieur, passe de 0% à 27%. Cela ne se produit pas lors du réglage du niveau à l'aide du contrôle du volume de l'interface intégrée à l'application, uniquement avec des commandes externes telles que Deej.

Le développeur Deej a rapidement trouvé une solution de contournement dans VLC qui fait le travail, voir l'image ci-dessus:

"… si vous souhaitez désactiver ce comportement de " Suivi ", vous pouvez le faire en changeant le module de sortie audio de VLC. J'ai utilisé DirectX dans mes tentatives ici. Vous devrez redémarrer VLC pour que le changement prenne effet. (vous aurez toujours avoir une session audio Windows et pouvoir la contrôler via deej, cela empêchera simplement la barre de volume VLC de bouger avec)"

Étape 8: Ressources supplémentaires

Ressources additionnelles
Ressources additionnelles

Trouvé via le puissant Goog, répertorié sans ordre particulier…

  • Arduino Joystick Library (v2) - nécessaire pour intégrer le joystick
  • Guide de connexion Sparkfun Pro Micro - bonne ressource sur cet Arduino
  • deej - le logiciel qui pilote les potards
  • Types de connecteurs USB - qui savait qu'il y avait autant de variantes ?
  • Brochages analogiques Arduino Pro Micro
  • Joystick de jeu Arduino Leonardo - Leonardo est similaire au Pro Micro, mais en plus grand
  • Port Arduino Pro Micro (Clone) non détecté (Solution) - lorsque vous briquez votre Pro Micro (je l'ai fait)
  • Arduino Leonardo/Micro en tant que contrôleur de jeu/joystick
  • Exemple d'utilisation d'une touche multimédia pour couper le son - en utilisant la bibliothèque du projet HID
  • Exemple de code de bibliothèque de projet HID pour mettre en pause / lire des médias
  • Un autre exemple de code montrant le contrôleur de la manette de jeu.
  • ArduinoGamingController_updated - bonne description du code de l'utilisation de la bibliothèque Joystick
  • Calculateur de résistance à LED - pour savoir de quelle taille de résistance vous auriez besoin dans votre projet
  • Bibliothèque d'icônes - flaticon.com - source des images utilisées au-dessus des boutons
  • Un autre décodeur de couleur de résistance - cliquez sur une couleur et un alto !

Conseillé: