Índice:

Use o teclado infravermelho da Palm com dispositivos Android: 5 etapas
Use o teclado infravermelho da Palm com dispositivos Android: 5 etapas

Vídeo: Use o teclado infravermelho da Palm com dispositivos Android: 5 etapas

Vídeo: Use o teclado infravermelho da Palm com dispositivos Android: 5 etapas
Vídeo: Estava lá e eu não sabia #celular #dicas #lanterna 2024, Julho
Anonim
Use o teclado infravermelho da Palm com dispositivos Android
Use o teclado infravermelho da Palm com dispositivos Android
Use o teclado infravermelho da Palm com dispositivos Android
Use o teclado infravermelho da Palm com dispositivos Android
Use o teclado infravermelho da Palm com dispositivos Android
Use o teclado infravermelho da Palm com dispositivos Android

Eu tinha um teclado sem fio PalmOne por perto e queria um teclado Bluetooth para meu telefone. O único problema era que o teclado PalmOne era baseado em infravermelho.

Eu também tinha um dispositivo Brainlink. Este é um pequeno dispositivo bastante atraente para mediar entre diferentes dispositivos. Ele tem um processador atxmega16, uma bateria recarregável, alguns sensores, um rádio Bluetooth, um monte de portas, um case e algum firmware atualizável para controlar tudo. O Brainlink foi descontinuado, mas a SurplusShed o vendeu por US $ 39, e eles têm 30-50% de desconto nas vendas periódicas de tudo. Comprei por $ 20. Você também pode usar sua própria placa atxmega plus Bluetooth (esquemas aqui), mas seus custos podem não ser menores.

De qualquer forma, depois de identificar onde está a linha de sinal no teclado, fazer uma atualização de firmware para o Brainlink e escrever um driver Android para o teclado, funciona muito bem. Já que a maior parte do trabalho era investigação e software, agora que está feito é um projeto bem fácil para qualquer pessoa que tenha um Brainlink. Você precisa:

  • Teclado PalmOne Wireless
  • Brainlink
  • Um cabo de 3 ou 8 pinos para o Brainlink (conector estilo JST com pitch de 1,25 mm); você pode usar a corda de 8 pinos incluída com o Brainlink, mas você vai querer pedir mais para outros projetos
  • Solda e ferro
  • Fita isolante
  • Opcional: prendedor de velcro

No passado, usei o Brainlink para conectar a um fone de ouvido Mindflex EEG e a um Roomba. É realmente ótimo para tarefas de ponte serial para Bluetooth. Acabei de fazer diferentes conectores para diferentes dispositivos e posso mover o Brainlink entre eles.

Etapa 1: Plano de fundo

Fundo
Fundo
Fundo
Fundo
Fundo
Fundo

Sinta-se à vontade para pular esta descrição de fundo.

O teclado sem fio PalmOne envia seus dados por meio de um LED IR em uma haste, usando IrDA. Embora seja possível usar um detector de infravermelho para decodificar os dados, existe uma maneira mais fácil. Se você dobrar o teclado pela metade, três tiras de cobre serão expostas. O do meio é aterrado e o inferior é uma linha de transmissão. Colocá-los em um osciloscópio verifica se o sinal na linha de transmissão está codificado em aproximadamente 9600 (mais precisamente: 9760) 8 N 2, com o nível alto em torno de 1,56 V e com formatação de pulso irDA: 1 é alto e pulsos positivos leva 3/16 do tempo de bit.

Infelizmente, tudo isso significa que não podemos simplesmente conectar isso a um módulo Bluetooth simples (pelo menos não sem fazer um firmware personalizado para ele), como fiz no meu projeto Mindflex. Felizmente, o atxmega no Brainlink tem um modo irDA para seu UART. É simples adicionar um pouco de código ao firmware Brainlink, permitindo que um código "J1" mude para o modo IrDA. Eu esperava que o nível alto de 1,56 V fosse insuficiente para o atxmega, mas fiquei agradavelmente surpreso quando conectei as tiras de cobre ao GND e UART Receive no Brainlink e vi os resultados no Realterm: eu estava obtendo belas sequências de seis bytes do teclado.

