🛠 Crea un dispositivo HID personalizado con Romu
Objectifs
Este tutorial le guía en la creación de un Dispositivo de Interfaz Humana (HID) simple usando la placa Romu. Aprenderá a enviar comandos de teclado vía USB sin cables externos, aprovechando los botones físicos de la placa. Este caso de uso demuestra la automatización de tareas repetitivas o la creación de atajos personalizados.
Matériel nécessaire
- Una placa Bitmerse Romu.
- Un ordenador con un puerto USB Tipo-A disponible.
- Un entorno de desarrollo compatible con RP2350/RP2354 (MicroPython o C/C++ con Pico SDK).
- Un cable USB para la programación inicial (vía pads de depuración o bootloader).
Étapes
Instale picotool y el SDK de Raspberry Pi. Asegúrese de que su compilador esté configurado para el objetivo Arm Cortex-M33 o RISC-V según su elección.
- Configuración del entorno
Use la biblioteca HID del SDK para definir un descriptor de dispositivo. Aquí hay un ejemplo en C usando la biblioteca TinyUSB:
- Escritura del código HID
#include "tusb.h"
// Definir botones como entradas GPIO internas
#define BTN_A 0
#define BTN_B 1
void setup() {
gpio_init(BTN_A); gpio_set_dir(BTN_A, GPIO_IN);
gpio_init(BTN_B); gpio_set_dir(BTN_B, GPIO_IN);
tusb_init();
}
void loop() {
tud_task(); // Manejar eventos USB
if (!gpio_get(BTN_A) && tud_hid_ready()) {
uint8_t report[2] = {0x00, 0x04}; // Tecla 'a' presionada
tud_hid_keyboard_report(REPORT_ID_KEYBOARD, 0, report);
} else if (tud_hid_ready()) {
uint8_t report[2] = {0x00, 0x00}; // Soltar
tud_hid_keyboard_report(REPORT_ID_KEYBOARD, 0, report);
}
sleep_ms(10);
}
Compile el proyecto para la placa Romu. Conecte la placa a su PC a través del conector USB Tipo-A integrado. Si el bootloader está activo, la placa aparecerá como un dispositivo de almacenamiento masivo. Copie el archivo .uf2 compilado en la unidad.
- Compilación y Flash
Desconecte y vuelva a conectar la placa. No se necesita cable para el uso final. Abra un editor de texto y presione el botón correspondiente para verificar la transmisión del carácter.
- Prueba Plug-and-Play
Vérification
- El LED RGB puede indicar el estado de la conexión USB (encendido si se enumera).
- Abra el administrador de dispositivos de su SO para confirmar la detección de un "Teclado USB" o dispositivo HID genérico.
- Pruebe la capacidad de respuesta de los botones: cada pulsación debe producir el carácter configurado.
Pour aller plus loin
Explore el envío de combinaciones de teclas (Ctrl+C) o la implementación de un controlador MIDI USB. La seguridad Arm TrustZone puede activarse para proteger el firmware contra la lectura no autorizada, crucial para las claves de autenticación.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
romu-rgb-led-pwm.inoC/C++ (Pico SDK)romu-hid-keyboard-macro.inoC/C++ (TinyUSB)romu-internal-flash-storage.inoC/C++ (Pico SDK)romu-midi-controller.inoC/C++ (TinyUSB)romu-secure-boot-check.inoC/C++ (Pico SDK)romu-hid-custom-keyboard.inoC++ (Arduino)