🛠 Gestion avancée des E/S sur Romu : Pads de débug et périphériques internes
Objectifs
Ce tutoriel vise à maîtriser les entrées-sorties sur la carte Romu de Bitmerse, qui ne dispose pas de broches GPIO externes standard. Vous apprendrez à interagir avec les pads de débug pour le débogage série, à contrôler la LED RGB intégrée pour le retour visuel et à lire l'état des boutons physiques. Ces compétences sont essentielles pour développer des périphériques HID complexes comme des pavés macro ou des contrôleurs MIDI, où le feedback local est crucial malgré la compacité extrême (15,5 x 12 mm) de la carte basée sur le RP2354A.
Matériel nécessaire
- Carte de développement Romu (Bitmerse)
- Ordinateur avec port USB 2.0 Type-A
- Logiciel de développement (MicroPython ou C/C++ avec SDK Pico/RP2350)
- Câble USB mâle-mâle ou adaptateur si nécessaire pour l'alimentation initiale (bien que le connecteur Type-A soit intégré)
- Multimètre (optionnel, pour vérifier la continuité des pads)
Étapes
- Identification des pads de débug : Sur la face inférieure ou latérale de la Romu, localisez les pads marqués TX/RX ou SWD. Contrairement aux cartes classiques, vous ne pouvez pas souder de connecteurs standard sans risquer d'endommager la puce. Utilisez des pinces crocodiles fines ou des sondes pogo pour accéder temporairement à ces pads pour le débogage série (UART) ou le débogage par fil (SWD).
``python import machine import time # Exemple générique, vérifier les pins spécifiques Romu led_r = machine.PWM(machine.Pin(25)) # Vérifier le pin exact led_r.freq(1000) for duty in range(0, 1024, 10): led_r.duty_u16(duty) time.sleep(0.01) ``
- Configuration de la LED RGB : La LED RGB est câblée directement aux GPIO internes du RP2354A. Dans votre code, identifiez les broches correspondantes (souvent GP25 pour la LED utilisateur standard, mais vérifiez le schéma spécifique Romu). Pour un contrôle avancé, utilisez le PWM (Pulse Width Modulation) pour varier l'intensité et créer des dégradés de couleurs.
``python button = machine.Pin(20, machine.Pin.IN, machine.Pin.PULL_UP) # Pin à confirmer while True: if button.value() == 0: print("Bouton pressé") time.sleep(0.2) # Anti-rebond simple ``
- Lecture des boutons physiques : Les boutons sont généralement câblés en pull-up ou pull-down interne. Configurez les GPIO associés en mode entrée. Pour éviter les rebonds (debounce), implémentez un filtrage logiciel simple ou utilisez une interruption matérielle si disponible sur le RP2354A.
- Interaction avec les pads pour le débogage : Pour envoyer des logs série sans bloquer l'USB principal (utilisé pour le HID/MIDI), configurez l'UART sur les pads de débug. Cela permet de surveiller l'état interne du microcontrôleur pendant que la carte fonctionne comme périphérique USB.
Vérification
- La LED RGB doit changer de couleur ou d'intensité selon votre code.
- L'appui sur les boutons doit déclencher une action visible (changement de LED) ou loggée via les pads de débug.
- Vérifiez avec un multimètre que les pads de débug ne sont pas en court-circuit avec la masse ou l'alimentation.
Pour aller plus loin
Explorez l'architecture hybride du RP2354A en déplaçant les tâches de lecture des boutons sur les cœurs RISC-V pour libérer les cœurs Arm pour la gestion USB HID complexe. Envisagez d'ajouter des composants externes soudés directement sur les pads si une extension est absolument nécessaire, en respectant les contraintes thermiques de la carte ultra-compacte.
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)