🛠 Créer un périphérique HID personnalisé avec Romu
Objectifs
Ce tutoriel guide la création d'un périphérique d'interface humaine (HID) simple utilisant la carte Romu. Vous apprendrez à envoyer des commandes clavier via USB sans câble externe, en exploitant les boutons physiques de la carte. Ce cas d'usage illustre l'automatisation de tâches répétitives ou la création de raccourcis personnalisés.
Matériel nécessaire
- Une carte Romu de Bitmerse.
- Un ordinateur avec un port USB Type-A disponible.
- Un environnement de développement compatible RP2350/RP2354 (MicroPython ou C/C++ avec SDK Pico).
- Un câble USB pour la programmation initiale (via pads de débogage ou bootloader).
Étapes
Installez l'outil picotool et le SDK Raspberry Pi. Assurez-vous que votre compilateur est configuré pour la cible Arm Cortex-M33 ou RISC-V selon votre choix.
- Configuration de l'environnement
Utilisez la bibliothèque HID du SDK pour définir un descripteur de périphérique. Voici un exemple en C utilisant la bibliothèque TinyUSB :
- Écriture du code HID
#include "tusb.h"
// Définir les boutons comme entrées GPIO internes
#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(); // Traiter les événements USB
if (!gpio_get(BTN_A) && tud_hid_ready()) {
uint8_t report[2] = {0x00, 0x04}; // Touche 'a' pressée
tud_hid_keyboard_report(REPORT_ID_KEYBOARD, 0, report);
} else if (tud_hid_ready()) {
uint8_t report[2] = {0x00, 0x00}; // Relâcher
tud_hid_keyboard_report(REPORT_ID_KEYBOARD, 0, report);
}
sleep_ms(10);
}
Compilez le projet pour la carte Romu. Connectez la carte à votre PC via le connecteur USB Type-A intégré. Si le bootloader est actif, la carte apparaîtra comme un lecteur de masse. Copiez le fichier .uf2 compilé sur le lecteur.
- Compilation et Flash
Débranchez et rebranchez la carte. Aucun câble n'est nécessaire pour l'utilisation finale. Ouvrez un éditeur de texte et appuyez sur le bouton correspondant pour vérifier l'envoi du caractère.
- Test plug-and-play
Vérification
- La LED RGB peut être utilisée pour indiquer l'état de connexion USB (allumée si énumérée).
- Ouvrez le gestionnaire de périphériques de votre OS pour confirmer la détection d'un "Clavier USB" ou d'un périphérique HID générique.
- Testez la réactivité des boutons : chaque appui doit produire le caractère configuré.
Pour aller plus loin
Explorez l'envoi de combinaisons de touches (Ctrl+C) ou l'implémentation d'un contrôleur MIDI USB. La sécurité Arm TrustZone peut être activée pour protéger le firmware contre la lecture non autorisée, crucial pour les clés d'authentification.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
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)