Sadržaj:

Programabilna tipkovnica: 5 koraka (sa slikama)
Programabilna tipkovnica: 5 koraka (sa slikama)

Video: Programabilna tipkovnica: 5 koraka (sa slikama)

Video: Programabilna tipkovnica: 5 koraka (sa slikama)
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Prosinac
Anonim
Programabilna tipkovnica
Programabilna tipkovnica
Programabilna tipkovnica
Programabilna tipkovnica

U ovom projektu pokazat ću kako napraviti relativno jednostavnu i jeftinu programabilnu tipkovnicu za mapiranje vaših najčešće korištenih prečaca na tipkovnici, aplikacija i još mnogo toga.

Ova tipkovnica je otkrivena kao tipkovnica u svim glavnim operativnim sustavima, nisu potrebni dodatni upravljački programi.

Pribor

  • Rotacijski davač.
  • Mnogo (ovisno o vašim potrebama) tipki.
  • Arduino Pro Micro, Arduino Leonardo ili bilo koja druga razvojna ploča s Atmega32U4 MCU.
  • Žica, lemljenje, lemilica itd.
  • (Izborno) Neka jaka baza za sprečavanje klizanja tipkovnice, koristim stari 3,5 "HDD

Korak 1: Električni krug

Strujni krug
Strujni krug

Odlučio sam se za Arduino Pro Micro dev ploču s Atmega32U4 MCU -om koja ima 18 upotrebljivih digitalnih pinova.

Igle za povezivanje gumba i rotacijskog davača odabrane su bez posebnog na umu, ali valja napomenuti neke stvari:

  1. Svi pinovi koji podržavaju digitalno čitanje imaju unutarnja povlačenja koja omogućuju umanjivanje vanjskih pull-down otpornika. Naravno, kôd bi trebao biti ažuriran u skladu s tim, jer očekuje da stanje pina pređe s niskog na visoko kad se pritisnu gumbi.
  2. U primjeru biblioteke encoder.h primijećeno je da se najbolje performanse kodera postižu kada oba pina spojena na MCU prekinu sposobne pinove. Većina analognih pinova Atmega32U4 nema mogućnost prekida.
  3. Točne vrijednosti otpornika za povlačenje nisu bitne, sve od 1 kΩ do 100 kΩ će dobro funkcionirati. Veće vrijednosti otpora omogućuju manje rasipanje snage, ali rezultiraju sporijom reakcijom pina na promjene napona. Samo odaberite otpornike koje vrijednosti imate najviše.
  4. Mehanički enkoderi nisu najpouzdanije stvari zbog trošenja kontakata i poskakivanja. Zato je potrebno dobro rješenje za odbacivanje. Moje odabrane vrijednosti kondenzatora i vrijeme kašnjenja u kodu vjerojatno vam neće dati najbolje rezultate. Stoga je potrebno malo eksperimentiranja. Ili prijeđite na nešto poput optičkog kodera, ali njegova je cijena znatno veća.

Korak 2: Montaža

Skupština
Skupština
Skupština
Skupština
Skupština
Skupština
Skupština
Skupština

Htio sam učiniti tipkovnicu što čistijom, pa sam lemio sve komponente na stražnjoj strani prototipne ploče. Pretpostavio sam da bi tipkovnica bila ergonomskija ako bi se koristila podignuta pod malim kutom. Zato sam lemio Arduino Pro Micro na zasebnu ploču i sve digitalne pinove spojio žicom na gumbe. Na taj način je prikladnije spojiti USB kabel.

Našao sam stari 3.5 HDD koji se koristi kao osnova za tipkovnicu, prilično je težak i sprječava klizanje oblika ploče po stolu tijekom rada (pomažu i protuklizni jastučići). Također ima prikladne rupe za vijke od 3 mm u koje sam ušrafio mesingane nosače i učvrstili ploču pod malim kutom.

Korak 3: Programiranje

Kôd je napisan s Arduino IDE -om. Morat ćete instalirati 2 knjižnice:

  • Kodirač Paul Stoffregen
  • Arduino tipkovnica

Za kompajliranje za Atmega32U4 također morate instalirati datoteku ploče Arduino Pro Micro, Sparkfun ima odličan vodič kako to učiniti.

Jedna stvar koju morate unaprijed napomenuti je da pazite da u svom kodu ne ostavite "pritisnute tipke". To se dogodilo meni i MCU je stalno slao neželjenu poštu u neku kombinaciju tipki. Jedini način na koji sam svjestan kako to popraviti je ponovno snimiti boot-loader na MCU. Ako ćete završiti poput mene, možete slijediti ovaj vodič za snimanje pokretačkog programa, trebat će vam druga arduino ploča koju ćete koristiti kao programer.

U glavnoj petlji MCU prvo čita svako stanje gumba, ako se otkrije promjena stanja s LOW na HIGH, izvršava se funkcija keyboard_shortcut (i). Varijabla i je ID pritisnutog gumba, ukupni broj tipki definiran je ALL_BUTTONS (u mom slučaju 15). Kada se izvrši, keyboard_shortcut (i) šalje CTRL+SHIFT, a zatim slovo koje je preslikano na ID gumba: 1-> A, 2-> B, 3-> C itd. Neke kombinacije poput CTRL+SHIFT+N izostavljene su jer je već se zadano koristi u sustavu Windows10 (u ovom slučaju za stvaranje nove mape). Ovdje je popis svih zadanih prečaca za Windows. Nakon kratkog odgode MCU šalje signal za otpuštanje svih tipki i funkcija izlazi natrag u glavnu petlju.

Nakon što se provjere svi gumbi, MCU provjerava je li se položaj rotacijskog davača promijenio i ako se to mijenja, keyboard_shortcut (i) se izvodi s jedinstvenim ID -om.

Pritiskom gumba kodera obrnuta je logička varijabla encoderButtonFlag. Kada se koder rotira, na PC se šalju različiti prečaci, ovisno o smjeru rotacije i vrijednosti encoderButtonFlag.

Ako je debugFlag postavljen na 1, poruke za otklanjanje pogrešaka se šalju putem UART -a na serijski monitor.

Korak 4: Konfiguriranje prečaca

Konfiguriranje prečaca
Konfiguriranje prečaca
Konfiguriranje prečaca
Konfiguriranje prečaca

Ono što svaki prečac radi ovisi i o vama, svi imamo različite preferencije. Kao primjer ću navesti prečace koje sam sebi konfigurirao. Koristim Linux Mint 19.3 s upraviteljem radne površine xfce4, pa moji primjeri uglavnom uključuju bash skripte, ali pokazat ću i neke osnovne primjere za Windows10.

Na prvoj slici možete vidjeti koje sam skripte preslikao na koje prečace. To je učinjeno iz izbornika postavki xfce, postupak za to je naprijed. Ove skripte možete pronaći u mojem spremištu GitHub

Manji 6 gumbi na dnu služe za pokretanje aplikacija kao što su web preglednik ili upravitelj datoteka, neke od tih aplikacija pozivaju se iz skripte start_only_one_app.sh, koja dobiva imena svih pokrenutih aplikacija i traži aplikaciju koju želite pokrenuti. Ako prozor aplikacije već postoji, fokusira se, inače se pokreće nova instanca aplikacije.

Ostale skripte:

  • 2nd_display_control.sh - uključuje/isključuje drugi monitor.
  • moon_lamp.sh - uključuje/isključuje moju mjesečevu svjetiljku.
  • pc_load.sh - stvara oblačić obavijesti s trenutnom upotrebom CPU -a i GPU -a te temperaturama.
  • shutdown.sh - pokreće isključivanje računala s kašnjenjem od 1 minute i stvara oblačić s obavijestima u kojem se prikazuje preostalo vrijeme.
  • spec_vpn.sh - povezuje se s određenim OpenVPN poslužiteljem ili, ako veza već postoji, prekida vezu s poslužiteljem.
  • shortcut_controll.sh - uzima naredbu (plus, minus, tab, close) kao argument, detektira koji je prozor sada fokusiran i ako je određena aplikacija aktivna, izvršava kontrolnu radnju. Na primjer, za otvaranje nove kartice u uzvišenom uređivaču teksta zadana prečica je "CTRL+N", a u terminalu xfce - "CTRL+T", pa ova skripta omogućuje otvaranje nove kartice u uzvišenom i terminalu istim pritiskom na gumb.

Prva funkcija rotacijskog davača je kontrola glasnoće, druga funkcija je upravljanje aktivnim zumiranjem prozora putem shortcut_controll.sh.

Za Windows OS možete preslikati prečace do aplikacija putem prozora svojstava programa kao što je prikazano na drugoj slici. Za sve ostalo poželjet ćete koristiti AutoHotkey. To je skriptni jezik za automatizaciju za Windows.

Nekoliko jednostavnih primjera AHK sintakse:

;Kontrola zvuka

^+t:: Pošalji {Volume_Up}

povratak

^+v:: Pošalji {Volume_Down}

povratak

; Zatvorite aktivni prozor

^+h:: WinGetTitle, Naslov, A

PostMessage, 0x112, 0xF060,,, %Naslov %

povratak

; PC za isključivanje

^+b:: Pokreni shutdown /s

Korak 5: Poboljšanja

Poboljšanja
Poboljšanja

Neka moguća poboljšanja:

  • Gumbi bolje kvalitete.
  • Prototip PCB -a prilično se savija pri pritisku gumba.
  • RGB osvjetljenje za promjenu boje ovisno o tome koja je funkcija rotacijskog kodera postavljena.
  • Više gumba (koristite IC proširivač IO).
  • Bolji rotacijski koder (ili bolje rješenje za otklanjanje poteškoća).

Preporučeni: