Faça seus próprios botões de atalho personalizados com um Arduino

O humilde Arduino pode fazer muitas coisas, mas sabia que pode emular um teclado USB? Você pode combinar atalhos de teclado longos em uma única tecla de atalho personalizada, com este circuito simples.

O humilde Arduino pode fazer muitas coisas, mas sabia que pode emular um teclado USB?  Você pode combinar atalhos de teclado longos em uma única tecla de atalho personalizada, com este circuito simples.
Propaganda

O humilde Arduino pode fazer muitas coisas, mas sabia que pode emular um teclado USB? Você pode combinar aqueles difíceis de lembrar atalhos de teclado longos em uma única tecla de atalho personalizada, com este circuito simples. Aqui está o resultado final:

Nunca usou um Arduino antes? Confira nosso guia de primeiros passos Introdução ao Arduino: um guia para iniciantes Introdução ao Arduino: um guia para iniciantes O Arduino é uma plataforma de prototipagem eletrônica de código aberto baseada em hardware e software flexíveis e fáceis de usar. É destinado a artistas, designers, amadores e qualquer pessoa interessada em criar objetos ou ambientes interativos. Leia mais primeiro.

O que você precisa

Peças de Atalho Arduino
Veja o que você precisa para fazer este projeto:

  • 1 x Arduino Pro Micro.
  • Botões momentâneos ou botões do teclado.
  • Resistências de 10K ohm.
  • Fios de conexão sortidos.
  • Resistências de 1 x 220 ohm.
  • 1 x 5 mm (0, 187 polegadas) LED.
  • 1 x suporte de LED de 5 mm.

Você precisará de um Arduino muito específico para este projeto. Estou usando um Pro Micro, como eles são tão pequenos e baratos, você precisa de um Arduino que tenha USB-Serial embutido no processador (Atmega32u4). É possível construir este projeto com outros Arduinos, como o UNO ou o Nano, no entanto, é necessário muito trabalho para reabrir as bios e mexer para fazer as coisas funcionarem. Clones de outros modelos do Arduino geralmente não funcionam, mas um clone do Pro Micro também é bom.

Placa de módulo OSOYOO Pro Micro ATmega32U4 5V / 16MHz com cabeçalho de 2 fileiras para arduino Leonardo Substitua ATmega328 Pro Placa de módulo Mini OSOYOO Pro Micro ATmega32U4 5V / 16MHz com 2 fileiras de cabeçalho para arduino Leonardo Substitua ATmega328 Pro Mini Compre agora na Amazon $ 8.99

Você precisará de um botão momentâneo, um resistor de 10K ohm e um fio de conexão apropriado para cada botão que desejar usar. Estou usando comutadores de teclado mecânico Cherry MX para os botões de atalho reais, embora qualquer comutador funcione, desde que seja momentâneo e não trava.

Você pode precisar de alguns outros itens, dependendo de como você constrói isso. Se você quiser prototipá-lo, precisará de uma placa de ensaio sem solda. Vale a pena gastar o dinheiro em um bom - às vezes eles podem ser muito pouco confiáveis. Se você quiser encaixotar isso, você vai querer comprar alguns stripboard.

Plano de construção

Veja como isso funcionará. O Arduino será programado para funcionar como um teclado USB - no que diz respeito ao seu computador, é. Vários botões conectados ao Arduino enviarão comandos importantes para o seu computador. Você só apertará um botão, mas o seu computador achará que você pressionou Alt > F4, por exemplo.

Selecionando um Switch

Arduino Cereja MX

Existem várias variações dos comutadores da série MX. Este site fornece uma excelente introdução, no entanto, eles essencialmente se reduzem a ruído e pressão. Alguns modelos exigem mais força para pressionar, e alguns modelos fazem um som mecânico de "clique" quando pressionados. Eu usei Cherry MX Browns, que não fazem barulho quando pressionados. Eles são todos da mesma dimensão, então escolha qualquer modelo que você goste (ou misture e combine) sem se preocupar.

Você também precisará comprar alguns protetores de tecla, é claro, e há um mundo de projetos personalizados por aí para escolher - compramos da KeyboardCo no Reino Unido

O caso

Eu imprimi este caso em 3D e você pode baixar os arquivos .STL do Thingiverse. Não se preocupe se você não possui uma impressora 3D, você ainda pode construir isso. Muitos sites fornecem serviços de impressão 3D, como Hubs 3D ou Shapeways. Alternativamente, este é um caso muito simples, você pode fazer o seu próprio de plasticard, perspex, madeira ou até mesmo papelão. Se você quer ser realmente parcimonioso, a Cherry MX vende um testador de comutador / sampler na Amazon (Reino Unido). Você precisará de 4 parafusos M5 x 35mm e 4 porcas M5. Você pode, naturalmente, substituí-los por uma alternativa adequada que você tem.

Max Teclado Keycap, cereja MX Switch, O-Ring Pro Sampler Testador Kit Max Teclado Keycap, cereja MX Switch, O-Ring Pro Sampler Testador Kit Compre agora Na Amazon $ 19.99

Se você está fazendo o seu próprio caso, há um detalhe importante que você precisa saber: os interruptores Cherry MX encaixam com força nos orifícios de montagem. Eles exigem um furo de montagem quadrado de 14 x 14 mm (0, 551 polegadas), com a placa não sendo mais espessa do que 1, 5 mm (0, 059 pol.). Caminhe muito longe dessas dimensões e suas chaves podem não ser montadas corretamente.

Caso de atalho
A caixa impressa em 3D está em duas partes, a parte superior e a inferior. Empurre os comutadores Cherry MX para os orifícios quadrados:

Atalho Cherry MX Mount

Certifique-se de montar os interruptores da maneira correta. O topo tem as palavras “CHERRY”, e o fundo tem um pequeno entalhe. Insira um LED de 3 mm neste pequeno slot:

LED MX de atalho para cereja

Você pode achar que os LEDs parecem melhor montados “de cabeça para baixo”. Este foi o caso das teclas que usei, e isso não afeta os switches.

Agora você deve ter nove switches com 9 LEDS. Não há necessidade de colar nenhuma dessas partes. A solda segurará os LEDs e o atrito segurará os interruptores.

Atalho Cereja MX Tudo

Em seguida, aparafuse a montagem do LED (deixe o LED removido por enquanto). Você terminará de montar o gabinete mais tarde, quando o circuito for construído.

O circuito

Este circuito é construído em stripboard. Isso é excelente para a construção de circuitos semipermanentes, sem o custo de uma placa de circuito impresso (PCB). É simplesmente um pedaço de fibra de vidro com faixas de cobre paralelas em uma direção. Essas faixas podem ser soldadas, bem como cortadas. Cortar uma esteira pode ser feito com uma ferramenta especial ou uma pequena broca.

Não muito confiante em soldar? Dê uma olhada nestes projetos simples Aprenda como soldar, com estas dicas e projetos simples Aprenda como soldar, com estas dicas e projetos simples Você está um pouco intimidado com o pensamento de um ferro quente e metal fundido? Se você quiser começar a trabalhar com eletrônicos, precisará aprender a soldar. Deixe-nos ajudar. Leia mais primeiro.

Aqui está o layout do stripboard (exclui leads à direita):

Arduino Atalho Stripboard

Certifique-se de cortar os traços sob os resistores e o Arduino. Como pode ser muito difícil ler um circuito de stripboard, aqui está uma versão da breadboard:

Arduino Atalho Breadboard

É um ajuste apertado para espremer todos os componentes em um espaço tão pequeno. Cortar os cantos do seu stripboard da seguinte forma:

Atalho Stripboard

Isso deve encaixar perfeitamente na parte inferior do gabinete:

Atalho Stripboard na Caixa

Certifique-se de que as faixas estejam sendo executadas verticalmente.

Conecte o ânodo ( perna longa, positiva ) do LED ao resistor de 200 ohm e depois a +5 V. Conecte o cátodo ( perna curta, negativo ) ao terra. Cubra as pernas com uma manga retráctil e, em seguida, empurre para dentro do suporte do LED. Não há necessidade de cola, no entanto, o seu suporte de LED pode não ser um encaixe, portanto, talvez seja necessário adaptar essas instruções.

LED de status de atalho

Você pode querer usar um LED bicolor aqui - isso permitirá que você configure dois ou mais bancos de interruptores, com um LED de status colorido diferente para cada banco.

Agora é hora de soldar todos os LEDs para as teclas. Estes são usados ​​unicamente para fazer as teclas brilharem, então você pode pulá-los se quiser, e eles não precisam estar conectados a um pino digital, apenas energia. Conecte todos os ânodos juntos e todos os cátodos juntos. Aprenda com o meu erro - é muito mais fácil fazer isso antes de ligar os interruptores! Conecte os ânodos a +5 V através de um resistor de 220 ohm e os catodos ao terra. Esses LEDs estão conectados em paralelo. Aqui está o circuito apenas para esses LEDs:

Circuito de LEDs de botão de atalho

Use um pequeno pedaço de tubulação termorretrátil para cobrir a conexão entre os LEDs e o Arduino:

Atenuador de calor com LED

Ligue o Arduino para testar todos os LEDs. Você não precisa fazer upload de nenhum código. Se algum LED não estiver funcionando, verifique sua fiação.

Teste de LED de atalho

Agora ligue os interruptores. Estes devem ser conectados através de um resistor de 10k, caso contrário o Arduino irá morrer. Isso é chamado de morto curto - +5 V vai direto para o chão, e tudo o que resta do seu Arduino será uma nuvem de fumaça (acredite, eu já matei um para você não precisar). Aqui está o circuito para um interruptor:

Circuito de Atalho Arduino

Este circuito é o mesmo para todos os nove comutadores. Conecte os comutadores aos pinos digitais de dois a dez, cada um com seu próprio resistor de 10K ao terra. Seja cuidadoso soldar Cherry MX switches, eles podem ser um pouco frágeis, eu tinha vários pinos quebram em mim. Você pode querer soldá-las diretamente a um pouco mais de strip-tease, no entanto, os cabos de guia ainda são adequados.

É isso para a fiação. Você pode querer montar um soquete fêmea USB tipo B, porém os pequenos pinos neles podem ser difíceis de soldar. Se você não deseja fazer isso, não se preocupe. O conector Micro USB no Arduino se encaixa perfeitamente no orifício do chassi. Se você está um pouco confuso sobre os diferentes tipos de USB, certifique-se de compreender as diferenças Entendendo os tipos de cabo USB e qual usar Entendendo os tipos de cabo USB e qual usar O mundo dos cabos USB pode ser um pouco confuso porque existem muitos tipos diferentes de conectores. Aqui está tudo que você precisa saber para não ficar confuso por mais tempo. Consulte Mais informação .

Finalmente, verifique se o seu circuito está correto. Um short pode destruir facilmente um Arduino, e pode ser fácil de usar usando stripboard.

O código

Agora teste o circuito está correto. É uma boa ideia fazer isso antes de prosseguir, para que você possa corrigir qualquer problema agora, enquanto puder. Carregue este código de teste (não se esqueça de selecionar a placa e a porta corretas nos menus Ferramentas > Placa e Ferramentas > Porta ):

const int buttons[] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; // array of all button pins void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(2, INPUT); pinMode(3, INPUT); pinMode(4, INPUT); pinMode(5, INPUT); pinMode(6, INPUT); pinMode(7, INPUT); pinMode(8, INPUT); pinMode(9, INPUT); pinMode(10, INPUT); } void loop() { // put your main code here, to run repeatedly: for(int i = 2; i< 11; ++i) { if(digitalRead(i) == HIGH) { // software de-bounce improves accuracy delay(10); if(digitalRead(i) == HIGH) { // check switches Serial.print ("input"); Serial.println(i); delay(250); } } } } 

Você pode precisar trocar os pinos se tiver modificado o circuito.

Depois de carregado, abra o monitor serial ( canto superior direito > Monitor serial ). Um por um, pressione cada botão. Você deve ver o monitor serial mostrar o número do botão que você pressionou. Assim como com o LED, se o seu computador reclamar de excesso de corrente, ou se os LEDs apagarem quando você pressionar um botão, desconecte imediatamente! Você tem um curto em algum lugar no circuito, verifique se o circuito está correto e se não há curtos entre as conexões.

Se tudo estiver funcionando, vá em frente e coloque o circuito na caixa. Você pode querer usar um pouco de cola para manter o circuito no lugar (embora os fios mantenham a minha bem). Aparafuse a tampa também.

Fazer o Arduino parecer ser um teclado é muito simples. Se você estiver usando um Nano ou UNO, você irá reprogramar seu Arduino usando o Device Firmware Update (DFU). Isso geralmente é usado para atualizar o novo firmware do Arduino. Você vai usá-lo para atualizar o Arduino com um novo firmware que fará com que funcione como um teclado. Isso não será abordado aqui, pois é uma tarefa bastante complexa. O site do Arduino tem um bom tutorial para isso.

O Arduino Pro Micro torna isso muito fácil. A lógica necessária para emular um teclado USB já está embutida no processador, por isso é tão simples quanto escrever algum código!

Primeiro, configure as chaves:

 int keys[] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; 

Esta é uma matriz contendo todos os pinos aos quais os botões estão conectados. Se você usou mais ou menos botões ou usou pinos diferentes, altere os valores aqui.

Uma matriz é uma coletânea de coisas que pensam como você. Os computadores podem otimizar seu código para acessá-los rapidamente e agilizam o processo de gravação de código.

