Annons
Den ödmjuka Arduino kan göra många saker, men visste du att den kan emulera ett USB-tangentbord? Du kan kombinera de svåra att komma ihåg långa kortkommandon till en enda anpassad genvägsknapp med denna enkla krets. Här är slutresultatet:
Har du aldrig använt en Arduino förut? Kolla in vår Uppstartnings Guide Komma igång med Arduino: En nybörjarguideArduino är en open-source elektronikprototypplattform baserad på flexibel, lättanvänd hårdvara och mjukvara. Den är avsedd för konstnärer, designers, hobbyister och alla som är intresserade av att skapa interaktiva objekt eller miljöer. Läs mer först.
Vad du behöver
Här är vad du behöver för att göra detta projekt:
- 1 x Arduino Pro Micro.
- Tillfälliga knappar eller tangentbordsknappar.
- 10K ohm-motstånd.
- Blandade ledningar.
- 1 x 220 ohm-motstånd.
- 1 x 5 mm (0,177 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 Microeftersom 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 fikla om att få saker att fungera. 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 radstift för arduino Leonardo Ersätt ATmega328 Pro MiniOSOYOO Pro Micro ATmega32U4 5V / 16MHz modulkort med 2 radstift för arduino Leonardo Ersätt ATmega328 Pro Mini Köp nu på Amazon $10.99
Du behöver en kort knapp, en 10K ohm-motstånd och lämplig anslutningstråd för varje knapp du vill använda. Jag använder Cherry MX mekaniska tangentbordsknappar för själva genvägsknapparna några omkopplaren kommer att göra, förutsatt att den är momentant och inte spärrar.
Du kan behöva några andra artiklar beroende på hur du bygger detta. Om du vill prototypa det behöver du en lödfri brödskiva. Det är värt att spendera pengarna på en bra - de kan ibland vara väldigt opålitliga. Om du vill boxa det här vill du köpa lite stripboard.
Bygg plan
Så här kommer det att fungera. Arduino kommer att programmeras att fungera som ett USB-tangentbord - vad din dator angår. Flera knappar anslutna till Arduino skickar nyckelkommandon till din dator. Du trycker bara på en knapp, men din dator tror att du har tryckt på Alt > F4, till exempel.
Välja en switch

Det finns flera varianter av MX-serieomkopplare. Den här webbplatsen ger en utmärkt introduktion, men de kommer i huvudsak ner på buller och tryck. Vissa modeller kräver mer kraft för att trycka, och vissa modeller gör ett mekaniskt "klick" -ljud när du trycker på det. Jag har använt Cherry MX Browns, som inte ljuder när de trycks ned. De är alla samma dimensioner, så välj vilken modell du vill (eller mixa och matcha) utan att oroa dig.
Du måste naturligtvis också köpa några nyckellock 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, du kan fortfarande bygga den här. Många webbplatser erbjuder 3D-utskriftstjänster, t.ex. 3D-nav eller Shapeways. Alternativt är detta ett mycket enkelt fall, du kan göra din egen av plasticard, perspex, trä eller till och med kartong. Om du vill vara riktigt sparsam, säljer Cherry MX en switch tester / sampler set Amazon (Storbritannien). Du behöver 4 M5 x 35 mm bultar och 4 M5 muttrar. Du kan naturligtvis ersätta dessa med ett lämpligt alternativ du har.
Max Keyboard Keycap, Cherry MX-omkopplare, Tester Kit (9 switchar Pro Sampler Tester Kit)Max Keyboard Keycap, Cherry MX-omkopplare, Tester Kit (9 switchar Pro Sampler Tester Kit) Köp nu på Amazon $14.99
Om du gör ditt eget mål är det en viktig detalj du behöver veta: Cherry MX-omkopplare är en push-passning i deras 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). Sträck för långt från dessa dimensioner, och dina switchar kanske inte längre monteras korrekt.
Det 3D-tryckta fodralet är i två delar, den övre och den nedre. Tryck Cherry MX-omkopplarna i fyrkantiga hål:

