Maak je eigen aangepaste sneltoetsen met een Arduino

De bescheiden Arduino kan veel dingen doen, maar wist je dat het een USB-toetsenbord kan emuleren? U kunt lange sneltoetsen combineren in een enkele aangepaste sneltoets, met deze eenvoudige schakeling.

De bescheiden Arduino kan veel dingen doen, maar wist je dat het een USB-toetsenbord kan emuleren?  U kunt lange sneltoetsen combineren in een enkele aangepaste sneltoets, met deze eenvoudige schakeling.
Advertentie

De bescheiden Arduino kan veel dingen doen, maar wist je dat het een USB-toetsenbord kan emuleren? Je kunt deze moeilijk te onthouden lange toetsenbordsneltoetsen samenvoegen in één enkele sneltoets, met dit eenvoudige circuit. Dit is het eindresultaat:

Heb je nog nooit een Arduino gebruikt? Bekijk onze beknopte handleiding Aan de slag met Arduino: een beginnershandleiding Aan de slag met Arduino: een beginnershandleiding Arduino is een open-source prototypeplatform voor elektronica op basis van flexibele, eenvoudig te gebruiken hardware en software. Het is bedoeld voor kunstenaars, ontwerpers, hobbyisten en iedereen die geïnteresseerd is in het maken van interactieve objecten of omgevingen. Lees meer eerst.

Wat je nodig hebt

Arduino snelkoppelingen
Dit is wat je nodig hebt om dit project te maken:

  • 1 x Arduino Pro Micro.
  • Momentele knoppen of toetsenbordknoppen.
  • 10K ohm-weerstanden.
  • Geassorteerde aansluitdraden.
  • 1 x 220 ohm weerstanden.
  • 1 x 5 mm (0, 197 inch) LED.
  • 1 x 5 mm LED-houder.

Je hebt een heel specifieke Arduino nodig voor dit project. Ik gebruik een Pro Micro, omdat ze zo klein en goedkoop zijn, dat je een Arduino nodig hebt die een USB-serieel heeft ingebouwd in de processor (Atmega32u4). Het is mogelijk om dit project samen met andere Arduino's te bouwen, zoals een UNO of Nano, maar het vereist veel hard werk om de bios opnieuw te flitsen en gefriemel om dingen aan het werk te krijgen. Klonen van andere Arduino-modellen werken meestal niet, maar een Pro Micro-kloon is ook prima.

OSOYOO Pro Micro ATmega32U4 5V / 16MHz Module Board met 2 rij pins header voor arduino Leonardo Replace ATmega328 Pro Mini OSOYOO Pro Micro ATmega32U4 5V / 16MHz Module Board met 2 rij pins header voor arduino Leonardo Vervang ATmega328 Pro Mini Nu kopen bij Amazon $ 8.99

U hebt één momentane knop, één 10K ohm-weerstand en geschikte aansluitdraad nodig voor elke knop die u wilt gebruiken. Ik gebruik mechanische schakelaars van Cherry MX voor de daadwerkelijke sneltoetsen, hoewel elke schakelaar dat wel doet, mits deze kortstondig is en niet vergrendelt.

Je hebt misschien een aantal andere items nodig, afhankelijk van hoe je dit hebt gebouwd. Als je een prototype wilt maken, heb je een soldeerloze breadboard nodig. Het is de moeite waard om het geld op een goed te besteden - ze kunnen soms erg onbetrouwbaar zijn. Als je dit wilt inpakken, wil je een stripboard kopen.

Bouw plan

Hier is hoe dit werkt. De Arduino zal worden geprogrammeerd om te werken als een USB-toetsenbord - voor zover het uw computer betreft. Verschillende knoppen aangesloten op de Arduino sturen sleutelopdrachten naar uw computer. U hoeft slechts op één knop te drukken, maar uw computer zal denken dat u bijvoorbeeld op Alt > F4 hebt gedrukt.

Een schakelaar selecteren

Arduino Cherry MX

Er zijn verschillende variaties van MX-serieschakelaars. Deze website biedt een uitstekende introductie, maar ze komen vooral neer op lawaai en druk. Sommige modellen vereisen meer drukkracht, en sommige modellen maken een mechanisch "klik" -geluid wanneer ze worden ingedrukt. Ik heb Cherry MX Browns gebruikt, die geen geluid maken als ik erop druk. Ze hebben allemaal dezelfde afmetingen, dus kies elk model dat u wilt (of mix en match) zonder zorgen.

Je zult natuurlijk ook een aantal belangrijke caps moeten kopen, en er is een wereld van custom designs om uit te kiezen - we kochten van KeyboardCo in het VK

De zaak

Ik heb deze zaak in 3D afgedrukt en je kunt de STL- bestanden van Thingiverse downloaden. Maak je geen zorgen als je geen 3D-printer hebt, je kunt dit nog steeds bouwen. Veel websites bieden 3D-afdrukservices, zoals 3D Hubs of Shapeways. Als alternatief is dit een heel eenvoudig geval, je zou je eigen kunnen maken van plastic, perspex, hout of zelfs karton. Als je echt zuinig wilt zijn, verkoop Cherry MX een switchtester / sampler-set op Amazon (VK). Je hebt 4 M5 x 35mm bouten en 4 M5-moeren nodig. Je kunt deze natuurlijk vervangen door een geschikt alternatief dat je hebt.

Max toetsenbord Keycap, Cherry MX Switch, O-ring Pro Sampler Tester Kit Max toetsenbord Keycap, Cherry MX Switch, O-ring Pro Sampler Tester Kit Nu kopen bij Amazon $ 19, 99

Als u uw eigen koffer maakt, is er een belangrijk detail dat u moet weten: Cherry MX-schakelaars passen in hun bevestigingsgaten. Ze vereisen een vierkant bevestigingsgat van 14 x 14 mm (0, 553 inch), waarbij de plaat niet dikker is dan 1, 5 mm (0, 059 inch). Zwerf te ver weg van deze dimensies en uw switches kunnen niet meer correct worden gemount.

Snelkoppeling Case
De 3D-geprinte behuizing bestaat uit twee delen, de boven- en onderkant. Druk de Cherry MX-schakelaars in de vierkante gaten:

Shortcut Cherry MX-vatting

Zorg ervoor dat je de schakelaars op de juiste manier monteert. De bovenkant heeft de woorden "KERSEN" en de bodem heeft een kleine inkeping. Steek een 3 mm LED in dit kleine slot:

Shortcut Cherry MX LED

Misschien vindt u dat de LED's er het best ondersteboven uitzien. Dit was het geval voor de keycaps die ik gebruikte en heeft helemaal geen invloed op de schakelaars.

U zou nu negen schakelaars moeten hebben met 9 LEDS. Het is niet nodig om deze onderdelen te lijmen. Het soldeersel houdt de LED's vast en wrijving houdt de schakelaars vast.

Shortcut Cherry MX All

Schroef vervolgens de LED-houder in (laat de LED voor nu verwijderd). Je zult het monteren van de behuizing later voltooien, zodra het circuit is gebouwd.

Het circuit

Dit circuit is gebouwd op een stripboard. Dit is uitstekend voor het bouwen van semi-permanente circuits, zonder de kosten van een printplaat (PCB). Het is gewoon een stuk glasvezel met koperen banen parallel in één richting. Deze tracks kunnen zowel worden gesoldeerd als gesneden. Een spoor afsnijden kan met een speciaal gereedschap of een kleine boor.

Niet al te veel vertrouwen in solderen? Bekijk deze eenvoudige projecten Leer solderen, met deze eenvoudige tips en projecten Leer solderen, met deze eenvoudige tips en projecten Ben je een beetje geïntimideerd door de gedachte aan een heet ijzer en gesmolten metaal? Als je wilt gaan werken met elektronica, zul je moeten leren solderen. Laat ons helpen. Lees meer eerst.

Dit is de lay-out van de stripboard (met uitzondering van achterlopende leads):

Arduino Shortcut Stripboard

Zorg ervoor dat je de sporen onder de weerstanden en de Arduino snijdt. Omdat het heel moeilijk is om een ​​stripboard-circuit te lezen, is hier een versie van breadboard:

Arduino Shortcut Breadboard

Het is een goede pasvorm om alle componenten in zo'n kleine ruimte te persen. Knip de hoeken van uw stripboard als volgt:

Shortcut Stripboard

Dit zou netjes in de onderkant van de behuizing moeten passen:

Shortcut Stripboard in doos

Zorg ervoor dat de tracks verticaal lopen.

Sluit de anode ( lange been, positief ) van de LED aan op de 200 ohm-weerstand en vervolgens op +5 V. Verbind de kathode ( korte poot, negatief ) met aarde. Bedek de poten met krimpkous en druk deze vervolgens in de LED-houder. Er is geen lijm nodig, maar het is mogelijk dat uw LED-houder niet past, dus moet u deze instructies mogelijk aanpassen.

Statuslampje voor snelkoppeling

Misschien wilt u hier een tweekleurige LED gebruiken - hiermee kunt u twee of meer schakelaars van switches instellen, met een verschillend gekleurde status-LED voor elke bank.

Nu is het tijd om alle LED's voor de keycaps te solderen. Deze worden alleen gebruikt om de toetsen te laten gloeien, zodat u ze kunt overslaan als u dat wilt, en ze hoeven niet te zijn verbonden met een digitale pen, alleen met voeding. Verbind alle anodes met elkaar en alle kathodes samen. Leer van mijn fout - het is veel gemakkelijker om dit te doen voordat je de schakelaars bedraad! Verbind de anodes met +5 V via een weerstand van 220 ohm, en de kathodes met aarde. Deze LED's zijn parallel geschakeld. Hier is het circuit alleen voor deze LEDS:

Sneltoets LED's Circuit

Gebruik een klein stukje krimpkous om de verbinding tussen de LED's en de Arduino te overbruggen:

Snelkoppeling LED Heatshrink

Zet de Arduino aan om te testen of alle LED's werken. U hoeft geen code te uploaden. Als er LED's niet werken, ga dan en controleer uw bedrading.

Sneltoets LED-tests

Sluit nu de schakelaars aan. Deze moeten verbonden zijn via een 10k-weerstand, anders zal de Arduino dood gaan. Dit wordt een dode short genoemd - +5 V gaat rechtstreeks de grond in en alles wat er van je Arduino overblijft zal een rookwolk zijn (geloof me, ik heb er al een gedood, dus dat hoef je niet te doen). Dit is het circuit voor één switch:

Arduino Shortcut Circuit

Dit circuit is hetzelfde voor alle negen schakelaars. Verbind de schakelaars met digitale pennen twee tot tien, elk met hun eigen 10K-weerstand op aarde. Wees voorzichtig met het solderen van Cherry MX-schakelaars, ze kunnen een beetje breekbaar zijn, ik had verschillende pins op mij. Misschien wil je deze direct op wat meer stripboard solderen, maar achterste leads zijn nog steeds geschikt.

Dat is het voor de bedrading. U wilt misschien een vrouwelijke USB-aansluiting van het type B monteren, maar de kleine pinnetjes op deze kunnen vaak behoorlijk moeilijk zijn om op te solderen. Als u dit niet wilt doen, hoeft u zich geen zorgen te maken. De Micro USB-aansluiting op de Arduino past netjes in het gat in het chassis. Als je een beetje in de war bent over de verschillende USB-typen, zorg dan dat je de verschillen begrijpt. Wat zijn de USB-kabeltypes en welke te gebruiken? Wat zijn de USB-kabeltypes en welke te gebruiken? De wereld van USB-kabels kan een beetje verwarrend zijn, omdat er zoiets is. veel verschillende soorten aansluitingen. Hier is alles wat u moet weten om niet langer in de war te raken. Lees verder .

Controleer ten slotte nogmaals of uw circuit correct is. Een short kan een Arduino gemakkelijk vernietigen, en het kan gemakkelijk zijn om het gebruik van stripboard te doen.

De code

Test nu of het circuit correct is. Het is een goed idee om dit te doen voordat u doorgaat, zodat u eventuele problemen nu kunt oplossen. Upload deze testcode (vergeet niet om het juiste bord en de juiste poort te selecteren in het menu Hulpmiddelen > Bord en Extra > Poort ):

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); } } } } 

Mogelijk moet u de pinnen vervangen als u het circuit hebt gewijzigd.

Na het uploaden opent u de seriële monitor ( rechtsboven > Seriële monitor ). Druk één voor één op elke knop. U zou het seriële scherm moeten zien met het nummer van de knop die u indrukte. Net als bij de LED, als uw computer klaagt over het tekenen van te veel stroom, of als de LED's uitgaan als u op een knop drukt, verbreekt u onmiddellijk de verbinding! Je hebt een kortsluiting ergens in het circuit, controleer of het circuit correct is en er geen kortsluiting is tussen de verbindingen.

Als alles werkt, ga je gang en plaats je het circuit in de doos. Misschien wil je een beetje lijm gebruiken om het circuit op zijn plaats te houden (hoewel de draden de mijne prima hielden). Schroef het deksel ook vast.

Het lijkt erg eenvoudig om de Arduino een toetsenbord te laten lijken. Als u een Nano of UNO gebruikt, gaat u uw Arduino opnieuw programmeren met behulp van Device Firmware Update (DFU). Dit wordt meestal gebruikt om nieuwe firmware naar de Arduino te flitsen. Je gaat het gebruiken om de Arduino te flitsen met een nieuwe firmware die ervoor zorgt dat het werkt als een toetsenbord. Dit wordt hier niet behandeld, omdat het een vrij complexe taak is. De Arduino-website heeft hiervoor een goede handleiding.

De Arduino Pro Micro maakt deze stap heel gemakkelijk. De logica die vereist is om een ​​USB-toetsenbord te emuleren is al ingebouwd in de processor, dus het is zo simpel als het schrijven van een code!

Stel eerst de toetsen in:

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

Dit is een array met alle pinnen waarmee de knoppen zijn verbonden. Als u meer of minder knoppen hebt gebruikt of verschillende pinnen hebt gebruikt, wijzigt u de waarden hier.

Een array is een verzameling van gelijkgestemde dingen. Computers kunnen uw code optimaliseren om ze snel te openen en ze versnellen het schrijven van code.

Initialiseer nu alle pinnen als invoer:

 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); } } 

Dit vertelt de Arduino dat alle pinnen in de array ingangen zijn. Hiervoor wordt een lus gebruikt, dus in plaats van het negen keer schrijven van pinMode (2, INPUT), hoeft u het maar één keer te schrijven. Dit wordt ook Keyboard.begin genoemd . Hiermee wordt een functie ingesteld die is ingebouwd in de Arduino-bibliotheek, speciaal ontworpen voor het emuleren van een toetsenbord.

Maak een methode met de naam readButton :

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

Dit neemt een pin op en controleert of deze is ingedrukt of niet. Het geeft eenvoudig WAAR of ONWAAR terug . Het bevat ook een aantal software-debouncing - een eenvoudige vertraging en het opnieuw controleren van de schakelaar zorgt ervoor dat de knop echt is ingedrukt.

Nu wordt een andere lus binnen de lege-lus () genoemd :

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

Nogmaals, dit gaat over elk element in de array en controleert of er op is gedrukt. Dit wordt gedaan met de methode readButton die u eerder hebt gemaakt. Als een knop is ingedrukt, geeft het dat pincode door aan een andere methode genaamd 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; } } 

Hiermee wordt het pincode gecontroleerd met behulp van een switch- instructie. Switch-statements (soms switch-case genoemd ) zijn vergelijkbaar met een if- statement, maar ze zijn nuttig om te controleren of dat ene ding (in dit geval het pincode) gelijk is aan een van de verschillende uitkomsten. In wezen zijn ze veel sneller te berekenen.

De belangrijkste componenten bevinden zich in deze instructie switch. Keyboard.println schrijft tekst naar de computer alsof u elke toets fysiek hebt getypt. Keyboard.press drukt en houdt één toets vast. Vergeet niet om ze vrij te geven met behulp van Keyboard.releaseAlles na een korte vertraging!

Hier is de volledige code:

 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; } } 

Naast alle cijfer- en lettertoetsen, kan de Arduino op de meeste speciale toetsen drukken die Toetsenbordmodificaties worden genoemd. Deze zijn met name handig voor het drukken op sneltoetsen. De Arduino-website heeft een handige lijst.

Nu is het enige dat overblijft om een ​​aantal snelkoppelingen te maken. U kunt dit toewijzen aan bestaande snelkoppelingen, zoals Alt + F4 (programma sluiten in Windows) of Cmd + Q (MacOS afsluiten). Of lees onze ultieme sneltoetsgids. Windows-sneltoetsen 101: De ultieme gids Windows Sneltoetsen 101: De ultieme gids Sneltoetsen voor het toetsenbord kunnen u uren tijd besparen. Beheers de universele Windows-toetsenbordsneltoetsen, toetsenbordtrucs voor specifieke programma's en een paar andere tips om uw werk te versnellen. Meer lezen, Windows-snelkoppelingen maken Windows-bureaubladsnelkoppelingen maken op een eenvoudige manier Windows-bureaubladsnelkoppelingen maken Met de snelkoppelingen van Easy Way Smart kunt u niet-minded door menu's en mappen bladeren. We laten u snelle en eenvoudige manieren zien om ze te maken. Meer informatie en elke sneltoets voor Chromebook Hier is elke snelkoppeling voor elk Chromebook die u ooit nodig hebt Hier is elke snelkoppeling voor uw Chromebook die u ooit nodig hebt Zoekt u een hoofdlijst met sneltoetsen voor uw Chromebook? Hier is elke belangrijke combinatie die u ooit nodig zult hebben voor Chrome OS! Lees meer om aan de slag te gaan met het maken van uw eigen snelkoppelingen.

Heb je je eigen snelkoppelingsbox gemaakt? Laat het me weten in de comments, ik zou graag wat foto's zien!

In this article