Taula de continguts:

Teclat programable: 5 passos (amb imatges)
Teclat programable: 5 passos (amb imatges)

Vídeo: Teclat programable: 5 passos (amb imatges)

Vídeo: Teclat programable: 5 passos (amb imatges)
Vídeo: Топ 5 скрытых полезных программ Windows 10 2024, De novembre
Anonim
Teclat programable
Teclat programable
Teclat programable
Teclat programable

En aquest projecte mostraré com fer un teclat programable relativament senzill i econòmic per mapear les dreceres de teclat, les aplicacions i molt més.

Aquest teclat es detecta com a teclat en tots els sistemes operatius principals, no calen controladors addicionals.

Subministraments

  • Codificador rotatiu.
  • Molts botons (depèn de les vostres necessitats).
  • Arduino Pro Micro, Arduino Leonardo o qualsevol altra placa de desenvolupament amb MCU Atmega32U4.
  • Filferro, soldadura, soldador, etc.
  • (Opcional) Alguna base pesada per evitar que el teclat es llisqui, estic fent servir un disc dur de 3,5"

Pas 1: Circuit elèctric

Circuit elèctric
Circuit elèctric

Vaig optar per utilitzar la placa de desenvolupament Arduino Pro Micro amb la MCU Atmega32U4 que té 18 pins digitals utilitzables.

Els pins per connectar els botons i el codificador rotatiu es van seleccionar sense tenir en compte cap ordre particular, però cal tenir en compte algunes coses:

  1. Tots els pins digitals que tenen capacitat de lectura tenen extraccions internes que permeten mitigar les resistències desplegables externes. Per descomptat, el codi s’ha d’actualitzar en conseqüència, perquè s’espera que l’estat del passador vagi de més baix a més alt quan es premen els botons.
  2. A l'exemple de la biblioteca encoder.h es va assenyalar que s'aconsegueix el millor rendiment del codificador quan els dos pins connectats a l'MCU interrompen els pins capaços. La majoria dels pins analògics d'Atmega32U4 no tenen capacitat d'interrupció.
  3. Els valors exactes de la resistència desplegable no tenen gaire importància, qualsevol cosa des d’1 kΩ fins a 100 kΩ funcionarà bé. Els valors de resistència més grans permeten una menor dissipació de potència, però es tradueix en una resposta més lenta dels pins als canvis de voltatge. Només heu de triar les resistències de valor que tingueu més.
  4. Els codificadors mecànics no són les coses més fiables a causa del desgast dels contactes i dels rebots. Per això, cal una bona solució de denúncia. Els valors dels condensadors que he escollit i els temps de retard del codi probablement no us proporcionaran els millors resultats. Per tant, cal una mica d’experimentació. O canvieu a alguna cosa com un codificador òptic, però el seu preu és significativament més alt.

Pas 2: Muntatge

muntatge
muntatge
muntatge
muntatge
muntatge
muntatge
muntatge
muntatge

Volia fer que el teclat fos el més net possible, de manera que vaig soldar tots els components a la part posterior del tauler prototip. Vaig pensar que el teclat seria més ergonòmic si s’utilitzés elevat amb un angle reduït. És per això que he soldat Arduino Pro Micro en una placa separada i he connectat tots els pins digitals amb filferro per prémer els botons. És més còmode connectar el cable USB d’aquesta manera.

He trobat un disc dur de 3,5 antic per fer-lo servir com a base per al teclat, és bastant pesat i evita que la taula es pugui lliscar per sobre de l'escriptori durant el funcionament (els coixinets antilliscants també ajuden). va fixar el tauler amb un angle lleuger.

Pas 3: Programació

El codi està escrit amb Arduino IDE. Haureu d’instal·lar dues biblioteques:

  • Codificador de Paul Stoffregen
  • Teclat d'Arduino

Per compilar Atmega32U4, també heu d’instal·lar el fitxer de placa Arduino Pro Micro, Sparkfun té un gran tutorial sobre com fer-ho.

Una cosa que cal tenir en compte per endavant és tenir cura de no deixar "tecles premudes" al vostre codi. Això em va passar i MCU constantment enviava correu brossa a alguna combinació de tecles. L’única manera de saber com solucionar-ho és tornar a gravar el carregador d’arrencada a MCU. Si acabareu com jo, podeu seguir aquesta guia per gravar el carregador d'arrencada, necessitareu una altra placa arduino per utilitzar-la com a programador.

Al MCU del bucle principal es llegeix primer cada estat del polsador, si es detecta un canvi d'estat de BAIX a ALT, s'executa la funció keyboard_shortcut (i). La variable i és un identificador del botó premut, el nombre total de botons està definit per ALL_BUTTONS (en el meu cas 15). Quan s'executa, keyboard_shortcut (i) envia CTRL + MAJÚS i, a continuació, una lletra assignada a l'identificador de botó: 1-> A, 2-> B, 3-> C, etc. S'ometen algunes combinacions com CTRL + MAJÚS + N perquè ja s’utilitza a Windows10 per defecte (en aquest cas per crear una carpeta nova). Aquí teniu la llista de totes les dreceres de Windows per defecte. Després d'un curt retard, la MCU envia el senyal per deixar anar totes les tecles i la funció torna al bucle principal.

Després de comprovar tots els botons, l'MCU comprova si la posició del codificador rotatiu ha canviat i, si ho fa, keyboard_shortcut (i) s'executa amb un identificador únic.

Prémer el botó del codificador inverteix la variable booleana encoderButtonFlag. Quan es gira el codificador, s'envia una drecera diferent a l'ordinador, en funció de la direcció de rotació i del valor encoderButtonFlag.

Si debugFlag es defineix com a 1, els missatges de depuració s'envien mitjançant UART al monitor sèrie.

Pas 4: Configuració de les dreceres

Configuració de dreceres
Configuració de dreceres
Configuració de dreceres
Configuració de dreceres

El que fa cada drecera és vosaltres mateixos, tots tenim diferents preferències. Proporcionaré quines dreceres he configurat per a mi com a exemple. Estic fent servir Linux Mint 19.3 amb el gestor d’escriptori xfce4, de manera que els meus exemples consisteixen principalment en scripts bash, però també mostraré alguns exemples bàsics per a Windows10.

A la primera imatge podeu veure quins scripts he assignat a quines dreceres. Es fa des del menú de configuració de xfce, el procés per a això és senzill. Podeu trobar aquests scripts al meu dipòsit de GitHub

Els 6 botons més petits de la part inferior són per iniciar aplicacions com ara el navegador web o el gestor de fitxers; algunes d'aquestes aplicacions es diuen des de l'script start_only_one_app.sh, que obté tots els noms de les aplicacions iniciades i cerca l'aplicació que voleu iniciar. Si la finestra de l'aplicació ja existeix, es concentra, en cas contrari s'inicia la nova instància d'una aplicació.

Altres guions:

  • 2nd_display_control.sh: activa / desactiva el segon monitor.
  • moon_lamp.sh: encén / apaga la meva làmpada de lluna.
  • pc_load.sh: crea una bombolla de notificació amb l'ús i les temperatures actuals de la CPU i la GPU.
  • shutdown.sh: inicialitza l’aturada del PC amb 1 minut de retard i crea una bombolla de notificació en què es mostra el temps restant.
  • spec_vpn.sh: es connecta a un servidor OpenVPN específic o, si ja existeix una connexió, es desconnecta del servidor.
  • shortcut_controll.sh: pren l'ordre (més, menys, tabulador, tancar) com a argument, detecta quina finestra està enfocada i si es troba una aplicació específica activa, executa l'acció de control. Per exemple, per obrir una nova pestanya a la drecera predeterminada de l'editor de text sublim és "CTRL + N" i al terminal xfce - "CTRL + T", de manera que aquest script permet obrir una nova pestanya en sublim i terminal amb el mateix polsador.

La primera funció del codificador rotatiu és controlar el volum, la segona funció és controlar el zoom de la finestra activa mitjançant shortcut_controll.sh.

Per al sistema operatiu Windows podeu assignar dreceres a aplicacions mitjançant la finestra de propietats del programa, tal com es mostra a la segona imatge. Per a qualsevol altra cosa, voldreu utilitzar AutoHotkey. És un llenguatge de seqüència d’ordres d’automatització per a Windows.

Alguns exemples senzills de sintaxi AHK:

; Control de volum

^ + t:: Envia {Volume_Up}

tornar

^ + v:: Envia {Volume_Down}

tornar

; Tanca la finestra activa

^ + h:: WinGetTitle, Títol, A

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

tornar

; Apagada del PC

^ + b:: Executa apagat / s

Pas 5: millores

Millores
Millores

Algunes possibles millores:

  • Polsadors de millor qualitat.
  • El prototip de PCB es flexiona força quan es premen els botons.
  • Il·luminació RGB per canviar de color en funció de la funció que estigui configurada el codificador rotatiu.
  • Més botons (utilitzeu IC expansor IO).
  • Millor codificador rotatiu (o millor solució de descompte).

Recomanat: