Como ler a entrada do teclado USB no Arduino

Cómo leer la entrada del teclado USB en Arduino

Generalmente, las placas Arduino sólo pueden servir como esclavos USB. No pueden funcionar como hosts USB. Esta es la razón por la que es imposible conectar dispositivos USB como un teclado o mouse USB directamente al Arduino. Estos dispositivos USB genéricos pueden resultar muy útiles en muchas aplicaciones. Por ejemplo, en algunas aplicaciones, un teclado 4X4 puede no ser suficiente y es posible que necesite un teclado completo para la entrada del usuario. Esta puede ser una situación en la que el dispositivo integrado puede recibir comandos AT directamente del usuario o requerir entradas de texto elaboradas o actualizaciones de texto.

Aunque Arduino inherentemente no puede funcionar como un host USB, se puede convertir en un host USB con la ayuda de un escudo de host USB Arduino. El escudo de host USB le permite conectar dispositivos USB a placas Arduino. Se basa en IC MAX3421E, un periférico USB o controlador de host. Puede implementar un periférico de velocidad completa o un host USB de velocidad completa/baja que se ajuste a USB 2.0. El escudo también es compatible con los módulos TinkerKit. En este proyecto, conectaremos un teclado USB con Arduino a través de un protector de host USB y detectaremos las teclas presionadas en el teclado.

Componentes necesarios

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

Escudo de host USB Arduino

Arduino USB host Shield es hardware de código abierto que permite la implementación de periféricos USB de alta velocidad o hosts 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 el IC MAX3421E, un controlador de host/periférico USB. 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 del Arduino UNO está en los pines GPIO10, GPIO11, GPIO12 y GPIO13. En Arduino Mega, el bus SPI está en los pines GPIO10, GPIO50, GPIO51 y GPIO52. GPIO7, GPIO8 y GPIO9 en ambas placas se utilizan para GPX, INT y RES respectivamente.

Ejemplo de escudo de host USB Arduino

El escudo puede conectar dispositivos HID a Arduino, como teclado USB, mouse USB y joystick USB. Puede interactuar con controladores de juegos con tecnología Arduino como PS4, Xbox360 y Nintendo Wii. Puede conectar cámaras digitales y dispositivos de almacenamiento masivo como pendrives, discos duros externos o lectores de tarjetas de memoria con Arduino. Incluso los dongles Bluetooth se pueden conectar a Arduino a través de un 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 puede 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 es la "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.

Inserción del escudo host USB de Arduino en Arduino UNO

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

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

Bosquejo de Arduino

Cómo funciona el proyecto
Se requieren las bibliotecas hidboot.h y usbhub.h para funcionar con un teclado USB. El hidboot. h es responsable de analizar dispositivos USB HID como teclado y mouse. La biblioteca se utiliza para analizar la entrada del teclado y mostrar las pulsaciones de teclas en el monitor serie Arduino IDE. La clave ASCII y su código de clave se muestran en el monitor serie cuando se presiona una tecla en el teclado. Sketch también puede detectar teclas modificadas, es decir, pulsaciones de teclas en combinación con las teclas Alt, Ctrl, Shift y GPU.

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 teclado 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 keyasc y keycode y se expresan para almacenar la tecla presionada, el código de tecla y rastrear el estado de la tecla presionada, respectivamente. Una clase KeyboardInput se define como hija de la clase KeyboardReportParser de hidboot.h. Los métodos OnKeyDown y OnKeyPressed se importan de la superclase KeyboardReportParser. Estos métodos se anulan en el esquema. El método OnKeyDown se anula para detectar una pulsación de tecla en el teclado. El método OnKeyPressed se anula para almacenar la clave y el código de la tecla presionada en las variables globales keyasc y keycode respectivamente. El indicador booleano se expresa y se establece en verdadero como una nueva clave y se registra el código de clave.

Un objeto de la clase USB se define junto con los objetos de HIDBoot y la clase KeyboardInput definida por el usuario. 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. Se imprime un mensaje de "inicio" en el monitor en serie si se establece comunicación en serie entre el Arduino y la computadora.

Luego, el código verifica la detección de dispositivos USB a través del escudo del host USB. Si no se detecta, imprime un mensaje “OSC no se inició. ”para monitor serie. El método SetReportParser se llama en el objeto HidKeyboard con el objeto de clase KeyboardInput pasado como argumento.

En la función de bucle, el método de tarea se llama en el objeto USB. Si se presiona una tecla en el teclado, se detecta verificando el estado de la variable booleana expresada. Si es verdadero, la clave y el código clave actualizados en las variables globales keyasc y código clave se imprimen en el monitor serie y el booleano expreso se establece nuevamente en falso.

Resultado
En este proyecto, detectamos pulsaciones de teclas en el teclado. Las teclas ASCII que se ven en el teclado se pueden usar como comandos o para actualizar la entrada de texto en aplicaciones integradas.

(tagsToTranslate)Arduino

contenido relacionado

Regresar al blog

Deja un comentario

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