Como ler a entrada do teclado USB no Arduino

Geralmente, as placas Arduino só podem servir como escravos USB. Eles não podem operar como hosts USB. É por isso que é impossível conectar dispositivos USB como um teclado ou mouse USB diretamente ao Arduino. Esses dispositivos USB genéricos podem ser muito úteis em muitas aplicações. Por exemplo, em algumas aplicações, um teclado 4X4 pode não ser suficiente e você pode precisar de um teclado completo para a entrada do usuário. Esta pode ser uma situação em que o dispositivo incorporado pode receber comandos AT diretamente do usuário ou exigir entradas de texto elaboradas ou atualizações de texto.

Embora o Arduino inerentemente não possa operar como um host USB, ele pode ser convertido em um host USB com a ajuda de um escudo de host USB do Arduino. O escudo host USB permite conectar dispositivos USB às placas Arduino. É baseado no IC MAX3421E, um periférico USB ou controlador host. Ele pode implementar um periférico de velocidade total ou um host USB de velocidade total/baixa em conformidade com USB 2.0. A blindagem também é compatível com módulos TinkerKit. Neste projeto, faremos a interface de um teclado USB com o Arduino por meio de um host shield USB e detectaremos as teclas pressionadas no teclado.

Componentes necessários

  1. Arduino UNO/Arduino Mega x1
  2. Escudo de host USB Arduino x1
  3. Teclado USB x1
  4. Cabo micro USB (para conectar Arduino e computador) x1

Escudo de host USB Arduino

Arduino USB host Shield é um hardware de código aberto que permite a implementação de periféricos USB de alta velocidade ou hosts USB em placas Arduino em conformidade com USB 2.0. O escudo pode ser usado com Arduino UNO e Arduino Mega. O escudo é baseado no IC MAX3421E, um periférico/controlador host USB. O Arduino se comunica com o MAX3421E no escudo através do barramento SPI disponível através do cabeçalho ICSP. O barramento SPI no Arduino UNO está nos pinos GPIO10, GPIO11, GPIO12 e GPIO13. No Arduino Mega, o barramento SPI está nos pinos GPIO10, GPIO50, GPIO51 e GPIO52. GPIO7, GPIO8 e GPIO9 em ambas as placas são usados ​​para GPX, INT e RES, respectivamente.

Exemplo de escudo host USB do Arduino

O escudo pode conectar dispositivos HID ao Arduino, como teclado USB, mouse USB e joystick USB. Ele pode fazer interface com controladores de jogos com Arduino como PS4, Xbox360 e Nintendo Wii. Ele pode conectar câmeras digitais e dispositivos de armazenamento em massa como pen drives, discos rígidos externos ou leitores de cartão de memória com Arduino. Até dongles Bluetooth podem ser conectados ao Arduino por meio de um escudo host USB. Smartphones e tablets Android compatíveis com ADK podem ser conectados ao Arduino por meio do escudo. O escudo também pode conectar conversores USB para serial com Arduino. O escudo permite conectar, adicionar ou utilizar muitos dispositivos úteis com seu dispositivo Arduino incorporado.

Biblioteca Arduino para escudo host USB
A biblioteca necessária para trabalhar com o Arduino USB Host Shield é “USB Host Library for Arduino”. O código-fonte desta biblioteca Arduino de código aberto está disponível no GitHub. Para instalar a biblioteca no Arduino IDE, navegue até Ferramentas-> Gerenciar Bibliotecas. Procure por “host USB”. Role para baixo até “USB Host Shield Library 2.0” e clique em instalar. Tente instalar a versão mais recente da biblioteca.

Instalando a biblioteca Arduino para USB Host Shield

Conexões de circuito
Insira o escudo host USB na parte superior do Arduino UNO ou Arduino Mega, conforme mostrado na imagem abaixo.

Inserindo o escudo host USB do Arduino no Arduino UNO

Insira o teclado USB na blindagem e conecte o Arduino ao computador através de um cabo Micro-USB. A configuração do Arduino com escudo host USB e teclado será a seguinte.

Conectando teclado USB com Arduino UNO via USB Host Shield

Esboço do Arduino

Como funciona o projeto
As bibliotecas hidboot.h e usbhub.h são necessárias para trabalhar com um teclado USB. O hidboot. h é responsável por analisar dispositivos USB HID como teclado e mouse. A biblioteca é utilizada para analisar a entrada do teclado e exibir as teclas pressionadas no Monitor Serial do Arduino IDE. A chave ASCII e seu código de tecla são exibidos no Monitor Serial quando uma tecla é pressionada no teclado. O esboço também pode detectar teclas modificadas, ou seja, pressionamentos de teclas em combinação com as teclas Alt, Ctrl, Shift e GPU.

O código
O esboço começa com a importação das bibliotecas hidboot.h e usbhub.h. A biblioteca hidboot.h é usada para analisar entradas de dispositivos USB HID, como teclados e mouse. A biblioteca usbhub.h é útil se o teclado estiver conectado ao escudo através de algum hub USB. A seguir, a biblioteca SPI é importada enquanto o escudo se comunica com o Arduino através da porta SPI.

Algumas variáveis ​​globais são declaradas keyasc e keycode e são expressas para armazenar a tecla pressionada, o código da tecla e rastrear o status da tecla pressionada, respectivamente. Uma classe KeyboardInput é definida como filha da classe KeyboardReportParser de hidboot.h. Os métodos OnKeyDown e OnKeyPressed são importados da superclasse KeyboardReportParser. Esses métodos são substituídos no esboço. O método OnKeyDown é substituído para detectar o pressionamento de uma tecla no teclado. O método OnKeyPressed é substituído para armazenar a chave e o código da tecla pressionada nas variáveis ​​globais keyasc e keycode, respectivamente. O sinalizador booleano é expresso e definido como verdadeiro como uma nova chave, e o código da chave é registrado.

Um objeto da classe USB é definido junto com os objetos de HIDBoot e a classe definida pelo usuário KeyboardInput. Na função setup , a taxa de transmissão para comunicação serial com o Serial Monitor do Arduino IDE é definida como 115200. Uma mensagem “start” é impressa no Serial Monitor se a comunicação serial for estabelecida entre o Arduino e o computador.

Em seguida, o código verifica a detecção de dispositivos USB por meio do escudo de host USB. Se não for detectado, imprime uma mensagem “OSC não iniciou. ”Para o Monitor Serial. O método SetReportParser é chamado no objeto HidKeyboard com o objeto da classe KeyboardInput passado como argumento.

Na função loop , o método task é chamado no objeto USB. Se uma tecla for pressionada no teclado, ela será detectada verificando o status da variável booleana expressa. Se verdadeiro, a chave e o código-chave atualizados nas variáveis ​​globais keyasc e keycode são impressos no Serial Monitor e o booleano expresso é novamente definido como falso.

Resultado
Neste projeto, detectamos teclas pressionadas no teclado. As teclas ASCII vistas no teclado podem ser usadas como comandos ou para atualizar a entrada de texto em aplicativos incorporados.

(tagsParaTraduzir)Arduino

Related Content

Back to blog

Leave a comment

Please note, comments need to be approved before they are published.