Stap 1: achtergrond
Voel je vrij om deze achtergrond beschrijving overslaan.
De PalmOne Wireless Keyboard stuurt de gegevens door middel van een IR-LED op een stengel, met behulp van IrDA. Terwijl om te decoderen van de gegevens men gebruik van een IR-detector maken kan, is er een gemakkelijkere manier. Als u tweeën gevouwen het toetsenbord, drie koperen strips zijn blootgesteld. De middelste is grond en de onderste is een verzendlijn. Persoonsgebonden aan een oscilloscoop controleert dat het signaal op de verzendlijn is gecodeerd op 9600 8 N 1, met het hoge niveau rond 1.56V, en met het vormgeven van irDA-pulse: 1 is hoog, en positieve pulsen nemen 3/16 van de bits-tijd.
Helaas, dit alles betekent wij kan niet gewoon sluit dit op een eenvoudige Bluetooth-module (tenminste niet zonder douaneingebouwde programmatuur daarvoor), zoals ik deed in mijn Mindflex project. Gelukkig heeft de atxmega in de Brainlink een irDA-modus voor de UART. Het is eenvoudig om een beetje van code toevoegen aan de firmware van de Brainlink waardoor een "J1" code om te schakelen naar de modus IrDA. Ik verwacht dat de 1.56V hoog niveau te onvoldoende is voor de atxmega, maar ik was aangenaam verrast toen ik de koperen strips met GND en UART ontvangen op de Brainlink verbonden en de resultaten in Realterm weergegeven: Ik kreeg mooi zes byte-reeksen van het toetsenbord.
Het bleek dat de zes bytevolgorde is alleen de verpakking voor een scancode van één byte (met hoge bitsnelheid markering release). In het bijzonder de volgorde is FF C0 xx yy zz C1, waarbij xx is de Scancode, yy is xx xor'ed met FFen zz is xx xor'ed met 67. (In feite de Scancode drie keer wordt verzonden: één keer duidelijk en twee keer gecodeerd. I 'm guessing dat dit is omdat irDA corruptiegevoelig is, en zodat u meerderheid-decodering te krijgen van de byte kunt gebruiken.)
Na dat, het enige hardware probleem was het vinden van een plek om te solderen een verbindingslijn op het toetsenbord. En dat was niet hard.
Aan de software kant, terwijl misschien ik misschien de RN-42 Bluetooth-module in de Brainlink naar HID modus, die had potentieel schakelen kon, sinds bricking als de module niet naar SPP terugschakelt, zou ik niet kunnen om te praten met de Brainlink via de Bluetooth-protocol.
Het gemakkelijker om te doen was gewoon om te nemen van de opensource BluezIME toetsenbord-app waarmee verschillende Bluetooth-gamepads om te functioneren als Android controllers en een modus voor de Palm een Wireless Keyboard van zes-byte-reeksen toevoegen. De resulterende app is het gratis P1 toetsenbord in Google Play nu (broncode aanvragen op github).