Índice:
- Suprimentos
- Etapa 1: Fiação e configuração
- Etapa 2: Teste de teclado
- Etapa 3: Visualização da conversão PS / 2 para USB
- Etapa 4: Explicação técnica
- Etapa 5: enviando o esboço final
- Etapa 6: Atualizando o Firmware
- Etapa 7: Aproveite …
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Você sempre quis usar seu antigo teclado PS / 2 com seu laptop ou novo PC de mesa e descobriu que eles não têm mais portas PS / 2? E então, em vez de comprar um adaptador PS / 2 para USB barato como uma pessoa normal faria, queria usar seu Arduino como um adaptador PS / 2 para USB. Então você veio ao lugar certo:)
Aviso justo antes de entrarmos nisso. Quando você está usando seu UNO / Mega como um dispositivo USB-HID (não limitado ao teclado, pode até ser um mouse, joystick, etc.) você perderá temporariamente suas funções como um Arduino. Com isso, quero dizer que você não pode usar as comunicações seriais e não pode reprogramá-las via USB. Isso ocorre porque iremos sobrescrever o firmware em seu chip de interface USB (cara perto da porta USB Atmega8U2 e 16U2 dependendo da revisão). Mas não se preocupe, você não pode realmente bloquear seu UNO / Mega fazendo isso, é sempre reversível.
Além disso, por acaso, se você tiver um Arduino que já possui um recurso USB-HID (Arduino Pro Micro ou Leonardo, etc, faça uma pesquisa no google) você pode esquecer que este instrutível já existiu vá diretamente aqui para se salvar de um mundo de problemas, apenas brincando!
Suprimentos
-
Hardware
- Arduino UNO ou Mega
- Teclado PS / 2
- Opcionalmente, um Arduino extra ou qualquer tipo de programador USB (USBasp, etc) pode ser útil.
-
Programas
- Atmel FLIP
- Biblioteca PS2KeyAdvanced para Arduino IDE
Etapa 1: Fiação e configuração
Dependendo da situação, você pode encontrar uma placa de breakout ou recuperar uma porta antiga de uma placa-mãe (minha 2ª tentativa) ou se você estiver se sentindo particularmente mal-humorado, pode até cortar o conector roxo e expor os 4 fios (minha 1ª tentativa) e conecte-os ao UNO.
Teclado_Arduino
+ 5V (VCC) _ + 5V
GROUND_GND
RELÓGIO_ PIN 2 **
DADOS _ PIN3 *
* Você pode alterar o pino de DADOS para o que quiser, mas lembre-se de atualizar o esboço.
** CLOCK deve ser conectado a um pino de interrupção no Arduino, que só pode ser o PIN 2 ou 3 (lembre-se de atualizar o esboço) em um UNO. Para obter mais informações e diferentes configurações de placa, você pode verificar a seção de comentários dos exemplos de biblioteca PS2KeyAdvanced.
Etapa 2: Teste de teclado
Antes de começar, certifique-se de que tudo está funcionando no teclado e na biblioteca.
Anexei aqui uma versão modificada do SimpleTest.ino de exemplos de biblioteca PS2KeyAdvanced com relógio atualizado e pinos de dados e também uma representação de "fazer" e "quebrar". Aqui está uma explicação para a saída.
- Este sistema de scancode "fazer" e "quebrar" e "Código", que é o scancode isolado (c & 0xFF) do pressionamento ou liberação da tecla, desempenha um papel importante na conversão de PS / 2 para USB e eu recomendo que você estude os outros 2 exemplos que vêm com a biblioteca para obter um melhor entendimento se você estiver planejando melhorar ou alterar (remapeando chaves para layouts diferentes) o esboço final. Além disso, você pode obter uma lista completa de scancodes PS / 2 da biblioteca abrindo os arquivos 'PS2KeyAdvanced.h' ou 'PS2KeyCode.h' em '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \'
- "Status Bits" refere-se às teclas modificadoras (Ctrl, Alt, Windows, Shift / Caps) e você verá que com cada tecla modificadora adicional, este valor muda enquanto o "Código" principal da tecla normal (não modificadora) permanece inalterado. Mas, no esboço final, desconsiderei esse método e implementei essas teclas modificadoras como simples pressionamentos de tecla (você verá que essas teclas modificadoras também têm scancode "make" e "break" independente das teclas normais, independentemente de várias teclas serem pressionadas ou não). porque torna as coisas mais fáceis com o protocolo USB-HID.
Etapa 3: Visualização da conversão PS / 2 para USB
Antes de atualizar o Atmega8U2 ou 16U2 (UNO Rev3) para identificar o nosso Arduino como um teclado USB, devemos ter certeza de que todo o material de conversão está funcionando corretamente e o esboço final final foi carregado ou, caso contrário, será um grande incômodo substituir o firmware novamente e novamente entre os arquivos hexadecimais do teclado original e USB apenas para que você pudesse fazer o upload do esboço correto. Isso se torna especialmente verdadeiro se você não tiver nenhum programador externo como um USBasp ou outro Arduino para usar como ISP. Então, aqui iremos fazer o upload de uma versão 'DEBUG' do esboço final com uma saída legível por humanos (através do monitor serial) para testar as coisas.
A saída que você vê será formatada assim quando cada tecla for liberada, 00 00 00 00 00 00 00 00
Aqui está uma explicação básica para a saída esperada,
Para cada novo pressionamento de tecla de modificador múltiplo, você deve obter uma nova linha com valores diferentes para 'xx'. Finalmente, quando você soltar todas as teclas modificadoras, 'xx' deve se tornar 00
xx 00 00 00 00 00 00 00 00
Para cada novo pressionamento de tecla normal múltiplo (por exemplo, pressionaremos a tecla hipotética a, a tecla b e a tecla c com os valores 'xx', 'yy' e 'zz' nessa ordem), você deve obter contínuo (não obrigatório) novas linhas como esta,
00 00 xx yy zz 00 00 00
quando você só solta a tecla b, a saída deve mudar para,
00 00 xx 00 zz 00 00 00
e se você pressionar a nova tecla d com o valor 'nn' sem soltar a tecla a ou b, sua saída deve mudar para,
00 00 xx nn zz 00 00 00
e, finalmente, volte a isso quando todas as teclas forem liberadas,
00 00 00 00 00 00 00 00
e, por último, se você pressionar Caps Lock, Num Lock ou Scroll Lock, deverá obter algo assim com várias linhas ao mesmo tempo,
00 00 xx 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
Se tudo aqui acontecer você terá ouro para prosseguir!
Etapa 4: Explicação técnica
Se desejar, você pode pular esta etapa. Esta é apenas uma explicação para os resultados anteriores. O array de 8 bytes de saída que você viu está formatado de acordo com a fig.1 acima. Você pode aprender muito mais sobre isso e também como o byte de status das teclas modificadoras é escrito neste wiki sobre USB-HID. Basicamente, o que meu código faz é cada vez que uma nova tecla é pressionada (o protocolo PS / 2 se refere a isso como 'make'), ele percorre os últimos 6 bytes da matriz que são usados para pressionamentos de tecla normais e preenche os primeiros byte vazio que encontra com o 'scancode HID' relevante (mostrado como na fig.2 Também você pode encontrar uma lista completa do PDF anexado) para o 'scancode PS / 2' recebido. E, finalmente, quando a chave relevante for liberada (o protocolo PS / 2 se refere a isso como 'quebra'), o código percorrerá a matriz de bytes atual e limpará apenas o byte relevante.
Se você seguiu até aqui e também se você leu a página wiki você verá que há um pequeno problema neste método, normalmente quando a chave é liberada, no protocolo HID os bytes restantes são reorganizados para se livrar dos bytes vazios entre bytes não vazios restantes. Mas por alguma razão, independentemente de quantas maneiras eu tentei, não consegui fazer funcionar como planejado sem limpar acidentalmente bytes indesejados para as teclas pressionadas também. Se você pode melhorar isso para fazê-lo funcionar, deixe um comentário. Embora no final do dia esse problema não afete a funcionalidade do teclado, desde que o Arduino ainda registre todas as teclas pressionadas, independentemente de sua ordem de pressionamento (o que não afeta nada no uso prático).
Etapa 5: enviando o esboço final
Portanto, antes de você finalmente atualizar o firmware do Atmega8U2 ou 16U2 (UNO Rev3) para identificar nosso Arduino como um teclado USB, devemos fazer o upload do Sketch Final. Depois de fazer o upload, se você for ao monitor serial, verá que ele imprime lixo a cada nova tecla pressionada, isso é um bom presságio de que tudo está funcionando como planejado e podemos prosseguir para a etapa final. YAY!!!
Etapa 6: Atualizando o Firmware
Finalmente, você pode atualizar o firmware do seu Arduino para registrá-lo como teclado USB. Para isso, não vou entrar em muitos detalhes, pois isso tornará as instruções muito longas.
- Siga este guia de arduino.cc sobre 'Atualizando o Atmega8U2 e 16U2 em um Uno ou Mega2560 usando DFU', mas em vez de usar 'Arduino-usbserial-uno.hex', use o anexo 'Arduino-keyboard-0.3.hex'
- No FLIP, lembre-se de selecionar o dispositivo de destino como Atmega8U2 ou 16U2 dependendo do seu Arduino e, a partir de selecione o meio de comunicação, escolha USB e finalmente carregue o arquivo hexadecimal correto antes de selecionar executar.
- Se você encontrou um erro de driver, vá para o gerenciador de dispositivos do Windows e selecione para pesquisar o driver desconhecido dentro do diretório de instalação de FLIP '\ Arquivos de Programas (x86) Atmel \'
- Se você encontrou erros ao atualizar o firmware do FLIP várias vezes, feche o FLIP e execute 'Redefinir preferências' no 'menu Iniciar / FLIP \' e reinicie o FLIP e execute as etapas de configuração antes de tentar novamente. Isso geralmente funciona para mim.
- Se você quiser restaurar seu Arduino ao seu estado original, siga o guia arduino.cc acima ao pé da letra, sem usar este arquivo hexadecimal.
Etapa 7: Aproveite …
Agora aproveite seu teclado PS / 2 para USB recém-convertido…. P. S. Este Instructable foi totalmente escrito a partir de um teclado PS / 2 externo conectado ao meu laptop através do Arduino:)
Recomendado:
Adaptador Arduino Nano para Arduino Uno: 6 etapas (com imagens)
Adaptador Arduino Nano para Arduino Uno: Arduino Nano é um bom, pequeno e barato membro da família Arduino. É baseado no chip Atmega328, o que o torna tão poderoso quanto o maior de seu irmão Arduino Uno, mas pode ser obtido por menos dinheiro. No Ebay, agora as versões chinesas podem
Faça seu próprio adaptador Rock Band Ekit (sem adaptador legado), de forma não destrutiva !: 10 etapas
Faça seu próprio adaptador Rock Band Ekit (sem adaptador legado), de forma não destrutiva !: Depois de ouvir um host de podcast popular mencionar sua preocupação com a morte do adaptador USB legado com fio, procurei uma solução DIY para conectar um eKit melhor / personalizado ao RB . Obrigado ao Sr. DONINATOR no Youtube que fez um vídeo detalhando seu p
Adaptador ZX Spectrum USB para Raspberry Pi RetroPie Builds: 5 etapas (com imagens)
Adaptador ZX Spectrum USB para Raspberry Pi RetroPie Builds: RetroPie é uma distribuição Linux especial projetada especificamente para emular sistemas de videogame retrô em Raspberry Pis e outros computadores de placa única. Já faz um tempo que estou querendo fazer tudo para construir uma RetroPie e quando vi essa reprodução
DSUB-15 para adaptador USB para almofadas DDR de fluxo de cobalto: 5 etapas
Adaptador DSUB-15 para USB para Cobalt Flux DDR Pads: Recentemente, comecei a gostar muito de DDR nos fliperamas e queria um pad só meu para jogar com Stepmania em casa. Depois de comprar um tapete barato na Amazon e não ficar totalmente satisfeito, encontrei um bloco Cobalt Flux DDR em meu OfferUp local. No entanto, não veio com
Adaptador 12v para USB Transformador 12v para 5v (ótimo para carros): 6 etapas
Adaptador de 12v para USB Transformador de 12v para 5v (ótimo para carros): Isso mostrará como fazer um adaptador de 12v para USB (5v). O uso mais óbvio disso é para adaptadores de carro de 12v, mas em qualquer lugar que você tenha 12v, você pode usá-lo! Se você precisar de 5v para qualquer outra coisa que não seja USB, simplesmente pule as etapas sobre como adicionar as portas USB