Taula de continguts:

Adaptador Arduino PS / 2 a USB: 7 passos (amb imatges)
Adaptador Arduino PS / 2 a USB: 7 passos (amb imatges)

Vídeo: Adaptador Arduino PS / 2 a USB: 7 passos (amb imatges)

Vídeo: Adaptador Arduino PS / 2 a USB: 7 passos (amb imatges)
Vídeo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Desembre
Anonim
Adaptador Arduino PS / 2 a USB
Adaptador Arduino PS / 2 a USB
Adaptador Arduino PS / 2 a USB
Adaptador Arduino PS / 2 a USB

Alguna vegada volíeu fer servir el vostre teclat PS / 2 antic amb el portàtil o el nou PC d’escriptori i heu descobert que ja no tenen ports PS / 2? I, en lloc d’anar a comprar un adaptador PS / 2 a USB barat, com ho faria una persona normal, volia utilitzar el vostre Arduino com a adaptador PS / 2 a USB. Llavors has arribat al lloc correcte:)

Avís just abans d’entrar-hi. Quan utilitzeu el dispositiu UNO / Mega com a dispositiu USB-HID (no limitat al teclat, fins i tot pot ser un ratolí, un joystick, etc.), perdreu temporalment les seves funcions com a Arduino. Amb això vull dir que no podeu utilitzar les comunicacions en sèrie i que no podeu reprogramar-la mitjançant l’USB. Això es deu al fet que escriurem el microprogramari al xip de la interfície USB (un noi prop del port USB Atmega8U2 i 16U2 segons la revisió). Però no us preocupeu, de fet, no podeu fer tot el que pugueu fer amb UNO / Mega, sempre és reversible.

També per casualitat, si teniu un Arduino que ja té una capacitat USB-HID (Arduino Pro Micro o Leonardo, etc. feu una cerca a Google), podeu oblidar-vos que aquest instructiu que existeix ha vingut directament aquí per salvar-vos d’un món de problemes. broma!

Subministraments

  • Maquinari

    • Arduino UNO o Mega
    • Teclat PS / 2
    • Opcionalment, pot ser útil un Arduino addicional o qualsevol tipus de programador USB (USBasp, etc.).
  • Programari

    • Atmel FLIP
    • Biblioteca PS2KeyAdvanced per a Arduino IDE

Pas 1: cablejat i configuració

Cablatge i configuració
Cablatge i configuració
Cablatge i configuració
Cablatge i configuració
Cablatge i configuració
Cablatge i configuració
Cablatge i configuració
Cablatge i configuració

Depenent de la situació, podeu trobar una placa de sortida o recuperar un port antic de la placa base (el meu segon intent) o si us sentiu especialment malhumorat, fins i tot podeu tallar el gat morat del tot i exposar els 4 cables (el meu primer intent) i connecteu-los a l’ONU.

Teclat_Arduino

+ 5V (VCC) _ + 5V

TERRA_GND

CLOCK_PIN 2 **

DADES _ PIN3 *

* Podeu canviar el pin DATA pel que vulgueu, però recordeu d'actualitzar l'esbós.

** CLOCK ha d'estar connectat a un pin d'interrupció d'Arduino que només pot ser PIN 2 o 3 (recordeu actualitzar l'esbós) en una UNO. Per obtenir més informació i diferents configuracions del tauler, podeu consultar la secció de comentaris dels exemples de la biblioteca PS2KeyAdvanced.

Pas 2: prova del teclat

Abans d’anar totes les mans a la coberta, assegureu-vos que tot funcioni al teclat i a la biblioteca.

Aquí he adjuntat una versió modificada del SimpleTest.ino dels exemples de la biblioteca PS2KeyAdvanced amb rellotges actualitzats i pins de dades i també una representació "make" i "break". Aquí teniu algunes explicacions sobre la sortida.

  • Aquest sistema de codis de codis "make" i "break" i "Code", que és el codi de codis aïllat (c & 0xFF) de la tecla o del llançament de tecles, té un paper important en la conversió PS / 2 a USB i us recomano que estudiï els altres 2 exemples que s'inclouen amb la biblioteca per entendre millor si teniu previst millorar o canviar (tornar a assignar les claus a diferents dissenys) l'esbós final. També podeu obtenir una llista completa dels codis de registre PS / 2 de la biblioteca obrint fitxers 'PS2KeyAdvanced.h' o 'PS2KeyCode.h' de '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \'
  • "Bits d'estat" fa referència a les tecles modificadores (Ctrl, Alt, Windows, Maj / Majúscules) i veureu que amb cada tecla modificadora addicional, aquest valor canvia mentre el "Codi" principal de la tecla normal (no modificadora) no canvia. Però, a l’esbós final, he ignorat aquest mètode i he implementat aquestes tecles modificadores com a simples pulsacions de tecles (veureu que aquestes tecles modificadores també tenen un codi d’escàner "fer" i "trencar" independentment de les tecles normals tant si es premen diverses tecles com si no). perquè facilita les coses amb el protocol USB-HID.

Pas 3: Visualització prèvia de la conversió PS / 2 a USB

Abans d’actualitzar l’Atmega8U2 o 16U2 (UNO Rev3) per identificar el nostre Arduino com a teclat USB, hauríem d’assegurar-nos que totes les coses de la conversió funcionen correctament i que es carregui l’esbós final final o, en cas contrari, serà un problema important continuar sobreescrivint firmware una i altra vegada entre els fitxers hexadecimals del teclat original i USB només perquè pugueu carregar l'esbós correcte. Això es fa especialment cert si no teniu cap programador extern com un USBasp o un altre Arduino per utilitzar-lo com a ISP. Així doncs, aquí penjarem una versió "DEBUG" de l'esbós final amb una sortida llegible per humans (a través del monitor sèrie) per provar les coses.

La sortida que veieu es formatarà així quan es deixi anar cada tecla, 00 00 00 00 00 00 00 00

Aquí teniu una explicació bàsica de la producció esperada,

Per a cada nova tecla de modificació múltiple, heu d'obtenir una línia nova amb valors diferents per a 'xx'. Finalment, quan deixeu anar totes les tecles modificadores, 'xx' hauria de passar a ser 00

xx 00 00 00 00 00 00 00

Per a cada nova premsa de tecla normal (per exemple, prémerem la tecla hipotètica a, la tecla b i la tecla c amb els valors 'xx', 'yy' i 'zz' en aquest ordre), hauríeu de continuar (no és obligatori) línies noves com aquesta,

00 00 xx yy zz 00 00 00

quan només deixeu anar la tecla b, la sortida hauria de canviar a,

00 00 xx 00 zz 00 00 00

i si premeu la tecla nova d amb el valor 'nn' sense deixar anar la tecla a o la tecla b, la vostra sortida hauria de canviar a,

00 00 xx nn zz 00 00 00

i, finalment, torneu-hi quan s'alliberi cada clau,

00 00 00 00 00 00 00 00

i, finalment, si premeu Majúscules, Bloqueig numèric o Bloqueig de desplaçament, hauríeu d'obtenir alguna cosa així amb diverses línies al mateix 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 tot passa aquí, esteu daurat per continuar!

Pas 4: explicació tècnica

Explicació tècnica
Explicació tècnica
Explicació tècnica
Explicació tècnica

Si voleu, podeu ometre aquest pas. Aquesta és només una explicació de les sortides anteriors. La matriu de sortida de 8 bytes que heu format està format d'acord amb la figura 1 anterior. Podeu obtenir més informació sobre això i també sobre com s'escriu el byte d'estat de les tecles modificadores en aquesta wiki sobre USB-HID. Bàsicament, el que fa el meu codi és cada vegada que es prem una tecla nova (el protocol PS / 2 es refereix a això com a "fer"), fa un recorregut pels darrers 6 bytes de la matriu que s'utilitzen per prémer tecles normals i empleneu el primer byte buit que troba amb el corresponent "scancode HID" (que es mostra a la figura 2). També podeu trobar una llista completa del PDF adjunt) per al "scancode PS / 2" rebut. I, finalment, quan es deixa anar la clau pertinent (el protocol PS / 2 es refereix a això com a "interrupció"), el codi recorrerà la matriu de bytes actual i esborrarà només el byte pertinent.

Si heu seguit fins aquí i també si llegiu la pàgina del wiki, veureu que hi ha un petit problema en aquest mètode, normalment quan es deixa anar la clau, en el protocol HID els bytes restants es reorganitzen per desfer-se dels bytes buits entre bytes restants no buits. Però, per alguna raó, independentment de quantes maneres he provat, no podia fer que funcionés tal com es pretenia sense esborrar accidentalment els bytes no desitjats per a les tecles premudes. Si podeu millorar això perquè funcioni, deixeu un comentari. Tot i que al final del dia aquest problema no afecta la funcionalitat del teclat sempre que l'Arduino encara registri totes les tecles premudes independentment del seu ordre premut (cosa que no afecta res en l'ús pràctic).

Pas 5: penjar l'esbós final

Per tant, abans d’actualitzar definitivament el microprogramari d’Atmega8U2 o 16U2 (UNO Rev3) per identificar el nostre Arduino com a teclat USB, hem de carregar el Final Sketch. Després de carregar-ho, si aneu al monitor sèrie, veureu que imprimeix escombraries amb cada nova tecla premuda, és un bon auguri que tot funciona com es vol i podem passar al pas final. VISCA!!!

Pas 6: Actualització del firmware

Finalment, podeu actualitzar el firmware del vostre Arduino per registrar-lo com a teclat USB. Per a això no vaig a entrar en molts detalls, ja que farà que això sigui massa llarg.

  1. Seguiu aquesta guia d'arduino.cc sobre "Actualització d'Atmega8U2 i 16U2 en un Uno o Mega2560 mitjançant DFU", en lloc d'utilitzar "Arduino-usbserial-uno.hex", utilitzeu el "Arduino-keyboard-0.3.hex" adjunt.
  2. A FLIP, recordeu de seleccionar el dispositiu de destinació com Atmega8U2 o 16U2 segons Arduino, i seleccioneu el mitjà de comunicació USB i, finalment, carregueu el fitxer hexadecimal correcte abans de seleccionar Executar.
  3. Si heu tingut un error de controlador, aneu al gestor de dispositius de Windows i seleccioneu per cercar el controlador desconegut dins del directori d'instal·lació de FLIP '\ Program Files (x86) Atmel \'
  4. Si heu tingut errors mentre actualitzeu el microprogramari des de FLIP diverses vegades, tanqueu FLIP i executeu 'Restableix les preferències' des del menú 'Inici / FLIP \' i, a continuació, reinicieu FLIP i feu els passos de configuració abans de tornar-ho a provar, això normalment funciona per a mi.
  5. Si voleu restaurar Arduino al seu estat original, seguiu la guia de la carta arduino.cc anterior sense utilitzar aquest fitxer hexadecimal.

Pas 7: gaudiu …

Gaudeix …
Gaudeix …

Ara gaudiu del vostre recentment convertit teclat PS / 2 a USB … P. S. Aquest instructable s'ha escrit completament des d'un teclat PS / 2 extern connectat al meu ordinador portàtil a través de l'Arduino:)

Recomanat: