Maak je eigen aangepaste sneltoetsen met een Arduino

Maak je eigen aangepaste sneltoetsen met een Arduino

De eenvoudige Arduino kan veel dingen, maar wist je dat hij een USB-toetsenbord kan emuleren? U kunt die moeilijk te onthouden lange sneltoetsen combineren in een enkele aangepaste sneltoets, met dit eenvoudige circuit. Hier is het eindresultaat:





Nog nooit een Arduino gebruikt? Bekijk onze aan de slag gids eerst.





Wat je nodig hebt

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





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

Voor dit project heb je een heel specifieke Arduino nodig. ik gebruik een Pro Micro , omdat ze zo klein en goedkoop zijn, heb je een Arduino nodig met USB-serieel ingebouwd in de processor (Atmega32u4). Het is mogelijk om dit project met andere Arduino's te bouwen, zoals een UNO of Nano, maar het vereist veel hard werk om de bios opnieuw te flashen en te prutsen om dingen werkend te krijgen. Klonen van andere Arduino-modellen werken meestal helemaal niet, maar een Pro Micro-kloon is ook prima.

OSOYOO Pro Micro ATmega32U4 5 V/16 MHz Module Board met 2 Rij pin Header Vervangen met ATmega328 Pro Mini voor Arduino KOOP NU OP AMAZON

U hebt een kortstondige knop, een weerstand van 10K ohm en een geschikte aansluitdraad nodig voor elke knop die u wilt gebruiken. Ik gebruik Cherry MX mechanische toetsenbordschakelaars voor de eigenlijke sneltoetsen, hoewel ieder schakelaar zal doen, op voorwaarde dat deze kortstondig is en niet vergrendeld.



Afhankelijk van hoe je dit bouwt, heb je misschien nog een paar andere items nodig. Als je er een prototype van wilt maken, heb je een soldeerloze breadboard . Het is de moeite waard om het geld aan een goede uit te geven - ze kunnen soms erg onbetrouwbaar zijn. Als je dit wilt inpakken, wil je wat stripboard kopen.

Bouwplan

Hier is hoe dit zal werken. De Arduino zal worden geprogrammeerd om te werken als een USB-toetsenbord - wat uw computer betreft, dat is het ook. Verschillende knoppen die op de Arduino zijn aangesloten, sturen toetsopdrachten naar uw computer. U drukt maar op één knop, maar uw computer denkt dat u hebt ingedrukt Alles > F4 , bijvoorbeeld.





Een schakelaar selecteren

Er zijn verschillende varianten van schakelaars uit de MX-serie. Deze website biedt een uitstekende introductie, maar ze komen in wezen neer op lawaai en druk. Sommige modellen vereisen meer kracht om in te drukken, en sommige modellen maken een mechanisch 'klik'-geluid wanneer ze worden ingedrukt. Ik heb Cherry MX Browns gebruikt, die geen geluid maken als ze worden ingedrukt. Ze hebben allemaal dezelfde afmetingen, dus kies zonder zorgen een model dat je leuk vindt (of mix en match).

Je moet natuurlijk ook een aantal keycaps kopen, en er is een wereld van aangepaste ontwerpen die er zijn om uit te kiezen -- we kochten van KeyboardCo in het VK





De zaak

Ik heb deze hoes in 3D geprint en je kunt de . downloaden .STL bestanden van Thingiverse . Maak je geen zorgen als je geen 3D-printer hebt, je kunt deze nog steeds bouwen. Veel websites bieden 3D-printservices, zoals: 3D-hubs of Shapeways . Als alternatief is dit een heel eenvoudig hoesje, je zou je eigen hoesje kunnen maken van plasticard, perspex, hout of zelfs karton. Als je echt zuinig wilt zijn, verkoopt Cherry MX een schakelaartester/sampler-set op Amazone ( VK ). U hebt 4 M5 x 35 mm bouten en 4 M5 moeren nodig. U kunt deze natuurlijk vervangen door een geschikt alternatief dat u heeft.

Max Keyboard Keycap, Cherry MX Switch, Tester Kit (9 schakelaars Pro Sampler Tester Kit) KOOP NU OP AMAZON

Als u uw eigen behuizing maakt, is er één belangrijk detail dat u moet weten: Cherry MX-schakelaars passen in hun montagegaten. Ze hebben een vierkant montagegat van 14 x 14 mm (0,551 inch) nodig, waarbij de plaat niet dikker is dan 1,5 mm (0,059 inch). Als u te ver van deze afmetingen afdwaalt, kunnen uw schakelaars mogelijk niet meer correct worden gemonteerd.

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

