Obsah:

Programovateľná klávesnica: 5 krokov (s obrázkami)
Programovateľná klávesnica: 5 krokov (s obrázkami)

Video: Programovateľná klávesnica: 5 krokov (s obrázkami)

Video: Programovateľná klávesnica: 5 krokov (s obrázkami)
Video: How to learn any language in six months | Chris Lonsdale | TEDxLingnanUniversity 2024, Júl
Anonim
Programovateľná klávesnica
Programovateľná klávesnica
Programovateľná klávesnica
Programovateľná klávesnica

V tomto projekte ukážem, ako vytvoriť relatívne jednoduchú a lacnú programovateľnú klávesnicu na mapovanie vašich najpoužívanejších klávesových skratiek, aplikácií a ďalších.

Táto klávesnica je rozpoznaná ako klávesnica vo všetkých hlavných OS, nie sú potrebné žiadne ďalšie ovládače.

Zásoby

  • Rotačný kodér.
  • Veľa (podľa vašich potrieb) tlačidiel.
  • Doska Arduino Pro Micro, Arduino Leonardo alebo akákoľvek iná vývojová doska s MCU Atmega32U4.
  • Drôt, spájka, spájkovačka atď.
  • (Voliteľné) Používam starý 3,5 -palcový pevný disk, aby sa zabránilo kĺzaniu klávesnice

Krok 1: Elektrický obvod

Elektrický obvod
Elektrický obvod

Rozhodol som sa použiť dosku Arduino Pro Micro dev s Atmega32U4 MCU, ktorá má 18 použiteľných digitálnych pinov.

Piny na pripojenie tlačidiel a rotačného snímača boli zvolené bez ohľadu na konkrétne poradie, treba však poznamenať niektoré veci:

  1. Všetky kolíky s podporou digitálneho čítania majú interné výsuvy, ktoré umožňujú zmierniť vonkajšie sťahovacie odpory. Kód by sa mal samozrejme aktualizovať, pretože očakáva, že stav kolíka sa pri stlačení tlačidiel zmení z nízkych na vysoké.
  2. V príklade knižnice encoder.h je uvedené, že najlepšieho výkonu kodéra sa dosiahne, keď oba piny pripojené k MCU prerušia piny. Väčšina analógových pinov Atmega32U4 nemá schopnosť prerušenia.
  3. Na presných hodnotách sťahovacieho odporu veľmi nezáleží, čokoľvek od 1 kΩ do 100 kΩ bude fungovať dobre. Väčšie hodnoty odporu umožňujú menší rozptyl energie, ale majú za následok pomalšiu odozvu kolíka na zmeny napätia. Vyberte si akékoľvek hodnotné odpory, ktoré máte najviac.
  4. Mechanické snímače nie sú najspoľahlivejšie z dôvodu opotrebovania kontaktov a odskakovania. Preto je potrebné dobré riešenie na odstránenie debouningu. Moje zvolené hodnoty kondenzátora a časy oneskorenia v kóde vám pravdepodobne neposkytnú najlepšie výsledky. Je teda potrebné trocha experimentovania. Alebo prepnite na niečo ako optický kodér, ale jeho cena je výrazne vyššia.

Krok 2: Zostavenie

zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie

Chcel som, aby klávesnica vyzerala čo najčistejšie, a tak som spájkoval všetky komponenty na zadnú stranu prototypovej dosky. Myslel som, že klávesnica by bola ergonomickejšia, keby sa používala pod malým uhlom. Preto som spájkoval Arduino Pro Micro na samostatnú dosku a všetky digitálne piny som prepojil tlačidlami na drôt. Je pohodlnejšie pripojiť kábel USB týmto spôsobom.

Našiel som starý 3,5 pevný disk, ktorý je možné použiť ako základňu pre klávesnicu, pretože je dosť ťažký a bráni kĺzaniu dosky po stole pri prevádzke (pomáhajú aj protišmykové podložky). Má tiež praktické otvory pre skrutky s priemerom 3 mm, do ktorých som zaskrutkoval mosadzné podpery a upevnila dosku pod miernym uhlom.

Krok 3: Programovanie

Kód je napísaný pomocou Arduino IDE. Budete musieť nainštalovať 2 knižnice:

  • Kodér Paul Stoffregen
  • Klávesnica od Arduina

Na kompiláciu pre Atmega32U4 musíte tiež nainštalovať súbor dosky Arduino Pro Micro, Sparkfun má skvelý návod, ako to urobiť.

Vopred si treba uvedomiť jednu vec - dávať pozor, aby ste vo svojom kóde nenechali „stlačené klávesy“. To sa mi stalo a MCU neustále spamovalo niektoré kombinácie klávesov. Jediný spôsob, ako to môžem vyriešiť, je znova napáliť zavádzač na MCU. Ak skončíte ako ja, pri napaľovaní boot-loaderu môžete postupovať podľa tohto sprievodcu, na použitie ako programátora budete potrebovať ďalšiu dosku arduino.

