Använda Palm IR tangentbord med Android-enheter (1 / 5 steg)
Steg 1: bakgrund
Känn dig fri att hoppa över denna bakgrund beskrivning.
PalmOne trådlöst tangentbord skickar data via en IR-LED på en stjälk med IrDA. Samtidigt kan man använda en IR-detektor för att avkoda data, finns det ett enklare sätt. Om du vikta tangentbordet, tre koppar remsor är utsatta. Mittersta är grund och botten en är en sändnings. Att sätta dem till ett oscilloskop verifierar att signalen på raden sändnings är kodad i på 9600 8 N 1, med höga runt 1.56V och med irDA puls forma: 1 är höga och positiva pulser ta 3/16 bitars tiden.
Tyvärr, allt detta betyder att vi inte kan bara koppla in detta i en enkel Bluetooth modul (åtminstone inte utan att göra anpassade firmware för det), som jag gjorde i mitt Mindflex projekt. Lyckligtvis har atxmega i Brainlink en irDA-läge för dess UART. Det är enkelt att lägga till lite kod till Brainlink firmware så att en "J1" kod att skifta IrDA-läge. Jag förväntade mig 1.56V hög nivå för att vara otillräcklig för atxmega, men jag blev glatt överraskad när jag ansluten koppar remsorna till GND och UART får på Brainlink och tittade på resultaten i Realterm: Jag fick fin sex byte sekvenser från tangentbordet.
Det visade sig att de sex byten ordningsföljden endast förpackningar för en enda byte scan kod (med hög bit märkning release). Specifikt, sekvensen är FF C0 xx yy zz C1, där xx är scan koden, åå är xx xor'ed med FFoch zz är xx xor'ed med 67. (I praktiken Skanna koden sänds tre gånger: en gång klart och två gånger kodade. Jag gissar att detta är eftersom irDA är utsatt för korruption, och så du kan använda majoritet-avkodning för att få byten.)
Efter det var det enda hårdvara är svårighet att hitta en plats att löda en koppling på tangentbordet. Och det var inte svårt.
På mjukvarusidan, medan kanske kunde jag kanske byter RN-42 Bluetooth-modulen i Brainlink till HID-läge, som hade bricking potential, sedan om modulen inte växla tillbaka till SPP, skulle inte jag kunna tala med Brainlink över dess Bluetooth protokoll.
Det lättare att göra var bara att ta den öppna källkod BluezIME tangentbord app som gör att olika Bluetooth gamepads att fungera som Android registeransvariga och Lägg till ett läge för Palm ett trådlöst tangentbord sex byte sekvenser. Den resulterande app är gratis P1 tangentbord i Google Play nu (källkod på github).