Usando Teclado USB en Wio Terminal
Este repositorio presenta cómo usar un teclado USB en Wio Terminal. ¡Puedes implementar este ejemplo para introducir datos desde un teclado a Wio Terminal!

Requisitos
Para trabajar con este ejemplo, necesitarás un Adaptador USB OTG y un Módulo USB a Serie, donde el adaptador OTG se usa para conectar con el teclado y el módulo USB a Serie para leer las salidas de Wio Terminal.
Procedimientos
-
Sube el código a Wio Terminal usando
Arduino IDE
. -
Desconecta el cable USB tipo-C de Wio Terminal que se usó para subir el código.
-
Conecta tu teclado al adaptador OTG y luego al puerto USB-C de Wio Terminal.
Teclado
->Adaptador OTG
->Wio Terminal(Puerto Tipo-C)
-
Conecta el Módulo USB a Serie al Wio Terminal como sigue:
TXD(Módulo USB a Serie)
->RXD(Pin 10 en Wio Terminal)
RXD(Módulo USB a Serie)
->TXD(Pin 8 en Wio Terminal)
3.3V(Módulo USB a Serie)
->3.3V(Pin 1 en Wio Terminal)
GND(Módulo USB a Serie)
->GND(Pin 6 en Wio Terminal)
-
Conecta el Módulo USB a Serie a tu computadora. Dependiendo de qué Módulo USB a Serie uses, descarga el controlador USB para el módulo para que tu computadora pueda reconocerlo.
-
Para usuarios de Windows, puedes abrir el Administrador de Dispositivos para verificar si es reconocido. Debería aparecer un nuevo
COM
.- Para usuarios de Mac, usa
ls /dev/cu.*
en terminal para verificar la disponibilidad del módulo.
- Para usuarios de Mac, usa
-
Para ver datos desde Serie:
-
Windows: Descarga e instala PuTTY. Selecciona
Serial
y cambia elCOM
en línea Serie al COM que apareció en el Administrador de Dispositivos, también cambia la Velocidad a115200
y presiona Abrir. Debería aparecer una Terminal. Ahora, si empiezas a escribir en el teclado conectado, ¡deberías ver la salida serie! -
Mac: Abre terminal e instala
screen
usandobrew install screen
. Una vez instalado, usa el comandoscreen /dev/cu.usbserial 115200
donde/dev/cu.usbserial
debería coincidir con lo anterior. ¡Deberías poder ver la salida serie de Wio Terminal!
-
Nota Importante: Debido a que el puerto USB de Wio Terminal está siendo usado para USB, para subir otro programa a Wio Terminal requiere entrar al modo Bootloader presionando el botón de encendido dos veces(el LED se atenuará), entonces deberías poder ver el puerto nuevamente.
Configuraciones de Host USB
Para habilitar Host USB en Wio Terminal, debes configurar dos pines. Necesitas establecer PIN_USB_HOST_ENABLE
a LOW y OUTPUT_CTR_5V
a HIGH.
Puedes hacer esto simplemente añadiendo el siguiente código en el void setup()
:
digitalWrite(PIN_USB_HOST_ENABLE, LOW);
digitalWrite(OUTPUT_CTR_5V, HIGH);
Código Completo
#include <KeyboardController.h>
#define SerialDebug Serial1
// Initialize USB Controller
USBHost usb;
// Attach keyboard controller to USB
KeyboardController keyboard(usb);
void printKey();
// This function intercepts key press
void keyPressed() {
SerialDebug.print("Pressed: ");
printKey();
}
// This function intercepts key release
void keyReleased() {
SerialDebug.print("Released: ");
printKey();
}
void printKey() {
// getOemKey() returns the OEM-code associated with the key
SerialDebug.print(" key:");
SerialDebug.print(keyboard.getOemKey());
// getModifiers() returns a bits field with the modifiers-keys
int mod = keyboard.getModifiers();
SerialDebug.print(" mod:");
SerialDebug.print(mod);
SerialDebug.print(" => ");
if (mod & LeftCtrl)
SerialDebug.print("L-Ctrl ");
if (mod & LeftShift)
SerialDebug.print("L-Shift ");
if (mod & Alt)
SerialDebug.print("Alt ");
if (mod & LeftCmd)
SerialDebug.print("L-Cmd ");
if (mod & RightCtrl)
SerialDebug.print("R-Ctrl ");
if (mod & RightShift)
SerialDebug.print("R-Shift ");
if (mod & AltGr)
SerialDebug.print("AltGr ");
if (mod & RightCmd)
SerialDebug.print("R-Cmd ");
// getKey() returns the ASCII translation of OEM key
// combined with modifiers.
SerialDebug.write(keyboard.getKey());
SerialDebug.println();
}
uint32_t lastUSBstate = 0;
void setup()
{
SerialDebug.begin( 115200 );
SerialDebug.println("Keyboard Controller Program started");
if (usb.Init())
SerialDebug.println("USB host did not start.");
delay( 20 );
//Coqnfigure pins to enable USB Host on Wio Terminal
digitalWrite(PIN_USB_HOST_ENABLE, LOW);
digitalWrite(OUTPUT_CTR_5V, HIGH);
}
void loop()
{
// Process USB tasks
usb.Task();
uint32_t currentUSBstate = usb.getUsbTaskState();
if (lastUSBstate != currentUSBstate) {
SerialDebug.print("USB state changed: 0x");
SerialDebug.print(lastUSBstate, HEX);
SerialDebug.print(" -> 0x");
SerialDebug.println(currentUSBstate, HEX);
switch (currentUSBstate) {
case USB_ATTACHED_SUBSTATE_SETTLE: SerialDebug.println("Device Attached"); break;
case USB_DETACHED_SUBSTATE_WAIT_FOR_DEVICE: SerialDebug.println("Detached, waiting for Device"); break;
case USB_ATTACHED_SUBSTATE_RESET_DEVICE: SerialDebug.println("Resetting Device"); break;
case USB_ATTACHED_SUBSTATE_WAIT_RESET_COMPLETE: SerialDebug.println("Reset complete"); break;
case USB_STATE_CONFIGURING: SerialDebug.println("USB Configuring"); break;
case USB_STATE_RUNNING: SerialDebug.println("USB Running"); break;
}
lastUSBstate = currentUSBstate;
}
}