Haga sus propios botones de acceso directo personalizados con un Arduino

Haga sus propios botones de acceso directo personalizados con un Arduino / Bricolaje

El humilde Arduino puede hacer muchas cosas, pero ¿sabías que puede emular un teclado USB? Puede combinar los atajos de teclado largos difíciles de recordar en una sola tecla de atajo personalizada, con este simple circuito. Aquí está el resultado final:

¿Nunca usaste un Arduino antes? Consulte nuestra guía de introducción Arduino es una plataforma de creación de prototipos de electrónica de código abierto basada en hardware y software flexibles y fáciles de usar. Está dirigido a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos. Leer más primero.

Que necesitas


Esto es lo que necesitas para hacer este proyecto:

  • 1 x Arduino Pro Micro.
  • Botones momentáneos o botones del teclado.
  • Resistencias de 10K ohmios.
  • Cables de conexión surtidos.
  • 1 x 220 ohmios de resistencia.
  • 1 x 5 mm (0.197 pulgadas) LED.
  • Soporte LED de 1 x 5 mm..

Necesitará un Arduino muy específico para este proyecto. Estoy usando un Pro Micro, ya que son muy pequeños y baratos, necesitas un Arduino que tenga un USB-Serial integrado en el procesador (Atmega32u4). Es posible construir este proyecto con otros Arduinos, como UNO o Nano, sin embargo, se requiere mucho trabajo para volver a flashear el BIOS y jugar para que las cosas funcionen. Los clones de otros modelos Arduino no suelen funcionar en absoluto, pero un clon Pro Micro también está bien.

OSOYOO Pro Micro ATmega32U4 5V / 16MHz Tarjeta de módulo con cabezal de 2 hileras para arduino Leonardo Reemplazar ATmega328 Pro Mini OSOYOO Pro Micro ATmega32U4 5 V / 16MHz Tablero de módulo con 2 hileras de pines para arduino Leonardo Reemplace ATmega328 Pro Mini Compre ahora en Amazon $ 8.99

Necesitará un botón momentáneo, una resistencia de 10K ohmios y un cable de conexión apropiado para cada botón que quiera usar. Estoy usando los interruptores del teclado mecánico Cherry MX para los botones de acceso directo reales, aunque alguna El interruptor funcionará, siempre que sea momentáneo y no se trabe.

Es posible que necesites algunos otros elementos dependiendo de cómo construyas esto. Si desea crear un prototipo, necesitará una placa de pruebas sin soldadura. Vale la pena gastar el dinero en uno bueno, a veces puede ser muy poco confiable. Si quieres encuadrar esto, querrás comprar un stripboard.

Plan de construcción

Así es como funcionará esto. El Arduino estará programado para actuar como un teclado USB, en lo que respecta a su computadora, lo es. Varios botones conectados al Arduino enviarán comandos de teclado a su computadora. Solo presionarás un botón, pero tu computadora pensará que has presionado Alt > F4, por ejemplo.

Seleccionando un interruptor

Hay varias variaciones de los interruptores de la serie MX. Este sitio web proporciona una excelente introducción, sin embargo, esencialmente se reducen al ruido y la presión. Algunos modelos requieren más fuerza para presionar, y algunos modelos hacen una mecánica “hacer clic” Sonido al presionarlo. He usado Cherry MX Browns, que no hacen ruido cuando se los presiona. Son todas las mismas dimensiones, así que elija cualquier modelo que le guste (o mezcle y combine) sin preocupaciones.

Por supuesto, también tendrá que comprar algunas tapas de teclas, y hay un mundo de diseños personalizados para elegir: los compramos en KeyboardCo en los EE. UU..

El caso

He impreso en 3D este estuche, y puedes descargar el .STL archivos de Thingiverse. No se preocupe si no posee una impresora 3D, aún puede construir esto. Muchos sitios web ofrecen servicios de impresión 3D, como 3D Hubs o Shapeways. Alternativamente, este es un caso muy simple, usted podría hacer su propio de plasticard, plexiglás, madera o incluso cartón. Si desea ser realmente ahorrativo, Cherry MX vende un probador / muestreador de interruptores en Amazon (Reino Unido). Necesitará 4 tornillos M5 x 35 mm y 4 tuercas M5. Por supuesto, puede sustituirlos por una alternativa adecuada que tenga..

Max Keyboard Keycap, Cherry MX Switch, O-Ring Pro Sampler Tester Kit Max Keyboard Keycap, Cherry MX Switch, Cherry O-Ring Pro Sampler Tester Kit Compra ahora en Amazon

Si está haciendo su propio estuche, hay un detalle importante que debe saber: los interruptores Cherry MX encajan a presión en sus orificios de montaje. Requieren un orificio de montaje cuadrado de 14 x 14 mm (0.551 pulgadas), con la placa que no sea más gruesa que 1.5 mm (0.059 pulgadas). Alejarse demasiado de estas dimensiones, y es posible que sus interruptores ya no se monten correctamente.


La funda impresa en 3D está en dos partes, la superior y la inferior. Empuje los interruptores Cherry MX en los agujeros cuadrados:

Asegúrate de montar los interruptores de manera correcta. La parte superior tiene las palabras. “CEREZA” encendido, y el fondo tiene una pequeña muesca. Inserte un LED de 3 mm en esta pequeña ranura:

Usted puede encontrar que los LED se ven mejor montados “al revés”. Este fue el caso de los keycaps que usé, y no afecta en absoluto a los interruptores.

Ahora debería tener nueve interruptores con 9 LEDS. No es necesario pegar ninguna de estas partes. La soldadura sostendrá los LED y la fricción mantendrá los interruptores.

A continuación, atornille el soporte del LED (deje el LED retirado por ahora). Terminará de armar el estuche más adelante, una vez que se haya construido el circuito..

El circuito

Este circuito está construido sobre stripboard. Esto es excelente para construir circuitos semipermanentes, sin el costo de una placa de circuito de impresión (PCB). Es simplemente una pieza de fibra de vidrio con pistas de cobre paralelas en una dirección. Estas pistas se pueden soldar, así como cortar. Se puede cortar una pista con una herramienta especial o con una broca pequeña.

¿No es demasiado seguro para soldar? Eche un vistazo a estos proyectos simples Aprenda a soldar, con estos consejos y proyectos simples Aprenda a soldar, con estos proyectos y consejos simples ¿Está un poco intimidado por la idea de un hierro caliente y metal fundido? Si quieres comenzar a trabajar con electrónica, necesitarás aprender a soldar. Déjanos ayudarte. Leer más primero.

Aquí está el diseño de stripboard (excluye los clientes potenciales finales):

Asegúrate de cortar las huellas debajo de las resistencias y el Arduino. Como puede ser muy difícil leer un circuito de stripboard, aquí hay una versión de tablero:

Es un ajuste perfecto apretar todos los componentes en un espacio tan pequeño. Cortar las esquinas de su stripboard de la siguiente manera:

Esto debe encajar perfectamente en la parte inferior de la caja:

Asegúrate de que las pistas corran verticalmente.

Conecte el ánodo (pierna larga, positiva) del LED a la resistencia de 200 ohmios y luego a +5 V. Conecte el cátodo (pierna corta, negativa) al suelo. Cubra las piernas con una funda termorretráctil y luego empújelas en el soporte del LED. No hay necesidad de pegamento, sin embargo, su soporte de LED no puede ser ajustado a presión, por lo que es posible que necesite adaptar estas instrucciones.

Es posible que desee utilizar un LED bicolor aquí, ya que esto le permitirá configurar dos o más bancos de interruptores, con un LED de estado de color diferente para cada banco.

Ahora es el momento de soldar todos los LED para las teclas. Se utilizan únicamente para hacer que las teclas se iluminen, de modo que puede omitirlas si lo desea, y no es necesario que estén conectadas a un pin digital, solo a la alimentación. Conecta todos los ánodos juntos, y todos los cátodos juntos. Aprenda de mi error: ¡es mucho más fácil hacerlo antes de conectar los interruptores! Conecte los ánodos a +5 V a través de una resistencia de 220 ohmios y los cátodos a tierra. Estos LEDs están cableados en paralelo. Aquí está el circuito sólo para estos LEDS:

Use un pequeño trozo de tubo termorretráctil para cubrir la conexión entre los LED y el Arduino:

Enciende el Arduino para probar todo el trabajo de los LEDs. No es necesario subir ningún código. Si algún LED no funciona, ve y revisa tu cableado.

Ahora cablea los interruptores. Estos deben conectarse a través de una resistencia de 10k, de lo contrario el Arduino morirá. A esto se le conoce como un cortocircuito: +5 V va directamente al suelo, y todo lo que queda de su Arduino será una bocanada de humo (créame, ya maté a uno para que no tenga que hacerlo). Aquí está el circuito para un interruptor:

