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

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

O humilde Arduino pode fazer muitas coisas, mas você sabia que ele pode emular um teclado USB? Você pode combinar aqueles atalhos de teclado longos difíceis de lembrar 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 Introdução primeiro.





O que você precisa

Aqui está o que você precisa para fazer este projeto:





  • 1 x Arduino Pro Micro.
  • Botões momentâneos ou botões do teclado.
  • Resistores de 10K ohm.
  • Fios de conexão variados.
  • 1 x resistores de 220 ohms.
  • LED de 1 x 5 mm (0,197 polegadas).
  • Suporte LED de 1 x 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 integrado ao processador (Atmega32u4). É possível construir este projeto com outros Arduinos, como um UNO ou Nano, no entanto, requer muito trabalho duro para atualizar a bios e mexer para fazer as coisas funcionarem. Os clones de outros modelos do Arduino geralmente não funcionam, mas um clone Pro Micro também funciona.

OSOYOO Pro Micro ATmega32U4 5V / 16MHz Placa de Módulo com 2 Row pin Header Substitua por ATmega328 Pro Mini para Arduino COMPRE AGORA NA AMAZON

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 deseja usar. Estou usando interruptores de teclado mecânico Cherry MX para os botões de atalho reais, embora algum switch servirá, desde que seja momentâneo e não travado.



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

Plano de construção

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





Selecionando um switch

Existem várias variações de interruptores da série MX. Esse site fornece uma excelente introdução, no entanto, eles essencialmente se resumem a ruído e pressão. Alguns modelos requerem mais força para pressionar e alguns modelos fazem um som de 'clique' mecânico quando pressionados. Usei Cherry MX Browns, que não faz barulho quando pressionado. Eles têm todas as mesmas dimensões, então escolha qualquer modelo de sua preferência (ou misture e combine) sem se preocupar.

Você também precisará comprar alguns key caps, é claro, e há um mundo de designs personalizados lá fora para escolher - nós compramos KeyboardCo no Reino Unido





O caso

Imprimi este caso em 3D e você pode baixar o .STL arquivos de Thingiverse . Não se preocupe se você não possui uma impressora 3D, você ainda pode construí-la. Muitos sites oferecem serviços de impressão 3D, como Hubs 3D ou Shapeways . Como alternativa, este é um caso muito simples, você pode fazer o seu próprio de plastificado, perspex, madeira ou até mesmo papelão. Se você quiser ser realmente econômico, a Cherry MX vende um testador / amostrador de chave Amazonas ( Reino Unido ) Você precisará de 4 parafusos M5 x 35 mm e 4 porcas M5. É claro que você pode substituí-los por uma alternativa adequada que você tem.

Max Keyboard Keycap, Cherry MX Switch, Tester Kit (9 switches Pro Sampler Tester Kit) COMPRE AGORA NA AMAZON

Se você estiver fazendo seu próprio gabinete, há um detalhe importante que você precisa saber: os interruptores Cherry MX são encaixáveis ​​em seus orifícios de montagem. Eles exigem um orifício de montagem quadrado de 14 x 14 mm (0,551 pol.), Com a placa não sendo mais espessa que 1,5 mm (0,059 pol.). Se afastar muito dessas dimensões, seus interruptores podem não ser mais montados corretamente.

A caixa impressa em 3D tem duas partes, a parte superior e a parte inferior. Empurre os interruptores Cherry MX nos orifícios quadrados:

Certifique-se de montar os interruptores da maneira correta. A parte superior tem as palavras 'CEREJA' ativadas e a parte inferior tem um pequeno entalhe. Insira um LED de 3 mm neste pequeno slot:

Você pode achar que os LEDs ficam melhor montados 'de cabeça para baixo'. Esse foi o caso para os keycaps que usei e não afeta os interruptores de forma alguma.

Agora você deve ter nove interruptores com 9 LEDS. Não há necessidade de colar nenhuma dessas peças. A solda manterá os LEDs e a fricção manterá os interruptores.

Em seguida, aparafuse a montagem do LED (deixe o LED removido por enquanto). Você vai terminar de montar o gabinete mais tarde, uma vez que o circuito esteja montado.

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 de impressão (PCB). É simplesmente um pedaço de fibra de vidro com trilhas de cobre paralelas em uma direção. Essas trilhas podem ser soldadas ou cortadas. O corte de um trilho pode ser feito com uma ferramenta especial ou uma pequena broca.

Não está muito confiante em soldar? Dê uma olhada nesses projetos simples primeiro.

Este é o layout do stripboard (exclui pistas posteriores):

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

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

Isso deve se encaixar perfeitamente na parte inferior da caixa:

Certifique-se de que as faixas estejam rodando verticalmente.

Conecte o ânodo ( perna longa positiva ) do LED para o resistor de 200 ohms e, em seguida, para +5 V. Conecte o cátodo ( perna curta negativa ) à terra. Cubra as pernas com manga termorretrátil e, em seguida, empurre para dentro do suporte de LED. Não há necessidade de cola, no entanto, seu suporte de LED pode não ser push-fit, portanto, pode ser necessário adaptar estas instruções.

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

Agora é hora de soldar todos os LEDs para os keycaps. Eles são usados ​​exclusivamente para fazer as teclas brilharem, então você pode ignorá-las se quiser, e elas não precisam ser conectadas a um pino digital, apenas à força. Conecte todos os ânodos juntos e todos os cátodos juntos. Aprenda com meu erro - é muito mais fácil fazer isso antes de conectar os interruptores! Conecte os ânodos a +5 V através de um resistor de 220 ohms e os cátodos ao aterramento. Esses LEDs são conectados em paralelo. Aqui está o circuito apenas para esses LEDS:

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

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

Agora ligue os interruptores. Eles devem ser conectados por meio de um resistor de 10k, caso contrário, o Arduino morrerá. Isso é chamado de curto-circuito - +5 V vai diretamente para o solo, e tudo o que resta do seu Arduino será uma nuvem de fumaça (acredite, eu já matei um, então você não precisa). Este é o circuito para um switch:

Este circuito é o mesmo para todos os nove interruptores. Conecte as chaves aos pinos digitais de dois a dez, cada um com seu próprio resistor de 10K para aterramento. Cuidado ao soldar os interruptores Cherry MX, eles podem ser um pouco frágeis, vários pinos quebraram em mim. Você pode querer soldá-los diretamente em um pouco mais de stripboard, no entanto, cabos de arrasto ainda são adequados.

Isso é tudo para a fiação. Você pode querer montar um soquete fêmea USB tipo B, no entanto, os pequenos pinos neles podem ser bastante 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 entender as diferenças .

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

O código

Agora teste se o circuito está correto. É uma boa ideia fazer isso antes de continuar, para que você possa corrigir quaisquer problemas agora enquanto pode. Faça o upload deste código de teste (não se esqueça de selecionar a placa e a porta corretas do Ferramentas > Borda e Ferramentas > Porta menus):

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 alterar 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 pressionado. Assim como com o LED, se seu computador reclamar de puxar muita corrente ou se os LEDs apagarem quando você pressionar um botão, desconecte imediatamente! Você tem um curto em algum lugar do 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 usar um pouco de cola para segurar o circuito no lugar (embora os fios tenham se mantido bem). Aparafuse a tampa também.

Fazer o Arduino parecer um teclado é muito simples. Se você estiver usando um Nano ou UNO, você irá reprogramar seu Arduino usando Atualização de firmware do dispositivo (DFU). Isso geralmente é usado para atualizar o novo firmware para o Arduino. Você vai usá-lo para atualizar o Arduino com um novo firmware que o fará funcionar 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 essa etapa muito fácil. A lógica necessária para emular um teclado USB já está embutida no processador, então é tão simples quanto escrever algum código!

Primeiro, configure as chaves:

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

Este é um array 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 coleção de coisas com ideias semelhantes. Os computadores podem otimizar seu código para acessá-los rapidamente e eles aceleram o processo de escrita do 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 informa ao Arduino que todos os pinos do array são entradas. Um loop é usado para fazer isso, então ao invés 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 à biblioteca 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 pega um pino e verifica se ele foi pressionado ou não. Simplesmente retorna VERDADE ou FALSO . Ele também contém alguns debouncing de software - um simples atraso e, em seguida, verificar novamente o interruptor garante que o botão foi realmente pressionado.

Agora outro loop for é chamado dentro 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 examina todos os elementos do array e verifica se foi pressionado. Ele faz isso chamado de readButton método que você criou anteriormente. Se um botão for pressionado, ele passa o número do pino 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 um trocar demonstração. Declarações de switch (às vezes chamadas caixa de troca ) são semelhantes a um E se declaração, no entanto, eles são úteis para verificar se uma coisa (neste 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 dessa instrução switch. Keyboard.println grava texto no computador como se você tivesse digitado fisicamente todas as teclas. Keyboard.press pressiona e segura uma tecla. Não se esqueça de liberá-los usando Keyboard.releaseAll depois de um pequeno atraso!

como consertar este acessório pode não ser suportado

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 . Eles são particularmente úteis para pressionar atalhos de teclado. O site do Arduino tem um lista útil .

Agora, tudo o que resta é criar alguns atalhos. Você pode mapear isso para atalhos existentes, como Tudo + F4 (fechar programa no Windows) ou Cmd + Q (feche o programa macOS). Alternativamente, certifique-se de ler nosso melhor guia de atalhos de teclado , como criar atalhos do Windows e cada atalho do Chromebook para começar a criar seus próprios atalhos.

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

Esperamos que goste dos itens que recomendamos e discutimos! A MUO tem afiliados e parcerias patrocinadas, por isso recebemos uma parte da receita de algumas de suas compras. Isso não afetará o preço que você paga e nos ajuda a oferecer as melhores recomendações de produtos.

Compartilhado Compartilhado Tweet O email Veja por que o FBI emitiu um aviso para Hive Ransomware

O FBI emitiu um alerta sobre uma cepa particularmente desagradável de ransomware. Veja por que você precisa ser especialmente cauteloso com o ransomware Hive.

Leia a seguir
Tópicos relacionados
  • faça você mesmo
  • Teclado
  • Atalhos do teclado
  • Arduino
Sobre o autor Joe Coburn(136 artigos publicados)

Joe é graduado em Ciência da Computação pela University of Lincoln, no Reino Unido. Ele é um desenvolvedor de software profissional e, quando não está pilotando drones ou escrevendo música, pode ser encontrado tirando fotos ou produzindo vídeos.

Mais de Joe Coburn

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever