Innehållsförteckning:

Använd Palm Infrarödt tangentbord med Android -enheter: 5 steg
Använd Palm Infrarödt tangentbord med Android -enheter: 5 steg

Video: Använd Palm Infrarödt tangentbord med Android -enheter: 5 steg

Video: Använd Palm Infrarödt tangentbord med Android -enheter: 5 steg
Video: World's Smallest Android Phone! 2024, November
Anonim
Använd Palm -infrarött tangentbord med Android -enheter
Använd Palm -infrarött tangentbord med Android -enheter
Använd Palm -infrarött tangentbord med Android -enheter
Använd Palm -infrarött tangentbord med Android -enheter
Använd Palm -infrarött tangentbord med Android -enheter
Använd Palm -infrarött tangentbord med Android -enheter

Jag hade ett PalmOne trådlöst tangentbord och jag ville ha ett Bluetooth -tangentbord för min telefon. Det enda problemet var att PalmOne-tangentbordet var infrarödbaserat.

Jag hade också en Brainlink -enhet. Detta är en ganska söt liten enhet för att förmedla mellan olika enheter. Den har en atxmega16 -processor, ett laddningsbart batteri, några sensorer, en Bluetooth -radio, ett gäng portar, ett fodral och lite uppgraderbar firmware för att styra allt. Brainlink avbryts men SurplusShed har det för $ 39, och de har regelbundna 30-50% rabatt på försäljningen på allt. Jag fick den för $ 20. Du kan också använda ditt eget atxmega plus Bluetooth -kort (scheman här), men dina kostnader kanske inte är lägre.

Hur som helst, efter att ha identifierat var signallinjen på tangentbordet är, gjort en firmware -uppgradering för Brainlink och skriva en Android -drivrutin för tangentbordet, fungerar det ganska bra. Eftersom det mesta av arbetet var att undersöka och programvara, nu när det är gjort är det ett ganska enkelt projekt för alla som har en Brainlink. Du behöver:

  • PalmOne trådlöst tangentbord
  • Brainlink
  • En 3- eller 8-polig tether för Brainlink (1,25 mm tonhöjd i JST-stil); du kan använda den 8-poliga tetheren som medföljer Brainlink men du vill beställa mer för andra projekt
  • Löd och järn
  • Eltejp
  • Valfritt: Krokfäste

Tidigare har jag använt Brainlink för att ansluta till ett Mindflex EEG -headset och till en Roomba. Det är riktigt bra för seriell-till-Bluetooth-överbryggningsuppgifter. Jag gör bara olika kontakter för olika enheter och kan flytta Brainlink mellan dem.

Steg 1: Bakgrund

Bakgrund
Bakgrund
Bakgrund
Bakgrund
Bakgrund
Bakgrund

Hoppa gärna över denna bakgrundsbeskrivning.

PalmOne Wireless Keyboard skickar sina data via en IR -lysdiod på en stjälk med IrDA. Medan man kan använda en IR -detektor för att avkoda data, finns det ett enklare sätt. Om du viker tangentbordet halvt, avslöjas tre kopparremsor. Den mellersta är slipad och den nedre är en sändningslinje. Att sätta dem till ett oscilloskop verifierar att signalen på sändlinjen är inkodad på ungefär 9600 (närmare bestämt: 9760) 8 N 2, med den höga nivån runt 1,56V, och med irDA -pulsformning: 1 är hög och positiva pulser ta 3/16 av bittiden.

Tyvärr betyder allt detta att vi inte bara kan ansluta detta till en enkel Bluetooth -modul (åtminstone inte utan att göra anpassad firmware för det), som jag gjorde i mitt Mindflex -projekt. Lyckligtvis har atxmega i Brainlink ett irDA -läge för sin UART. Det är enkelt att lägga till lite kod till Brainlink -firmware så att en "J1" -kod kan byta till IrDA -läge. Jag förväntade mig att 1,56V hög nivå skulle vara otillräcklig för atxmega, men jag blev positivt överraskad när jag kopplade kopparremsorna till GND och UART Receive på Brainlink och tittade på resultaten i Realterm: Jag fick fina sex bytesekvenser från tangentbordet.

Det visade sig att sex bytesekvensen endast är förpackning för en enda bytescanningskod (med hög bitmarkeringsfrigöring). Specifikt är sekvensen FF C0 xx yy zz C1, där xx är skanningskoden, yy xx xor'ed med FF och zz xx xor'ed med 67. (I själva verket överförs skanningskoden tre gånger: en gång tydlig och två gånger kodad. Jag gissar att detta beror på att irDA är utsatt för korruption och så kan du använda majoritetsavkodning för att få byten.) Efter det var den enda hårdvarusvårigheten att hitta en plats för att löda en kontakt på tangentbordet. Och det var inte svårt.

På programvarusidan, medan jag kanske kunde byta RN-42 Bluetooth-modulen i Brainlink till HID-läge, som hade murningspotential, eftersom om modulen inte bytte tillbaka till SPP, skulle jag inte kunna prata med Brainlink via sitt Bluetooth -protokoll.

Det enklaste var bara att ta BluezIME-tangentbordsprogrammet med öppen källkod som låter olika Bluetooth-spelkontroller fungera som Android-kontroller och lägga till ett läge för Palm One Wireless Keyboard sex-bytes sekvenser. Den resulterande appen är det kostnadsfria P1 -tangentbordet i Google Play nu (källkod på github).

Steg 2: Uppgradering av Brainklink -firmware

Uppgradera firmware för Brainklink
Uppgradera firmware för Brainklink
Uppgradera firmware för Brainklink
Uppgradera firmware för Brainklink

För att aktivera stöd för seraldata i IrDA-format på Brainlink måste du ladda min anpassade firmware. Det är enkelt med en Android -enhet och en firmware -uppladdare som jag skrev (förresten, du kan ändra uppladdaren för att vara ett allmänt ändamål atmega/atxmega AVR109 flash -uppladdare).

  1. Koppla ihop Brainlink (PIN 1234) med en Android-enhet-du måste göra det ändå för att ansluta tangentbordet
  2. Ladda ner min Brainlink Firmware Uploader från Google Play (källa för uppladdare och firmware på github).
  3. Stäng av Brainlink och anslut stiften 8 och 2 (märkligt nog är stift 8 stiftet längst till vänster och stift 1 till höger) på 8-stiftsporten.
  4. Håll stiften anslutna och slå på Brainlink. Dess LED ska bli blå.
  5. Välj den anpassade fasta programvaran du vill ha (om du har en Roomba fungerar en av firmwaresna bättre med nyare Roombas och den andra med äldre) och trycker på "Ladda upp".
  6. Det borde vara det, men om du har anslutningssvårigheter kan du behöva försöka mer än en gång.

Din Brainlink är nu smartare: den stöder inte bara läsning av data från vissa IrDA-enheter (när du har hittat en omodulerad signal), utan fungerar också som en standard Roomba-till-Bluetooth-länk och kan fånga data från ett Mindflex EEG-headset. Och firmware är bakåtkompatibel.

Steg 3: Anslutning av Brainlink till tangentbord

Ansluter Brainlink till tangentbord
Ansluter Brainlink till tangentbord
Ansluter Brainlink till tangentbord
Ansluter Brainlink till tangentbord
Ansluter Brainlink till tangentbord
Ansluter Brainlink till tangentbord

Du behöver en tether-kontakt som passar de tre stiften längst till vänster på Brainlink 8-poliga port. Dessa är JST-kontakter med 1,25 mm stiftavstånd. Du kan använda en trepolig kontakt (mitt val) eller en 8-polig kontakt. Du kan använda den 8-poliga kontakten som medföljer Brainlink, men då vill du beställa fler av dem (jag hittade 3- och 8-poliga kontakter billigt på ebay).

Öppna batterifacket på tangentbordet och ta bort batterierna. Nära minussidan av batterierna hittar du två par ledningar anslutna tillsammans via en JST-kontakt. Om dina färger är som mina är de svarta ledningarna slipade (du kan bara kontrollera motståndet mellan det och minuspolen på batteriet) och de andra färgerna (bruna och gråa) är signalen.

På din 8-poliga Brainlink-port är anslutningen längst till vänster jordad (stiftet längst till 8-stiftets port) och den tredje stiftet från vänster är seriell mottagning. Löd jordkabeln på din Brainlink-kontakt till jordlinjen på tangentbordet och mottagningskabeln på Brainlink till signallinjen. Du kan upptäcka att det inte finns utrymme i tangentbordsområdet för lödanslutningen och JST-kontakten det var inuti tangentbordet. Om så är fallet, ta bara bort kontakten i JST-stil och löd båda trionerna av relevanta ledningar (två tangentbordsjordledare och en Brainlink-jordledning, två tangentbordssignaltrådar och en Brainlink-mottagningstråd).

Det är frestande att koppla bort IR-LED-sidan av JST-kontakten för att spara batteritid. Gör inte det. Signalen faller sönder om du gör det. Jag kollade med mitt oscilloskop.

Gör ett hål på batteriluckans läpp så att trådarna i Brainlink-fästet går igenom, använd eltejp för att hålla de två anslutningarna isolerade och knyt en liten dragavlastningsknut.

Slutligen, när allt är klart, täck antingen över irrelevanta kontakter på Brainlink -fästet eller klipp bara av de irrelevanta ledningarna.

Du kanske också vill limma fast kardborreband på Brainlink och tangentbordet för att hålla Brainlink på plats.

Steg 4: Användning med Android -enhet

Använd med Android -enhet
Använd med Android -enhet
  1. Koppla ihop Brainlink med din Android -enhet (PIN 1234).
  2. Installera min P1 -tangentbordsapp.
  3. Starta P1 -tangentbordsinställningar (en ikon för det ska finnas i din startprogram).
  4. Aktivera P1 -tangentbord i inställningar för Android -inmatningsmetoder. På nyare Android -versioner kan du aktivera P1 -tangentbordet genom att välja "Välj IME" i P1 -tangentbordsinställningar och klicka på "Ställ in inmatningsmetoder". (Du får en varning om att tangentbordet ser alla dina lösenord, etc. Det är en vanlig Android -varning: naturligtvis ser en tangentbordsdrivrutin allt du skriver. Om du är rädd, titta på tangentbordets källkod och bygg din egen.)
  5. Klicka på "Välj enhet" och välj din Brainlink (min visas som RN42-A308).
  6. Klicka på "Välj IME" i P1 -tangentbordets inställningar och välj P1 -tangentbord.
  7. Det kan ta lite tid att ansluta, men du bör få ett meddelande om att ha anslutit om allt går bra

Och du är klar! Donera gärna till författaren till BluezIME som P1 Keyboard är baserat på.

På Android 4.0+ kommer det att finnas ett meddelande i textfält som tillåter byte av inmatningsmetoder, så att du enkelt kan byta tillbaka till en annan inmatningsmetod.

Drivrutinen jag skrev för tangentbordet är väldigt enkel. Den stöder de vanliga tangenterna, men stöder inte många av de speciella accenterade tangenterna eller andra speciella saker. Jag lade till stöd för att använda de två knapparna med ett hem (FN-1 och nyckeln till vänster om utrymmet) som hem, med hjälp av Windows-tangenten och FN-2 som Meny och FN-3 som Sök. Dessutom fungerar ctrl-a, c, v, x som förväntat.

Det fungerar tillräckligt bra för att jag skrev det fullständiga första utkastet till denna Instructable på min Galaxy S2 -telefon med tangentbordet.

Steg 5: Andra tangentbord

Andra tangentbord
Andra tangentbord
Andra tangentbord
Andra tangentbord

Om du vill experimentera med andra infraröda tangentbord måste du ta reda på vilka signaler de skickar och med vilken överföringshastighet. Med Brainlink uppdaterad till IrDA-kompatibel programvara kan du ansluta med RealTerm till Brainlink. När du ser den upprepade "BL" -signalen som är hjärnlänkens signatur skriver du:

*J1Z

Stjärnan ber om uppmärksamhet, J1 växlar till 9600 baud IrDA (måste bara skriva in 1 snabbt efter J eller du får ett fel). Z är för seriell-till-Bluetooth-bryggläge.

Byt RealTerm för att visa hex -koder och tryck på tangenterna på tangentbordet och se om du kan förstå det.

För att avsluta seriellt bryggläge, slå på Brainlink.

Jag antar att 9600 baud är rätt baudhastighet. Om du inte lyckas kan du ändra Brainlink -överföringshastigheten. Jag skulle börja med att prova 57600 baud:

*J1u57Z

och sedan 1200 baud:

*J1u12Z

När du har kommit fram till hur tangentbordet skickar data, ändrar du bara koden för min drivrutin. Det är nog bara att ändra siffrorna i PalmOneWirelessKeyboard.java.

Rekommenderad: