Lag din egen egendefinerte snarveisknapper med en Arduino

Lag din egen egendefinerte snarveisknapper med en Arduino / DIY

Den ydmyke Arduino kan gjøre mange ting, men visste du at det kan etterligne et USB-tastatur? Du kan kombinere de vanskelige å huske lange tastatursnarveier i en enkelt egendefinert snarvei, med denne enkle kretsen. Her er sluttresultatet:

Har aldri brukt en Arduino før? Ta en titt på vår startveiledning Komme i gang med Arduino: En nybegynnershåndbok Komme i gang med Arduino: En nybegynnersguide Arduino er en open source elektronikkprototypeplan basert på fleksibel, brukervennlig maskinvare og programvare. Det er ment for kunstnere, designere, hobbyister, og alle som er interessert i å lage interaktive objekter eller miljøer. Les mer først.

Hva trenger du


Her er hva du trenger for å gjøre dette prosjektet:

  • 1 x Arduino Pro Micro.
  • Moment-knapper eller tastaturknapper.
  • 10K ohm motstander.
  • Assorted hookup ledninger.
  • 1 x 220 ohm motstander.
  • 1 x 5mm (0.197 inches) LED.
  • 1 x 5mm LED-holder.

Du vil trenge en veldig spesiell Arduino for dette prosjektet. Jeg bruker en Pro Micro, da de er så små og billige, trenger du en Arduino som har USB-Serial innebygd i prosessoren (Atmega32u4). Det er mulig å bygge dette prosjektet med andre Arduinos, for eksempel en UNO eller Nano, men det krever mye hardt arbeid for å blinke bios og fiddling om å få ting til å fungere. Kloner av andre Arduino-modeller fungerer vanligvis ikke i det hele tatt, men en Pro Micro klon er også fin.

OSOYOO Pro Micro ATmega32U4 5V / 16MHz Modulkort med 2 Row Pin Header for Arduino Leonardo Bytt ATmega328 Pro Mini OSOYOO Pro Micro ATmega32U4 5V / 16MHz Modulkort med 2 Row Pin Header for Arduino Leonardo Bytt ATmega328 Pro Mini Kjøp nå på Amazon $ 8.99

Du trenger en øyeblikkelig knapp, en 10K ohm motstand, og passende tilkoblingstråd for hver knapp du vil bruke. Jeg bruker Cherry MX mekaniske tastaturbrytere for de faktiske snarveisknappene, selv om noen bryter vil gjøre, forutsatt at det er momentant og ikke låsende.

Det kan hende du trenger noen andre elementer, avhengig av hvordan du bygger dette. Hvis du vil prototype det, vil du trenge et loddetallt brødbrett. Det er verdt å bruke pengene på en god en - de kan noen ganger være veldig upålitelige. Hvis du vil pakke dette opp, vil du kjøpe litt stripboard.

Bygg Plan

Slik fungerer dette. Arduino vil bli programmert til å fungere som et USB-tastatur - så langt det gjelder datamaskinen, er det. Flere knapper koblet til Arduino sender sentrale kommandoer til datamaskinen. Du vil bare trykke på en knapp, men datamaskinen vil tro at du har trykket på alt > F4, for eksempel.

Velger en bryter

Det finnes flere varianter av MX-seriebrytere. Dette nettstedet gir en utmerket introduksjon, men de kommer i hovedsak ned til støy og press. Noen modeller krever mer kraft til å trykke, og noen modeller gjør en mekanisk “klikk” lyd når du trykker på den. Jeg har brukt Cherry MX Browns, som ikke gjør en lyd når de trykkes. De er alle de samme dimensjonene, så velg hvilken modell du liker (eller bland og mat) uten bekymring.

Du må også kjøpe noen nøkkelhatt, selvfølgelig, og det er en verden av tilpassede design der ute å velge mellom - vi har kjøpt fra KeyboardCo i USA..

Saken

Jeg har 3D skrevet ut denne saken, og du kan laste ned .STL filer fra Thingiverse. Ikke bekymre deg hvis du ikke eier en 3D-skriver, kan du fortsatt bygge dette. Mange nettsteder tilbyr 3D-utskriftstjenester, for eksempel 3D-hubber eller Shapeways. Alternativt er dette et veldig enkelt tilfelle, du kan lage din egen av plasticard, perspex, tre, eller til og med papp. Hvis du vil være veldig sparsommelig, selger Cherry MX en bryter tester / sampler sett på Amazon (UK). Du trenger 4 M5 x 35mm bolter og 4 M5 muttere. Du kan selvsagt erstatte disse for et passende alternativ du har.

Max Keyboard Keycap, Cherry MX Switch, O-Ring Pro Sampler Tester Kit Max Keyboard Keycap, Kirsebær MX Switch, O-Ring Pro Sampler Tester Kit Kjøp nå på Amazon

Hvis du lager din egen sak, er det en viktig detalj du trenger å vite: Cherry MX-brytere er et trykk i deres monteringshull. De krever et 14 x 14mm (0,551 tommers) firkantet monteringshull, idet platen ikke er tykkere enn 1,5 mm (0,059 tommer). Stray for langt fra disse dimensjonene, og bytteene dine kan ikke lenger monteres riktig.


Den 3D-trykte saken er i to deler, toppen og bunnen. Skyv Cherry MX-bryterne inn i de firkantede hullene:

Pass på at du monterer bryterne riktig rundt. Toppen har ordene “KIRSEBÆR” på, og bunnen har litt hakk. Sett inn en 3mm LED i denne lille plassen:

Du kan oppleve at lysdiodene ser best ut “opp ned”. Dette var tilfelle for de keycaps jeg brukte, og det påvirker ikke bryterne i det hele tatt.

Du bør nå ha 9 brytere med 9 lysdioder. Det er ikke nødvendig å lim noen av disse delene inn. Loddet vil holde lysdiodene, og friksjon vil holde bryterne.

Skru deretter inn LED-monteringen (la LED-lampen fjernes for nå). Du vil fullføre saken senere, når kretsen er bygget.

Kredsløpet

Denne kretsen er bygget på stripboard. Dette er utmerket for å bygge halvfaste kretser, uten at det koster et printkort (PCB). Det er rett og slett et glassfiberfiber med kobberbaner som går parallelt i en retning. Disse sporene kan loddes til, så vel som kuttet. Kutting av et spor kan gjøres med et spesielt verktøy eller en liten borekrone.

Ikke for trygg på lodding? Ta en titt på disse enkle prosjektene Lær hvordan å lodde, med disse enkle tipsene og prosjektene Lær hvordan å lodde, med disse enkle tips og prosjekter Er du litt skremt av tanken på et varmt jern og smeltet metall? Hvis du vil begynne å jobbe med elektronikk, må du lære å lodde. La oss hjelpe. Les mer først.

Her er stripboardoppsettet (ekskluderer bakledninger):

Pass på at du kutter sporene under motstandene og Arduino. Siden det kan være svært vanskelig å lese en stripboard-krets, her er en breadboard-versjon:

Det er en tett passform for å klemme alle komponentene inn i et så lite mellomrom. Klipp hjørnene på stripbordet på følgende måte:

Dette skal passe pent inn i bunnen av saken:

Pass på at sporene løper vertikalt.

Koble anoden (langt ben, positivt) av LED til 200 ohm motstand og deretter til +5 V. Koble til katoden (kort ben, negativ) til bakken. Dekk bena med varmekrympe og trykk deretter inn i LED-holderen. Det er ikke behov for lim, men LED-holderen kan ikke være en trykkpasning, så du må kanskje tilpasse disse instruksjonene.

Du vil kanskje bruke en tofargelampe her i stedet - dette vil tillate deg å sette opp to eller flere banker med brytere, med en annen farget status LED for hver bank.

Nå er det på tide å lodde alle lysdiodene til keycaps. Disse brukes bare for å få tastene til å lyse, så du kan hoppe over dem hvis du vil, og de trenger ikke å være koblet til en digital pinne, bare strøm. Koble alle anodene sammen, og alle katoder sammen. Lær av min feil - det er mye lettere å gjøre dette før du kobler bryterne! Koble anodene til +5 V om en 220 ohm motstand, og katoder til jord. Disse lysdiodene er koblet parallelt. Her er kretsen bare for disse LEDS:

Bruk et lite stykke varmekrympeslange for å dekke forbindelsen mellom lysdiodene og Arduino:

Slå på Arduino for å teste alle lysdiodene. Du trenger ikke å laste opp noen kode. Hvis noen lysdioder ikke virker, må du sjekke kablingene dine doble.

Nå skru opp bryterne. Disse må kobles til via en 10k motstand, ellers vil Arduino dø. Dette kalles en død kort - +5 V går direkte i bakken, og alt som gjenstår av Arduino vil være et rykte av røyk (stol på meg, jeg drepte en allerede slik at du ikke trenger). Her er kretsen for en bryter:

Denne kretsen er den samme for alle ni brytere. Koble bryterne til digitale stifter to til ti, hver med sin egen 10K motstand til bakken. Pass på å lette Cherry MX-brytere, de kan være litt skjøre, jeg hadde flere pinner på meg. Du vil kanskje lodde disse direkte til noen flere stripboard, men etterfølgende ledninger er fortsatt egnet.

Det er det for ledninger. Du kan ønske å montere en USB-type B-hylse, men de små pinnene på dem kan ofte være ganske vanskelig å lodge til. Hvis du ikke ønsker å gjøre dette, ikke bekymre deg. Micro USB-kontakten på Arduino passer perfekt til hullet i chassiset. Hvis du er litt forvirret om de forskjellige USB-typene, må du sørge for at du forstår forskjellene. Forstå USB-kabeltyper og hvilken som skal brukes Forstå USB-kabeltyper og hvilken som skal brukes Hvorfor er det så mange forskjellige USB-kabler? Lær forskjellene mellom USB-kontakttyper og hvordan du kjøper den beste kabelen. Les mer .

Til slutt, dobbeltsjekke kretsen din er riktig. En kort kan enkelt ødelegge en Arduino, og det kan være lett å gjøre med stripboard.

Koden

Nå test kretsen er riktig. Det er en god ide å gjøre dette før du fortsetter, slik at du kan fikse eventuelle problemer nå mens du kan. Last opp denne testkoden (ikke glem å velge riktig kort og port fra Verktøy > Borde og Verktøy > Havn menyer):

const int knapper [] = 2,3,4,5,6,7,8,9,10; // array av alle knappstenger ugyldig oppsett () // sett opp konfigurasjonskoden din her, for å kjøre en gang: 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);  tomgangsløype () // sett hovedkoden her, for å løpe gjentatte ganger: 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 må kanskje bytte tappene hvis du har endret kretsen.

Når du har lastet opp, åpner du seriell skjerm (øverst til høyre > Seriell skjerm). En etter en trykker du på hver knapp. Du bør se seriell skjerm vise nummeret på knappen du trykket på. På samme måte som med LED, hvis datamaskinen klager på å tegne for mye strøm eller lysdiodene går ut når du trykker på en knapp, koble øyeblikkelig til! Du har et kort sted i kretsen, dobbeltsjekker kretsen er riktig og det er ingen shorts mellom tilkoblinger.

Hvis alt fungerer, fortsett og sett kretsen inn i esken. Det kan hende du vil bruke en lime med lim for å holde kretsen på plass (selv om ledningene holdt min i orden). Bolt lokket på også.

Å gjøre Arduino til å være et tastatur er veldig enkelt. Hvis du bruker en Nano eller UNO, skal du omprogrammere din Arduino bruker Enhetsvareoppdatering (DFU). Dette brukes vanligvis til å blinke ny firmware til Arduino. Du skal bruke den til å blinke Arduino med en ny firmware som gjør at den fungerer som et tastatur. Dette vil ikke bli dekket her, da det er en ganske komplisert oppgave. Arduino-nettstedet har en god opplæring for dette.

Arduino Pro Micro gjør dette trinnet veldig enkelt. Logikken som kreves for å etterligne et USB-tastatur er allerede innebygd i prosessoren, så det er like enkelt som å skrive noen kode!

Først sett opp tastene:

int nøkler [] = 2, 3, 4, 5, 6, 7, 8, 9, 10;

Dette er en matrise som inneholder alle de pinnene knappene er koblet til. Hvis du har brukt mer eller mindre knapper eller brukt forskjellige pins, endrer du verdiene her.

En matrise er en samling av likesinnede ting. Datamaskiner kan optimalisere koden din for å få tilgang til dem raskt, og de fremskynder kodeskrivingsprosessen.

Nå initialiser alle pinnene som innganger:

ugyldig oppsett () // sett inn oppsettskoden her, for å kjøre en gang: Keyboard.begin (); // setup keyboard for (int i = 2; i < 11; ++i)  // initilize pins pinMode(i, INPUT);  

Dette forteller Arduino at alle pinnene i matrisen er innganger. En sløyfe brukes til å gjøre dette, så heller enn å skrive pinMode (2, INPUT) ni ganger, du må bare skrive den en gang. Dette kalles også Keyboard.begin. Dette setter opp en funksjon som er bygget inn i Arduino-biblioteket, designet spesielt for å simulere et tastatur.

Opprett en metode som kalles readButton:

boolsk readButton (int pin) // sjekke og debounce knapper hvis (digitalRead (pin) == HIGH) forsinkelse (10); hvis (digitalRead (pin) == HIGH) return true;  returnere false; 

Dette tar en pin, og kontrollerer om den har blitt trykket eller ikke. Det kommer rett og slett tilbake EKTE eller FALSK. Den inneholder også noen programvare debouncing - En enkel forsinkelse, og deretter kontroller bryteren igjen, at knappen virkelig ble trykket.

Nå kalles en annen for sløyfe inne tomromsløyfe ():

tomromsløype () // sett hovedkoden her, for å løpe gjentatte ganger: for (int i = 2; i < 11; ++i)  // check buttons if(readButton(i))  doAction(i);   

Igjen går dette over hvert element i matrisen og kontrollerer om det har blitt trykket. Det gjør dette ved å ringe readButton metode du opprettet tidligere. Hvis en knapp er trykket, passerer den det pin nummeret til en annen metode som kalles doAction:

void doAction (int pin) // utføre oppgaver bytt (pin) case 2: Keyboard.println ("drive.google.com"); gå i stykker; sak 3: Keyboard.println ("makeuseof.com"); gå i stykker; tilfelle 4: // CMD + T (ny tab, Chrome) Keyboard.press (KEY_LEFT_GUI); Keyboard.press ( 't'); forsinkelse (100); Keyboard.releaseAll (); gå i stykker; sak 5: // din oppgave her bryte; sak 6: // din oppgave her bryte; sak 7: // din oppgave her bryte; sak 8: // din oppgave her bryte; sak 9: // din oppgave her bryte; 

Dette kontrollerer pinnummeret ved hjelp av a bytte om uttalelse. Bytt uttalelser (noen ganger kalt bytte saken) ligner en hvis uttalelse, men de er nyttige for å sjekke at en ting (i dette tilfelle pin nummeret) er lik ett av flere forskjellige utfall. I hovedsak er de mye raskere å beregne.

Hovedkomponentene er inne i denne bryteretningen. Keyboard.println skriver tekst til datamaskinen som om du fysisk skrev inn hver nøkkel. Keyboard.press trykker og holder en tast. Ikke glem å slippe dem med Keyboard.releaseAll etter kort forsinkelse!

Her er den fulle koden:

int nøkler [] = 2, 3, 4, 5, 6, 7, 8, 9, 10; ugyldig oppsett () // sett inn oppsettskoden her, for å kjøre en gang: 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;  

I tillegg til alle nummer- og bokstavstastene, kan Arduino trykke på de fleste spesielle tastene som heter Tastaturmodifikatorer. Disse er spesielt nyttige for å trykke hurtigtastene. Arduino-nettstedet har en nyttig liste.

Nå er alt som er igjen å lage noen snarveier. Du kan kartlegge dette til eksisterende snarveier, for eksempel alt + F4 (nært program i Windows) eller cmd + Q (avslut program macOS). Alternativt, sørg for at du leser vår ultimative hurtigtastveiledning. Windows Tastaturgenveier 101: Den Ultimative Guide Windows Tastaturgenveier 101: Den Ultimate Guide Tastaturgenveier kan spare deg for timer. Master de universelle Windows-hurtigtastene, tastaturtricks for bestemte programmer, og noen andre tips for å få fart på arbeidet ditt. Les mer, hvordan du oppretter Windows-snarveier Hvordan lage Windows-skrivebordssnarveier på den enkle måten Hvordan lage Windows-skrivebordssnarveier Den enkle måten Smarte skrivebordsveier kan spare deg ubevisst ved å sitte gjennom menyer og mapper. Vi viser deg raske og enkle måter å lage dem på. Les mer, og hver eneste Chromebook-snarvei. Her er en hvilken som helst Chromebook-snarvei. Du trenger det her, hver eneste Chromebook-snarvei du trenger. Leter du etter en hovedliste over hurtigtaster for Chromebook? Her er alle viktige kombinasjoner du noensinne trenger for Chrome OS! Les mer for å komme i gang med å lage dine egne snarveier.

Har du opprettet din egen snarvei? Gi meg beskjed i kommentarene, jeg vil gjerne se noen bilder!

Utforsk mer om: Arduino, Tastatur, Tastaturgenveier.