Saltar al contenido

Utilice el teclado infrarrojo de Palm con dispositivos Android

julio 5, 2021
FIAQZH0HZS8U07I

Tenía un teclado inalámbrico PalmOne y quería tener un teclado Bluetooth para mi teléfono. El único problema era que el teclado PalmOne estaba basado en infrarrojos.

Yo tambien tuve un Brainlink dispositivo. Este es un pequeño dispositivo bastante lindo para mediar entre diferentes dispositivos. Tiene un procesador atxmega16, una batería recargable, algunos sensores, una radio Bluetooth, un montón de puertos, una carcasa y un firmware actualizable para controlarlo todo. El Brainlink está descontinuado pero SurplusShed lo tiene por $ 39y tienen un 30-50% de descuento periódico en todo. Lo compré por $ 20. También puede usar su propia placa atxmega plus Bluetooth (esquemas aquí), pero es posible que sus costos no sean menores.

De todos modos, después de identificar dónde está la línea de señal en el teclado, actualización de firmware para Brainlink y escribir un Controlador de Android para el teclado, funciona bastante bien. Dado que la mayor parte del trabajo fue de investigación y software, ahora que está hecho, es un proyecto bastante fácil para cualquiera que tenga un Brainlink. Necesitas:

  • Teclado inalámbrico PalmOne
  • Brainlink
  • Una correa de 3 u 8 pines para el Brainlink (conector estilo JST de paso de 1,25 mm); puede usar la correa de 8 pines incluida con el Brainlink, pero querrá pedir más para otros proyectos
  • Soldadura y hierro
  • Cinta eléctrica
  • Opcional: cierre de gancho y bucle

En el pasado, utilicé Brainlink para conectarme a un auricular Mindflex EEG y a un Roomba. Es realmente excelente para tareas de puenteo de serie a Bluetooth. Solo hago diferentes conectores para diferentes dispositivos y puedo mover el Brainlink entre ellos.

Paso 1: antecedentes

FondoFondoFondo

No dude en omitir esta descripción de fondo.

El teclado inalámbrico PalmOne envía sus datos a través de un LED de infrarrojos en un tallo, utilizando IrDA. Si bien se podría usar un detector de infrarrojos para decodificar los datos, existe una manera más fácil. Si dobla el teclado por la mitad, quedan expuestas tres tiras de cobre. El del medio es tierra y el de abajo es una línea de transmisión. Al colocarlos en un osciloscopio, se verifica que la señal en la línea de transmisión esté codificada en aproximadamente 9600 (más precisamente: 9760) 8 N 2, con el nivel alto alrededor de 1,56 V, y con forma de pulso irDA: 1 es alto y pulsos positivos toma 3/16 del tiempo de bit.

Desafortunadamente, todo esto significa que no podemos simplemente conectarlo a un módulo Bluetooth simple (al menos no sin hacer un firmware personalizado para él), como hice en mi proyecto Mindflex. Afortunadamente, el atxmega en Brainlink tiene un modo irDA para su UART. Es simple agregar un poco de código al firmware Brainlink permitiendo un “J1“para cambiarlo al modo IrDA. Esperaba que el nivel alto de 1.56V fuera insuficiente para el atxmega, pero me sorprendió gratamente cuando conecté las tiras de cobre a GND y UART Receive en Brainlink y vi los resultados en Realterm: I obtenía buenas secuencias de seis bytes del teclado.

Resultó que la secuencia de seis bytes solo está empaquetada para un código de escaneo de un solo byte (con liberación de marcado de bits alto). Específicamente, la secuencia es FF C0 xx yy zz C1, dónde xx es el código de escaneo, aa es xx xor’ed con FF, y zz es xx xor’ed con 67. (En efecto, el código de escaneo se transmite tres veces: una vez limpio y dos veces codificado. Supongo que esto se debe a que irDA es propenso a la corrupción, por lo que puede usar la decodificación mayoritaria para obtener el byte).
Después de eso, la única dificultad del hardware fue encontrar un lugar para soldar un conector en el teclado. Y eso no fue difícil.

En el lado del software, aunque tal vez podría cambiar el módulo Bluetooth RN-42 en el Brainlink al modo HID, eso tenía potencial de ladrillos, ya que si el módulo no volviera a cambiar a SPP, no podría hablar con el Brainlink a través de su protocolo Bluetooth.

Lo más fácil de hacer fue simplemente tomar el código abierto BluezIME aplicación de teclado que permite que varios gamepads Bluetooth funcionen como controladores de Android y agreguen un modo para las secuencias de seis bytes del teclado inalámbrico Palm One. La aplicación resultante es gratuita Teclado P1 en Google Play ahora (código fuente en github).

Paso 2: Actualización del firmware de Brainklink

Actualización del firmware de BrainklinkActualización del firmware de Brainklink

Para habilitar el soporte de datos en serie en formato IrDA en Brainlink, debe cargar mi firmware personalizado. Es fácil con un dispositivo Android y un cargador de firmware que escribí (por cierto, puede modificar el cargador para que sea un cargador flash atmega / atxmega AVR109 de propósito general).

  1. Empareje el Brainlink (PIN 1234) con un dispositivo Android; tendrá que hacerlo de todos modos para conectar el teclado
  2. Descarga mi Cargador de firmware Brainlink de Google Play (fuente para cargador y firmware en github).
  3. Apague Brainlink y conecte los pines 8 y 2 (curiosamente, el pin 8 es el pin más a la izquierda y el pin 1 está a la derecha) en el puerto de 8 pines.
  4. Manteniendo los pines conectados, encienda el Brainlink. Su LED debería volverse azul.
  5. Seleccione el firmware personalizado que desee (si tiene un Roomba, uno de los firmwares funciona mejor con los nuevos Roombas y el otro con los más antiguos) y presione “Cargar”.
  6. Eso debería ser todo, aunque si tiene dificultades de conexión, es posible que deba intentarlo más de una vez.

Su Brainlink ahora es más inteligente: no solo admite la lectura de datos de algunos dispositivos IrDA (una vez que localiza una señal no modulada), sino que también funciona como un enlace estándar de Roomba a Bluetooth y puede capturar datos de un auricular Mindflex EEG. Y el firmware es compatible con versiones anteriores.

Paso 3: Conexión de Brainlink al teclado

Conexión de Brainlink al tecladoConexión de Brainlink al tecladoConexión de Brainlink al tecladoConexión de Brainlink al tecladoConexión de Brainlink al tecladoConexión de Brainlink al teclado

Necesitará un conector de sujeción que se ajuste a los tres pines más a la izquierda en el puerto de 8 pines del Brainlink. Estos son conectores de estilo JST con un espaciado de pines de 1,25 mm. Puede utilizar un conector de tres clavijas (mi elección) o un conector de 8 clavijas. Puede usar el conector de 8 pines que viene con Brainlink, pero luego querrá pedir más de ellos (encontré conectores de 3 y 8 pines baratos en eBay).

Abra el compartimento de la batería del teclado y retire las baterías. Cerca del lado negativo de las baterías, encontrará dos pares de cables conectados entre sí a través de un conector estilo JST. Si sus colores son como los míos, los cables negros están conectados a tierra (puede verificar la resistencia entre ese y el terminal negativo de la batería) y los otros colores (marrón y gris) son la señal.

En su puerto Brainlink de 8 clavijas, la conexión más a la izquierda es tierra (la clavija más a la izquierda del puerto de 8 clavijas) y la tercera clavija de la izquierda es la recepción en serie. Suelde el cable de tierra en su conector Brainlink a la línea de tierra en el teclado y el cable de recepción en el Brainlink a la línea de señal Puede encontrar que no hay espacio en el área del teclado para la conexión de soldadura y el conector estilo JST que estaba dentro del teclado. Si es así, simplemente retire el conector estilo JST y suelde los dos tríos de cables relevantes (dos cables de tierra del teclado y un cable de tierra Brainlink; dos cables de señal del teclado y un cable de recepción Brainlink).

Es tentador desconectar el lado del LED de infrarrojos del conector estilo JST para ahorrar batería. No lo hagas. La señal se desmorona si haces eso. Lo comprobé con mi osciloscopio.

Haga un agujero en el borde de la tapa de la batería para que pasen los cables de la correa Brainlink, use cinta aislante para mantener las dos conexiones aisladas y haga un pequeño nudo para aliviar la tensión.

Finalmente, cuando todo esté hecho, cubra los contactos irrelevantes en la correa Brainlink o simplemente corte los cables irrelevantes.

Es posible que también desee pegar un poco de velcro en el Brainlink y el teclado para mantener el Brainlink en su lugar.

Paso 4: usar con un dispositivo Android

Uso con dispositivo Android

  1. Empareje el Brainlink con su dispositivo Android (PIN 1234).
  2. Instalar mi Teclado P1 aplicación.
  3. Inicie la configuración del teclado P1 (debe haber un ícono en su lanzador).
  4. Habilite el teclado P1 en la configuración del método de entrada de Android. En las versiones más recientes de Android, puede habilitar el teclado P1 eligiendo “Seleccionar IME” en la configuración del teclado P1 y tocando “Configurar métodos de entrada”. (Recibirá una advertencia de que el teclado ve todas sus contraseñas, etc. Esa es una advertencia estándar de Android: por supuesto, un controlador de teclado ve todo lo que escribe. Si está asustado, mire el código fuente del teclado y compile tu propio.)
  5. Toca “Seleccionar dispositivo” y elige tu Brainlink (el mío aparece como RN42-A308).
  6. Toque “Seleccionar IME” en la Configuración del teclado P1 y seleccione Teclado P1.
  7. Puede llevar un poco de tiempo conectarse, pero debería recibir un mensaje sobre la conexión si todo va bien.

¡Y tu estas listo! Siéntase libre de donar al autor de BluezIME en el que se basa P1 Keyboard.

En Android 4.0+, cuando se encuentre en campos de texto, habrá una notificación que le permitirá cambiar los métodos de entrada, para que pueda volver fácilmente a otro método de entrada.

El controlador que escribí para el teclado es muy simple. Admite las teclas ordinarias, pero no admite muchas de las teclas especiales acentuadas u otras cosas especiales. Agregué soporte para usar los dos botones con un inicio (FN-1 y la tecla a la izquierda del espacio) como Inicio, usando la tecla de Windows y FN-2 como Menú y FN-3 como Buscar. Además, ctrl-a, c, v, x funciona como se esperaba.

Funciona lo suficientemente bien que escribí el primer borrador completo de este Instructable en mi teléfono Galaxy S2 con el teclado.

Paso 5: otros teclados

Otros tecladosOtros teclados

Si desea experimentar con otros teclados infrarrojos, tendrá que averiguar qué señales envían y a qué velocidad en baudios. Con el Brainlink actualizado al software compatible con IrDA, puede conectarse con RealTerm al Brainlink. Cuando veas la repetición “licenciado en Derecho“señal que es la firma del Brainlink, escriba:

* J1Z

El asterisco pide atención, J1 cambia a 9600 baudios IrDA (solo debe escribir el 1 rápidamente después de la J o recibe un error). La Z es para el modo de puente de serie a Bluetooth.

Cambie RealTerm para mostrar códigos hexadecimales y presione las teclas del teclado para ver si puede entenderlo.

Para salir del modo de puente en serie, apague y encienda el Brainlink.

Supongo que 9600 baudios es la tasa de baudios correcta. De lo contrario, puede cambiar la velocidad en baudios del Brainlink. Comenzaría probando 57600 baudios:

* J1u57Z

y luego 1200 baudios:

* J1u12Z

Una vez que haya descubierto cómo el teclado envía sus datos, simplemente modifique el código de mi controlador. Probablemente solo cambiando los números en PalmOneWirelessKeyboard.java es suficiente.

Sé el primero en compartir

    2 comentarios

    0
    jcarlos10
    jcarlos10

    Hace 5 años en Introducción

    Hola, quiero hacer lo mismo, pero con un micro arduino a través de usb primero y tal vez más tarde con bluetooth, estoy empezando a investigar sobre cómo hacer esto con el mismo teclado y tengo algunas cosas que aclarar, pero si tienes el tiempo, agradecería un poco de ayuda para entender lo que tengo que hacer. Supongo que tengo que tomar su biblioteca y ponerla de alguna manera en el arduino que tiene que actuar como interfaz de teclado para el dispositivo Android, ¿hay algo que pueda decirme al respecto? ¿O es más fácil usar un módulo bluetooth con el arduino y tu aplicación?

    0
    MsSweetSatisfaction
    MsSweetSatisfaction

    Hace 6 años en Introducción

    Genial, es bueno saber que esos dos tipos pueden comunicarse incluso si es con un poco de modificación. ¡Gracias por compartir!

    close