Sadržaj:

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

Video: Programabilna tastatura: 5 koraka (sa slikama)

Video: Programabilna tastatura: 5 koraka (sa slikama)
Video: A4-V5M (opis - review) 2024, Juli
Anonim
Programabilna tastatura
Programabilna tastatura
Programabilna tastatura
Programabilna tastatura

U ovom projektu ću pokazati kako napraviti relativno jednostavnu i jeftinu programabilnu tastaturu za mapiranje vaših najčešće korištenih prečica na tastaturi, aplikacija i još mnogo toga.

Ova tastatura je otkrivena kao tastatura u svim većim operativnim sistemima, nisu potrebni dodatni upravljački programi.

Supplies

  • Rotacijski davač.
  • Mnogo (zavisno od vaših potreba) dugmadi.
  • Arduino Pro Micro, Arduino Leonardo ili bilo koja druga razvojna ploča sa Atmega32U4 MCU.
  • Žica, lemljenje, lemilica itd.
  • (Opcionalno) Neka teška osnova za sprečavanje klizanja tastature, koristim stari 3.5 "HDD

Korak 1: Električno kolo

Električno kolo
Električno kolo

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

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

  1. Svi pinovi koji podržavaju digitalno čitanje imaju unutrašnje povlačenje koje omogućava ublažavanje vanjskih otpornika za povlačenje. Naravno, kôd treba ažurirati u skladu s tim, jer očekuje da stanje pina pređe s niskog na visoko kada se pritisnu tipke.
  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 neće dati najbolje rezultate za vas. Zato je potrebno malo eksperimentiranja. Ili se prebacite na nešto poput optičkog kodera, ali njegova cijena je znatno veća.

Korak 2: Montaža

Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža

Htio sam učiniti tipkovnicu što čistijom, pa sam lemio sve komponente na stražnjoj strani prototipne ploče. Pretpostavio sam da bi tastatura 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-inčni HDD koji se koristi kao osnova za tastaturu, prilično je težak i sprječava klizanje oblika ploče po stolu tokom rada (pomažu i protuklizne podloge). Također ima prikladne rupe za vijke od 3 mm u koje sam ušrafio mesingane nosače i učvrsti ploču pod blagim kutom.

Korak 3: Programiranje

Kôd je napisan sa Arduino IDE -om. Morat ćete instalirati 2 biblioteke:

  • Enkoder Paul Stoffregen
  • Arduino tastatura

Za kompajliranje za Atmega32U4 također morate instalirati Arduino Pro datoteku mikro ploče, 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 nekoj kombinaciji tastera. Jedini način na koji sam svjestan kako to popraviti je da ponovo narežem 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 tipke, ako se otkrije promjena stanja s LOW na HIGH, izvršava se funkcija keyboard_shortcut (i). Varijabla i je ID pritisnutog dugmeta, ukupan broj tastera je definisan 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 dugmeta: 1-> A, 2-> B, 3-> C itd. Neke kombinacije poput CTRL+SHIFT+N su izostavljene jer je već se standardno koristi u sustavu Windows10 (u ovom slučaju za stvaranje nove mape). Ovdje je popis svih zadanih prečaca za Windows. Nakon kratkog kašnjenja 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, različite prečice se šalju na PC, ovisno o smjeru rotacije i vrijednosti encoderButtonFlag.

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

Korak 4: Konfiguriranje prečica

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

Na vama je da učinite svaku prečicu, svi imamo različite preferencije. Kao primjer ću navesti prečice koje sam sebi konfigurirao. Koristim Linux Mint 19.3 sa xfce4 desktop menadžerom, 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čice. To se radi iz menija postavki xfce, proces za to je jednostavan. Ove skripte možete pronaći u mom GitHub spremištu

Manje 6 tipki na dnu služi za pokretanje aplikacija poput web preglednika ili upravitelja datoteka, neke od ovih aplikacija se pozivaju iz skripte start_only_one_app.sh, koja preuzima imena svih pokrenutih aplikacija i traži aplikacije koje ž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 lampu.
  • pc_load.sh - stvara oblačić s obavijestima o trenutnoj upotrebi CPU -a i GPU -a te temperaturama.
  • shutdown.sh - pokreće isključivanje računara sa kašnjenjem od 1 minute i stvara oblačić sa obaveštenjima u kome se prikazuje preostalo vreme.
  • spec_vpn.sh - povezuje se sa određenim OpenVPN serverom ili ako veza već postoji, prekida vezu sa serverom.
  • shortcut_controll.sh - uzima naredbu (plus, minus, tab, zatvori) kao argument, otkriva 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", tako da ova skripta omogućava otvaranje nove kartice u uzvišenom i terminalu istim pritiskom na gumb.

Prva funkcija rotacijskog kodera je kontrola jačine zvuka, druga funkcija je kontrola aktivnog zuma prozora putem shortcut_controll.sh.

Za Windows OS možete preslikati prečice do aplikacija kroz prozor 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 jačine 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 tipki.
  • RGB osvjetljenje za promjenu boje ovisno o tome koja je funkcija rotacijskog kodera postavljena.
  • Više dugmadi (koristite IC proširivača IO).
  • Bolji rotacijski koder (ili bolje rješenje za otklanjanje poteškoća).

Preporučuje se: