Tabla de contenido:

Adaptador Arduino PS / 2 a USB: 7 pasos (con imágenes)
Adaptador Arduino PS / 2 a USB: 7 pasos (con imágenes)

Video: Adaptador Arduino PS / 2 a USB: 7 pasos (con imágenes)

Video: Adaptador Arduino PS / 2 a USB: 7 pasos (con imágenes)
Video: Como convertir un raton PS2 a USB ? mouse PS/2 a USB por Bob. Kalpon 2024, Mes de julio
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 vez quiso usar su antiguo teclado PS / 2 con su computadora portátil o su nueva computadora de escritorio y descubrió que ya no tienen puertos PS / 2? Y luego, en lugar de comprar un adaptador de PS / 2 a USB barato como lo haría una persona normal, quería usar su Arduino como un adaptador de PS / 2 a USB. Entonces has venido al lugar correcto:)

Una advertencia justa antes de que entremos en ello. Cuando esté usando su UNO / Mega como un dispositivo USB-HID (no limitado al teclado, incluso puede ser un mouse, joystick, etc.) perderá temporalmente sus funciones como Arduino. Con eso quiero decir que no puede usar las comunicaciones en serie y no puede reprogramarlas a través del USB. Esto se debe a que sobrescribiremos el firmware en su chip de interfaz USB (pequeño cerca del puerto USB Atmega8U2 y 16U2 dependiendo de la revisión). Pero no se preocupe, en realidad no puede bloquear su UNO / Mega haciendo esto, siempre es reversible.

Además, por casualidad, si tiene un Arduino que ya tiene una capacidad USB-HID (Arduino Pro Micro o Leonardo, etc., haga una búsqueda en Google), puede olvidar que este instructable alguna vez existió, vaya directamente aquí para salvarse de un mundo de problemas, solo ¡es una broma!

Suministros

  • Hardware

    • Arduino UNO o Mega
    • Teclado PS / 2
    • Opcionalmente, un Arduino adicional o cualquier tipo de programador USB (USBasp, etc.) puede ser útil.
  • Software

    • Atmel FLIP
    • Biblioteca PS2KeyAdvanced para Arduino IDE

Paso 1: cableado y configuración

Cableado y configuración
Cableado y configuración
Cableado y configuración
Cableado y configuración
Cableado y configuración
Cableado y configuración
Cableado y configuración
Cableado y configuración

Dependiendo de la situación, puede encontrar una placa de ruptura o recuperar un puerto antiguo de una placa base (mi segundo intento) o si se siente particularmente malhumorado, incluso puede cortar el conector púrpura por completo y exponer los 4 cables (mi primer intento) y conectarlos a la UNO.

Teclado_Arduino

+ 5V (VCC) _ + 5V

TIERRA_GND

RELOJ_PIN 2 **

DATOS _ PIN3 *

* Puede cambiar el pin de DATOS a lo que quiera, pero recuerde actualizar el boceto.

** CLOCK debe estar conectado a un pin de interrupción en Arduino que solo puede ser PIN 2 o 3 (recuerde actualizar el boceto) en un UNO. Para obtener más información y diferentes configuraciones de placa, puede consultar la sección de comentarios de los ejemplos de la biblioteca PS2KeyAdvanced.

Paso 2: Probar el teclado

Antes de ponerse manos a la obra, asegúrese de que todo funciona en el teclado y la biblioteca.

Aquí he adjuntado una versión modificada de SimpleTest.ino de los ejemplos de la biblioteca PS2KeyAdvanced con pines de datos y reloj actualizados y también una representación de "hacer" y "romper". Aquí hay una explicación de la salida.

  • Este sistema de código de escaneo de "hacer" y "romper" y "Código", que es el código de escaneo aislado (cy 0xFF) de la pulsación o liberación de la tecla, juega un papel importante en la conversión de PS / 2 a USB y le recomiendo que estudie los otros 2 ejemplos que vienen con la biblioteca para comprender mejor si está planeando mejorar o cambiar (reasignar claves a diferentes diseños) el boceto final. También puede obtener una lista completa de códigos de escaneo PS / 2 de la biblioteca abriendo los archivos 'PS2KeyAdvanced.h' o 'PS2KeyCode.h' de '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \'
  • "Bits de estado" se refiere a las teclas modificadoras (Ctrl, Alt, Windows, Mayús / Mayúsculas) y verá que con cada tecla modificadora adicional, este valor cambia mientras que el "Código" principal de la tecla normal (no modificadora) no cambia. Pero en el boceto final, he ignorado este método e implementé estas teclas modificadoras como simples pulsaciones de teclas (verá que estas teclas modificadoras también tienen un código de escaneo "hacer" y "romper" independientemente de las teclas normales, ya sea que se presionen varias teclas o no). porque facilita las cosas con el protocolo USB-HID.

Paso 3: Vista previa de la conversión de PS / 2 a USB

Antes de actualizar el Atmega8U2 o 16U2 (UNO Rev3) para identificar nuestro Arduino como un teclado USB, debemos asegurarnos de que todo el material de conversión funcione correctamente y que se cargue el boceto final o, de lo contrario, será un gran dolor seguir sobrescribiendo el firmware una y otra vez entre el original y los archivos hexadecimales del teclado USB para que pueda cargar el boceto correcto. Esto se vuelve especialmente cierto si no tiene ningún programador externo como un USBasp u otro Arduino para usar como ISP. Entonces, aquí cargaremos una versión 'DEBUG' del boceto final con una salida legible por humanos (a través del monitor en serie) para probar las cosas.

La salida que ve se formateará así cuando se suelte cada tecla, 00 00 00 00 00 00 00 00

Aquí hay una explicación básica de la salida esperada,

Para cada nueva pulsación de la tecla modificadora múltiple, debería obtener una nueva línea con diferentes valores para 'xx'. Finalmente, cuando suelte todas las teclas modificadoras, 'xx' debería convertirse en 00

xx 00 00 00 00 00 00 00

Para cada nueva pulsación de tecla normal múltiple (por ejemplo, presionaremos la tecla hipotética a, la tecla by la tecla c con los valores 'xx', 'yy' y 'zz' en ese orden), debería obtener un resultado continuo (no obligatorio) nuevas líneas como esta,

00 00 xx yy zz 00 00 00

cuando solo suelta la tecla b, la salida debería cambiar a,

00 00 xx 00 zz 00 00 00

y si presiona la nueva tecla d con el valor 'nn' sin soltar la tecla a o la tecla b, su salida debería cambiar a,

00 00 xx nn zz 00 00 00

y finalmente volver a esto cuando se suelten todas las teclas,

00 00 00 00 00 00 00 00

y, por último, si presiona Bloq Mayús, Bloq Num o Bloq Desplazamiento, debería obtener algo como esto con varias líneas al mismo tiempo,

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 todo sucede aquí, ¡estás listo para continuar!

Paso 4: Explicación técnica

Explicación técnica
Explicación técnica
Explicación técnica
Explicación técnica

Si lo desea, puede omitir este paso. Esta es solo una explicación de los resultados anteriores. La matriz de salida de 8 bytes que vio está formateada de acuerdo con la figura 1 anterior. Puede aprender mucho más sobre esto y también cómo se escribe el byte de estado de las teclas modificadoras en esta wiki sobre USB-HID. Básicamente, lo que hace mi código es que cada vez que se presiona una nueva tecla (el protocolo PS / 2 se refiere a esto como 'hacer'), recorre los últimos 6 bytes de la matriz que se usan para presionar teclas normales y completa el primero byte vacío que encuentra con el 'código de escaneo HID' correspondiente (se muestra en la figura 2. También puede encontrar una lista completa en el PDF adjunto) para el 'código de escaneo PS / 2' recibido. Y finalmente, cuando se suelta la clave relevante (el protocolo PS / 2 se refiere a esto como 'interrupción'), el código recorrerá la matriz de bytes actual y borrará solo el byte relevante.

Si siguió hasta aquí y también si lee la página wiki, verá que hay un pequeño problema en este método, normalmente cuando se suelta la tecla, en el protocolo HID los bytes restantes se reorganizan para eliminar los bytes vacíos. entre los bytes restantes no vacíos. Pero por alguna razón, independientemente de cuántas formas haya intentado, no pude hacer que funcionara como se esperaba sin borrar accidentalmente los bytes no deseados de las teclas presionadas también. Si puede mejorar esto para que funcione, deje un comentario. Aunque al final del día, este problema no afecta la funcionalidad del teclado siempre que el Arduino aún registre cada tecla presionada independientemente del orden en que se presionaron (lo que no afecta nada en el uso práctico).

Paso 5: carga del boceto final

Entonces, antes de que finalmente actualice el firmware de Atmega8U2 o 16U2 (UNO Rev3) para identificar nuestro Arduino como un teclado USB, debemos cargar el Boceto final. Después de cargar esto, si va al monitor en serie, verá que imprime basura con cada nueva tecla presionada, este es un buen presagio de que todo está funcionando como se esperaba y podemos continuar con el paso final. ¡¡¡HURRA!!!

Paso 6: actualización del firmware

Finalmente puedes actualizar el firmware de tu Arduino para registrarlo como teclado USB. Para esto, no voy a entrar en muchos detalles, ya que hará que este instructivo sea demasiado largo.

  1. Siga esta guía de arduino.cc sobre 'Actualización de Atmega8U2 y 16U2 en un Uno o Mega2560 usando DFU' pero en lugar de usar 'Arduino-usbserial-uno.hex' use el 'Arduino-keyboard-0.3.hex' adjunto
  2. En FLIP, recuerde seleccionar el dispositivo de destino como Atmega8U2 o 16U2 dependiendo de su Arduino y, desde seleccionar el medio de comunicación, elija USB y finalmente Cargue el archivo hexadecimal correcto antes de seleccionar ejecutar.
  3. Si se encontró con un error de controlador, vaya al administrador de dispositivos de Windows y seleccione buscar el controlador desconocido dentro del directorio de instalación de FLIP '\ Archivos de programa (x86) Atmel \'
  4. Si se encontró con errores al actualizar el firmware desde FLIP varias veces, cierre FLIP y ejecute 'Restablecer preferencias' desde 'Menú Inicio / FLIP \' y luego reinicie FLIP y realice los pasos de configuración antes de volver a intentarlo, esto generalmente me funciona.
  5. Si desea restaurar su Arduino a su estado original, simplemente siga la guía arduino.cc anterior al pie de la letra sin usar este archivo hexadecimal.

Paso 7: Disfruta ……

Disfrutar……
Disfrutar……

Ahora disfrute de su teclado PS / 2 a USB recién convertido…. PD Este Instructable fue escrito completamente desde un teclado PS / 2 externo conectado a mi computadora portátil a través del Arduino:)

Recomendado: