Como obter entrada do mouse USB no Arduino

Como obter entrada do mouse USB no Arduino

Geralmente, as placas Arduino não operam como hosts USB; eles não têm o periférico nem a RAM para fazer isso. No entanto, é possível converter placas Arduino como UNO e Mega2560 em um host USB usando um escudo de host USB Arduino. Com um host shield USB, podemos conectar praticamente qualquer periférico USB ao Arduino – pense em navegar em um robô Arduino com um mouse USB. Conectar um mouse ao Arduino pode ser uma grande vantagem em muitas aplicações.

Neste projeto, ilustraremos a obtenção de entrada de um mouse USB no Arduino usando o escudo host USB. O movimento das aberturas do botão esquerdo e do botão direito do mouse é detectado pelo Arduino e solicitado no Monitor Serial do Arduino IDE. O código apresentado neste projeto pode ser reutilizado e expandido para construir qualquer outra aplicação utilizando um mouse USB como dispositivo de entrada.

Componentes necessários

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

Escudo de host USB Arduino
O Arduino USB Host Shield é um hardware de código aberto que permite a implementação em velocidade total de um periférico USB ou host USB em placas Arduino em conformidade com USB 2.0. O escudo pode ser usado com Arduino UNO e Arduino Mega. A blindagem é baseada em um periférico/controlador host USB, o IC MAX3421E. 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á presente nos pinos GPIO10, GPIO11, GPIO12 e GPIO13. No Arduino Mega, o barramento SPI está presente nos pinos GPIO 0, GPIO50, GPIO51 e GPIO52. Os pinos 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 ser usado para conectar dispositivos HID ao Arduino, como teclados USB, mouse USB e joystick USB. Ele pode ser usado para fazer interface de controladores de jogos com Arduino, como PS4, Xbox360 e Nintendo Wii. Ele pode ser utilizado para 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é mesmo dongles Bluetooth podem ser conectados ao Arduino e ao 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 ser usado para 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 funcionar com o Arduino USB Host Shield é chamada de “Biblioteca Host USB para 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.

Conectando mouse USB com Arduino UNO via USB Host Shield

Insira o mouse 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 mouse será a seguinte.

Conectando mouse 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 ao trabalhar com um mouse USB. O hidboot.h é responsável por analisar dispositivos USB HID, como teclados e mouse. A biblioteca é utilizada para detectar eventos de mouse no Arduino UNO ou Arduino Mega. O esboço carregado no Arduino detecta movimento do mouse, pressionamento do botão esquerdo, pressionamento do botão direito, liberação do botão esquerdo e liberação do botão direito. Os eventos do mouse são registrados no Serial Monitor. Ao detectar o movimento do mouse, a mudança em suas coordenadas xey é registrada no Monitor Serial.

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 a entrada de dispositivos USB HID, como teclados e mouse. A biblioteca usbhub.h é útil se o mouse 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 LeftBtn, RightBtn, LeftBtnRls, RightBtnRls, MouseMoved, xey para o status do botão esquerdo pressionado, botão direito pressionado, botão esquerdo liberado, botão direito liberado, movimento do mouse, mudança na posição do mouse ao longo de x -eixo e mudança na posição do mouse ao longo do eixo y.

Uma classe MouseRptParser é definida como filha da classe MouseReportParser de hidboot.h. Os métodos OnMouseMove, OnLeftButtonUp, OnLeftButto Down, OnRightButtonUp e OnRightButtonDown são importados da superclasse MouseReportParser. Esses métodos são substituídos no esboço. O método OnMouseMove é substituído para armazenar a alteração nas posições xy do mouse nas variáveis ​​globais x e y, respectivamente. O método também define o booleano MouseMoved como verdadeiro. O método OnLeftButtonUp é substituído para definir o booleano MouseMoved LeftBtn como verdadeiro quando o botão esquerdo do mouse é pressionado. O método OnLeftButtonDown é substituído para definir o booleano LeftBtnRls como true quando o botão esquerdo do mouse é liberado. O método OnRightButtonUp é substituído para definir o booleano RightBtn como true quando o botão direito do mouse é pressionado. O método OnRightButtonDown é substituído para definir bo lean RightBtnRls como true quando o botão direito do mouse é liberado.

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

Em seguida, o código verifica a detecção do dispositivo USB por meio do escudo host USB. Caso não seja detectado, imprime uma mensagem “OSC não fez o art. ”Para o Monitor Serial. O método SetReportParser( é chamado no objeto HidMouse com o objeto da classe MouseRptParser passado como argumento.

Na função loop , o método task é chamado no objeto USB. As variáveis ​​booleanas que indicam o status de cada evento do mouse são verificadas usando instruções if e as variáveis ​​são redefinidas para falsas.

Deve-se observar que a sensibilidade do mouse pode ser ajustada aumentando ou diminuindo o atraso na instrução if verificando o status do booleano MouseMoved.

Resultado
Neste projeto, detectamos eventos de mouse usando Arduino. O movimento do botão esquerdo do mouse e do clique do botão direito é detectado e registrado. Os eventos podem ser utilizados para controlar um robô, rolar uma tela ou controlar outras tarefas incorporadas.

Вернуться к блогу

Комментировать

Обратите внимание, что комментарии проходят одобрение перед публикацией.