Taula de continguts:

Utilitzeu el teclat d'infrarojos Palm amb dispositius Android: 5 passos
Utilitzeu el teclat d'infrarojos Palm amb dispositius Android: 5 passos

Vídeo: Utilitzeu el teclat d'infrarojos Palm amb dispositius Android: 5 passos

Vídeo: Utilitzeu el teclat d'infrarojos Palm amb dispositius Android: 5 passos
Vídeo: Leap Motion SDK 2024, Juliol
Anonim
Utilitzeu el teclat d'infrarojos Palm amb dispositius Android
Utilitzeu el teclat d'infrarojos Palm amb dispositius Android
Utilitzeu el teclat d'infrarojos Palm amb dispositius Android
Utilitzeu el teclat d'infrarojos Palm amb dispositius Android
Utilitzeu el teclat d'infrarojos Palm amb dispositius Android
Utilitzeu el teclat d'infrarojos Palm amb dispositius Android

Tenia un teclat sense fil PalmOne assegut i volia tenir un teclat Bluetooth per al meu telèfon. L’únic problema era que el teclat PalmOne estava basat en infrarojos.

També tenia un dispositiu Brainlink. Aquest és un petit dispositiu bastant bonic per mediar entre diferents dispositius. Té un processador atxmega16, una bateria recarregable, alguns sensors, una ràdio Bluetooth, un munt de ports, una funda i algun firmware actualitzable per controlar-ho tot. El Brainlink es deixa d’utilitzar, però SurplusShed el té per 39 dòlars i tenen un 30-50% de descompte periòdic en les vendes de tot. Ho vaig aconseguir per 20 dòlars. També podeu utilitzar la vostra pròpia placa atxmega plus Bluetooth (esquemes aquí), però és possible que els vostres costos no siguin menors.

De totes maneres, després d’identificar on es troba la línia de senyal del teclat, fer una actualització de firmware per al Brainlink i escriure un controlador d’Android per al teclat, funciona bastant bé. Com que la major part del treball era investigació i programari, ara que ja està fet, és un projecte bastant fàcil per a qualsevol persona que tingui un enllaç cerebral. Necessites:

  • Teclat sense fil PalmOne
  • Enllaç cerebral
  • Un ancoratge de 3 o 8 pins per al Brainlink (connector d’estil JST d’1,25 mm); podeu utilitzar la connexió de 8 pins inclosa amb Brainlink, però voldreu demanar-ne més per a altres projectes
  • Soldadura i ferro
  • Cinta elèctrica
  • Opcional: tancament de ganxo i llaç

En el passat, he utilitzat Brainlink per connectar-me a un auricular Mindflex EEG i a un Roomba. És realment fantàstic per a tasques de pont de sèrie a Bluetooth. Acabo de fer diferents connectors per a diferents dispositius i puc moure el Brainlink entre ells.

Pas 1: antecedents

Antecedents
Antecedents
Antecedents
Antecedents
Antecedents
Antecedents

No dubteu a ometre aquesta descripció de fons.

El teclat sense fils PalmOne envia les seves dades a través d’un LED d’IR sobre una tija, mitjançant IrDA. Tot i que es podria utilitzar un detector IR per descodificar les dades, hi ha una manera més senzilla. Si doblegueu el teclat a la meitat, queden exposades tres tires de coure. El mig és terra i el inferior és una línia de transmissió. En posar-los a un oscil·loscopi es verifica que el senyal de la línia de transmissió es codifiqui a aproximadament 9600 (més exactament: 9760) 8 N 2, amb un nivell alt al voltant de 1,56 V i amb configuració de pols irDA: 1 és alt i polsos positius Preneu 3/16 del temps de bits.

Malauradament, tot això significa que no només podem connectar-lo a un mòdul Bluetooth senzill (almenys no sense fer-ne un firmware personalitzat), com vaig fer al meu projecte Mindflex. Afortunadament, el atxmega del Brainlink té un mode irDA per al seu UART. És senzill afegir una mica de codi al microprogramari de Brainlink permetent que un codi "J1" el canviï al mode IrDA. M’esperava que l’alt nivell d’1,56 V fos insuficient per al atxmega, però em va sorprendre gratament quan vaig connectar les tires de coure a GND i UART Receive al Brainlink i vaig veure els resultats a Realterm: estava rebent bones seqüències de sis bytes des del teclat.

Va resultar que la seqüència de sis bytes només s’empaqueta per a un codi d’escaneig d’un sol byte (amb la versió de marcatge de bits elevats). Concretament, la seqüència és FF C0 xx yy zz C1, on xx és el codi d’escaneig, yy es xx xor’ed amb FF i zz xx xor’ed amb 67. (En efecte, el codi d’exploració es transmet tres vegades: un cop clar i dues vegades codificat. Suposo que això és degut a que irDA és propens a la corrupció i, per tant, podeu fer servir la descodificació majoritària per obtenir el byte.) Després d'això, l'única dificultat del maquinari va ser trobar un lloc per soldar un connector al teclat.. I això no va ser difícil.

Pel que fa al programari, tot i que potser podria canviar el mòdul Bluetooth RN-42 en el mode Brainlink a mode HID, que tenia un potencial de maons, ja que si el mòdul no tornés a canviar a SPP, no seria capaç de parlar amb el Brainlink a través del seu protocol Bluetooth.

El més fàcil de fer era simplement fer servir l’aplicació de teclat de codi obert BluezIME que permet que diversos gamepads Bluetooth funcionin com a controladors d’Android i afegir un mode per a les seqüències de sis bytes del teclat sense fils Palm One. L’aplicació resultant és ara el teclat P1 gratuït a Google Play (codi font a github).

Pas 2: Actualització del firmware de Brainklink

Actualització del firmware de Brainklink
Actualització del firmware de Brainklink
Actualització del firmware de Brainklink
Actualització del firmware de Brainklink

Per habilitar el suport de dades serials en format IrDA al Brainlink, heu de carregar el firmware personalitzat. És fàcil amb un dispositiu Android i un programa de càrrega de microprogramari que he escrit (per cert, podeu modificar-lo perquè sigui un usuari de càrrega flash ATMega / atxmega AVR109 de propòsit general).

  1. Emparelleu el Brainlink (PIN 1234) amb un dispositiu Android; de totes maneres, haureu de fer-ho per connectar el teclat
  2. Descarregueu el programa de càrrega de microprogramari Brainlink de Google Play (font del programa de càrrega i del microprogramari a github).
  3. Desactiveu Brainlink i connecteu els pins 8 i 2 (estranyament, el pin 8 és el pin més esquerre i el pin 1 a la dreta) al port de 8 pins.
  4. Mantenint els pins connectats, activeu el Brainlink. El seu LED hauria de quedar blau.
  5. Seleccioneu el firmware personalitzat que vulgueu (si teniu un Roomba, un dels firmwares funciona millor amb Roombas més nous i l’altre amb els més antics) i premeu "Carrega".
  6. Ho hauria de ser, tot i que si teniu dificultats de connexió, potser haureu de provar-ho més d’una vegada.

El vostre Brainlink ara és més intel·ligent: no només admet la lectura de dades d’alguns dispositius IrDA (un cop localitzeu un senyal no modulat), sinó que també funciona com un enllaç estàndard Roomba-a-Bluetooth i pot capturar dades des d’un auricular Mindflex EEG. I el firmware és compatible.

Pas 3: connectar Brainlink al teclat

Connexió de Brainlink al teclat
Connexió de Brainlink al teclat
Connexió de Brainlink al teclat
Connexió de Brainlink al teclat
Connexió de Brainlink al teclat
Connexió de Brainlink al teclat

Necessitareu un connector de connexió que s’ajusti als tres pins de l’esquerra del port de 8 pins del Brainlink. Es tracta de connectors d’estil JST amb espaiat de pins de 1,25 mm. Podeu utilitzar un connector de tres pins (a la meva elecció) o un connector de 8 pins. Podeu utilitzar el connector de 8 pins que ve amb el Brainlink, però després voldreu demanar-ne més (he trobat connectors de 3 i 8 pins a ebay barats).

Obriu el compartiment de bateries del teclat i traieu-les. A prop del costat negatiu de les bateries, trobareu dos parells de cables connectats entre si mitjançant un connector d’estil JST. Si els vostres colors són com els meus, els cables negres estan triturats (només podeu comprovar la resistència entre aquest i el terminal menys de la bateria) i els altres colors (marró i gris) són el senyal.

Al port de 8 pins Brainlink, la connexió més esquerra està connectada a terra (el pin més esquerre del port de 8 pins) i el tercer pin de l’esquerra és la recepció en sèrie. Soldeu el cable de terra del connector Brainlink a la línia de terra del teclat i el cable de recepció del Brainlink a la línia de senyal. És possible que trobeu que no hi ha espai a la zona del teclat per a la connexió de soldadura i el connector d’estil JST. que hi havia dins del teclat. Si és així, només heu de treure el connector d’estil JST i soldar els dos trios de cables rellevants (dos cables de terra del teclat i un cable de terra Brainlink; dos cables de senyal del teclat i un cable de recepció Brainlink).

