Cuprins:
- Provizii
- Pasul 1: Circuit electric
- Pasul 2: Asamblare
- Pasul 3: Programare
- Pasul 4: Configurarea comenzilor rapide
- Pasul 5: Îmbunătățiri
Video: Tastatură programabilă: 5 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
În acest proiect voi arăta cum să realizez o tastatură programabilă relativ simplă și ieftină pentru cartografierea celor mai utilizate comenzi rapide de la tastatură, aplicații și multe altele.
Această tastatură este detectată ca tastatură în toate sistemele de operare majore, nu este nevoie de drivere suplimentare.
Provizii
- Rotativ.
- O mulțime de butoane (depinde de nevoile dvs.).
- Arduino Pro Micro, Arduino Leonardo sau orice altă placă dev cu MCU Atmega32U4.
- Sârmă, lipit, lipit etc.
- (Opțional) O bază grea pentru a împiedica alunecarea tastaturii, folosesc un hard disk vechi de 3,5"
Pasul 1: Circuit electric
Am ales să folosesc placa de dezvoltare Arduino Pro Micro cu Atmega32U4 MCU care are 18 pini digitali utilizabili.
Pinii pentru conectarea butoanelor și a codificatorului rotativ au fost selectați fără a avea în vedere o anumită ordine, dar unele lucruri ar trebui menționate:
- Toți pinii cu capacitate de citire digitală au extrageri interne care permit atenuarea rezistențelor extragere externe. Desigur, codul ar trebui să fie actualizat în consecință, deoarece se așteaptă ca starea pinului să treacă de la scăzut la înalt când sunt apăsate butoanele.
- În exemplul bibliotecii encoder.h, s-a observat că cea mai bună performanță a codificatorului este atinsă atunci când ambii pini conectați la MCU întrerup pinii capabili. Majoritatea pinilor analogici ai Atmega32U4 nu au capacitate de întrerupere.
- Valorile exacte ale rezistenței de tragere nu contează prea mult, orice de la 1 kΩ la 100 kΩ va funcționa bine. Valorile de rezistență mai mari permit o disipare mai mică a puterii, dar rezultă un răspuns mai lent al pinului la schimbările de tensiune. Alegeți orice rezistență de valoare aveți cel mai mult.
- Codificatoarele mecanice nu sunt cele mai fiabile lucruri din cauza uzurii de contact și a respingerii. De aceea este nevoie de o soluție bună de dezbatere. Valorile condensatorului ales de mine și timpii de întârziere în cod probabil nu vă vor oferi cele mai bune rezultate. Deci este nevoie de un pic de experimentare. Sau treceți la ceva de genul codificatorului optic, dar prețul său este semnificativ mai mare.
Pasul 2: Asamblare
Am vrut să fac tastatura cât mai curată posibil, așa că am lipit toate componentele de pe spatele plăcii prototip. M-am gândit că tastatura ar fi mai ergonomică dacă ar fi folosită ridicată la unghi mic. De aceea am lipit Arduino Pro Micro pe o placă separată și am conectat toți pinii digitali cu fir pentru a apăsa butoanele. Este mai convenabil să conectați cablul USB în acest fel.
Am găsit un HDD vechi de 3,5 de utilizat ca bază pentru tastatură, este destul de greu și împiedică alunecarea formei plăcii pe birou atunci când funcționează (tampoanele antiderapante ajută și ele). a fixat placa la un unghi ușor.
Pasul 3: Programare
Codul este scris cu Arduino IDE. Va trebui să instalați 2 biblioteci:
- Codificator de Paul Stoffregen
- Tastatură de Arduino
Pentru a compila pentru Atmega32U4, trebuie să instalați și fișierul de placă Arduino Pro Micro, Sparkfun are un tutorial excelent despre cum să faceți acest lucru.
Un lucru de remarcat în avans este să aveți grijă să nu lăsați „tastele apăsate” în cod. Mi s-a întâmplat acest lucru și MCU spammează în mod constant o combinație de apăsare a tastelor. Singurul mod în care știu cum să remediez acest lucru este să re-ardeți încărcătorul de încărcare pe MCU. Dacă veți ajunge ca mine, puteți urma acest ghid pentru a arde boot-loader, veți avea nevoie de o altă placă arduino pentru a o folosi ca programator.
În bucla principală MCU citește mai întâi fiecare stare a butonului, dacă se detectează schimbarea stării de la LOW la HIGH, funcția keyboard_shortcut (i) este executată. Variabila i este un ID al butonului apăsat, numărul total al butonului este definit de ALL_BUTTONS (în cazul meu 15). Când este executat, keyboard_shortcut (i) trimite CTRL + SHIFT și apoi o literă care este mapată la butonul id: 1-> A, 2-> B, 3-> C etc. Unele combinații precum CTRL + SHIFT + N sunt omise deoarece este deja utilizat în Windows10 în mod implicit (în acest caz pentru a crea un folder nou). Iată lista tuturor comenzilor rapide Windows implicite. După o scurtă întârziere, MCU trimite semnal pentru a elibera toate tastele și funcția iese din nou în bucla principală.
După ce toate butoanele sunt verificate, MCU verifică dacă s-a schimbat poziția codificatorului rotativ și dacă se modifică, keyboard_shortcut (i) este executat cu un id unic.
Apăsați pe butonul codificatorului inversează variabila booleană encoderButtonFlag. Când codorul este rotit, o scurtătură diferită este trimisă către PC, în funcție de direcția de rotație și de valoarea codificatorului ButonFlag.
Dacă debugFlag setat la 1, mesajele de depanare sunt trimise prin UART către monitorul serial.
Pasul 4: Configurarea comenzilor rapide
Ceea ce face fiecare comandă rapidă este și tu, toate avem preferințe diferite. Voi furniza ce comenzi rapide am configurat pentru mine ca exemplu. Folosesc Linux Mint 19.3 cu xfce4 desktop manager, deci exemplele mele implică în principal scripturi bash, dar voi arăta și câteva exemple de bază pentru Windows10.
În prima imagine puteți vedea ce scripturi am mapat la ce comenzi rapide. Se face din meniul de setări xfce, procesul pentru aceasta este direct. Puteți găsi aceste scripturi în depozitul meu GitHub
Cele 6 butoane mai mici din partea de jos sunt pentru pornirea aplicațiilor precum browserul web sau managerul de fișiere, unele dintre aceste aplicații sunt apelate din scriptul start_only_one_app.sh, care obține toate numele aplicațiilor pornite și caută aplicația pe care doriți să o porniți. Dacă fereastra aplicației există deja, aceasta se concentrează, altfel se începe o nouă instanță a unei aplicații.
Alte scripturi:
- 2nd_display_control.sh - pornește / oprește al doilea monitor.
- moon_lamp.sh - pornește / oprește lampa Moon.
- pc_load.sh - creează bule de notificare cu utilizarea și temperaturile curente ale procesorului și GPU-ului.
- shutdown.sh - inițializează oprirea PC-ului cu o întârziere de 1 minut și creează bule de notificare în care este afișat timpul rămas.
- spec_vpn.sh - se conectează la un server OpenVPN specific sau dacă conexiunea există deja, se deconectează de la server.
- shortcut_controll.sh - preia comanda (plus, minus, tab, închidere) ca argument, detectează ce fereastră este acum focalizată și dacă aplicația specifică este găsită activă execută acțiunea de control. De exemplu, pentru a deschide o filă nouă în comanda rapidă implicită a editorului de text sublim este „CTRL + N” și în terminalul xfce - „CTRL + T”, deci acest script vă permite să deschideți filă nouă în sublim și terminal cu același buton.
Prima funcție a codificatorului rotativ este de a controla volumul, a doua funcție este de a controla zoomul activ al ferestrei prin shortcut_controll.sh.
Pentru sistemul de operare Windows puteți asocia comenzi rapide către aplicații prin fereastra de proprietăți a programului, așa cum se arată în imaginea a doua. Pentru orice altceva veți dori să utilizați AutoHotkey. Este un limbaj de scripturi de automatizare pentru Windows.
Câteva exemple simple de sintaxă AHK:
;Controlul volumului
^ + t:: Trimiteți {Volume_Up}
întoarcere
^ + v:: Trimiteți {Volume_Down}
întoarcere
; Închide fereastra activă
^ + h:: WinGetTitle, Titlu, A
PostMessage, 0x112, 0xF060,,,% Title%
întoarcere
;Stinge calculatorul
^ + b:: Executați oprire / s
Pasul 5: Îmbunătățiri
Câteva îmbunătățiri posibile:
- Butoane de calitate mai bună.
- Prototipul PCB se flexează destul de mult atunci când butoanele sunt apăsate.
- Iluminarea RGB pentru a schimba culoarea în funcție de funcția codificatorului rotativ setat.
- Mai multe butoane (utilizați IO expansor IC).
- Un codificator rotativ mai bun (sau o soluție de descompunere mai bună).
Recomandat:
Lumină de dovleac programabilă: 25 de pași (cu imagini)
Lumină de dovleac programabilă: Această instrucțiune este destinată realizării unei lămpi de dovleac programabile cu un microcontroler ATTiny. Acesta a fost conceput ca o demonstrație de învățare pentru a introduce pe oricine (vârsta de peste 8 ani) în electronică și programarea microcontrolerelor folosind Arduino IDE. Leaning Objec
Hoodie programabilă Stranger Things: 9 pași (cu imagini)
Hoodie programabilă Stranger Things: s-ar putea să nu trebuiască niciodată să petreceți timpul într-o lume de coșmaruri a monștrilor, dar uneori doriți doar să purtați o cămașă care să spună că AȚI putea trăi în totalitate dacă doriți. Deoarece o astfel de cămașă nu există pe piața liberă, am decis să ne facem o
Tastatură programabilă din carton: 8 pași (cu imagini)
Tastatură programabilă din carton: pe măsură ce tehnologia se dezvoltă, oamenii își doresc ca lucrurile să fie din ce în ce mai virtuale, însă uneori este mult mai practic și mai convenabil să ai ceva fizic pe care să îl poți atinge și să interacționezi cu propriile mâini. Un exemplu de
OpenEyeTap: Sticlă inteligentă imprimată 3D și programabilă: 12 pași (cu imagini)
OpenEyeTap: Sticlă inteligentă imprimată și programabilă 3D: Bine ați venit la pagina Instrucțiuni Open EyeTap! Suntem câțiva producători entuziaști, cu o ambiție mare de a construi cele mai active ochelari inteligenți din lume și comunitatea de realitate augmentată purtabilă. Dorim să facem accesibil un cadru pe care să
Sursă de alimentare programabilă 42V 6A: 6 pași (cu imagini)
Sursă de alimentare programabilă 42V 6A: Noul meu proiect a fost inspirat de sursa de alimentare programabilă, modulul Ruideng. Este fantastic, foarte puternic, precis și la un preț rezonabil. Există puține modele disponibile, referitoare la tensiunea și curentul de ieșire. Cele mai noi sunt echipate cu co