Inhaltsverzeichnis:

Arduino PS/2-zu-USB-Adapter - Gunook
Arduino PS/2-zu-USB-Adapter - Gunook

Video: Arduino PS/2-zu-USB-Adapter - Gunook

Video: Arduino PS/2-zu-USB-Adapter - Gunook
Video: Переходник USB TO PS/2 (всеядный, для старой техники). USB TO PS / 2 adapter ( for old technology) 2024, November
Anonim
Arduino PS/2-zu-USB-Adapter
Arduino PS/2-zu-USB-Adapter
Arduino PS/2-zu-USB-Adapter
Arduino PS/2-zu-USB-Adapter

Wollten Sie schon immer Ihre alte PS/2-Tastatur mit Ihrem Laptop oder neuen Desktop-PC verwenden und haben festgestellt, dass diese keine PS/2-Anschlüsse mehr haben? Und dann, anstatt einen billigen PS/2-zu-USB-Adapter zu kaufen, wie es ein normaler Mensch tun würde, wollte Ihr Arduino als PS/2-zu-USB-Adapter verwenden. Dann sind Sie bei uns genau richtig:)

Faire Warnung, bevor wir uns darauf einlassen. Wenn Sie Ihr UNO/Mega als USB-HID-Gerät verwenden (nicht auf Tastatur beschränkt, es kann sogar eine Maus, ein Joystick usw. sein), verlieren Sie vorübergehend seine Funktionen als Arduino. Damit meine ich, Sie können die serielle Kommunikation nicht verwenden und Sie können sie nicht über den USB neu programmieren. Dies liegt daran, dass wir die Firmware auf seinem USB-Schnittstellenchip überschreiben werden (kleiner Kerl in der Nähe des USB-Ports Atmega8U2 und 16U2, je nach Revision). Aber keine Sorge, Sie können Ihre UNO/Mega nicht wirklich mauern, indem Sie dies tun, es ist immer reversibel.

Auch wenn Sie zufällig ein Arduino haben, das bereits über eine USB-HID-Fähigkeit verfügt (Arduino Pro Micro oder Leonardo usw., eine Google-Suche durchführen), können Sie dieses instructable, das jemals existierte, vergessen, direkt hierher zu gehen, um sich vor einer Welt der Probleme zu retten, nur scherzhaft!

Lieferungen

  • Hardware

    • Arduino UNO oder Mega
    • PS/2-Tastatur
    • Optional kann ein zusätzlicher Arduino oder eine beliebige Art von USB-Programmierer (USBasp usw.) nützlich sein.
  • Software

    • Atmel FLIP
    • PS2KeyAdvanced-Bibliothek für Arduino IDE

Schritt 1: Verkabelung und Einrichtung

Verkabelung und Einrichtung
Verkabelung und Einrichtung
Verkabelung und Einrichtung
Verkabelung und Einrichtung
Verkabelung und Einrichtung
Verkabelung und Einrichtung
Verkabelung und Einrichtung
Verkabelung und Einrichtung

Je nach Situation können Sie entweder ein Breakout-Board finden oder einen alten Port von einem Motherboard retten (mein zweiter Versuch) oder wenn Sie sich besonders launisch fühlen, können Sie sogar die violette Buchse ganz durchschneiden und die 4 Drähte freilegen (mein erster Versuch) und verbinde sie mit der UNO.

Tastatur_Arduino

+5V(VCC)_+5V

ERDUNG_GND

UHR_PIN 2**

DATEN_PIN3*

* Sie können den DATA-Pin beliebig ändern, aber denken Sie daran, die Skizze zu aktualisieren.

** Die Uhr muss mit einem Interrupt-Pin auf Arduino verbunden werden, der nur entweder PIN 2 oder 3 sein kann (denken Sie daran, die Skizze zu aktualisieren) auf einem UNO. Weitere Informationen und verschiedene Board-Konfigurationen finden Sie im Kommentarbereich der PS2KeyAdvanced-Bibliotheksbeispiele.

Schritt 2: Tastatur testen

Bevor Sie alle Hände an Deck gehen, stellen Sie zunächst sicher, dass alles an Tastatur und Bibliothek funktioniert.

