Tabla de contenido:

Utilice el teclado infrarrojo de Palm con dispositivos Android: 5 pasos
Utilice el teclado infrarrojo de Palm con dispositivos Android: 5 pasos

Video: Utilice el teclado infrarrojo de Palm con dispositivos Android: 5 pasos

Video: Utilice el teclado infrarrojo de Palm con dispositivos Android: 5 pasos
Video: Mini Teclado Inalámbrico para PC, SMART TV y ANDROID 2024, Noviembre
Anonim
Utilice el teclado infrarrojo de Palm con dispositivos Android
Utilice el teclado infrarrojo de Palm con dispositivos Android
Utilice el teclado infrarrojo de Palm con dispositivos Android
Utilice el teclado infrarrojo de Palm con dispositivos Android
Utilice el teclado infrarrojo de Palm con dispositivos Android
Utilice el teclado infrarrojo de Palm con dispositivos Android

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.

También tenía un dispositivo Brainlink. 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 $ 39, y 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 más bajos.

De todos modos, después de identificar dónde está la línea de señal en el teclado, hacer una 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 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

Fondo
Fondo
Fondo
Fondo
Fondo
Fondo

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, mediante 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 código "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: estaba obteniendo buenas secuencias de seis bytes desde el 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, donde xx es el código de exploración, yy es xx xor'ed con FF, y zz es xx xor'ed con 67. (En efecto, el código de exploración se transmite tres veces: una vez claro 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 de 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 bloqueo, 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 la aplicación de teclado BluezIME de código abierto que permite que varios gamepads Bluetooth funcionen como controladores de Android y agregar un modo para las secuencias de seis bytes del teclado inalámbrico Palm One. La aplicación resultante es el teclado P1 gratuito en Google Play ahora (código fuente en github).

Paso 2: Actualización del firmware de Brainklink

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

Para habilitar el soporte de datos seriales en formato IrDA en el Brainlink, necesita 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. Descargue 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 teclado
Conexión de Brainlink al teclado
Conexión de Brainlink al teclado
Conexión de Brainlink al teclado
Conexión de Brainlink al teclado
Conexió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 pines (mi elección) o un conector de 8 pines. 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 (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
Uso con dispositivo Android
  1. Empareje el Brainlink con su dispositivo Android (PIN 1234).
  2. Instale mi aplicación de teclado P1.
  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 seleccionando "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 que te lleve un poco de tiempo conectarte, pero deberías recibir un mensaje indicando que te has conectado 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 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 teclados
Otros teclados
Otros teclados
Otros 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 vea la señal repetida "BL" que es la firma del Brainlink, escriba:

* J1Z

El asterisco pide atención, J1 cambia a IrDA de 9600 baudios (solo debe escribir el 1 rápidamente después de la J o obtendrá 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 basta con cambiar los números en PalmOneWirelessKeyboard.java.

Recomendado: