Como obter entrada do mouse USB no Arduino

Cómo obtener entrada de mouse USB en Arduino

Generalmente, las placas Arduino no funcionan como hosts USB; No tienen el periférico ni la RAM para hacer esto. Sin embargo, es posible convertir placas Arduino como UNO y Mega2560 en un host USB utilizando un escudo de host USB Arduino. Con un escudo de host USB, podemos conectar casi cualquier periférico USB al Arduino; piense en navegar un robot Arduino con un mouse USB. Conectar un mouse a Arduino puede ser una gran ventaja en muchas aplicaciones.

En este proyecto, ilustraremos cómo obtener entrada desde un mouse USB a Arduino usando el escudo de host USB. Arduino detecta el movimiento de las aperturas de los botones izquierdo y derecho del mouse y lo solicita desde el monitor serie IDE de Arduino. El código presentado en este proyecto se puede reutilizar y ampliar para crear cualquier otra aplicación utilizando un mouse USB como dispositivo de entrada.

Componentes necesarios

  1. Arduino UNO/Arduino Mega x1
  2. Escudo de host USB Arduino x1
  3. Ratón USB x1
  4. Cable micro USB (para conectar Arduino y computadora) x1

Escudo de host USB Arduino
Arduino USB Host Shield es un hardware de código abierto que permite la implementación a máxima velocidad de un periférico USB o un host USB en placas Arduino compatibles con USB 2.0. El escudo se puede utilizar con Arduino UNO y Arduino Mega. El escudo se basa en un periférico/controlador de host USB, el IC MAX3421E. El Arduino se comunica con el MAX3421E en el escudo a través del bus SPI disponible a través del encabezado ICSP. El bus SPI en Arduino UNO está presente en los pines GPIO10, GPIO11, GPIO12 y GPIO13. En Arduino Mega, el bus SPI está presente en los pines GPIO 0, GPIO50, GPIO51 y GPIO52. Los pines GPIO7, GPIO8 y GPIO9 en ambas placas se utilizan para GPX, INT y RES respectivamente.

Ejemplo de escudo de host USB Arduino

El escudo se puede utilizar para conectar dispositivos HID a Arduino, como teclados USB, ratones USB y joysticks USB. Se puede utilizar para conectar controladores de juegos Arduino como PS4, Xbox360 y Nintendo Wii. Se puede utilizar para conectar cámaras digitales y dispositivos de almacenamiento masivo como pendrives, discos duros externos o lectores de tarjetas de memoria a Arduino. Incluso se pueden conectar dongles Bluetooth al Arduino y al escudo de host USB. Los teléfonos inteligentes y tabletas Android compatibles con ADK se pueden conectar a Arduino a través del escudo. El escudo también se puede utilizar para conectar convertidores USB a serie con Arduino. El escudo le permite conectar, agregar o usar muchos dispositivos útiles con su dispositivo Arduino incorporado.

Biblioteca Arduino para escudo de host USB
La biblioteca necesaria para trabajar con Arduino USB Host Shield se llama "Biblioteca de host USB para Arduino". El código fuente de esta biblioteca Arduino de código abierto está disponible en GitHub. Para instalar la biblioteca en el IDE de Arduino, navegue hasta Herramientas->Administrar bibliotecas. Busque "host USB". Desplácese hacia abajo hasta "USB Host Shield Library 2.0" y haga clic en instalar. Intente instalar la última versión de la biblioteca.

Instalación de la biblioteca Arduino para USB Host Shield

Conexiones de circuito
Inserte el protector del host USB en la parte superior del Arduino UNO o Arduino Mega como se muestra en la imagen a continuación.

Conexión del mouse USB con Arduino UNO a través de USB Host Shield

Inserte el mouse USB en el escudo y conecte el Arduino a la computadora mediante un cable Micro-USB. La configuración de Arduino con protector de host USB y mouse será la siguiente.

Conexión del mouse USB con Arduino UNO a través de USB Host Shield

Bosquejo de Arduino

Cómo funciona el proyecto
Las bibliotecas hidboot.h y usbhub.h son necesarias cuando se trabaja con un mouse USB. hidboot.h es responsable de analizar dispositivos USB HID como teclados y ratones. La biblioteca se utiliza para detectar eventos del mouse en Arduino UNO o Arduino Mega. El boceto cargado en el Arduino detecta el movimiento del mouse, la presión del botón izquierdo, la presión del botón derecho, la liberación del botón izquierdo y la liberación del botón derecho. Los eventos del mouse se registran en Serial Monitor. Cuando se detecta movimiento del mouse, el cambio en sus coordenadas xey se registra en el monitor serie.

Código
El esquema comienza con la importación de las bibliotecas hidboot.h y usbhub.h. La biblioteca hidboot.h se utiliza para analizar la entrada de dispositivos USB HID, como teclados y ratones. La biblioteca usbhub.h es útil si el mouse está conectado al escudo a través de un concentrador USB. A continuación, se importa la biblioteca SPI mientras el escudo se comunica con el Arduino a través del puerto SPI.

Algunas variables globales se declaran LeftBtn, RightBtn, LeftBtnRls, RightBtnRls, MouseMoved, x e y para el estado del botón izquierdo presionado, botón derecho presionado, botón izquierdo liberado, botón derecho liberado, movimiento del mouse, cambio en la posición del mouse a lo largo del eje x y cambio en la posición del mouse a lo largo del eje y.

Una clase MouseRptParser se define como hija de la clase MouseReportParser de hidboot.h. Los métodos OnMouseMove, OnLeftButtonUp, OnLeftButto Down, OnRightButtonUp y OnRightButtonDown se importan desde la superclase MouseReportParser. Estos métodos se anulan en el esquema. El método OnMouseMove se anula para almacenar el cambio en las posiciones xy del mouse en las variables globales x e y respectivamente. El método también establece el booleano MouseMoved en verdadero. El método OnLeftButtonUp se anula para establecer Boolean MouseMoved LeftBtn en verdadero cuando se presiona el botón izquierdo del mouse. El método OnLeftButtonDown se anula para establecer el valor booleano LeftBtnRls en verdadero cuando se suelta el botón izquierdo del mouse. El método OnRightButtonUp se anula para establecer el booleano RightBtn en verdadero cuando se presiona el botón derecho del mouse. El método OnRightButtonDown se anula para establecer bo lean RightBtnRls en verdadero cuando se suelta el botón derecho del mouse.

Un objeto de clase USB se define junto con los objetos HIDBoot y la clase definida por el usuario MouseRptParser. En la función de configuración, la velocidad en baudios para la comunicación en serie con el monitor en serie del IDE de Arduino se establece en 115200, y si se establece comunicación en serie entre el Arduino y la computadora, se imprime un mensaje de "inicio" en el monitor en serie.

Luego, el código verifica la detección del dispositivo USB a través del protector del host USB. Si no se detecta, imprime un mensaje “OSC no hizo el arte. ”para monitor serie. El método SetReportParser( se llama en el objeto HidMouse con el objeto de clase MouseRptParser pasado como argumento.

En la función de bucle, el método de tarea se llama en el objeto USB. Las variables booleanas que indican el estado de cada evento del mouse se verifican usando declaraciones if y las variables se restablecen a falso.

Cabe señalar que la sensibilidad del mouse se puede ajustar aumentando o disminuyendo el retraso en la declaración if verificando el estado del booleano MouseMoved.

Resultado
En este proyecto, detectamos eventos del mouse usando Arduino. Se detecta y registra el movimiento del botón izquierdo del ratón y del clic del botón derecho. Los eventos se pueden utilizar para controlar un robot, desplazarse por una pantalla o controlar otras tareas integradas.

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.