Se till att montera omkopplarna på rätt sätt. Den övre delen har orden "CHERRY" på, och botten har ett lite hack. Sätt i en 3mm LED i det här lilla spåret:

Du kanske tycker att lysdioderna ser bäst monterade "upp och ned". Detta var fallet för de nyckelknappar som jag använde, och det påverkar inte brytarna alls.
Du borde nu ha nio omkopplare med 9 lysdioder. Det finns inget behov att limma någon av dessa delar in. Lodet håller lysdioderna och friktionen håller omkopplarna.

Skruva sedan in LED-fästet (låt lysdioden tas bort för tillfället). Du kommer att slutföra monteringen av fodralet senare, när kretsen är byggd.
Kretsen
Denna krets är byggd på stripboard. Detta är utmärkt för att bygga semi-permanenta kretsar, utan kostnaden för ett printkort (PCB). Det är helt enkelt ett glasfiberstycke med kopparspår som går parallellt i en riktning. Dessa spår kan lödas till och skäras. Skärning av ett spår kan göras med ett specialverktyg eller en liten borrbit.
Inte för säker på att lödning? Ta en titt på dessa enkla projekt Lär dig att löda med dessa enkla tips och projektÄr du lite skrämd av tanken på ett varmt järn och smält metall? Om du vill börja arbeta med elektronik kommer du att behöva lära dig att löda. Låt oss hjälpa till. Läs mer först.
Här är stripboard-layouten (exklusive bakledningar):

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

Det är en snäv passning att pressa alla komponenterna i ett så litet utrymme. Klipp av hörnen på din stripboard på följande sätt:

Detta bör passa snyggt i botten av fallet:

Se till att spåren går vertikalt.
Anslut anoden (lång ben, positiv) på lysdioden till 200 ohm-motståndet och sedan till +5 V. Anslut katoden (kort ben, negativt) Till marken. Täck benen med värmekrympfodral och tryck sedan in i LED-hållaren. Det finns inget behov av lim, men din LED-hållare kanske inte är en push-fit, så du kan behöva anpassa dessa instruktioner.

Du kanske vill använda en tvåfärgad LED här istället - detta gör att du kan ställa in två eller flera banker med omkopplare, med en annan färgad LED för varje bank.
Nu är det dags att löda alla lysdioder för nyckelknapparna. Dessa används bara för att få tangenterna att lysa, så att du kan hoppa över dem om du vill, och de behöver inte vara anslutna till en digital stift, bara ström. Anslut alla anoderna tillsammans och alla katoderna tillsammans. Lär dig av mitt misstag - det är mycket lättare att göra detta innan du kopplar på brytarna! Anslut anoderna till +5 V genom ett 220 ohm-motstånd och katoderna till marken. Dessa lysdioder kopplas parallellt. Här är kretsen bara för dessa lysdioder:

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

Slå på Arduino för att testa alla lysdioder som fungerar. Du behöver inte ladda upp någon kod. Om några lysdioder inte fungerar, gå och dubbelkontrollera ledningarna.

Sätt nu upp brytarna. Dessa måste anslutas genom ett 10 k 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 puff av rök (lita på mig, jag dödade en redan så att du inte behöver). Här är kretsen för en switch:

Denna krets är densamma för alla nio omkopplare. Anslut omkopplarna till digitala stift två till tio, var och en med sitt eget 10K-motstånd till marken. Var försiktig lödning av Cherry MX-omkopplare, de kan vara lite ömtåliga, jag fick flera stift på mig. Du kanske vill löda dessa direkt till lite mer stripboard, men bakledningar är fortfarande lämpliga.
Det är det för kablarna. Du kanske vill montera ett USB-uttag av typen B, men de små stiften på dem kan ofta vara ganska svåra att löda. 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 gör det förstå skillnaderna Förstå USB-kabeltyper och vilken du ska användaVarför finns det så många olika USB-kabeltyper? Lär dig skillnaderna mellan USB-anslutningstyper och hur man köper den bästa kabeln. Läs mer .
Slutligen, dubbelkontrollera att din krets är korrekt. En kort kan enkelt förstöra en Arduino, och det kan vara lätt att göra med stripboard.
Koden
Testa nu att kretsen är korrekt. Det är en bra idé att göra detta innan du fortsätter, så att du kan lösa eventuella problem nu medan du kan. Ladda upp den här testkoden (glöm inte att välja rätt kort och port från Verktyg > Styrelse och Verktyg > Hamn menyer):
const int-knappar [] = {2,3,4,5,6,7,8,9,10}; // array of all button pins void setup () {// lägg din installationskod här, för att köra en gång: 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 () {// lägg din huvudkod här, för att köra upprepade gånger: för (int i = 2; i <11; ++ i) {if (digitalRead (i) == HÖG) {// avstängning av mjukvara förbättrar noggrannhetsfördröjningen (10); if (digitalRead (i) == HIGH) {// kontrollomkopplare Serial.print ("input"); Serial.println (i); fördröjning (250); } } } }
Du kan behöva byta stift om du har modifierat kretsen.
När du har laddat upp öppnar du seriell bildskärm (överst till höger > Seriell bildskärm). Tryck på varje knapp en efter en. Du bör se den seriella bildskärmen visa numret på knappen du tryckte på. Precis som med lysdioden, om din dator klagar på att dra för mycket ström, eller lysdioderna slocknar när du trycker på en knapp, koppla ur genast! Du har en kort någonstans i kretsen, dubbelkontrollera att kretsen är korrekt och det finns inga shorts mellan anslutningarna.
Om allt fungerar, gå vidare och lägg kretsen i lådan. Du kanske vill använda en klistra lim för att hålla kretsen på plats (även om trådarna höll mina i fint). Skruva fast locket också.
Att göra Arduino verkar vara ett tangentbord är mycket enkelt. Om du använder en Nano eller UNO kommer du att programmera om din Arduino med Enhetens firmwareuppdatering (DFU). Detta används vanligtvis för att flasha 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 behandlas här, eftersom det är en ganska komplicerad uppgift. De Arduino webbplats har en bra tutorial för detta.
Arduino Pro Micro gör detta steg väldigt enkelt. Logiken som krävs för att emulera ett USB-tangentbord är redan inbyggd i processorn, så det är så enkelt som att skriva en kod!
Ställ först in tangenterna:
int-nycklar [] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
Detta är en matris som innehåller alla stift som knapparna är anslutna till. Om du har använt fler 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.
Initiera nu alla stift som ingångar:
void setup () {// lägg din installationskod här, för att köra en gång: Keyboard.begin (); // inställningstangentbord för (int i = 2; i <11; ++ i) {// initilize pins pinMode (i, INPUT); } }
Detta säger till Arduino att alla stift i matrisen är ingångar. En slinga används för att göra detta, snarare än att skriva pinMode (2, INPUT) nio gånger måste du bara skriva det en gång. Detta kallar också Keyboard.begin. Detta sätter upp en funktion inbyggd i Arduino-biblioteket, utformad specifikt för att emulera ett tangentbord.
Skapa en metod som heter readButton:
boolean readButton (int pin) {// kontrollera och avlägsna knapparna om (digitalRead (pin) == HIGH) {fördröjning (10); if (digitalRead (pin) == HÖG) {return true; }} returnera falsk; }
Detta tar en stift och kontrollerar om det har tryckts in eller inte. Det returnerar helt enkelt SANN eller FALSK. Den innehåller också några programvara debouncing - en enkel fördröjning och sedan kontrollera omkopplaren säkerställer att knappen verkligen tryckts in.
Nu kallas en annan för loop inuti void loop ():
void loop () {// lägg din huvudkod här, för att köra upprepade gånger: för (int i = 2; i <11; ++ i) {// kontrollera knapparna om (läsButton (i)) {doAction (i); } } }
Återigen går detta över varje element i matrisen och kontrollerar om det har tryckts in. Det gör detta genom att kallas readButton metod du skapade tidigare. Om du har tryckt på en knapp överför den det stiftnumret till en annan metod som heter doAction:
void doAction (int pin) {// utför uppgiften switch (pin) {case 2: Keyboard.println ("drive.google.com"); ha sönder; fall 3: Keyboard.println ("makeuseof.com"); ha sönder; fall 4: // CMD + T (ny flik, Chrome) Keyboard.press (KEY_LEFT_GUI); Keyboard.press ( 't'); fördröjning (100); Keyboard.releaseAll (); ha sönder; fall 5: // din uppgift här bryter; fall 6: // din uppgift här bryter; fall 7: // din uppgift här bryter; fall 8: // din uppgift här bryter; fall 9: // din uppgift här bryter; } }
Detta kontrollerar stiftnumret med a växla påstående. Byt uttalanden (ibland kallade switch fallet) liknar en om 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 finns i detta switch-uttalande. Keyboard.println skriver text till datorn som om du fysiskt skrev alla nycklar. Keyboard.press håller ner en knapp. Glöm inte att släppa dem med Keyboard.releaseAll efter en kort försening!
Här är den fullständiga koden:
int-nycklar [] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; void setup () {// lägg din installationskod här, för att köra en gång: Keyboard.begin (); // inställningstangentbord för (int i = 2; i <11; ++ i) {// initilize pins pinMode (i, INPUT); } } void loop () {// lägg din huvudkod här, för att köra upprepade gånger: för (int i = 2; i <11; ++ i) {// kontrollera knapparna om (läsButton (i)) {doAction (i); } } } boolean readButton (int pin) {// kontrollera och avkoppla knapparna om (digitalRead (pin) == HIGH) {fördröjning (10); if (digitalRead (pin) == HÖG) {return true; }} returnera falsk; } void doAction (int pin) {// utför uppgiften switch (pin) {case 2: Keyboard.println ("drive.google.com"); ha sönder; fall 3: Keyboard.println ("makeuseof.com"); ha sönder; fall 4: // CMD + T (ny flik, Chrome) Keyboard.press (KEY_LEFT_GUI); Keyboard.press ( 't'); fördröjning (100); Keyboard.releaseAll (); ha sönder; fall 5: // din uppgift här bryter; fall 6: // din uppgift här bryter; fall 7: // din uppgift här bryter; fall 8: // din uppgift här bryter; fall 9: // din uppgift här bryter; } }
Förutom alla siffer- och bokstavsknappar kan Arduino trycka på de flesta specialknappar som anropas Tangentbordsmodifierare. Dessa är särskilt användbara för att trycka på kortkommandon. Arduino webbplats har en användbar lista.
Allt som återstår är att skapa några genvägar. Du kan kartlägga detta till befintliga genvägar, t.ex. Alt + F4 (stäng program i Windows) eller Cmd + Q (avsluta programmet macOS). Se också till att du läser vår ultimat snabbtangentguide Windows-kortkommandon 101: The Ultimate GuideKortkommandon kan spara timmar. Behärska de universella genvägarna för Windows, tangentbordstrick 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 skrivbordsgenvägar på det enkla sättetSmarta genvägar på skrivbordet kan spara dig meningslös siktning genom menyer och mappar. Vi visar dig snabba och enkla sätt att skapa dem. Läs mer , och varje Chromebook-genväg Varje kortkommando för Chromebook du någonsin behöverBehärskar Chrome OS med den här listan över alla viktiga snabbkommandon för Chromebook du någonsin behöver. Läs mer för att komma igång med dina egna genvägar.
Har du skapat en egen genvägslåda? Låt mig veta i kommentarerna, jag skulle gärna vilja se några bilder!
Joe är en examen i datavetenskap från University of Lincoln, Storbritannien. Han är en professionell mjukvaruutvecklare, och när han inte flyger drönare eller skriver musik kan han ofta hitta foton eller producera videor.