¿Es posible construir un dispositivo HID (como un teclado) usando un Arduino uno?
Por el momento, tengo entradas de botón en el Arduino que dan salidas en la línea serie. Entonces, ¿cómo puedo transformar mi firmware actual en algo que pueda comportarse como un teclado HID?
- ¿Debo escribir un nuevo controlador de dispositivo de Windows?
- ¿Debo crear una capa de software que pueda tomar mis datos en serie y hacer que Windows los lea como entrada HID?
- ¿Hay alguna manera mejor de lograr esto, si es posible?
arduino-uno
serial
Anomalía
fuente
fuente
Respuestas:
¡sí lo es! Y hay un gran tutorial sobre cómo hacer eso aquí
Como muestra el tutorial, debe transformar su código de firmware para que, en lugar de imprimir los eventos, desencadene eventos. Lo que debe hacer es agregar a su código:
Lo que está haciendo aquí es enviar desde sus eventos principales del microcontrolador Arduino a través de la línea serie al microcontrolador más pequeño que maneja la comunicación USB. Ese microcontrolador tomará esas "memorias intermedias" de teclas y las transferirá a medida que se presione la tecla del teclado USB HID sobre USB.
Tenga en cuenta que el carácter clave (
chr
en el código aquí), es en realidad un código clave enviado a través de USB que es interpretado por su controlador HID USB, que luego se traduce en un carácter real utilizando el diseño actual que ha configurado para su teclado.El
mod
personaje es una de las teclas modificadoras que tiene en el teclado (shift, control, alt ...),0x00
no siendo modificador.¡No, no necesitas! Con la actualización de DFU, su arduino será visto como un teclado USB por Windows.
Tampoco necesita hacer eso, y en realidad es una muy mala idea por muchas razones:
Finalmente, tiene dudas, en un comentario, sobre bloquear su arduino. Por favor, créame y al autor del artículo que no puede bloquear su arduino haciendo un flash de firmware:
NOTA: No hay posibilidad de "bloquear" el dispositivo con este método. ¡El firmware del cargador de arranque Arduino siempre se puede actualizar utilizando el protocolo DFU!
En caso de que algo salga muy mal y se dañe el cargador de arranque en el pequeño AVR (atmega8u2), aún puede volver a flashearlo usando otro arduino o un programador atmel usando los 6 pines al lado del enchufe USB.
Al final, sepa que la única forma de bloquear un AVR, por lo tanto también un Arduino, es jugar con los fusibles y restablecer los fusibles de programación. E incluso entonces, puede usar HVSP para guardar su dispositivo, aunque a menudo es menos problemático simplemente tomar un nuevo chip.
fuente
Creé un proyecto que reemplaza completamente el Arduino Bootloader. Puede cargar bocetos y usarlo como HID. Ver Proyecto HID en Github: https://github.com/NicoHood/HID
fuente