Gör dina egna anpassade genvägsknappar med en Arduino

Den ödmjuka Arduino kan göra mycket saker, men visste du att det kan emulera ett USB-tangentbord? Du kan kombinera långa tangentbordsgenvägar i en enda anpassad genvägsknapp, med denna enkla krets.

Den ödmjuka Arduino kan göra mycket saker, men visste du att det kan emulera ett USB-tangentbord?  Du kan kombinera långa tangentbordsgenvägar i en enda anpassad genvägsknapp, med denna enkla krets.
Annons

Den ödmjuka Arduino kan göra mycket saker, men visste du att det kan emulera ett USB-tangentbord? Du kan kombinera de svåra att komma ihåg långa tangentbordsgenvägar i en enda anpassad genvägsknapp, med denna enkla krets. Här är slutresultatet:

Har du aldrig använt en Arduino tidigare? Kolla in vår startguide. Komma igång med Arduino: En nybörjarhandbok Komma igång med Arduino: En nybörjarhandbok Arduino är en öppen prototypplattform för öppen källkod baserad på flexibel, lättanvänd maskinvara och programvara. Den är avsedd för artister, designers, hobbyister och alla som är intresserade av att skapa interaktiva objekt eller miljöer. Läs mer först.

Vad du behöver

Arduino Genväg Delar
Här är vad du behöver för att göra detta projekt:

  • 1 x Arduino Pro Micro.
  • Momentknappar eller tangentbordsknappar.
  • 10K ohm motstånd.
  • Assorted hookup-ledningar.
  • 1 x 220 ohm motstånd.
  • 1 x 5 mm (0.197 tum) LED.
  • 1 x 5mm LED-hållare.

Du kommer att behöva en mycket specifik Arduino för detta projekt. Jag använder en Pro Micro, eftersom de är så små och billiga, behöver du en Arduino som har USB-Serial inbyggd i processorn (Atmega32u4). Det är möjligt att bygga detta projekt med andra Arduinos, till exempel en UNO eller Nano, men det kräver mycket hårt arbete för att återblinka bios och fiddling om att få saker att arbeta. Kloner från andra Arduino-modeller fungerar vanligtvis inte alls, men en Pro Micro-klon är också bra.

OSOYOO Pro Micro ATmega32U4 5V / 16MHz Modulkort med 2-radig ramhuvud för arduino Leonardo Byt ATmega328 Pro Mini OSOYOO Pro Micro ATmega32U4 5V / 16MHz Modulkort med 2-radig ramhuvud för arduino Leonardo Byt ATmega328 Pro Mini Köp nu På Amazon $ 8.99

Du behöver en momentan knapp, ett 10K ohm motstånd och lämplig anslutningstråd för varje knapp som du vill använda. Jag använder Cherry MX mekaniska tangentbordsswitchar för de verkliga genvägsknapparna, även om någon omkopplare kommer att göra, förutsatt att den är momentan och inte låser.

Du kan behöva några andra saker beroende på hur du bygger detta. Om du vill prototypa det, behöver du ett löddlöst brödbräda. Det är värt att spendera pengarna på en bra - de kan ibland vara mycket opålitliga. Om du vill låsa upp det här vill du köpa lite stripboard.

Byggplan

Så här fungerar det här. Arduino kommer att programmeras för att fungera som ett USB-tangentbord - vad det gäller din dator är det. Flera knappar anslutna till Arduino skickar nyckelkommandon till din dator. Du trycker bara på en knapp, men datorn kommer tro att du har tryckt Alt > F4, till exempel.

Välja en växel

Arduino Cherry MX

Det finns flera varianter av MX-seriens omkopplare. Denna webbplats ger en utmärkt introduktion, men de kommer i huvudsak ner till buller och tryck. Vissa modeller kräver mer kraft att trycka på, och vissa modeller gör ett mekaniskt "klicka" ljud när de trycks in. Jag har använt Cherry MX Browns, som inte gör ett ljud när de pressas. De är alla samma dimensioner, så välj vilken modell du vill (eller mix och matcha) utan oro.

Du måste också köpa några viktiga kepsar, och det finns en värld av anpassade mönster där ute att välja mellan - vi köpte från KeyboardCo i Storbritannien

Fallet

Jag har 3D skrivit ut det här fallet, och du kan ladda ner .STL- filer från Thingiverse. Oroa dig inte om du inte äger en 3D-skrivare, kan du fortfarande bygga detta. Många webbplatser tillhandahåller 3D-utskriftstjänster, till exempel 3D-hubbar eller Shapeways. Alternativt är detta ett mycket enkelt fall, du kan göra din egen av plastkartong, perspex, trä eller till och med papp. Om du vill vara väldigt sparsam, säljer Cherry MX en switchtester / samplerset på Amazon (Storbritannien). Du behöver 4 M5 x 35mm bultar och 4 M5 muttrar. Du kan naturligtvis ersätta dessa för ett lämpligt alternativ du har.

Max Keyboard Keycap, Cherry MX Switch, O-Ring Pro Sampler Tester Kit Max Keyboard Keycap, Körsbär MX Switch, O-Ring Pro Sampler Tester Kit Köp Nu På Amazon $ 19.99

Om du gör ditt eget fall finns det en viktig detalj som du behöver veta: Cherry MX-omkopplare är en tryckpassning i sina monteringshål. De kräver ett 14 x 14 mm (0, 551 tum) kvadratiskt monteringshål, där plattan inte är tjockare än 1, 5 mm (0, 059 tum). Stray för långt från dessa dimensioner, och dina omkopplare kanske inte längre monteras korrekt.

Genväska
Det 3D-tryckta fodralet finns i två delar, topp och botten. Skjut Cherry MX-omkopplarna i de fyrkantiga hålen:

Genväg Körsbär MX Mount

Se till att du monterar omkopplarna på rätt sätt runt. Överst har orden "CHERRY" på, och botten har lite hak. Sätt in en 3mm LED i denna lilla plats:

Genväg Cherry MX LED

Du kan upptäcka att lysdioderna ser optimalt ut "upp och ner". Detta var fallet för de nyckelkort jag använde, och det påverkar inte alls omkopplarna.

Du borde nu ha nio växlar med 9 lysdioder. Det finns inget behov av att lima någon av dessa delar in. Löddet kommer att hålla LED-lamporna och friktion kommer att hålla omkopplarna.

Genväg Cherry MX All

Därefter skruva in LED-fästet (lämna ledningen borttagen för nu). Du kommer att slutföra montering av fallet senare, när kretsen är byggd.

Kretskortet

Denna krets är byggd på bandbräda. Detta är utmärkt för att bygga halvfasta kretsar, utan kostnaden för ett kretskort (PCB). Det är helt enkelt ett glasfiberglas med kopparspår som går parallellt i en riktning. Dessa spår kan lödas till, liksom klippa. Att skära ett spår kan göras med ett speciellt verktyg eller en liten borr.

Inte för säker på lödning? Ta en titt på dessa enkla projekt Lär dig hur man löds med dessa enkla tips och projekt Lär dig hur man löds med dessa enkla tips och projekt Är du lite skrämmad av tanken på ett hett järn och smält metall? Om du vill börja arbeta med elektronik, kommer du behöva lära dig att lödda. Låt oss hjälpa. Läs mer först.

Här är stripboardlayouten (exkluderar bakledare):

Arduino Shortcut Stripboard

Se till att du skär spåren under motstånden och Arduino. Eftersom det kan vara mycket svårt att läsa en stripboard-krets, här är en breadboard-version:

Arduino Shortcut Breadboard

Det är en snäv passform för att klämma alla komponenter i ett så litet utrymme. Klipp hörnen på din stripboard enligt följande:

Genväg Stripboard

Detta ska passa in i botten av fallet:

Genväg Stripboard i rutan

Se till att spåren löper vertikalt.

Anslut LED: ns anod ( långa ben, positiva ) till 200 ohm motståndet och sedan till +5 V. Anslut katoden ( kort ben, negativ ) till marken. Täck benen med värmekrympsladd och tryck sedan in i LED-hållaren. Det finns inget behov av lim, dock kan din LED-hållare inte vara en passform, så du kan behöva anpassa dessa instruktioner.

Genvägslampa

Du kanske vill använda en tvåfärgad LED här istället - det här låter dig konfigurera två eller flera banker med strömbrytare, med en annan färgad status LED för varje bank.

Nu är det dags att lödda alla LED-lampor för keycaps. Dessa används endast för att få nycklarna att glöda, så du kan hoppa över dem om du vill, och de behöver inte anslutas till en digital stift, bara ström. Anslut alla anoderna tillsammans, och alla katoderna tillsammans. Lär av mitt misstag - det är mycket lättare att göra detta innan du kopplar om strömbrytarna! Anslut anoderna till +5 V trots ett 220 ohm motstånd och katoderna till marken. Dessa lysdioder är parallella anslutna. Här är kretsen bara för dessa LEDS:

Snabbknapp LED-lampor Kretskort

Använd en liten bit värmekrympslang för att täcka anslutningen mellan lysdioderna och Arduino:

Genvägslampa varmvattenberedare

Sätt på Arduino för att testa alla LED-lampor. Du behöver inte ladda upp någon kod. Om några lysdioder inte fungerar, gå och dubbelkollera kablarna.

Snabb LED-testning

Koppla nu om strömbrytarna. Dessa måste anslutas via ett 10k motstånd, annars kommer Arduino att dö. Detta kallas en död kort - +5 V går direkt i marken, och allt som återstår av din Arduino kommer att vara en rökblåsa (lita på mig, jag dödade en redan så du behöver inte). Här är kretsen för en brytare:

Arduino Shortcut Circuit

Denna krets är densamma för alla nio växlar. Anslut växlarna till digitala stift två till tio, var och en med sitt eget 10K motstånd till marken. Var försiktig lödning Cherry MX-omkopplare, de kan vara lite ömtåliga, jag hade flera stift på mig. Du kanske vill lödda dessa direkt till några fler stripboard, men efterföljande ledningar är fortfarande lämpliga.

Det är det för ledningarna. Du kanske vill montera en USB-typ B-hylsa, men de små pinnarna på dem kan ofta vara ganska svåra att lödda till. Om du inte vill göra det, oroa dig inte. Micro USB-kontakten på Arduino passar snyggt i hålet i chassit. Om du är lite förvirrad över de olika USB-typerna, se till att du förstår skillnaderna. Förstå USB-kabeltyper och vilken som ska användas Förstå USB-kabeltyper och vilken som ska användas Världen av USB-kablar kan vara lite förvirrande eftersom det finns så många olika kopplingstyper. Här är allt du behöver veta för att inte vara förvirrad längre. Läs mer .

Slutligen dubbelkollar din krets är korrekt. En kort kan enkelt förstöra en Arduino, och det kan vara lätt att göra med hjälp av stripboard.

Koden

Test nu kretsen är korrekt. Det är en bra idé att göra detta innan du fortsätter, så att du kan lösa några problem nu när du kan. Ladda upp denna testkod (glöm inte att välja rätt kartong och port från Verktyg > Styrelse och Verktyg > Portmenyer):

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

Du kan behöva byta stiften om du har ändrat kretskortet.

När du har laddat upp, öppna seriell bildskärm ( högra höger > Seriell bildskärm ). En efter en trycker du på varje knapp. Du bör se seriekontrollen visa numret på knappen du tryckte på. Precis som med LED-lampan, om din dator klagar över att dra för mycket ström, eller att lysdioderna släcks ut när du trycker på en knapp, koppla omedelbart ur kontakten! Du har kort någonstans i kretsen, dubbelkontroll kretsen är korrekt och det finns inga shorts mellan anslutningar.

Om allting fungerar, fortsätt och sätt kretsen i lådan. Du kanske vill använda en flaska för att hålla kretsen på plats (även om ledningarna hållit mina bra). Skruva också locket på locket.

Att göra Arduino verkar vara ett tangentbord är väldigt enkelt. Om du använder en Nano eller UNO, kommer du att omprogrammera din Arduino med hjälp av Device Firmware Update (DFU). Detta brukar användas för att blinka ny firmware till Arduino. Du kommer att använda den för att blinka Arduino med en ny firmware som gör att den fungerar som ett tangentbord. Detta kommer inte att omfattas här, eftersom det är en ganska komplicerad uppgift. Arduino hemsida har en bra handledning för detta.

Arduino Pro Micro gör det här steget mycket enkelt. Logiken som krävs för att emulera ett USB-tangentbord är redan inbyggt i processorn, så det är lika enkelt att skriva lite kod!

Först ställer du in nycklarna:

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

Detta är en matris som innehåller alla stiften som knapparna är anslutna till. Om du har använt mer eller mindre knappar eller använt olika stift, ändra värdena här.

En matris är en samling av likasinnade saker. Datorer kan optimera din kod för att komma åt dem snabbt, och de påskyndar kodskrivningsprocessen.

Starta nu alla tappar som ingångar:

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

Detta berättar Arduino att alla stiften i matrisen är ingångar. En slinga används för att göra detta, så istället för att skriva pinMode (2, INPUT) nio gånger, behöver du bara skriva den en gång. Detta kallar också Keyboard.begin . Detta skapar en funktion inbyggd i Arduino-biblioteket, utformat speciellt för att emulera ett tangentbord.

Skapa en metod som heter readButton :

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

Detta tar en pinne och kontrollerar om den har tryckts eller inte. Den returnerar helt enkelt TRUE eller FALSE . Det innehåller också lite programvaruavslutning - en enkel fördröjning och sedan åter kontroll av omkopplaren säkerställer att knappen verkligen pressades.

Nu kallas en annan för loop i inuti tomgångsslangen () :

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

Återigen går det över varje element i matrisen och kontrollerar om den har tryckts. Det gör det genom att kalla den readButton- metoden du skapade tidigare. Om en knapp har tryckts, skickar den det stiftnumret till en annan metod som kallas 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; } } 

Detta kontrollerar pinnumret med hjälp av en omkopplingsdeklaration . Växlingsutlåtanden (ibland kallad växelväska ) liknar ett if- uttalande, men de är användbara för att kontrollera att en sak (i ​​detta fall stiftnumret) är lika med ett av flera olika resultat. I huvudsak är de mycket snabbare att beräkna.

Huvudkomponenterna är inuti denna omkopplingsdeklaration. Keyboard.println skriver text till datorn som om du fysiskt skrev varje nyckel. Tangentbord.presspressar och håller en knapp. Glöm inte att släppa dem med Keyboard.releaseAll efter en kort fördröjning!

Här är den fullständiga koden:

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

Förutom alla nummer- och bokstavstangenter kan Arduino trycka på de flesta specialnycklarna som heter Keyboard Modifiers . Dessa är särskilt användbara för att trycka på kortkommandon. Arduino hemsida har en användbar lista.

Nu är allt som är kvar att skapa några genvägar. Du kan kartlägga detta till befintliga genvägar, till exempel Alt + F4 (nära program i Windows) eller Cmd + Q (avsluta programmet macOS). Alternativt, se till att du läser vår ultimata genvägs snabbtangentguide Windows Tangentbordsgenvägar 101: Den ultimata guiden Windows Tangentbordsgenvägar 101: Den ultimata guiden Tangentbordsgenvägar kan spara dig timmar. Hantera de universella Windows-tangentbordsgenvägarna, tangentbordstrådarna för specifika program och några andra tips för att påskynda ditt arbete. Läs mer, hur man skapar Windows-genvägar Hur man skapar Windows-genvägar på ett enkelt sätt Hur man skapar Windows-genvägar på skrivbordet Det enkla sättet Smarta genvägar för korta filer kan spara dig omedelbart genom att siffra genom menyer och mappar. Vi visar dig snabba och enkla sätt att skapa dem. Läs mer och varje Chromebook-genväg Här är varje Chromebook-genväg Du behöver någonsin varje Chromebook-genväg Du behöver någonsin Letar du efter en huvudlista med kortkommandon för din Chromebook? Här är varje tangentkombination som du någonsin behöver för Chrome OS! Läs mer för att komma igång med att skapa egna genvägar.

Har du skapat en egen genvägslåda? Låt mig veta i kommentarerna, jag skulle gärna se några bilder!

In this article