Descobriu-se que a sequência de seis bytes é apenas empacotamento para um código de varredura de byte único (com liberação de marcação de bits alta). Especificamente, a sequência é FF C0 xx yy zz C1, onde xx é o código de varredura, yy é xx xor'ed com FF e zz é xx xor'ed com 67. (Na verdade, o código de varredura é transmitido três vezes: uma vez claro e duas vezes codificado. Suponho que isso seja porque o irDA é propenso a corrupção e, portanto, você pode usar a decodificação majoritária para obter o byte.) Depois disso, a única dificuldade de hardware foi encontrar um lugar para soldar um conector no teclado. E isso não foi difícil.

No lado do software, embora talvez eu pudesse mudar o módulo RN-42 Bluetooth no Brainlink para o modo HID, isso tinha potencial de bricking, já que se o módulo não voltasse para SPP, eu não seria capaz de falar com o Brainlink por meio de seu protocolo Bluetooth.

A coisa mais fácil de fazer foi pegar o aplicativo de teclado de código aberto BluezIME que permite que vários gamepads Bluetooth funcionem como controladores Android e adicionar um modo para as sequências de seis bytes do teclado sem fio Palm One. O aplicativo resultante é o teclado P1 gratuito no Google Play agora (código-fonte no github).

Etapa 2: Atualizando o Firmware Brainklink

Atualizando o Firmware Brainklink
Atualizando o Firmware Brainklink
Atualizando o Firmware Brainklink
Atualizando o Firmware Brainklink

Para habilitar o suporte a dados seriais no formato IrDA no Brainlink, você precisa carregar meu firmware personalizado. É fácil com um dispositivo Android e um uploader de firmware que escrevi (a propósito, você pode modificar o uploader para ser um uploader de flash atmega / atxmega AVR109 de uso geral).

  1. Emparelhe o Brainlink (PIN 1234) com um dispositivo Android - você terá que fazer isso de qualquer maneira para conectar o teclado
  2. Baixe meu Brainlink Firmware Uploader do Google Play (fonte para uploader e firmware no github).
  3. Desligue o Brainlink e conecte os pinos 8 e 2 (estranhamente, o pino 8 é o pino mais à esquerda e o pino 1 está à direita) na porta de 8 pinos.
  4. Segurando os pinos conectados, ligue o Brainlink. Seu LED deve ficar azul.
  5. Selecione o firmware personalizado que deseja (se você tiver um Roomba, um dos firmwares funciona melhor com Roombas mais recentes e o outro com os mais antigos) e pressione "Upload".
  6. Deve ser isso, mas se você tiver dificuldades de conexão, pode ser necessário tentar mais de uma vez.

Seu Brainlink agora é mais inteligente: ele não apenas suporta a leitura de dados de alguns dispositivos IrDA (assim que você localizar um sinal não modulado), mas também funciona como um link Roomba para Bluetooth padrão e pode capturar dados de um fone de ouvido Mindflex EEG. E o firmware é compatível com versões anteriores.

Etapa 3: conectando o Brainlink ao teclado

Conectando Brainlink ao teclado
Conectando Brainlink ao teclado
Conectando Brainlink ao teclado
Conectando Brainlink ao teclado
Conectando Brainlink ao teclado
Conectando Brainlink ao teclado

Você precisará de um conector de corda que se encaixe nos três pinos mais à esquerda na porta de 8 pinos do Brainlink. Esses são conectores do tipo JST com espaçamento entre pinos de 1,25 mm. Você pode usar um conector de três pinos (minha escolha) ou um conector de 8 pinos. Você pode usar o conector de 8 pinos que vem com o Brainlink, mas então você vai querer encomendar mais deles (eu encontrei conectores de 3 e 8 pinos baratos no ebay).

Abra o compartimento da bateria do teclado e remova as baterias. Perto do lado negativo das baterias, você encontrará dois pares de fios conectados por meio de um conector do tipo JST. Se suas cores são como as minhas, os fios pretos são aterrados (você pode apenas verificar a resistência entre esse e o terminal negativo da bateria) e as outras cores (marrom e cinza) são o sinal.

Na porta Brainlink de 8 pinos, a conexão mais à esquerda é aterrada (pino mais à esquerda da porta de 8 pinos) e o terceiro pino da esquerda é o recebimento serial. Solde o fio terra do conector Brainlink à linha terra do teclado e o fio de recepção do Brainlink à linha de sinal. Você pode descobrir que não há espaço na área do teclado para a conexão de solda e o conector estilo JST que estava dentro do teclado. Se for o caso, basta remover o conector do tipo JST e soldar os dois trios de fios relevantes (dois fios de aterramento do teclado e um fio de aterramento Brainlink; dois fios de sinal do teclado e um fio de recepção Brainlink).

É tentador desconectar o lado do LED IV do conector estilo JST para economizar bateria. Não faça isso. O sinal se desfaz se você fizer isso. Eu verifiquei com meu osciloscópio.

Faça um orifício na borda da tampa da bateria para que os fios do cordão Brainlink passem, use fita isolante para manter as duas conexões isoladas e dê um pequeno nó de alívio de tensão.

Finalmente, quando tudo estiver feito, cubra os contatos irrelevantes na corda do Brainlink ou apenas corte os fios irrelevantes.

Você também pode querer colar um pouco de velcro no Brainlink e no teclado para mantê-lo no lugar.

Etapa 4: Uso com dispositivo Android

Usando com dispositivo Android
Usando com dispositivo Android
  1. Emparelhe o Brainlink com seu dispositivo Android (PIN 1234).
  2. Instale meu aplicativo de teclado P1.
  3. Abra as configurações do teclado P1 (um ícone para ele deve estar em seu inicializador).
  4. Ative o teclado P1 nas configurações do método de entrada do Android. Em versões mais recentes do Android, você pode habilitar o teclado P1 escolhendo "Selecionar IME" nas configurações do teclado P1 e tocando em "Configurar métodos de entrada". (Você receberá um aviso de que o teclado vê todas as suas senhas, etc. Esse é um aviso padrão do Android: é claro, um driver de teclado vê tudo o que você digita. Se você estiver com medo, olhe o código-fonte do teclado e crie seu próprio.)
  5. Toque em "Selecionar dispositivo" e escolha seu Brainlink (o meu aparece como RN42-A308).
  6. Toque em "Selecionar IME" nas configurações do teclado P1 e selecione Teclado P1.
  7. Pode demorar um pouco para se conectar, mas você deve receber uma mensagem sobre a conexão se tudo correr bem

E pronto! Sinta-se à vontade para fazer uma doação ao autor do BluezIME no qual o teclado P1 é baseado.

No Android 4.0+, quando em campos de texto, haverá uma notificação que permite alternar os métodos de entrada, para que você possa facilmente voltar para outro método de entrada.

O driver que escrevi para o teclado é muito simples. Ele suporta as teclas comuns, mas não suporta muitas das teclas especiais acentuadas ou outras coisas especiais. Eu adicionei suporte para usar os dois botões com uma casa (FN-1 e a tecla à esquerda do espaço) como Casa, usando a tecla Windows e FN-2 como Menu e FN-3 como Pesquisa. Além disso, ctrl-a, c, v, x funciona conforme o esperado.

Funciona tão bem que escrevi o primeiro rascunho completo deste Instructable no meu telefone Galaxy S2 com o teclado.

Etapa 5: outros teclados

Outros Teclados
Outros Teclados
Outros Teclados
Outros Teclados

Se você quiser experimentar outros teclados infravermelhos, terá que descobrir quais sinais eles enviam e a que taxa de transmissão. Com o Brainlink atualizado para o software compatível com IrDA, você pode se conectar com o RealTerm ao Brainlink. Ao ver a repetição do sinal "BL" que é a assinatura do Brainlink, digite:

* J1Z

O asterisco pede atenção, J1 muda para 9600 baud IrDA (basta digitar 1 rapidamente após J ou você obterá um erro). O Z é para o modo de ponte serial para Bluetooth.

Alterne o RealTerm para exibir os códigos hexadecimais e pressione as teclas do teclado para ver se consegue entendê-los.

Para sair do modo de ponte serial, desligue e ligue o Brainlink.

Eu estou supondo que 9600 baud é a taxa de transmissão certa. Caso contrário, você pode alterar a taxa de transmissão do Brainlink. Eu começaria tentando 57600 baud:

* J1u57Z

e então 1200 baud:

* J1u12Z

Depois de descobrir como o teclado envia seus dados, basta modificar o código do meu driver. Provavelmente, apenas alterar os números em PalmOneWirelessKeyboard.java é o suficiente.

Recomendado: