Étape 1: contexte
N’hésitez pas à sauter cette description de fond.
Le clavier sans fil PalmOne envoie ses données grâce à une LED IR sur une tige, à l’aide de IrDA. Alors qu’on pourrait utiliser un détecteur IR pour décoder les données, il y a un moyen plus facile. Si vous deux le clavier, trois de cuivre raies sont exposés. Celle du milieu est au sol et le bas est une ligne de transmission. Leur mise à un oscilloscope vérifie que le signal sur la ligne de transmission est codé en 9600 8 N 1, avec le niveau élevé autour de 1.56V et la mise en forme des impulsions d’irDA: 1 est élevé, et des impulsions positives prennent 3/16 de l’époque de bit.
Malheureusement, tout cela signifie que nous ne pouvons nous contenter brancher cela dans un simple module Bluetooth (au moins ne pas sans faire de progiciels pour elle), comme je le faisais dans mon projet Mindflex. Heureusement, l’atxmega dans la Brainlink dispose d’un mode d’irDA pour ses UART. Il est simple d’ajouter un peu de code pour le firmware Brainlink permettant un code "J1" passer au mode IrDA. Je m’attendais au 1.56V haut niveau afin de se révéler insuffisantes pour l’atxmega, mais j’ai été agréablement surpris quand j’ai connecté les bandes de cuivre à GND et UART reçoivent sur le Brainlink et vu les résultats en Realterm : je recevais des séquences d’octets six agréable depuis le clavier.
Il s’est avéré que la séquence d’octets six est seulement emballage pour un code d’analyse sur un seul octet (avec haute peu marquant la libération). Plus précisément, la séquence est C0 FF xx yy zz C1, où xx est le code d’analyse, yy est xx xor'ed avec FFet zz est xx xor'ed avec 67. (En effet, le code d’analyse est transmis trois fois : une fois clair et deux fois codé. Je devine que c’est parce qu’irDA est sujette à la corruption, et donc vous pouvez utiliser le décodage de majorité pour obtenir les octets.)
Après cela, la difficulté matérielle seule était de trouver un endroit pour souder un connecteur sur le clavier. Et qui n’était pas difficile.
Côté logiciel, alors que peut-être je pourrais peut-être passer le module Bluetooth RN-42 dans le Brainlink à mode HID, qui avait briquage de potentiel, depuis si le module n’a pas revenir à la PSP, je serais incapable de parler à la Brainlink sur son protocole Bluetooth.
La chose plus facile à faire juste devait avoir l’app de clavier BluezIME open source qui permet différentes manettes Bluetooth fonctionner en tant que contrôleurs Android et ajoute un mode pour les séquences de six octets du clavier sans fil un Palm. L’application qui en résulte est la libre P1 clavier dans Google jeu maintenant (code source sur github).