Este circuito es el mismo para los nueve interruptores. Conecte los interruptores a los pines digitales de dos a diez, cada uno con su propia resistencia de 10 K a tierra. Tenga cuidado al soldar los interruptores Cherry MX, pueden ser un poco frágiles, me rompieron varios pines. Es posible que desee soldarlos directamente a un tablero de listones más, sin embargo, los cables de arrastre aún son adecuados.

Eso es todo por el cableado. Es posible que desee montar un conector hembra USB tipo B, sin embargo, a menudo puede ser muy difícil soldar sus pequeños pines. Si no desea hacer esto, no se preocupe. El conector Micro USB del Arduino encaja perfectamente en el orificio del chasis. Si está un poco confundido acerca de los diferentes tipos de USB, asegúrese de entender las diferencias. Comprender los tipos de cables USB y cuál usar. Comprender los tipos de cables USB y cuál usar. ¿Por qué hay tantos cables USB diferentes? Conozca las diferencias entre los tipos de conectores USB y cómo comprar el mejor cable. Lee mas .

Por último, compruebe que su circuito sea correcto. Un short puede destruir fácilmente un Arduino, y puede ser fácil de usar con el stripboard.

El código

Ahora prueba que el circuito es correcto. Es una buena idea hacer esto antes de continuar, para que pueda solucionar cualquier problema ahora mientras pueda. Cargue este código de prueba (no olvide seleccionar la placa y el puerto correctos de la Herramientas > Tablero y Herramientas > Puerto menús):

botones const int [] = 2,3,4,5,6,7,8,9,10; // la matriz de todos los pines del botón anulará la configuración () // ponga aquí su código de configuración, para que se ejecute una vez: Serial.begin (9600); pinMode (2, ENTRADA); pinMode (3, ENTRADA); pinMode (4, ENTRADA); pinMode (5, ENTRADA); pinMode (6, ENTRADA); pinMode (7, ENTRADA); pinMode (8, ENTRADA); pinMode (9, ENTRADA); pinMode (10, ENTRADA);  void loop () // ponga su código principal aquí, para ejecutar repetidamente: 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);    

Es posible que deba cambiar los pines si ha modificado el circuito..

Una vez cargado, abra el monitor serie (parte superior derecha > Monitor de serie). Uno por uno, presione cada botón. Debería ver que el monitor serie muestra el número del botón que presionó. Al igual que con el LED, si su computadora se queja de la corriente excesiva, o los LED se apagan al presionar un botón, ¡desconéctelos inmediatamente! Tiene un corto en algún lugar del circuito, verifique que el circuito sea correcto y no haya cortocircuitos entre las conexiones.

Si todo está funcionando, adelante, ponga el circuito en la caja. Es posible que desee utilizar un poco de pegamento para mantener el circuito en su lugar (aunque los cables mantuvieron los míos en perfecto estado). Atornille la tapa también.

Hacer que el Arduino parezca un teclado es muy sencillo. Si está utilizando un Nano o UNO, va a reprogramar su Arduino usando Actualización del firmware del dispositivo (DFU). Esto se suele utilizar para actualizar el firmware de Arduino. Lo va a utilizar para actualizar el Arduino con un nuevo firmware que lo hará funcionar como un teclado. Esto no se tratará aquí, ya que es una tarea bastante compleja. El sitio web de Arduino tiene un buen tutorial para esto..

El Arduino Pro Micro hace que este paso sea muy fácil. La lógica necesaria para emular un teclado USB ya está integrada en el procesador, por lo que es tan simple como escribir un código!

Primero, configura las teclas:

teclas int [] = 2, 3, 4, 5, 6, 7, 8, 9, 10;

Esta es una matriz que contiene todos los pines a los que están conectados los botones. Si ha usado más o menos botones o ha usado diferentes pines, cambie los valores aquí.

Una matriz es un conjunto de cosas de ideas afines. Las computadoras pueden optimizar su código para acceder a ellos rápidamente, y aceleran el proceso de escritura del código.

Ahora inicializa todos los pines como entradas:

void setup () // ponga aquí su código de configuración, para ejecutarlo una vez: Keyboard.begin (); // configurar el teclado para (int i = 2; i < 11; ++i)  // initilize pins pinMode(i, INPUT);  

Esto le dice al Arduino que todos los pines en la matriz son entradas. Se usa un bucle para hacer esto, así que en lugar de escribir modo de pin (2, ENTRADA) Nueve veces, solo tienes que escribirlo una vez. Esto tambien llama Keyboard.begin. Esto configura una función integrada en la biblioteca de Arduino, diseñada específicamente para emular un teclado.

Crea un método llamado botón de lectura:

booleano readButton (int pin) // comprobar y eliminar los botones si (digitalRead (pin) == HIGH) retardo (10); if (digitalRead (pin) == HIGH) return true;   falso retorno; 

Esto toma un pin, y comprueba si ha sido presionado o no. Simplemente vuelve CIERTO o FALSO. También contiene algunos debouncing de software - un simple retraso y luego volver a verificar el interruptor asegura que el botón realmente se presionó.

Ahora se llama otro bucle for por dentro. bucle de vacío ():

void loop () // ponga su código principal aquí, para ejecutar repetidamente: for (int i = 2; i < 11; ++i)  // check buttons if(readButton(i))  doAction(i);   

De nuevo, esto pasa por todos los elementos de la matriz y verifica si se ha presionado. Lo hace por el llamado botón de lectura método que creaste anteriormente. Si se ha presionado un botón, pasa ese número de pin a otro método llamado acción:

void doAction (int pin) // realiza el cambio de tareas (pin) caso 2: Keyboard.println ("drive.google.com"); descanso; caso 3: Keyboard.println ("makeuseof.com"); descanso; caso 4: // CMD + T (nueva pestaña, Chrome) Keyboard.press (KEY_LEFT_GUI); Teclado.press ('t'); retraso (100); Keyboard.releaseAll (); descanso; caso 5: // tu tarea aquí se rompe; caso 6: // tu tarea aquí se rompe; caso 7: // tu tarea aquí se rompe; caso 8: // tu tarea aquí se rompe; caso 9: // tu tarea aquí se rompe; 

Esto comprueba el número de pin utilizando una cambiar declaración. Cambiar declaraciones (a veces llamado cambiar de caja) son similares a un Si Sin embargo, son útiles para verificar que una cosa (en este caso, el número de pin) es igual a uno de varios resultados diferentes. Esencialmente, son mucho más rápidos de calcular.

Los componentes principales están dentro de esta declaración de cambio. Teclado.println escribe texto en la computadora como si escribieras físicamente todas las teclas. Teclado.prensa presiona y mantiene una tecla. No olvides soltarlos usando Keyboard.releaseAll después de un breve retraso!

Aquí está el código completo:

teclas int [] = 2, 3, 4, 5, 6, 7, 8, 9, 10; void setup () // ponga aquí su código de configuración, para ejecutarlo una vez: Keyboard.begin (); // configurar el teclado para (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;  

Además de todas las teclas numéricas y de letras, el Arduino puede presionar la mayoría de las teclas especiales llamadas Modificadores de teclado. Estos son particularmente útiles para presionar atajos de teclado. El sitio web de Arduino tiene una lista útil.

Ahora todo lo que queda es crear algunos accesos directos. Puede asignar esto a los accesos directos existentes, como Alt + F4 (cierre programa en Windows) o Cmd + Q (salir del programa macOS). Como alternativa, asegúrese de leer nuestra guía definitiva de métodos abreviados de teclado Atajos de teclado de Windows 101: La guía definitiva Métodos abreviados de teclado de Windows 101: La guía definitiva Los atajos de teclado pueden ahorrarle muchas horas. Domine los atajos de teclado universales de Windows, los trucos de teclado para programas específicos y algunos otros consejos para acelerar su trabajo. Más información, cómo crear accesos directos de Windows Cómo crear accesos directos de escritorio de Windows de la manera fácil Cómo crear accesos directos de escritorio de Windows de la manera fácil Los accesos directos de escritorio inteligentes pueden ahorrarle la posibilidad de revisar los menús y carpetas. Te mostramos formas rápidas y fáciles de crearlos. Lea más, y todos los accesos directos de Chromebook. Aquí están todos los accesos directos de Chromebook que necesitará. Aquí encontrará todos los accesos directos de Chromebook. ¡Aquí tienes todas las combinaciones de teclas que necesitarás para Chrome OS! Lee más para comenzar a hacer tus propios atajos.

¿Has creado tu propia caja de atajos? Déjame saber en los comentarios, me encantaría ver algunas fotos.!

Explorar más sobre: ​​Arduino, teclado, atajos de teclado.