Table des matières:
- Fournitures
- Étape 1: Circuit électrique
- Étape 2: Assemblage
- Étape 3: Programmation
- Étape 4: Configuration des raccourcis
- Étape 5: Améliorations
Vidéo: Clavier programmable : 5 étapes (avec images)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Dans ce projet, je montrerai comment créer un clavier programmable relativement simple et peu coûteux pour mapper vos raccourcis clavier, applications et plus encore les plus utilisés.
Ce clavier est détecté comme clavier dans tous les principaux systèmes d'exploitation, aucun pilote supplémentaire n'est nécessaire.
Fournitures
- Codeur rotatif.
- Beaucoup de boutons poussoirs (selon vos besoins).
- Arduino Pro Micro, Arduino Leonardo ou toute autre carte de développement avec MCU Atmega32U4.
- Fil, soudure, fer à souder, etc.
- (Facultatif) Une base lourde pour empêcher le clavier de glisser, j'utilise un ancien disque dur 3,5"
Étape 1: Circuit électrique
J'ai choisi d'utiliser la carte de développement Arduino Pro Micro avec le MCU Atmega32U4 qui dispose de 18 broches numériques utilisables.
Les broches pour connecter les boutons poussoirs et l'encodeur rotatif ont été sélectionnées sans ordre particulier, mais certaines choses sont à noter:
- Toutes les broches capables de lecture numérique ont des pull-ups internes qui permettent d'atténuer les résistances de pull-down externes. Bien sûr, le code doit être mis à jour en conséquence, car il s'attend à ce que l'état de la broche passe de bas à haut lorsque les boutons-poussoirs sont enfoncés.
- Dans l'exemple de la bibliothèque encoder.h, il est noté que les meilleures performances de l'encodeur sont atteintes lorsque les deux broches sont connectées aux broches capables d'interrompre le MCU. La plupart des broches analogiques d'Atmega32U4 n'ont pas de capacité d'interruption.
- Les valeurs exactes de la résistance pull-down n'ont pas beaucoup d'importance, tout ce qui va de 1 kΩ à 100 kΩ fonctionnera bien. Des valeurs de résistance plus élevées permettent une dissipation de puissance plus faible, mais entraînent une réponse plus lente des broches aux changements de tension. Choisissez simplement les résistances de valeur que vous avez le plus.
- Les codeurs mécaniques ne sont pas les choses les plus fiables en raison de l'usure des contacts et des rebonds. C'est pourquoi une bonne solution anti-rebond est nécessaire. Les valeurs de condensateur et les temps de retard que j'ai choisis dans le code ne vous fourniront probablement pas les meilleurs résultats. Un peu d'expérimentation est donc nécessaire. Ou passez à quelque chose comme un encodeur optique, mais son prix est nettement plus élevé.
Étape 2: Assemblage
Je voulais rendre le clavier aussi propre que possible, j'ai donc soudé tous les composants à l'arrière de la carte prototype. J'ai pensé que le clavier serait plus ergonomique s'il était utilisé surélevé à petit angle. C'est pourquoi j'ai soudé Arduino Pro Micro sur une carte séparée et connecté toutes les broches numériques avec du fil aux boutons-poussoirs. Il est plus pratique de connecter le câble USB de cette façon.
J'ai trouvé un vieux disque dur de 3,5 à utiliser comme base pour le clavier, il est assez lourd et empêche la forme de la carte de glisser sur le bureau lors du fonctionnement (les patins antidérapants aident aussi). Il a également des trous de vis de 3 mm dans lesquels j'ai vissé des entretoises en laiton et fixe la planche à un léger angle.
Étape 3: Programmation
Le code est écrit avec Arduino IDE. Vous devrez installer 2 bibliothèques:
- Encodeur par Paul Stoffregen
- Clavier par Arduino
Pour compiler pour Atmega32U4, vous devez également installer le fichier de carte Arduino Pro Micro, Sparkfun propose un excellent tutoriel pour le faire.
Une chose à noter à l'avance est de faire attention à ne pas laisser "touches enfoncées" dans votre code. Cela m'est arrivé et MCU spammait constamment une combinaison de touches. La seule façon dont je sais comment résoudre ce problème est de graver à nouveau le chargeur de démarrage sur MCU. Si vous finissez comme moi, vous pouvez suivre ce guide pour graver le chargeur de démarrage, vous aurez besoin d'une autre carte arduino à utiliser en tant que programmeur.
Dans la boucle principale, le MCU lit d'abord l'état de chaque bouton-poussoir, si un changement d'état de BAS à HAUT est détecté, la fonction keyboard_shortcut(i) est exécutée. La variable i est un identifiant du bouton enfoncé, le nombre total de boutons-poussoirs est défini par ALL_BUTTONS (dans mon cas 15). Lorsqu'il est exécuté, keyboard_shortcut(i) envoie CTRL+SHIFT puis une lettre qui est mappée sur l'identifiant du bouton: 1->A, 2->B, 3->C etc. Certaines combinaisons comme CTRL+SHIFT+N sont omises car elles sont déjà utilisé dans Windows10 par défaut (dans ce cas pour créer un nouveau dossier). Voici la liste de tous les raccourcis Windows par défaut. Après un court délai, le MCU envoie un signal pour relâcher toutes les touches et la fonction revient à la boucle principale.
Une fois tous les boutons vérifiés, le MCU vérifie si la position de l'encodeur rotatif a changé et si c'est le cas, keyboard_shortcut(i) est exécuté avec un identifiant unique.
Appuyez sur le bouton de l'encodeur pour inverser la variable booléenne encoderButtonFlag. Lorsque l'encodeur est tourné, un raccourci différent est envoyé au PC, en fonction du sens de rotation et de la valeur encoderButtonFlag.
Si debugFlag est défini sur 1, les messages de débogage sont envoyés via UART au moniteur série.
Étape 4: Configuration des raccourcis
Ce que chaque raccourci fait est aussi pour vous, nous avons tous des préférences différentes. Je vais fournir les raccourcis que j'ai configurés pour moi-même à titre d'exemple. J'utilise Linux Mint 19.3 avec le gestionnaire de bureau xfce4, donc mes exemples impliquent principalement des scripts bash, mais je montrerai également quelques exemples de base pour Windows10.
Dans la première image, vous pouvez voir quels scripts j'ai mappés à quels raccourcis. Cela se fait à partir du menu des paramètres xfce, le processus est simple. Vous pouvez trouver ces scripts dans mon référentiel GitHub
Les 6 boutons-poussoirs plus petits en bas permettent de démarrer des applications telles qu'un navigateur Web ou un gestionnaire de fichiers. Certaines de ces applications sont appelées à partir du script start_only_one_app.sh, qui obtient tous les noms d'applications démarrées et recherche l'application que vous souhaitez démarrer. Si la fenêtre d'application existe déjà, elle obtient le focus, sinon une nouvelle instance d'une application est démarrée.
Autres scripts:
- 2nd_display_control.sh - active/désactive le deuxième moniteur.
- moon_lamp.sh - allume/éteint ma lampe lunaire.
- pc_load.sh - crée une bulle de notification avec l'utilisation et les températures actuelles du processeur et du processeur graphique.
- shutdown.sh - initialise l'arrêt du PC avec un délai de 1 minute et crée une bulle de notification dans laquelle le temps restant est affiché.
- spec_vpn.sh - se connecte à un serveur OpenVPN spécifique ou si la connexion existe déjà, se déconnecte du serveur.
- short_controll.sh - prend la commande (plus, moins, tabulation, fermeture) comme argument, détecte quelle fenêtre est maintenant focalisée et si une application spécifique est trouvée active, exécute l'action de contrôle. Par exemple, pour ouvrir un nouvel onglet dans l'éditeur de texte sublime, le raccourci par défaut est "CTRL+N" et dans le terminal xfce - "CTRL+T", donc ce script permet d'ouvrir un nouvel onglet dans sublime et terminal avec le même bouton poussoir.
La première fonction de l'encodeur rotatif est de contrôler le volume, la deuxième fonction est de contrôler le zoom de la fenêtre active via le raccourci_controll.sh.
Pour le système d'exploitation Windows, vous pouvez mapper des raccourcis vers des applications via la fenêtre des propriétés du programme, comme indiqué dans la deuxième image. Pour toute autre chose, vous voudrez utiliser AutoHotkey. C'est un langage de script d'automatisation pour Windows.
Quelques exemples simples de syntaxe AHK:
;Contrôle du volume
^+t::Envoyer {Volume_Up}
revenir
^+v:: Envoyer {Volume_Down}
revenir
;Fermer la fenêtre active
^+h::WinGetTitle, Titre, A
Message Post, 0x112, 0xF060,,, %Titre%
revenir
;Éteindre le PC
^+b::Exécuter l'arrêt /s
Étape 5: Améliorations
Quelques améliorations possibles:
- Boutons poussoirs de meilleure qualité.
- Le prototype de PCB fléchit beaucoup lorsque les boutons sont enfoncés.
- Éclairage RVB pour changer de couleur en fonction de la fonction sur laquelle l'encodeur rotatif est réglé.
- Plus de boutons (utiliser IO expander IC).
- Meilleur encodeur rotatif (ou meilleure solution anti-rebond).
Conseillé:
DoReMiQuencer - Séquenceur MIDI programmable avec clavier : 7 étapes
DoReMiQuencer - Séquenceur MIDI programmable avec clavier : Cet appareil a été créé pour être utilisé avec VCVRack, un synthétiseur modulaire virtuel créé par VCV, mais peut servir de contrôleur MIDI à usage général. Il sert de séquenceur ou de clavier MIDI, selon le mode sélectionné. Les notes MIDI mappées sur le ke
Clavier programmable en carton : 8 étapes (avec photos)
Clavier programmable en carton : Au fur et à mesure que la technologie se développe, les gens veulent que les choses soient de plus en plus virtuelles, mais parfois, il est bien plus pratique et pratique d'avoir quelque chose de physique que vous pouvez toucher et interagir avec vos propres mains. Un exemple de
Comment démonter un ordinateur avec des étapes et des images faciles : 13 étapes (avec des images)
Comment démonter un ordinateur avec des étapes et des images faciles : Il s'agit d'instructions sur la façon de démonter un PC. La plupart des composants de base sont modulaires et facilement démontables. Cependant, il est important que vous soyez organisé à ce sujet. Cela vous aidera à éviter de perdre des pièces, et aussi à faire le remontage ea
Contrôleur USB des basses, des aigus et du volume avec voyants du clavier : 6 étapes (avec images)
Contrôleur USB des graves, des aigus et du volume avec voyants de clavier : j'ai un Creative SoundBlaster Audigy dans mon ordinateur de bureau principal et j'avais besoin d'un moyen de régler rapidement les paramètres des graves et des aigus (ainsi que le volume) lors de l'écoute de supports audio ou vidéo . J'ai adapté le code de deux sources données dans le
Interface de clavier avec 8051 et affichage des numéros de clavier en 7 segments : 4 étapes (avec images)
Interface du clavier avec 8051 et affichage des numéros du clavier dans 7 segments : dans ce didacticiel, je vais vous expliquer comment nous pouvons interfacer le clavier avec le 8051 et afficher les numéros du clavier dans un affichage à 7 segments