Zorg ervoor dat u de schakelaars op de juiste manier monteert. De bovenkant heeft de woorden 'CHERRY' op, en de bodem heeft een kleine inkeping. Steek een LED van 3 mm in deze kleine sleuf:

Het kan zijn dat de LED's er het beste 'ondersteboven' gemonteerd uitzien. Dit was het geval voor de keycaps die ik gebruikte, en het heeft helemaal geen invloed op de schakelaars.

Je zou nu negen schakelaars met 9 LED's moeten hebben. Het is niet nodig om een ​​van deze onderdelen vast te lijmen. Het soldeer houdt de LED's vast en wrijving houdt de schakelaars vast.

Schroef vervolgens de LED-montage vast (laat de LED voorlopig verwijderd). U voltooit de montage van de behuizing later, zodra het circuit is gebouwd.

Het circuit

Deze schakeling is op stripboard gebouwd. Dit is uitstekend geschikt voor het bouwen van semi-permanente schakelingen, zonder de kosten van een printplaat (PCB). Het is gewoon een stuk glasvezel met koperen sporen die parallel in één richting lopen. Deze sporen kunnen zowel worden gesoldeerd als gesneden. Het snijden van een spoor kan worden gedaan met een speciaal gereedschap of een kleine boor.

Ben je niet zo zeker van solderen? Bekijk eerst deze eenvoudige projecten.

Dit is de lay-out van het stripbord (exclusief trailing leads):

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

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

Dit moet netjes in de onderkant van de behuizing passen:

Zorg ervoor dat de sporen verticaal lopen.

Sluit de anode ( lang been, positief ) van de LED naar de weerstand van 200 ohm en vervolgens naar +5 V. Sluit de kathode ( kort been, negatief ) naar de grond. Bedek de poten met krimpkous en druk ze vervolgens in de LED-houder. Er is geen lijm nodig, maar uw LED-houder is mogelijk geen push-fit, dus het kan zijn dat u deze instructies moet aanpassen.

Misschien wilt u hier in plaats daarvan een tweekleurige LED gebruiken - hierdoor kunt u twee of meer banken met schakelaars instellen, met een verschillende gekleurde status-LED voor elke bank.

Nu is het tijd om alle LED's voor de keycaps te solderen. Deze worden uitsluitend gebruikt om de toetsen te laten gloeien, dus u kunt ze overslaan als u dat wilt, en ze hoeven niet te worden aangesloten op een digitale pin, alleen stroom. Verbind alle anodes met elkaar en alle kathodes met elkaar. Leer van mijn fout -- het is veel gemakkelijker om dit te doen voordat je de schakelaars bedraden! Sluit de anodes aan op +5 V via een weerstand van 220 ohm en de kathodes op 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 af te dekken:

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 worden aangesloten via een weerstand van 10k, anders sterft de Arduino. Dit wordt een dead short genoemd -- +5 V gaat rechtstreeks de grond in, en het enige dat overblijft van je Arduino zal een rookwolk zijn (geloof me, ik heb er al een gedood, zodat je dat niet hoeft te doen). Hier is het circuit voor één schakelaar:

Dit circuit is hetzelfde voor alle negen schakelaars. Sluit de schakelaars aan op digitale pinnen twee tot en met tien, elk met hun eigen 10K-weerstand naar aarde. Wees voorzichtig met het solderen van Cherry MX-schakelaars, ze kunnen een beetje kwetsbaar zijn, ik had verschillende pinnen op me. Misschien wilt u deze rechtstreeks op wat meer stripboard solderen, maar trailing-leads zijn nog steeds geschikt.

Dat is het voor de bedrading. Misschien wilt u een vrouwelijke USB-aansluiting van type B monteren, maar de kleine pinnen erop kunnen vaak vrij moeilijk te solderen zijn. Als u dit niet wilt, hoeft u zich geen zorgen te maken. De Micro USB connector op de Arduino past netjes in het gat in het chassis. Als je een beetje in de war bent over de verschillende USB-types, zorg er dan voor dat je begrijp de verschillen .

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

De code

Test nu of de schakeling 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 het juiste bord en de juiste poort te selecteren uit de Gereedschap > Bord en Gereedschap > Haven menu's):

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.

Open na het uploaden de seriële monitor ( rechtsboven > Seriële monitor ). Druk één voor één op elke knop. U zou op de seriële monitor het nummer moeten zien van de knop die u hebt ingedrukt. Net als bij de LED, als uw computer klaagt over het trekken van te veel stroom, of als de LED's uitgaan wanneer u op een knop drukt, ontkoppel dan onmiddellijk! Je hebt ergens kortsluiting in het circuit, controleer nogmaals of het circuit correct is en of er geen kortsluitingen zijn tussen de verbindingen.

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

Het is heel eenvoudig om de Arduino op een toetsenbord te laten lijken. Als je een Nano of UNO gebruikt, ga je je Arduino opnieuw programmeren met Firmware-update apparaat (DFU). Dit wordt meestal gebruikt om nieuwe firmware naar de Arduino te flashen. Je gaat het gebruiken om de Arduino te flashen met een nieuwe firmware waardoor het werkt als een toetsenbord. Dit wordt hier niet behandeld, omdat het een vrij complexe taak is. De Arduino-website heeft hier een goede tutorial voor.

De Arduino Pro Micro maakt deze stap heel eenvoudig. De logica die nodig is om een ​​USB-toetsenbord te emuleren is al in de processor ingebouwd, dus het is zo simpel als het schrijven van wat 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 je meer of minder knoppen hebt gebruikt of andere pinnen hebt gebruikt, verander dan hier de waarden.

Een array is een verzameling van gelijkgestemde dingen. Computers kunnen uw code optimaliseren om er snel toegang toe te krijgen, en ze versnellen het codeschrijfproces.

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 inputs zijn. Hiervoor wordt een lus gebruikt, dus in plaats van te schrijven pinMode(2, INGANG) negen keer, je hoeft het maar één keer te schrijven. Dit roept ook Toetsenbord.begin . Hiermee wordt een functie ingesteld die is ingebouwd in de Arduino-bibliotheek, die speciaal is ontworpen voor het emuleren van een toetsenbord.

Maak een methode met de naam leesknop :

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 en controleert of deze is ingedrukt of niet. Het keert gewoon terug WAAR of ONWAAR . Het bevat ook wat software debouncen -- een simpele vertraging en vervolgens opnieuw controleren van de schakelaar zorgt ervoor dat de knop echt is ingedrukt.

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

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 het is ingedrukt. Het doet dit door de leesknop methode die u eerder hebt gemaakt. Als er op een knop is gedrukt, wordt die pincode doorgegeven aan een andere methode genaamd doeActie :

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

Dit controleert de pincode met a schakelaar uitspraak. Switch-statements (ook wel schakelkast ) lijken op an indien verklaring, maar ze zijn handig om te controleren of één ding (in dit geval het pinnummer) gelijk is aan een van de verschillende uitkomsten. In wezen zijn ze veel sneller te berekenen.

De belangrijkste componenten bevinden zich in deze switch-instructie. Toetsenbord.println schrijft tekst naar de computer alsof u elke toets fysiek hebt getypt. Toetsenbord.druk één toets ingedrukt houdt. Vergeet niet om ze vrij te geven met Keyboard.releaseAll na een korte vertraging!

hoe Google Play-services bij te werken

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 worden genoemd Toetsenbordmodificaties . Deze zijn met name handig voor het indrukken van sneltoetsen. De Arduino-website heeft een handige lijst .

Nu hoeft u alleen nog enkele snelkoppelingen te maken. U kunt dit toewijzen aan bestaande snelkoppelingen, zoals: Alles + F4 (programma sluiten in Windows) of cmd + Q (sluit programma macOS af). Als alternatief, zorg ervoor dat u onze ultieme gids voor sneltoetsen , hoe u Windows-snelkoppelingen maakt en elke Chromebook-snelkoppeling om aan de slag te gaan met het maken van uw eigen snelkoppelingen.

Heb je je eigen snelkoppelingsvak gemaakt? Laat het me weten in de comments, ik ben benieuwd naar de foto's!

We hopen dat je de items die we aanbevelen en bespreken leuk vindt! MUO heeft gelieerde en gesponsorde partnerschappen, dus we ontvangen een deel van de inkomsten van sommige van uw aankopen. Dit heeft geen invloed op de prijs die u betaalt en helpt ons de beste productaanbevelingen te doen.

Deel Deel Tweeten E-mail Dit is waarom de FBI een waarschuwing heeft afgegeven voor Hive Ransomware

De FBI waarschuwde voor een bijzonder vervelende vorm van ransomware. Dit is waarom je extra op je hoede moet zijn voor Hive-ransomware.

Lees volgende
Gerelateerde onderwerpen
  • doe-het-zelf
  • Toetsenbord
  • Toetsenbord sneltoetsen
  • Arduino
Over de auteur Joe Coburn(136 artikelen gepubliceerd)

Joe is afgestudeerd in computerwetenschappen aan de Universiteit van Lincoln, VK. Hij is een professionele softwareontwikkelaar en als hij niet met drones vliegt of muziek schrijft, is hij vaak te vinden om foto's te maken of video's te maken.

Meer van Joe Coburn

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren