É possível construir um dispositivo HID (como um teclado) usando um Arduino uno?
No momento, tenho entradas de botão no Arduino que fornecem saídas na linha serial. Então, como posso transformar meu firmware atual em algo que possa se comportar como um teclado HID?
- Devo escrever um novo driver de dispositivo de janela?
- Devo criar uma camada de software que possa pegar meus dados seriais e fazer com que o Windows os leia como entrada HID?
- Existe alguma maneira melhor de conseguir isso, se é que é possível?
arduino-uno
serial
Anomalia
fonte
fonte
Respostas:
sim! E há um ótimo tutorial sobre como fazer isso aqui
Como o tutorial mostra, é necessário transformar o código do firmware. Em vez de imprimir os eventos, você realmente aciona os eventos. O que você precisa fazer é adicionar ao seu código:
O que você está fazendo aqui é enviar dos principais eventos do microcontrolador Arduino pela linha serial para o microcontrolador menor que lida com a comunicação USB. Esse microcontrolador pega esses "buffers" de teclas e os transfere quando a tecla USB HID Keyboard pressiona sobre USB.
Cuidado com o caractere chave (
chr
no código aqui) é na verdade um código-chave enviado por USB que é interpretado pelo driver USB HID, que o converte em um caracter real usando o layout atual que você configurou para o teclado.O
mod
caractere é uma das teclas modificadoras que você possui no teclado (shift, control, alt ...),0x00
não sendo modificador.Não, você não precisa! Com a atualização do DFU, o seu arduino será visto como um teclado USB pelo Windows.
Você não precisa fazer isso, e na verdade é uma péssima ideia por vários motivos:
Finalmente, você está tendo preocupações, em um comentário, sobre a colocação de tijolos no seu arduino. Acredite em mim e no autor do artigo que você não pode bloquear o seu arduino fazendo um flash de firmware:
NOTA: Não há chance de 'bloquear' o dispositivo usando este método. O firmware do carregador de inicialização do Arduino sempre pode ser atualizado usando o protocolo DFU!
Caso algo fique realmente errado e você tenha uma corrupção no carregador de inicialização no pequeno AVR (atmega8u2), ainda poderá fazer a atualização usando outro arduino ou um programador atmel usando os 6 pinos próximos ao plugue USB.
No final, saiba que a única maneira de criar um AVR, assim como um Arduino, é brincar com os fusíveis e redefinir os fusíveis de programação. E mesmo assim, você pode usar o HVSP para salvar o seu dispositivo, embora muitas vezes seja menos complicado usar apenas um novo chip.
fonte
Criei um projeto que substitui totalmente o Arduino Bootloader. Você pode fazer upload de esboços e usá-lo como HID. Veja o Projeto HID no Github: https://github.com/NicoHood/HID
fonte