V hlavnej slučke MCU najskôr prečíta každý stav tlačidla, ak je detekovaná zmena stavu z LOW na HIGH, vykoná sa funkcia keyboard_shortcut (i). Premenná i je ID stlačeného tlačidla, celkový počet tlačidiel je definovaný ALL_BUTTONS (v mojom prípade 15). Po spustení klávesová skratka (i) odošle CTRL+SHIFT a potom písmeno, ktoré je priradené k tlačidlu id: 1-> A, 2-> B, 3-> C atď. Niektoré kombinácie ako CTRL+SHIFT+N sú vynechané, pretože už sa predvolene používa v systéme Windows 10 (v tomto prípade na vytvorenie nového priečinka). Tu je zoznam všetkých predvolených skratiek systému Windows. Po krátkom oneskorení MCU pošle signál, aby uvoľnil všetky klávesy a funkcia sa vráti späť do hlavnej slučky.

Potom, čo sú začiarknuté všetky tlačidlá, MCU skontroluje, či sa zmenila poloha rotačného snímača, a ak áno, vykoná sa klávesová skratka (i) s jedinečným ID.

Stlačenie tlačidla kodéra invertuje boolovskú premennú encoderButtonFlag. Pri otáčaní kodéra sa do počítača odošle iná skratka v závislosti od smeru otáčania a hodnoty encoderButtonFlag.

Ak je debugFlag nastavený na 1, správy o ladení sa budú odosielať prostredníctvom UART na sériový monitor.

Krok 4: Konfigurácia skratiek

Konfigurácia skratiek
Konfigurácia skratiek
Konfigurácia skratiek
Konfigurácia skratiek

Čo robí každá skratka, záleží aj na vás, všetci máme iné preferencie. Ako príklad uvediem, aké skratky som pre seba nakonfiguroval. Používam Linux Mint 19.3 s desktopovým správcom xfce4, takže moje príklady zahŕňajú predovšetkým bash skripty, ale ukážem aj niekoľko základných príkladov pre Windows10.

Na prvom obrázku vidíte, ktoré skripty som mapoval do ktorých skratiek. Vykonáva sa to v ponuke nastavení xfce. Proces je jednoduchý. Tieto skripty nájdete v mojom úložisku GitHub

Menšie 6 tlačidiel v spodnej časti je na spustenie aplikácií, ako je webový prehliadač alebo správca súborov, niektoré z týchto aplikácií sa volajú zo skriptu start_only_one_app.sh, ktorý zobrazí názvy všetkých spustených aplikácií a vyhľadá aplikáciu, ktorú chcete spustiť. Ak okno aplikácie už existuje, zaostrí sa, inak sa spustí nová inštancia aplikácie.

Ďalšie skripty:

  • 2nd_display_control.sh - zapína/vypína druhý monitor.
  • moon_lamp.sh - zapína/vypína moju lampu Moon.
  • pc_load.sh - vytvára oznamovaciu bublinu s aktuálnym využitím a teplotami CPU a GPU.
  • shutdown.sh - inicializuje vypnutie počítača s oneskorením 1 minúty a vytvorí oznamovaciu bublinu, v ktorej sa zobrazuje zostávajúci čas.
  • spec_vpn.sh - pripojí sa ku konkrétnemu serveru OpenVPN alebo ak pripojenie už existuje, odpojí sa od servera.
  • shortcut_controll.sh - vezme príkaz (plus, mínus, karta, zatvorenie) ako argument, zistí, na ktoré okno je teraz zaostrené a ak je konkrétna aplikácia nájdená aktívna, vykoná kontrolnú akciu. Napríklad na otvorenie novej karty vo vznešenom textovom editore je predvolená skratka „CTRL+N“a v termináli xfce - „CTRL+T“, takže tento skript umožňuje otvoriť novú kartu vo vznešenom a koncovom zariadení rovnakým tlačidlom.

Prvá funkcia rotačného enkodéra je ovládanie hlasitosti, druhá funkcia je ovládanie aktívneho priblíženia okna pomocou shortcut_controll.sh.

V prípade operačného systému Windows môžete skratky k aplikáciám mapovať pomocou okna vlastností programu, ako je to znázornené na druhom obrázku. Na čokoľvek iné budete chcieť použiť AutoHotkey. Je to skriptovací jazyk automatizácie pre Windows.

Niekoľko jednoduchých príkladov syntaxe AHK:

;Nastavenie hlasitosti

^+t:: Odoslať {Volume_Up}

vrátiť sa

^+v:: Odoslať {Volume_Down}

vrátiť sa

; Zatvorte aktívne okno

^+h:: WinGetTitle, názov, A

PostMessage, 0x112, 0xF060,,, %Názov %

vrátiť sa

; Vypnite počítač

^+b:: Spustiť vypnutie /s

Krok 5: Vylepšenia

Vylepšenia
Vylepšenia

Niektoré možné vylepšenia:

  • Kvalitnejšie tlačidlá.
  • Prototyp DPS sa pri stlačení tlačidiel dosť ohýba.
  • RGB osvetlenie na zmenu farby v závislosti od toho, na akú funkciu je nastavený rotačný snímač.
  • Viac tlačidiel (použite IO expandér IC).
  • Lepší rotačný kodér (alebo lepšie riešenie na odstraňovanie odrazov).

Odporúča: