Innholdsfortegnelse:

Programmerbart tastatur: 5 trinn (med bilder)
Programmerbart tastatur: 5 trinn (med bilder)

Video: Programmerbart tastatur: 5 trinn (med bilder)

Video: Programmerbart tastatur: 5 trinn (med bilder)
Video: Epomaker Shadow-X Review: A Budget Mechanical Keyboard with a Built-in Display 2024, November
Anonim
Programmerbart tastatur
Programmerbart tastatur
Programmerbart tastatur
Programmerbart tastatur

I dette prosjektet skal jeg vise hvordan du lager relativt enkle og rimelige programmerbare tastaturer for å kartlegge de mest brukte hurtigtastene, applikasjonene og mer.

Dette tastaturet oppdages som tastatur i alle større operativsystemer, ingen ekstra drivere er nødvendig.

Rekvisita

  • Roterende encoder.
  • Mange (avhengig av dine behov) trykknapper.
  • Arduino Pro Micro, Arduino Leonardo eller andre dev -brett med Atmega32U4 MCU.
  • Wire, loddetinn, loddejern, etc.
  • (Valgfritt) En tung base for å hindre at tastaturet glir, jeg bruker gammel 3,5 "HDD

Trinn 1: Elektrisk krets

Elektrisk krets
Elektrisk krets

Jeg valgte å bruke Arduino Pro Micro dev -brett med Atmega32U4 MCU som har 18 brukbare digitale pinner.

Pinnene for å koble til trykknapper og dreiekoder ble valgt uten spesiell rekkefølge, men noen ting bør bemerkes:

  1. Alle digitale lesekompatible pinner har interne pull-ups som gjør det mulig å redusere eksterne nedtrekksmotstander. Selvfølgelig bør koden oppdateres tilsvarende, fordi den forventer at pinnens tilstand går fra lav til høy når trykknapper trykkes.
  2. I encoder.h -bibliotekseksempel bemerket vi at den beste ytelsen til koderen oppnås når begge pinnene som er koblet til MCU, avbryter kompatible pinner. De fleste analoge pinner på Atmega32U4 har ikke avbrudd.
  3. Nøyaktige nedtrekksmotstandsverdier spiller ingen rolle, alt fra 1 kΩ til 100 kΩ vil fungere fint. Større motstandsverdier tillater mindre effekttap, men resulterer i en langsommere pinrespons på spenningsendringer. Bare velg hvilken verdi motstand du har mest.
  4. Mekaniske kodere er ikke de mest pålitelige tingene på grunn av kontaktslitasje og sprett. Derfor er det nødvendig med en god debouncing -løsning. Mine valgte kondensatorverdier og forsinkelsestider i kode vil sannsynligvis ikke gi de beste resultatene for deg. Så litt eksperimentering er nødvendig. Eller bytt til noe som optisk koder, men prisen er betydelig høyere.

Trinn 2: Montering

montering
montering
montering
montering
montering
montering
montering
montering

Jeg ønsket å gjøre tastaturet så rent som mulig, så jeg loddet alle komponentene på baksiden av prototypebrettet. Jeg tenkte at tastaturet ville være mer ergonomisk hvis det ble brukt forhøyet i liten vinkel. Derfor loddet jeg Arduino Pro Micro på separat bord og koblet alle digitale pinner med ledning til trykknapper. Det er mer praktisk å koble til USB -kabel på den måten.

Jeg fant en gammel 3,5 HDD som en base for tastaturet, den er ganske tung og forhindrer at formen glir over skrivebordet når du bruker den (antiskliunderlag hjelper også). Den har også praktiske 3 mm skruehull der jeg skrudde messingavstand og festet brettet i liten vinkel.

Trinn 3: Programmering

Koden er skrevet med Arduino IDE. Du må installere 2 biblioteker:

  • Encoder av Paul Stoffregen
  • Tastatur av Arduino

For å kompilere for Atmega32U4 må du også installere Arduino Pro Micro -kortfil, Sparkfun har flott opplæring i hvordan du gjør det.

En ting å merke seg på forhånd er å være forsiktig så du ikke lar "tastene trykkes" i koden din. Dette skjedde med meg, og MCU spammet hele tiden noen tastetrykkkombinasjoner. Den eneste måten jeg er klar over hvordan jeg fikser dette er å brenne oppstartslaster på nytt til MCU. Hvis du vil ende opp som meg, kan du følge denne guiden for å brenne oppstartslaster, du trenger et annet arduino-kort for å bruke som programmerer.

I hovedløyfen leser MCU først hver trykknappstatus, hvis tilstandsendring fra LOW til HIGH oppdages, utføres funksjon keyboard_shortcut (i). Variabel i er en id for den trykte knappen, totalt trykknappnummer er definert av ALL_BUTTONS (i mitt tilfelle 15). Når den er utført, sender tastatur_shortcut (i) CTRL+SKIFT og deretter en bokstav som er tilordnet knapp ID: 1-> A, 2-> B, 3-> C etc. Noen kombinasjoner som CTRL+SKIFT+N utelates fordi det er allerede brukt i Windows10 som standard (i dette tilfellet for å opprette en ny mappe). Her er listen over alle standard Windows -snarveier. Etter kort forsinkelse sender MCU signal om å slippe alle taster og funksjoner går tilbake til hovedsløyfen.

Etter at alle knappene er sjekket, kontrollerer MCU om rotasjonskoderposisjonen er endret, og hvis den gjør det, kjøres tastatur_shortcut (i) med unik ID.

Encoder -knappetrykk inverterer encoderButtonFlag boolsk variabel. Når encoder roteres, sendes en annen snarvei til PC, avhengig av rotasjonsretning og encoderButtonFlag -verdi.

Hvis debugFlag satt til 1 feilsøkingsmeldinger sendes via UART til seriell skjerm.

Trinn 4: Konfigurere snarveier

Konfigurere snarveier
Konfigurere snarveier
Konfigurere snarveier
Konfigurere snarveier

Hva hver snarvei gjør er også opp til deg, vi har alle forskjellige preferanser. Jeg vil gi hvilke snarveier jeg konfigurerte for meg selv som et eksempel. Jeg bruker Linux Mint 19.3 med xfce4 desktop manager, så eksemplene mine involverer hovedsakelig bash -skript, men jeg vil også vise noen grunnleggende eksempler for Windows10.

På det første bildet kan du se hvilke skript jeg kartla til hvilke snarveier. Det er gjort fra xfce -innstillingsmenyen, prosessen for dette er rett frem. Du finner disse skriptene i GitHub -depotet mitt

Mindre 6 trykknapper i bunnen er for å starte applikasjoner som nettleser eller filbehandling, noen av disse programmene kalles fra start_only_one_app.sh -skriptet, som får alle startede applikasjonsnavn og søk etter applikasjon du vil starte. Hvis applikasjonsvinduet allerede eksisterer, blir det fokusert, ellers starter en ny forekomst av et program.

Andre skript:

  • 2nd_display_control.sh - slår den andre skjermen PÅ/AV.
  • moon_lamp.sh - slår Moon Lampen PÅ/AV.
  • pc_load.sh - lager varslingsboble med gjeldende CPU- og GPU -bruk og temperaturer.
  • shutdown.sh - initialiserer PC -avstengning med 1 minutts forsinkelse og oppretter varselboble der gjenværende tid vises.
  • spec_vpn.sh - kobles til en spesifikk OpenVPN -server, eller hvis tilkoblingen allerede eksisterer, kobles den fra serveren.
  • shortcut_controll.sh - tar kommando (pluss, minus, fane, lukk) som argument, oppdager hvilket vindu som nå er fokusert, og hvis bestemt applikasjon blir funnet, utfører kontrollhandling. For eksempel for å åpne ny fane i sublim tekstredigerings standard snarvei er "CTRL+N" og i xfce terminal - "CTRL+T", så dette skriptet lar deg åpne ny fane i sublim og terminal med samme trykknapp.

Den første funksjonen til den roterende koderen er å kontrollere volumet, den andre funksjonen er å kontrollere aktiv vinduszoom via shortcut_controll.sh.

For Windows OS kan du kartlegge snarveier til programmer via vinduet for programegenskaper som vist på det andre bildet. For alt annet vil du bruke AutoHotkey. Det er automatiseringsskriptspråk for Windows.

Noen enkle eksempler på AHK -syntaks:

;Volumkontroll

^+t:: Send {Volume_Up}

komme tilbake

^+v:: Send {Volume_Down}

komme tilbake

; Lukk aktivt vindu

^+h:: WinGetTitle, tittel, A

PostMessage, 0x112, 0xF060,,, %Title %

komme tilbake

; Slå av PC

^+b:: Kjør nedleggelse /s

Trinn 5: Forbedringer

Forbedringer
Forbedringer

Noen mulige forbedringer:

  • Trykknapper av bedre kvalitet.
  • Prototype PCB bøyer ganske mye når du trykker på knapper.
  • RGB -belysning for å endre farge avhengig av hvilken funksjon roterende encoder er satt til.
  • Flere knapper (bruk IO expander IC).
  • Bedre roterende encoder (eller bedre debouncing -løsning).

Anbefalt: