Teclado USB virtual con Attiny85 y V-USB


En este tutorial veremos como crear un teclado USB virtual con Attiny85. La idea es que el ordenador reconozca el Attiny85 como un teclado HID, y que este sea capaz de mandar pulsaciones para formar una frase, como si de un teclado normal se tratase, para ello emplearemos la librería V-USB.

NOTA: Para grabar el Attiny85 usaremos un Arduino UNO, si quieres saber como preparar tu Arduino para grabar “Attinys”, puedes visitar el tutorial “Como programar un Attiny85 con Arduino UNO” del blog, ahí tienes las instrucciones detalladas paso a paso.

Ver tutorial

Descarga e instalación de la librería V-USB

Esta librería no esta pensada para usarse en un Attiny85 directamente así que hay que realizar algunas modificaciones para ajustarla a las necesidades del proyecto. Si quieres ahorrarte el trabajo de modificar la librería, ya lo hemos hecho nosotros por ti, sólo tienes que descargarla.

Descargar librería V-USB modificada

Si quieres modificarla tu mismo, puedes descargar la original desde el siguiente enlace. A continuación tienes las instrucciones a seguir para modificar la librería correctamente:

Descargar librería V-USB original

En cualquier caso, dentro del archivo .ZIP que descargamos al disco duro hay una carpeta llamada UsbKeyboard, la copiaremos a C:\Program Files (x86)\Arduino\libraries o en la carpeta donde tengamos instalado el IDE de Arduino.

Modificaciones de la librería

Dentro de la carpeta UsbKeyboard que hemos copiado a nuestra instalación del IDE de Arduino, hay un archivo llamado usbconfig.h, ahí cambiaremos:

por

También cambiaremos este valor que le indica que pin del Attiny se usará como D- del cable USB, cambiamos:

por

También cambiaremos este valor que le indica que pin del Attiny se usará como D+ del cable USB, cambiamos:

por

y también

por

También hay que editar este valor y ponerlo a 16000:

Opcionalmente cambiaremos el nombre del fabricante y del dispositivo editando estos valores:

Si editas estos valores tendrás que editar estos otros para que se ajusten a la nueva configuración, hay que introducir cuantos caracteres tiene cada valor:

Para terminar guardamos los cambios y abrimos el archivo UsbKeyboard.h donde cambiamos:

por

Esta librería esta pensada para compilarse en versiones antiguas del IDE de Arduino, si la intentamos compilar con una versión reciente nos tirará un montón de errores, esto se debe a que en las nuevas versiones del compilador avr-gcc obliga a que todas las variables PROGMEM se definan como constantes (const), así que hay que modificar los archivos usbdrv.h, usbdrv.c y UsbKeyboard.h poniendo “Const” delante de cada “PROGMEM” que encontremos (o compilarlo con una versión antigua del IDE de Arduino).

NOTA: Recuerda que más arriba tienes el enlace para descargar las librerías ya modificadas.

Esquema y conexiones

Para poder entender el conexionado del Attiny en la placa podemos usar la siguiente imagen como referencia:
attiny85_pinout

Como podemos ver el Attiny se alimenta de 5v directamente del conector USB que va al ordenador, el pin 8 (VCC) va a positivo del conector USB y el pin 4 (GND) va a negativo.

Del pin 7 sale una resistencia de 68 ohms que va al pin D+ del conector USB, al mismo tiempo un diodo Zener de 3.6v y 0.5w va a negativo.

Del pin 6 sale una resistencia de 68 ohms que va al pin D- del conector USB, al mismo tiempo un diodo Zener de 3.6v y 0.5w va a negativo.

Entre VCC y el pin 6 del Attiny ponemos una resistencia de 470 ohms.

Del pin 5 sale un cable con un botón conectado a negativo y una resistencia pull-up conectada a positivo. El botón lanza una función donde tendremos programada la frase que queremos escribir, se ejecutará cada vez que pulsemos el botón (ver código de ejemplo).

vusb-attiny85-schema

Código de ejemplo

Lista de teclas soportadas por la librería V-USB

Demostración del funcionamiento


Este vídeo es de la cuenta de Youtube de Joonas Pihlajamaa, autor de una herramienta similar pero mas compleja. Parte de este tutorial esta basado en su obra, pero tanto el código del sketch como las modificaciones hechas en la librería V-USB no están explicadas en su blog. El proyecto de este tutorial serviría de base para el proyecto de Joonas.

En el vídeo se puede ver como se conecta el Attiny85 mediante USB al ordenador, este es detectado por Windows como teclado usb genérico (se escucha el sonido de sincronización de Windows) y acto seguido manda las pulsaciones del password de inicio de sesión predefinido en el sketch, seguido de ENTER.

Si te ha gustado este tutorial deja un like o un comentario, gracias por visitarnos!.

[product id=”599″]  


[Total:0    Promedio:0/5]
Compartir en redes sociales: