Architecture modulaire
Le projet Keybytes repose sur une approche « key‑by‑key » : chaque touche est un module PCB de 1 U (19,05 mm × 19,05 mm) équipé d’un microcontrôleur CH32V003 RISC‑V. Cette granularité permet de réarranger physiquement le clavier sans re‑souder de traces, chaque module étant relié aux autres via des pogo pins placés sur les quatre côtés. Le contrôleur principal, un STM32WB55RGV6, se trouve sur la carte maîtresse (Keyword) et assure la connectivité Bluetooth ainsi que l’interface USB. La séparation en deux PCB empilés – l’un dédié à la radio et à la mémoire flash, l’autre à l’alimentation et à l’USB‑C – optimise la densité de composants tout en conservant un facteur de forme compatible avec les claviers standards.
Alimentation et communication
Chaque module reçoit du 3,3 V et le signal de terre via les pogo pins, ainsi qu’un bus I²C partagé pour la configuration et la mise à jour du firmware. Le bus I²C, limité à 400 kHz, suffit pour transmettre les tables de mappage de touches et les états LED. L’alimentation globale provient d’une batterie LiPo 1 S, chargée par le circuit BQ25895 intégré sur la carte maîtresse. Un convertisseur TPS631000 buck‑boost assure une tension stable de 3,3 V même lorsque la tension de la batterie chute en dessous de 3,0 V, garantissant ainsi le bon fonctionnement des microcontrôleurs CH32V003 et du STM32WB55RGV6. Le système inclut également un USB‑C avec protection ESD, offrant une voie de charge directe et une connexion filaire en cas de besoin.
Programmation et stockage du firmware
Le firmware de chaque touche est stocké dans une mémoire 2 MB QSPI (W25Q16JV) montée sur la carte maîtresse. La mise à jour du code s’effectue depuis le STM32WB55RGV6 vers les modules via les pogo pins, ce qui élimine le besoin d’un programmateur externe pour chaque clé. Le processus utilise le protocole I²C pour adresser chaque CH32V003 individuellement, chaque module étant identifié par son adresse configurable via des résistances de tirage. Le projet fournit les sources sous licence MIT, conçues entièrement dans KiCad, ce qui facilite la reproduction et la personnalisation du schéma et du routage.
Limites et perspectives
La modularité introduit une surcharge de masse et de coût : chaque touche comporte un microcontrôleur, un régulateur de tension et des connecteurs, ce qui augmente le poids total du clavier et le prix des composants. Le bus I²C partagé peut devenir un goulot d’étranglement si le nombre de touches dépasse les capacités de gestion d’interruptions du STM32WB55RGV6, surtout lors de mises à jour simultanées. De plus, la dépendance à la batterie LiPo impose une gestion fine de la charge pour éviter les cycles profonds qui réduiraient la durée de vie. Malgré ces contraintes, l’approche démontre la faisabilité d’un clavier entièrement reconfigurable, ouvrant la voie à des expérimentations de layout dynamique et de fonctions de touches programmables à l’échelle du module.