És temptador desconnectar el costat LED IR del connector d’estil JST per estalviar vida de la bateria. No ho facis. El senyal s’esfondra si ho feu. Ho vaig comprovar amb el meu oscil·loscopi.

Feu un forat al llavi de la tapa de la bateria perquè passin els cables de la connexió Brainlink, utilitzeu cinta elèctrica per mantenir les dues connexions aïllades i lligueu un petit nus d’alleujament de la tensió.

Finalment, quan tot estigui acabat, tapeu els contactes irrellevants de la xarxa de connexió Brainlink o tanqueu els cables irrellevants.

És possible que també vulgueu enganxar algun velcro al Brainlink i al teclat per mantenir el Brainlink al seu lloc.

Pas 4: utilitzar-lo amb el dispositiu Android

Ús amb dispositiu Android
Ús amb dispositiu Android
  1. Vinculeu el Brainlink amb el dispositiu Android (PIN 1234).
  2. Instal·la la meva aplicació de teclat P1.
  3. Inicieu la configuració del teclat P1 (una icona corresponent hauria d'estar al vostre iniciador).
  4. Activeu el teclat P1 a la configuració del mètode d'entrada d'Android. A les versions d'Android més recents, podeu activar el teclat P1 triant "Selecciona IME" a la configuració del teclat P1 i tocant "Configurar mètodes d'entrada". (Rebreu una advertència que el teclat veu totes les vostres contrasenyes, etc. Això és un advertiment estàndard d'Android: és clar, un controlador de teclat veu tot el que escriviu. Si us fa por, mireu el codi font del teclat i creeu el vostre.)
  5. Toqueu "Selecciona dispositiu" i trieu el vostre enllaç cerebral (el meu apareix com a RN42-A308).
  6. Toqueu "Selecciona IME" a la configuració del teclat P1 i seleccioneu Teclat P1.
  7. La connexió pot trigar una mica de temps, però hauríeu de rebre un missatge sobre la connexió si tot va bé

I ja està! No dubteu a fer una donació a l'autor de BluezIME en què es basa el teclat P1.

A Android 4.0+, quan als camps de text hi haurà una notificació que permet canviar els mètodes d’entrada, de manera que podeu tornar fàcilment a un altre mètode d’entrada.

El controlador que he escrit per al teclat és molt senzill. Admet les tecles normals, però no admet moltes de les tecles accentuades especials o altres coses especials. Vaig afegir suport per utilitzar els dos botons amb una llar (FN-1 i la tecla a l’esquerra de l’espai) com a Inici, mitjançant la tecla Windows i FN-2 com a menú i FN-3 com a cerca. A més, ctrl-a, c, v, x funciona com s’esperava.

Funciona prou bé que vaig escriure el primer esborrany complet d’aquest Instructable al telèfon Galaxy S2 amb el teclat.

Pas 5: Altres teclats

Altres teclats
Altres teclats
Altres teclats
Altres teclats

Si voleu experimentar amb altres teclats infrarojos, haureu d’esbrinar quins senyals envien i a quina velocitat de transmissió. Amb el Brainlink actualitzat al programari compatible amb IrDA, podeu connectar-vos amb RealTerm al Brainlink. Quan vegeu el senyal "BL" que es repeteix que és la signatura del Brainlink, escriviu:

* J1Z

L'asterisc demana atenció, J1 canvia a 9600 bauds IrDA (només heu d'escriure l'1 ràpidament després de la J o obtindreu un error). La Z és per al mode pont de sèrie a Bluetooth.

Canvieu RealTerm per mostrar codis hexadecimals i premeu les tecles del teclat per veure si en teniu sentit.

Per sortir del mode de pont en sèrie, cicle de potència el Brainlink.

Suposo que 9600 bauds és la velocitat de baud adequada. Si no ho feu, podeu canviar la velocitat de transmissió del Brainlink. Començaria provant 57600 bauds:

* J1u57Z

i després 1200 bauds:

* J1u12Z

Un cop hàgiu esbrinat com envia les dades el teclat, només heu de modificar el codi del meu controlador. Probablement, només n’hi ha prou amb canviar els números de PalmOneWirelessKeyboard.java.

Recomanat: