Maak je eigen aangepaste sneltoetsen met een Arduino

Maak je eigen aangepaste sneltoetsen met een Arduino / DIY

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


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 pin Header voor arduino Leonardo Vervang ATmega328 Pro Mini OSOYOO Pro Micro ATmega32U4 5V / 16MHz Module Board met 2 Rij pin 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 wel Cherry MX mechanische toetsenbordschakelaars voor de feitelijke sneltoetsen, hoewel ieder schakelaar zal doen, mits het momentaan 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 hebt ingedrukt alt > F4, bijvoorbeeld.

Een schakelaar selecteren

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 kracht om te drukken, en sommige modellen maken een mechanische “Klik” geluid wanneer 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. 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-schakelaar, O-ring Pro Sampler Tester Kit Nu kopen bij Amazon

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 14 x 14 mm (0,551 inch) vierkant bevestigingsgat, 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.


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

Zorg ervoor dat je de schakelaars op de juiste manier monteert. De top heeft de woorden “KERS” aan, en de bodem heeft een kleine inkeping. Steek een 3 mm LED in dit kleine slot:

U zult merken dat de LED's er het best uitzien “ondersteboven”. 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 in te lijmen. Het soldeersel houdt de LED's vast en wrijving houdt de schakelaars vast.

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):

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

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

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

Zorg ervoor dat de tracks verticaal lopen.

Verbind de anode (lange been, positief) van de LED naar de 200 ohm weerstand en vervolgens naar +5 V. Verbind de kathode (korte poot, negatief) naar de grond. 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.

Misschien wilt u hier een tweekleurige LED gebruiken - hiermee kunt u twee of meer schakelaars van switches instellen, met een verschillend gekleurd statuslampje 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:

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

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.

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:

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 connectoren 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 Waarom zijn er zoveel verschillende USB-kabels? Ontdek de verschillen tussen USB-connectortypen en hoe u de beste kabel koopt. 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 uit het Hulpmiddelen > Boord en Hulpmiddelen > Haven menu's):

const int-knoppen [] = 2,3,4,5,6,7,8,9,10; // reeks van alle knoppen op de knop void setup () // plaats hier uw setup-code om één keer te starten: 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 () // zet hier je hoofdcode, om herhaaldelijk uit te voeren: 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 korte tussenverbindingen zijn.

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 gebruiken met behulp van Apparaat 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-toetsen [] = 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 () // zet hier je setup-code, om één keer te draaien: Keyboard.begin (); // setup-toetsenbord voor (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 schrijven pinMode (2, INPUT) negen keer hoeft u het maar één keer te schrijven. Dit roept ook Keyboard.begin. Hiermee wordt een functie ingesteld die is ingebouwd in de Arduino-bibliotheek, speciaal ontworpen voor het emuleren van een toetsenbord.

Maak een methode genaamd readButton:

boolean readButton (int-pin) // controle- en debounce-knoppen als (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 keert eenvoudig terug TRUE of VALSE. Het bevat ook wat software debouncing - een eenvoudige vertraging en het opnieuw controleren van de schakelaar zorgt ervoor dat de knop echt werd ingedrukt.

Nu wordt een andere lus binnen genoemd ongeldige lus ():

void loop () // zet hier je hoofdcode, om herhaaldelijk uit te voeren: 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. Het doet dit door de readButton methode die u eerder hebt gemaakt. Als er op een knop is gedrukt, wordt het pincode doorgegeven aan een andere methode doAction:

void doAction (int pin) // taken uitvoeren (pin) case 2: Keyboard.println ("drive.google.com"); breken; case 3: Keyboard.println ("makeuseof.com"); breken; case 4: // CMD + T (nieuw tabblad, Chrome) Keyboard.press (KEY_LEFT_GUI); Keyboard.press ( 't); vertraging (100); Keyboard.releaseAll (); breken; geval 5: // uw taak is hier afgebroken; geval 6: // uw taak hier pauze; geval 7: // uw taak hier pauze; geval 8: // uw taak hier pauze; geval 9: // uw taak hier pauze; 

Hiermee wordt het pincode gecontroleerd met behulp van a schakelaar uitspraak. Schakelinstructies (soms genoemd schakel case) zijn vergelijkbaar met een als verklaring, 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 los te maken met Keyboard.releaseAll na een korte vertraging!

Hier is de volledige code:

int-toetsen [] = 2, 3, 4, 5, 6, 7, 8, 9, 10; void setup () // zet hier je setup-code, om één keer te draaien: Keyboard.begin (); // setup-toetsenbord voor (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 Toetsenbordmodifiers. 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 (sluit het programma in Windows) of cmd + Q (stop programma-OSS). 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 willen zien!

Ontdek meer over: Arduino, toetsenbord, sneltoetsen op het toetsenbord.