Le #QuackenFlex est conçu autour d’un bus I²C, pour relier les deux moitiés du clavier et permettre la connexion de dispositifs de pointage (touchpads, trackpoints…). C’est un standard électronique robuste, mais il a un défaut : il est conçu pour fonctionner sur des pistes de PCB, pas sur des fils. C’est malgré tout courant de le faire, il y a même des standards de connecteurs filaires pour ça (Stemma, Qwiic…), mais avec un connecteur TRRS audio comme c’est l’usage pour les claviers splittés, la qualité de signal est insuffisante. C’est possible (le Ferris le fait), mais pas suffisamment fiable pour une production en série, à nos yeux. (Plus de détails dans les ALT des copies d’écran.)
Une solution simple consisterait à utiliser un autre connecteur, plus adapté aux 400 kbds de bande passante de l’I²C. On en a envisagé plusieurs, mais aucun ne nous a convaincus.
- Le RJ11 ou RJ45 ferait le job (c’est ce que fait Keyboardio), mais c’est trop encombrant pour nos cartes.
- L’USB serait suffisamment compact, mais créerait de la confusion et ajouterait un effet ressort incompatible avec la légèreté du Quacken.
- Les connecteurs plats type JST-PH (= Stemma) ou WR-MCP3 fonctionnent bien, mais ne permettent que 30 à 50 cycles de connexion/déconnexion, à comparer aux 1 000 à 10 000 des TRRS, USB et RJ11/45.
On a donc décidé de retourner à la planche à dessin (#KiCad FTW) pour améliorer la transmission I²C, en jouant sur deux tableaux :
- la réduction du bruit (parasites et diaphonie), grâce à des améliorations de routage qui nous ont été recommandées par un pro de l’électronique analogique ;
- le redressement des signaux, grâce à un composant actif (probablement le LTC4311) qui fiabilisera radicalement la connexion, même en passant par un câble TRRS très long.
On aurait pu masquer le problème en diminuant la vitesse de transmission. On ne l’a pas fait, un peu pour ne pas compliquer la config ZMK, mais surtout parce qu’on préfère résoudre complètement le problème.