Agora inicialize todos os pinos como entradas:

 void setup() { // put your setup code here, to run once: Keyboard.begin(); // setup keyboard for (int i = 2; i< 11; ++i) { // initilize pins pinMode(i, INPUT); } } 

Isso diz ao Arduino que todos os pinos da matriz são entradas. Um loop é usado para fazer isso, então, em vez de escrever pinMode (2, INPUT) nove vezes, você só precisa escrever uma vez. Isso também chama Keyboard.begin . Isso configura uma função incorporada na biblioteca do Arduino, projetada especificamente para emular um teclado.

Crie um método chamado readButton :

 boolean readButton(int pin) { // check and debounce buttons if (digitalRead(pin) == HIGH) { delay(10); if (digitalRead(pin) == HIGH) { return true; } } return false; } 

Isso leva um pin e verifica se ele foi pressionado ou não. Simplesmente retorna VERDADEIRO ou FALSO . Ele também contém algum software de debounce - um simples atraso e, em seguida, verificar novamente o switch garante que o botão realmente foi pressionado.

Agora outro loop for é chamado inside void loop () :

 void loop() { // put your main code here, to run repeatedly: for (int i = 2; i< 11; ++i) { // check buttons if(readButton(i)) { doAction(i); } } } 

Novamente, isso passa por todos os elementos da matriz e verifica se ela foi pressionada. Isso é chamado pelo método readButton criado anteriormente. Se um botão foi pressionado, ele passa esse número para outro método chamado doAction :

 void doAction(int pin) { // perform tasks switch (pin) { case 2: Keyboard.println("drive.google.com"); break; case 3: Keyboard.println("makeuseof.com"); break; case 4: // CMD + T (new tab, Chrome) Keyboard.press(KEY_LEFT_GUI); Keyboard.press('t'); delay(100); Keyboard.releaseAll(); break; case 5: // your task here break; case 6: // your task here break; case 7: // your task here break; case 8: // your task here break; case 9: // your task here break; } } 

Isso verifica o número do pino usando uma instrução switch . As declarações switch (às vezes chamadas de switch case ) são similares a uma instrução if, no entanto, elas são úteis para verificar se uma coisa (nesse caso, o número do pino) é igual a um dos vários resultados diferentes. Essencialmente, eles são muito mais rápidos de calcular.

Os componentes principais estão dentro desta declaração de chave. Keyboard.println grava texto no computador como se você digitasse fisicamente todas as chaves. Keyboard.press pressiona e segura uma tecla. Não se esqueça de lançá-los usando o Keyboard.releaseAll após um breve intervalo!

Aqui está o código completo:

 int keys[] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; void setup() { // put your setup code here, to run once: Keyboard.begin(); // setup keyboard for (int i = 2; i< 11; ++i) { // initilize pins pinMode(i, INPUT); } } void loop() { // put your main code here, to run repeatedly: for (int i = 2; i< 11; ++i) { // check buttons if(readButton(i)) { doAction(i); } } } boolean readButton(int pin) { // check and debounce buttons if (digitalRead(pin) == HIGH) { delay(10); if (digitalRead(pin) == HIGH) { return true; } } return false; } void doAction(int pin) { // perform tasks switch (pin) { case 2: Keyboard.println("drive.google.com"); break; case 3: Keyboard.println("makeuseof.com"); break; case 4: // CMD + T (new tab, Chrome) Keyboard.press(KEY_LEFT_GUI); Keyboard.press('t'); delay(100); Keyboard.releaseAll(); break; case 5: // your task here break; case 6: // your task here break; case 7: // your task here break; case 8: // your task here break; case 9: // your task here break; } } 

Além de todas as teclas numéricas e de letras, o Arduino pode pressionar a maioria das teclas especiais chamadas Modificadores de Teclado . Estes são particularmente úteis para pressionar atalhos de teclado. O site do Arduino tem uma lista útil.

Agora tudo o que resta é criar alguns atalhos. Você poderia mapear isso para os atalhos existentes, como Alt + F4 (fechar o programa no Windows) ou Cmd + Q (sair do programa macOS). Em alternativa, certifique-se de que lê o nosso guia de atalhos de teclado mais recente. Atalhos de teclado do Windows 101: O melhor guia Atalhos de teclado do Windows 101: O melhor guia Os atalhos de teclado podem poupar-lhe horas de tempo. Domine os atalhos de teclado universais do Windows, os truques de teclado para programas específicos e algumas outras dicas para acelerar o seu trabalho. Leia mais, como criar atalhos do Windows Como criar atalhos da área de trabalho do Windows da maneira mais fácil Como criar atalhos da área de trabalho do Windows de maneira fácil Os atalhos da área de trabalho inteligentes podem economizar uma peneiração de menus e pastas. Mostramos maneiras rápidas e fáceis de criá-las. Leia mais e todos os atalhos do Chromebook Aqui está todo atalho do Chromebook que você precisará saber Aqui estão todos os atalhos do Chromebook que você precisa. Você está procurando uma lista mestra de atalhos de teclado para o Chromebook? Aqui está toda combinação de teclas que você precisará para o Chrome OS! Leia mais para começar a criar seus próprios atalhos.

Você criou sua própria caixa de atalhos? Deixe-me saber nos comentários, eu adoraria ver algumas fotos!

In this article