Hier habe ich eine modifizierte Version des SimpleTest.ino aus PS2KeyAdvanced-Bibliotheksbeispielen mit aktualisierten Clock- und Data-Pins und auch einer "make"- und "break"-Darstellung angehängt. Hier ist eine Erklärung für die Ausgabe.

  • Dieses "Make"- und "Break"-Scancode-System und "Code", der der isolierte (c & 0xFF) Scancode entweder des Tastendrucks oder der Tastenfreigabe ist, spielt eine wichtige Rolle bei der PS/2-zu-USB-Konvertierung und ich empfehle Ihnen, es zu studieren die anderen 2 Beispiele, die mit der Bibliothek geliefert werden, um ein besseres Verständnis zu erhalten, wenn Sie planen, die endgültige Skizze zu verbessern oder zu ändern (Schlüssel zu anderen Layouts neu zuzuordnen). Sie können auch eine vollständige Liste der PS/2-Scancodes aus der Bibliothek abrufen, indem Sie entweder die Dateien 'PS2KeyAdvanced.h' oder 'PS2KeyCode.h' von '\Documents\Arduino\libraries\PS2KeyAdvanced\src\' öffnen.
  • "Status Bits" bezieht sich auf Modifikatortasten (Strg, Alt, Windows, Shift/Caps) und Sie werden sehen, dass sich dieser Wert mit jeder zusätzlichen Modifikatortaste ändert, während der Haupt-"Code" der normalen (Nicht-Modifikator-)Taste unverändert bleibt. Aber in der letzten Skizze habe ich diese Methode ignoriert und diese Modifikatortasten als einfache Tastendrücke implementiert (Sie werden sehen, dass diese Modifikatortasten auch einen "make" - und "break" -Scancode haben, unabhängig von normalen Tasten, unabhängig davon, ob mehrere Tasten gedrückt werden oder nicht.) weil es die Dinge mit dem USB-HID-Protokoll einfacher macht.

Schritt 3: PS/2-zu-USB-Konvertierungsvorschau

Bevor wir den Atmega8U2 oder 16U2 (UNO Rev3) aktualisieren, um unseren Arduino als USB-Tastatur zu identifizieren, sollten wir sicherstellen, dass alle Konvertierungsarbeiten korrekt funktionieren und die endgültige Skizze hochgeladen wird, sonst wird es ein großer Schmerz sein, die Firmware immer wieder zwischen Original- und USB-Tastatur-Hex-Dateien, nur damit Sie die richtige Skizze hochladen können. Dies gilt insbesondere, wenn Sie keinen externen Programmierer wie einen USBasp oder einen anderen Arduino haben, der als ISP verwendet werden kann. Hier werden wir also eine 'DEBUG'-Version der endgültigen Skizze mit einer für Menschen lesbaren Ausgabe (über den seriellen Monitor) hochladen, um die Dinge zu testen.

Die angezeigte Ausgabe wird so formatiert, wenn jede Taste losgelassen wird.

00 00 00 00 00 00 00 00

Hier ist eine grundlegende Erklärung für die erwartete Ausgabe:

Für jeden neuen Mehrfach-Modifikator-Tastendruck sollten Sie einen Zeilenumbruch mit anderen Werten für 'xx' erhalten. Wenn Sie schließlich alle Modifikatortasten loslassen, sollte 'xx' zu 00 werden

xx 00 00 00 00 00 00 00

Für jeden neuen mehrfachen normalen Tastendruck (zum Beispiel drücken wir sowohl die hypothetische Taste a, Taste b und Taste c mit den Werten 'xx', 'yy' und 'zz' in dieser Reihenfolge) sollten Sie kontinuierlich erhalten (nicht obligatorisch) Zeilenumbrüche wie diese,

00 00 xx yy zz 00 00 00

Wenn Sie nur die Taste b loslassen, sollte der Ausgang wechseln zu,

00 00 xx 00 zz 00 00 00

und wenn Sie eine neue Taste d mit dem Wert 'nn' drücken, ohne die Taste a oder b loszulassen, sollte sich Ihre Ausgabe ändern auf,

00 00 xx nn zz 00 00 00

und kehre schließlich zu diesem zurück, wenn jede Taste losgelassen wird,

00 00 00 00 00 00 00 00

und schließlich, wenn Sie entweder Caps Lock, Num Lock oder Scroll Lock drücken, sollten Sie so etwas mit mehreren Zeilen gleichzeitig erhalten

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Wenn hier alles passiert, sind Sie goldrichtig, um fortzufahren!

Schritt 4: Technische Erklärung

Technische Erklärung
Technische Erklärung
Technische Erklärung
Technische Erklärung

Wenn Sie möchten, können Sie diesen Schritt überspringen. Dies ist nur eine Erklärung für die vorherigen Ausgaben. Das ausgegebene 8-Byte-Array, das Sie gesehen haben, ist gemäß der obigen Abb. 1 formatiert. Sie können viel mehr darüber erfahren und auch, wie das Statusbyte der Modifikatortasten aus diesem Wiki über USB-HID geschrieben wird. Grundsätzlich macht mein Code jedes Mal, wenn eine neue Taste gedrückt wird (PS/2-Protokoll bezeichnet dies als "make"), die letzten 6 Bytes des Arrays, die für normale Tastendrücke verwendet werden, und füllt die erste aus leeres Byte findet es mit dem entsprechenden 'HID-Scancode' (Darstellung wie in Abb.2. Eine vollständige Liste finden Sie auch aus dem beigefügten PDF) für den empfangenen 'PS/2-Scancode'. Und schließlich, wenn die entsprechende Taste losgelassen wird (PS/2-Protokoll bezeichnet dies als 'break'), durchläuft der Code das aktuelle Byte-Array und löscht nur das relevante Byte.

Wenn Sie bis hierher gefolgt sind und auch die Wiki-Seite lesen, werden Sie feststellen, dass es bei dieser Methode ein kleines Problem gibt. Normalerweise werden beim Loslassen des Schlüssels im HID-Protokoll die verbleibenden Bytes neu angeordnet, um leere Bytes loszuwerden zwischen verbleibenden nicht leeren Bytes. Aber aus irgendeinem Grund, egal wie viele Möglichkeiten ich es versucht habe, konnte ich es nicht wie beabsichtigt zum Laufen bringen, ohne versehentlich auch unerwünschte Bytes für gedrückte Tasten zu löschen. Wenn Sie dies verbessern können, damit es funktioniert, hinterlassen Sie bitte einen Kommentar. Obwohl dieses Problem am Ende des Tages die Funktionalität der Tastatur nicht beeinträchtigt, solange das Arduino immer noch jede gedrückte Taste registriert, unabhängig von ihrer gedrückten Reihenfolge (was im praktischen Gebrauch nichts beeinflusst).

Schritt 5: Hochladen der endgültigen Skizze

Bevor Sie also endlich die Firmware von Atmega8U2 oder 16U2 (UNO Rev3) aktualisieren, um unser Arduino als USB-Tastatur zu identifizieren, müssen wir die Final Sketch hochladen. Nachdem Sie dies hochgeladen haben, werden Sie, wenn Sie zum seriellen Monitor gehen, sehen, dass er bei jeder neuen gedrückten Taste Müll druckt. Dies ist ein gutes Omen, dass alles wie beabsichtigt funktioniert und wir mit dem letzten Schritt fortfahren können. YAY!!!

Schritt 6: Aktualisieren der Firmware

Schließlich können Sie die Firmware Ihres Arduino aktualisieren, um es als USB-Tastatur zu registrieren. Dafür werde ich nicht auf viele Details eingehen, da dies dies zu lang machen wird.

  1. Befolgen Sie diese Anleitung von arduino.cc zum Thema "Aktualisieren des Atmega8U2 und 16U2 auf einem Uno oder Mega2560 mit DFU", verwenden Sie jedoch anstelle von "Arduino-usbserial-uno.hex" das angehängte "Arduino-Keyboard-0.3.hex".
  2. Denken Sie in FLIP daran, das Zielgerät als Atmega8U2 oder 16U2 auszuwählen, abhängig von Ihrem Arduino und wählen Sie das Kommunikationsmedium aus, wählen Sie USB und laden Sie schließlich die richtige Hex-Datei, bevor Sie Ausführen auswählen.
  3. Wenn ein Treiberfehler aufgetreten ist, gehen Sie zum Windows-Gerätemanager und wählen Sie aus, um im Installationsverzeichnis von FLIP '\Program Files (x86)\Atmel\' nach dem unbekannten Treiber zu suchen.
  4. Wenn beim Aktualisieren der Firmware von FLIP mehrmals Fehler aufgetreten sind, schließen Sie FLIP und führen Sie 'Einstellungen zurücksetzen' über 'Startmenü\FLIP\' aus und starten Sie dann FLIP neu und führen Sie die Konfigurationsschritte aus, bevor Sie es erneut versuchen. Dies funktioniert normalerweise für mich.
  5. Wenn Sie Ihr Arduino in den ursprünglichen Zustand zurückversetzen möchten, folgen Sie einfach der obigen arduino.cc-Anleitung, ohne diese Hex-Datei zu verwenden.

Schritt 7: Genießen Sie……

Genießen……
Genießen……

Genießen Sie jetzt Ihre neu konvertierte PS/2-zu-USB-Tastatur…. PS Dieses Instructable wurde vollständig von einer externen PS / 2-Tastatur geschrieben, die über das Arduino mit meinem Laptop verbunden war:)

Empfohlen: