Table des matières:

Adaptateur Arduino PS/2 vers USB : 7 étapes (avec photos)
Adaptateur Arduino PS/2 vers USB : 7 étapes (avec photos)

Vidéo: Adaptateur Arduino PS/2 vers USB : 7 étapes (avec photos)

Vidéo: Adaptateur Arduino PS/2 vers USB : 7 étapes (avec photos)
Vidéo: Making flash memory from SD Card 2024, Juillet
Anonim
Adaptateur Arduino PS/2 vers USB
Adaptateur Arduino PS/2 vers USB
Adaptateur Arduino PS/2 vers USB
Adaptateur Arduino PS/2 vers USB

Avez-vous déjà voulu utiliser votre ancien clavier PS/2 avec votre ordinateur portable ou votre nouveau PC de bureau et avez découvert qu'ils n'avaient plus de ports PS/2 ? Et puis plutôt que d'acheter un adaptateur PS/2 vers USB bon marché comme le ferait une personne normale, je voulais utiliser votre Arduino comme adaptateur PS/2 vers USB. Alors vous êtes au bon endroit:)

Juste avertissement avant d'y entrer. Lorsque vous utilisez votre UNO/Mega en tant que périphérique USB-HID (non limité au clavier, il peut même s'agir d'une souris, d'un joystick, etc.), vous perdrez temporairement ses fonctions en tant qu'Arduino. Je veux dire par là que vous ne pouvez pas utiliser les communications série et que vous ne pouvez pas les reprogrammer via USB. C'est parce que nous allons écraser le firmware sur sa puce d'interface USB (petit gars près du port USB Atmega8U2 et 16U2 selon la révision). Mais ne vous inquiétez pas, vous ne pouvez pas réellement briquer votre UNO/Mega en faisant cela, il est toujours réversible.

De plus, par hasard, si vous avez un Arduino qui a déjà une capacité USB-HID (Arduino Pro Micro ou Leonardo, etc. faites une recherche sur Google), vous pouvez oublier que cette instructable a jamais existé, allez directement ici pour vous sauver d'un monde de problèmes, juste blague!

Fournitures

  • Matériel

    • Arduino UNO ou Mega
    • Clavier PS/2
    • En option, un Arduino supplémentaire ou tout type de programmeur USB (USBasp, etc.) peut être utile.
  • Logiciel

    • Atmel FLIP
    • Bibliothèque PS2KeyAdvanced pour Arduino IDE

Étape 1: Câblage et configuration

Câblage et configuration
Câblage et configuration
Câblage et configuration
Câblage et configuration
Câblage et configuration
Câblage et configuration
Câblage et configuration
Câblage et configuration

Selon la situation, vous pouvez soit trouver une carte de dérivation, soit récupérer un ancien port d'une carte mère (mon deuxième essai) ou si vous vous sentez particulièrement de mauvaise humeur, vous pouvez même couper complètement la prise violette et exposer les 4 fils (mon premier essai) et les connecter à l'ONU.

Clavier_Arduino

+5V(VCC)_+5V

TERRE_TERRE

HORLOGE_ BROCHE 2**

DATA_PIN3*

* Vous pouvez changer la broche DATA en ce que vous voulez, mais n'oubliez pas de mettre à jour le croquis.

** L'HORLOGE doit être connectée à une broche d'interruption sur Arduino qui ne peut être que la broche 2 ou 3 (n'oubliez pas de mettre à jour le croquis) sur un UNO. Pour plus d'informations et différentes configurations de carte, vous pouvez consulter la section des commentaires des exemples de bibliothèque PS2KeyAdvanced.

Étape 2: Test du clavier

Avant de vous mettre sur le pont, assurez-vous d'abord que tout fonctionne sur le clavier et la bibliothèque.

Ici, j'ai joint une version modifiée de SimpleTest.ino à partir d'exemples de bibliothèque PS2KeyAdvanced avec des broches d'horloge et de données mises à jour ainsi qu'une représentation "make" et "break". Voici quelques explications pour la sortie.

  • Ce système de scancode "make" et "break" et "Code" qui est le scancode isolé (c & 0xFF) de la pression ou du relâchement de la touche joue un rôle important dans la conversion PS/2 vers USB et je vous recommande d'étudier les 2 autres exemples fournis avec la bibliothèque pour mieux comprendre si vous envisagez d'améliorer ou de modifier (remappage des clés sur différentes mises en page) l'esquisse finale. Vous pouvez également obtenir une liste complète des scancodes PS/2 à partir de la bibliothèque en ouvrant les fichiers 'PS2KeyAdvanced.h' ou 'PS2KeyCode.h' à partir de '\Documents\Arduino\libraries\PS2KeyAdvanced\src\'
  • "Status Bits" fait référence aux touches de modification (Ctrl, Alt, Windows, Shift/Caps) et vous verrez qu'avec chaque touche de modification supplémentaire, cette valeur change tandis que le "Code" principal de la touche normale (non modificateur) est inchangé. Mais dans l'esquisse finale, j'ai ignoré cette méthode et implémenté ces touches de modification comme de simples touches (vous verrez que ces touches de modification ont également un scancode "make" et "break" indépendant des touches normales, que plusieurs touches soient enfoncées ou non.) car cela facilite les choses avec le protocole USB-HID.

Étape 3: Aperçu de la conversion PS/2 vers USB

Avant de mettre à jour l'Atmega8U2 ou 16U2 (UNO Rev3) pour identifier notre Arduino en tant que clavier USB, nous devons nous assurer que tous les éléments de conversion fonctionnent correctement et que le croquis final final est téléchargé, sinon ce sera une douleur majeure de continuer à écraser le firmware encore et encore entre les fichiers hexadécimaux d'origine et de clavier USB juste pour que vous puissiez télécharger le bon croquis. Cela devient particulièrement vrai si vous n'avez pas de programmeur externe comme un USBasp ou un autre Arduino à utiliser comme FAI. Nous allons donc télécharger ici une version « DEBUG » de l'esquisse finale avec une sortie lisible par l'homme (via le moniteur série) pour tester les choses.

La sortie que vous voyez sera formatée comme ceci lorsque chaque touche est relâchée, 00 00 00 00 00 00 00 00

Voici une explication de base pour la sortie attendue,

Pour chaque nouvelle touche de modification multiple, vous devriez obtenir une nouvelle ligne avec des valeurs différentes pour 'xx'. Enfin, lorsque vous relâchez toutes les touches de modification, « xx » devrait devenir 00

xx 00 00 00 00 00 00 00

Pour chaque nouvelle pression de touche normale multiple (par exemple, nous appuierons à la fois sur la touche hypothétique a, la touche b et la touche c avec les valeurs 'xx', 'yy' et 'zz' dans cet ordre), vous devriez obtenir en continu (pas obligatoire) des nouvelles lignes comme celle-ci,

00 00 xx yy zz 00 00 00

lorsque vous ne relâchez que la touche b, la sortie doit changer pour,

00 00 xx 00 zz 00 00 00

et si vous appuyez sur la nouvelle touche d avec la valeur 'nn' sans relâcher la touche a ou la touche b, votre sortie devrait changer pour,

00 00 xx nn zz 00 00 00

et enfin revenir à cela lorsque chaque touche est relâchée,

00 00 00 00 00 00 00 00

et enfin si vous appuyez sur Caps Lock, Num Lock ou Scroll Lock, vous devriez obtenir quelque chose comme ça avec plusieurs lignes en même temps,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Si tout se passe ici, vous êtes d'or pour continuer!

Étape 4: Explication technique

Explication technique
Explication technique
Explication technique
Explication technique

Si vous le souhaitez, vous pouvez sauter cette étape. Ceci est juste une explication pour les sorties précédentes. Le tableau de sortie de 8 octets que vous avez vu est formaté selon la fig.1 ci-dessus. Vous pouvez en apprendre beaucoup plus à ce sujet et aussi comment l'octet d'état des touches de modification est écrit à partir de ce wiki sur USB-HID. Fondamentalement, ce que fait mon code, c'est qu'à chaque fois qu'une nouvelle touche est enfoncée (le protocole PS/2 l'appelle "make"), il parcourt les 6 derniers octets du tableau qui sont utilisés pour les touches normales et remplit le premier octet vide qu'il trouve avec le 'HID scancode' (indiqué comme sur la fig.2 Vous pouvez également trouver une liste complète à partir du PDF ci-joint) pour le 'PS/2 scancode' reçu. Et enfin, lorsque la touche appropriée est relâchée (le protocole PS/2 appelle cela « pause »), le code parcourt le tableau d'octets actuel et n'efface que l'octet pertinent.

Si vous avez suivi jusqu'ici et aussi si vous lisez la page wiki, vous verrez qu'il y a un petit problème dans cette méthode, normalement lorsque la clé est relâchée, dans le protocole HID, les octets restants sont réorganisés pour se débarrasser des octets vides entre les octets non vides restants. Mais pour une raison quelconque, peu importe le nombre de façons que j'ai essayées, je ne pouvais pas le faire fonctionner comme prévu sans effacer accidentellement les octets indésirables pour les touches enfoncées. Si vous pouvez améliorer cela pour que cela fonctionne, veuillez laisser un commentaire. Bien qu'à la fin de la journée, ce problème n'affecte pas la fonctionnalité du clavier tant que l'Arduino enregistre toujours chaque touche enfoncée quel que soit l'ordre de pression (ce qui n'affecte rien dans l'utilisation pratique).

Étape 5: Téléchargement du croquis final

Donc, avant de mettre à jour enfin le firmware d'Atmega8U2 ou 16U2 (UNO Rev3) pour identifier notre Arduino en tant que clavier USB, nous devons télécharger le croquis final. Après avoir téléchargé cela, si vous allez sur le moniteur série, vous verrez qu'il imprime des ordures à chaque nouvelle touche enfoncée. C'est de bon augure que tout fonctionne comme prévu et que nous pouvons passer à l'étape finale. YAY!!!

Étape 6: mise à jour du micrologiciel

Enfin, vous pouvez mettre à jour le firmware de votre Arduino pour l'enregistrer en tant que clavier USB. Pour cela, je ne vais pas entrer dans les détails car cela rendra cette instructable trop longue.

  1. Suivez ce guide d'arduino.cc à propos de "Mise à jour des Atmega8U2 et 16U2 sur un Uno ou un Mega2560 à l'aide de DFU", mais plutôt que d'utiliser "Arduino-usbserial-uno.hex", utilisez le "Arduino-keyboard-0.3.hex" joint.
  2. Dans FLIP, n'oubliez pas de sélectionner le périphérique cible comme Atmega8U2 ou 16U2 selon votre Arduino et, à partir de sélectionner le support de communication, choisissez USB et enfin chargez le fichier hexadécimal correct avant de sélectionner exécuter.
  3. Si vous rencontrez une erreur de pilote, accédez au gestionnaire de périphériques Windows et sélectionnez pour rechercher le pilote inconnu dans le répertoire d'installation de FLIP '\Program Files (x86)\Atmel\'
  4. Si vous avez rencontré des erreurs lors de la mise à jour du firmware à partir de FLIP à plusieurs reprises, fermez FLIP et exécutez "Réinitialiser les préférences" à partir de "Menu Démarrer\FLIP\", puis redémarrez FLIP et effectuez les étapes de configuration avant de réessayer, cela fonctionne généralement pour moi.
  5. Si vous souhaitez restaurer votre Arduino à son état d'origine, suivez simplement le guide arduino.cc ci-dessus à la lettre sans utiliser ce fichier hexadécimal.

Étape 7: Profitez……

Prendre plaisir……
Prendre plaisir……

Profitez maintenant de votre clavier PS/2 vers USB nouvellement converti…. P. S. Ce Instructable a été entièrement écrit à partir d'un clavier PS/2 externe connecté à mon ordinateur portable via l'Arduino:)

Conseillé: