Inhoudsopgave:

Palm-infraroodtoetsenbord gebruiken met Android-apparaten - Ajarnpa
Palm-infraroodtoetsenbord gebruiken met Android-apparaten - Ajarnpa

Video: Palm-infraroodtoetsenbord gebruiken met Android-apparaten - Ajarnpa

Video: Palm-infraroodtoetsenbord gebruiken met Android-apparaten - Ajarnpa
Video: F(x)tec Pro1 Preview - Fysiek toetsenbord en ontgrendelde bootloader 2024, Juli-
Anonim
Palm-infraroodtoetsenbord gebruiken met Android-apparaten
Palm-infraroodtoetsenbord gebruiken met Android-apparaten
Palm-infraroodtoetsenbord gebruiken met Android-apparaten
Palm-infraroodtoetsenbord gebruiken met Android-apparaten
Palm-infraroodtoetsenbord gebruiken met Android-apparaten
Palm-infraroodtoetsenbord gebruiken met Android-apparaten

Ik had een PalmOne Wireless Keyboard zitten en ik wilde een Bluetooth-toetsenbord voor mijn telefoon hebben. Het enige probleem was dat het PalmOne-toetsenbord op infrarood was gebaseerd.

Ik had ook een Brainlink-apparaat. Dit is een nogal schattig klein apparaatje om te bemiddelen tussen verschillende apparaten. Het heeft een atxmega16-processor, een oplaadbare batterij, enkele sensoren, een Bluetooth-radio, een aantal poorten, een behuizing en wat upgradebare firmware om alles te regelen. De Brainlink wordt stopgezet, maar SurplusShed heeft het voor $ 39, en ze hebben periodiek 30-50% korting op alles. Ik heb hem voor 20 dollar. U kunt ook uw eigen atxmega plus Bluetooth-bord gebruiken (schema's hier), maar uw kosten zijn misschien niet lager.

Hoe dan ook, na het identificeren van waar de signaallijn op het toetsenbord is, het maken van een firmware-upgrade voor de Brainlink en het schrijven van een Android-stuurprogramma voor het toetsenbord, werkt het redelijk goed. Aangezien het meeste werk uit onderzoek en software bestond, is het nu een vrij eenvoudig project voor iedereen die een Brainlink heeft. Jij hebt nodig:

  • PalmOne draadloos toetsenbord
  • Hersenkoppeling
  • Een 3- of 8-pins kabel voor de Brainlink (1,25 mm pitch JST-stijl connector); je kunt de 8-pins kabel gebruiken die bij de Brainlink wordt geleverd, maar je wilt meer bestellen voor andere projecten
  • Soldeer en ijzer
  • Elektrische tape
  • Optioneel: klittenbandsluiting

In het verleden heb ik de Brainlink gebruikt om verbinding te maken met een Mindflex EEG-headset en met een Roomba. Het is echt geweldig voor seriële-naar-Bluetooth-overbruggingstaken. Ik maak gewoon verschillende connectoren voor verschillende apparaten en kan de Brainlink daartussen verplaatsen.

Stap 1: Achtergrond

Achtergrond
Achtergrond
Achtergrond
Achtergrond
Achtergrond
Achtergrond

Sla deze achtergrondbeschrijving gerust over.

Het PalmOne Wireless Keyboard verzendt zijn gegevens via een IR-LED op een steel, met behulp van IrDA. Hoewel men een IR-detector zou kunnen gebruiken om de gegevens te decoderen, is er een eenvoudigere manier. Als je het toetsenbord half vouwt, komen er drie koperen strips vrij. De middelste is aarde en de onderste is een zendlijn. Door ze op een oscilloscoop te plaatsen, wordt gecontroleerd of het signaal op de zendlijn is gecodeerd op ongeveer 9600 (meer precies: 9760) 8 N 2, met het hoge niveau rond 1,56 V, en met irDA-pulsvorming: 1 is hoog en positieve pulsen 3/16 van de bittijd in beslag nemen.

Helaas betekent dit alles dat we dit niet zomaar in een eenvoudige Bluetooth-module kunnen steken (althans niet zonder er aangepaste firmware voor te maken), zoals ik deed in mijn Mindflex-project. Gelukkig heeft de atxmega in de Brainlink een irDA-modus voor zijn UART. Het is eenvoudig om een stukje code aan de Brainlink-firmware toe te voegen, zodat een "J1"-code deze naar de IrDA-modus kan schakelen. Ik verwachtte dat het 1.56V hoge niveau onvoldoende zou zijn voor de atxmega, maar ik was aangenaam verrast toen ik de koperstrips aan GND en UART Receive op de Brainlink verbond en de resultaten in Realterm bekeek: ik kreeg mooie zes byte-reeksen van het toetsenbord.

Het bleek dat de reeks van zes bytes slechts een verpakking is voor een scancode van één byte (met hoge bitmarkeringsvrijgave). In het bijzonder is de volgorde FF C0 xx yy zz C1, waarbij xx de scancode is, yy xx is met FF en zz xx is met 67. (In feite wordt de scancode drie keer verzonden: eenmaal helder en tweemaal gecodeerd. Ik vermoed dat dit komt omdat irDA gevoelig is voor corruptie, en je dus meerderheidsdecodering kunt gebruiken om de byte te krijgen.) Daarna was het enige hardwareprobleem het vinden van een plek om een connector op het toetsenbord te solderen. En dat was niet moeilijk.

Aan de softwarekant, hoewel ik misschien de RN-42 Bluetooth-module in de Brainlink-modus naar de HID-modus zou kunnen schakelen, had dat potentieel, want als de module niet terugschakelde naar SPP, zou ik niet kunnen praten met de Brainlink via het Bluetooth-protocol.

Het was gemakkelijker om de open source BluezIME-toetsenbordapp te gebruiken waarmee verschillende Bluetooth-gamepads als Android-controllers kunnen functioneren en een modus toe te voegen voor de zes-byte-reeksen van het Palm One Wireless Keyboard. De resulterende app is nu het gratis P1-toetsenbord in Google Play (broncode op github).

Stap 2: Brainlink-firmware upgraden

Brainlink-firmware upgraden
Brainlink-firmware upgraden
Brainlink-firmware upgraden
Brainlink-firmware upgraden

Om seriële data-ondersteuning in IrDA-formaat op de Brainlink in te schakelen, moet u mijn aangepaste firmware laden. Het is gemakkelijk met een Android-apparaat en een firmware-uploader die ik heb geschreven (trouwens, je kunt de uploader wijzigen in een atmega/atxmega AVR109 flash-uploader voor algemeen gebruik).

  1. Koppel de Brainlink (PIN 1234) met een Android-apparaat - dat moet je toch doen om het toetsenbord te verbinden
  2. Download mijn Brainlink Firmware Uploader van Google Play (bron voor uploader en firmware op github).
  3. Zet Brainlink uit en sluit pinnen 8 en 2 (vreemd genoeg is pin 8 de meest linkse pin en pin 1 aan de rechterkant) aan op de 8-pins poort.
  4. Houd de pinnen aangesloten en schakel de Brainlink in. De LED moet blauw worden.
  5. Selecteer de gewenste aangepaste firmware (als je een Roomba hebt, werkt een van de firmwares beter met nieuwere Roombas en de andere met oudere), en druk op "Uploaden".
  6. Dat zou het moeten zijn, maar als je verbindingsproblemen hebt, moet je het misschien meer dan eens proberen.

Je Brainlink is nu slimmer: het ondersteunt niet alleen het lezen van gegevens van sommige IrDA-apparaten (zodra je een ongemoduleerd signaal hebt gevonden), maar functioneert ook als een standaard Roomba-naar-Bluetooth-verbinding en kan gegevens vastleggen van een Mindflex EEG-headset. En de firmware is achterwaarts compatibel.

Stap 3: Brainlink verbinden met toetsenbord

Brainlink verbinden met toetsenbord
Brainlink verbinden met toetsenbord
Brainlink verbinden met toetsenbord
Brainlink verbinden met toetsenbord
Brainlink verbinden met toetsenbord
Brainlink verbinden met toetsenbord

U hebt een tether-connector nodig die past op de drie meest linkse pinnen op de 8-pins poort van de Brainlink. Dit zijn connectoren in JST-stijl met een penafstand van 1,25 mm. Je kunt een driepolige connector (mijn keuze) of een 8-pins connector gebruiken. Je kunt de 8-pins connector gebruiken die bij de Brainlink wordt geleverd, maar dan wil je er meer van bestellen (ik vond 3- en 8-pins connectoren goedkoop op ebay).

Open het batterijcompartiment van het toetsenbord en verwijder de batterijen. In de buurt van de min-kant van de batterijen vind je twee paar draden die met elkaar zijn verbonden via een JST-achtige connector. Als je kleuren zijn zoals de mijne, zijn de zwarte draden geaard (je kunt gewoon de weerstand controleren tussen die en de minpool op de batterij) en de andere kleuren (bruin en grijs) zijn het signaal.

Op uw Brainlink 8-pins poort is de meest linkse verbinding massa (meest linkse pin van 8-pins poort) en de derde pin van links is seriële ontvangst. Soldeer de aarddraad op uw Brainlink-connector aan de aardingslijn op het toetsenbord en de ontvangstdraad op de Brainlink aan de signaallijn. Mogelijk vindt u dat er geen ruimte is in het toetsenbordgebied voor de soldeerverbinding en de JST-stijl connector dat zat in het toetsenbord. Als dat zo is, verwijder dan gewoon de JST-stijl connector en soldeer beide trio's van relevante draden (twee toetsenbordaardingsdraden en één Brainlink-aardingsdraad; twee toetsenbordsignaaldraden en één Brainlink-ontvangstdraad).

Het is verleidelijk om de IR LED-zijde van de JST-achtige connector los te koppelen om de batterij te sparen. Doe het niet. Het signaal valt uit elkaar als je dat doet. Ik heb het gecontroleerd met mijn oscilloscoop.

Maak een gat in de lip van het batterijklepje waar de draden van de Brainlink-kabel doorheen kunnen, gebruik isolatietape om de twee verbindingen geïsoleerd te houden en knoop een kleine spanningsontlastingsknoop.

Eindelijk, als alles klaar is, bedek je irrelevante contacten op de Brainlink-kabel of knip je gewoon de irrelevante draden af.

Je kunt ook wat klittenband op de Brainlink en het toetsenbord plakken om de Brainlink op zijn plaats te houden.

Stap 4: Gebruik met Android-apparaat

Gebruiken met Android-apparaat
Gebruiken met Android-apparaat
  1. Koppel de Brainlink met uw Android-apparaat (PIN 1234).
  2. Installeer mijn P1 Keyboard-app.
  3. Start P1-toetsenbordinstellingen (een pictogram ervoor zou in uw opstartprogramma moeten staan).
  4. Schakel P1-toetsenbord in in de instellingen van de Android-invoermethode. Op nieuwere Android-versies kunt u het P1-toetsenbord inschakelen door "Select IME" te kiezen in P1-toetsenbordinstellingen en op "Invoermethoden instellen" te tikken. (Je krijgt een waarschuwing dat het toetsenbord al je wachtwoorden ziet, enz. Dat is een standaard Android-waarschuwing: natuurlijk ziet een toetsenbordstuurprogramma alles wat je typt. Als je bang bent, kijk dan naar de broncode van het toetsenbord en bouw je eigen.)
  5. Tik op "Apparaat selecteren" en kies je Brainlink (de mijne verschijnt als RN42-A308).
  6. Tik op "Select IME" in de P1-toetsenbordinstellingen en selecteer P1-toetsenbord.
  7. Het kan even duren om verbinding te maken, maar je zou een bericht moeten krijgen dat je verbinding hebt gemaakt als alles goed gaat

En je bent klaar! Voel je vrij om te doneren aan de auteur van BluezIME waarop P1 Keyboard is gebaseerd.

Op Android 4.0+ zal er in tekstvelden een melding zijn die het mogelijk maakt om van invoermethode te wisselen, zodat u gemakkelijk terug kunt schakelen naar een andere invoermethode.

Het stuurprogramma dat ik voor het toetsenbord heb geschreven, is heel eenvoudig. Het ondersteunt de gewone toetsen, maar niet veel van de speciale toetsen met accenten of andere speciale dingen. Ik heb wel ondersteuning toegevoegd voor het gebruik van de twee knoppen met een home (FN-1 en de toets links van de spatie) als Home, met de Windows-toets en FN-2 als Menu en FN-3 als Zoeken. Ook ctrl-a, c, v, x werkt zoals verwacht.

Het werkt goed genoeg dat ik de volledige eerste versie van deze Instructable op mijn Galaxy S2-telefoon heb geschreven met het toetsenbord.

Stap 5: Andere toetsenborden

Andere toetsenborden
Andere toetsenborden
Andere toetsenborden
Andere toetsenborden

Als je wilt experimenteren met andere infrarood toetsenborden, moet je uitzoeken welke signalen ze uitzenden en met welke baudrate. Met de Brainlink geüpdatet naar de IrDA-compatibele software, kunt u met RealTerm verbinding maken met de Brainlink. Wanneer je het herhalende "BL"-signaal ziet dat de handtekening van de Brainlink is, typ je:

*J1Z

Het sterretje vraagt om aandacht, J1 schakelt over naar 9600 baud IrDA (je moet de 1 gewoon snel achter de J typen, anders krijg je een foutmelding). De Z is voor serieel-naar-Bluetooth bridge-modus.

Schakel over RealTerm om hexadecimale codes weer te geven, en druk op toetsen op het toetsenbord en kijk of u het begrijpt.

Om de seriële bridge-modus te verlaten, powercycle de Brainlink.

Ik gok dat 9600 baud de juiste baudrate is. Als dat niet lukt, kunt u de baudrate van de Brainlink wijzigen. Ik zou beginnen met 57600 baud te proberen:

*J1u57Z

en dan 1200 baud:

*J1u12Z

Als je eenmaal hebt uitgezocht hoe het toetsenbord zijn gegevens verzendt, pas dan gewoon de code van mijn stuurprogramma aan. Waarschijnlijk is alleen het wijzigen van de nummers in PalmOneWirelessKeyboard.java voldoende.

Aanbevolen: