Sommario:
- Forniture
- Passaggio 1: circuito elettrico
- Passaggio 2: assemblaggio
- Passaggio 3: programmazione
- Passaggio 4: configurazione delle scorciatoie
- Passaggio 5: miglioramenti
Video: Tastiera programmabile: 5 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
In questo progetto mostrerò come realizzare una tastiera programmabile relativamente semplice ed economica per mappare le scorciatoie da tastiera, le applicazioni e altro ancora più utilizzate.
Questa tastiera viene rilevata come tastiera in tutti i principali sistemi operativi, non sono necessari driver aggiuntivi.
Forniture
- Encoder rotativo.
- Molti pulsanti (dipende dalle tue esigenze).
- Arduino Pro Micro, Arduino Leonardo o qualsiasi altra scheda di sviluppo con MCU Atmega32U4.
- Filo, saldatura, saldatore, ecc.
- (Opzionale) Una base pesante per evitare che la tastiera scivoli, sto usando un vecchio HDD da 3,5"
Passaggio 1: circuito elettrico
Ho scelto di utilizzare la scheda di sviluppo Arduino Pro Micro con MCU Atmega32U4 che ha 18 pin digitali utilizzabili.
I pin per collegare i pulsanti e l'encoder rotativo sono stati selezionati senza un ordine particolare in mente, ma è necessario notare alcune cose:
- Tutti i pin con capacità di lettura digitale hanno pull-up interni che consentono di mitigare i resistori di pull-down esterni. Ovviamente il codice dovrebbe essere aggiornato di conseguenza, perché si aspetta che lo stato del pin vada da basso ad alto quando vengono premuti i pulsanti.
- Nell'esempio della libreria encoder.h si è notato che le migliori prestazioni dell'encoder vengono raggiunte quando entrambi i pin sono collegati ai pin in grado di interrompere l'MCU. La maggior parte dei pin analogici di Atmega32U4 non ha capacità di interruzione.
- I valori esatti del resistore pull-down non contano molto, qualsiasi cosa da 1 kΩ a 100 kΩ funzionerà bene. Valori di resistenza più grandi consentono una minore dissipazione di potenza, ma comportano una risposta dei pin più lenta alle variazioni di tensione. Basta scegliere qualsiasi resistore di valore che hai di più.
- Gli encoder meccanici non sono le cose più affidabili a causa dell'usura dei contatti e dei rimbalzi. Ecco perché è necessaria una buona soluzione antirimbalzo. I valori dei condensatori scelti e i tempi di ritardo nel codice probabilmente non forniranno i migliori risultati per te. Quindi è necessaria un po' di sperimentazione. Oppure passa a qualcosa come l'encoder ottico, ma il suo prezzo è significativamente più alto.
Passaggio 2: assemblaggio
Volevo rendere la tastiera più pulita possibile, quindi ho saldato tutti i componenti sul retro della scheda prototipo. Ho pensato che la tastiera sarebbe stata più ergonomica se fosse stata usata sollevata con una piccola angolazione. Ecco perché ho saldato Arduino Pro Micro su una scheda separata e ho collegato tutti i pin digitali con un filo ai pulsanti. È più comodo collegare il cavo USB in questo modo.
Ho trovato il vecchio HDD da 3,5 da utilizzare come base per la tastiera, è piuttosto pesante e impedisce alla scheda di scivolare sulla scrivania durante il funzionamento (anche i pad antiscivolo aiutano). Inoltre ha dei comodi fori per viti da 3 mm in cui ho avvitato i distanziatori in ottone e fissato la scheda con una leggera angolazione.
Passaggio 3: programmazione
Il codice è scritto con Arduino IDE. Dovrai installare 2 librerie:
- Encoder di Paul Stoffregen
- Tastiera di Arduino
Per compilare per Atmega32U4 devi anche installare il file della scheda Arduino Pro Micro, Sparkfun ha un ottimo tutorial su come farlo.
Una cosa da notare in anticipo è fare attenzione a non lasciare "tasti premuti" nel codice. Questo è successo a me e MCU ha costantemente inviato spam a una combinazione di tasti. L'unico modo in cui sono a conoscenza di come risolvere questo problema è rimasterizzare il bootloader su MCU. Se finirete come me, potete seguire questa guida per masterizzare bootloader, vi servirà un'altra scheda arduino da usare come programmatore.
Nel loop principale MCU legge prima lo stato di ogni pulsante, se viene rilevato un cambiamento di stato da LOW a HIGH, viene eseguita la funzione keyboard_shortcut(i). La variabile i è un id del pulsante premuto, il numero totale del pulsante è definito da ALL_BUTTONS (nel mio caso 15). Quando viene eseguito, keyboard_shortcut(i) invia CTRL+SHIFT e poi una lettera che viene mappata all'id del pulsante: 1->A, 2->B, 3->C ecc. Alcune combinazioni come CTRL+SHIFT+N vengono omesse perché è già utilizzato in Windows10 per impostazione predefinita (in questo caso per creare una nuova cartella). Ecco l'elenco di tutte le scorciatoie di Windows predefinite. Dopo un breve ritardo, l'MCU invia il segnale per rilasciare tutti i tasti e la funzione torna al loop principale.
Dopo che tutti i pulsanti sono stati controllati, MCU controlla se la posizione dell'encoder rotativo è cambiata e, in caso affermativo, keyboard_shortcut(i) viene eseguito con un ID univoco.
La pressione del pulsante dell'encoder inverte la variabile booleana encoderButtonFlag. Quando l'encoder viene ruotato, al PC viene inviata una scorciatoia diversa, a seconda della direzione di rotazione e del valore dell'encoderButtonFlag.
Se debugFlag è impostato su 1, i messaggi di debug vengono inviati tramite UART al monitor seriale.
Passaggio 4: configurazione delle scorciatoie
Quello che fa ogni scorciatoia dipende anche da te, abbiamo tutti preferenze diverse. Fornirò quali scorciatoie ho configurato per me stesso come esempio. Sto usando Linux Mint 19.3 con xfce4 desktop manager, quindi i miei esempi riguardano principalmente script bash, ma mostrerò anche alcuni esempi di base per Windows10.
Nella prima immagine puoi vedere quali script ho mappato a quali scorciatoie. È fatto dal menu delle impostazioni di xfce, il processo per questo è semplice. Puoi trovare questi script nel mio repository GitHub
I 6 pulsanti più piccoli in basso servono per avviare applicazioni come browser Web o file manager, alcune di queste applicazioni vengono chiamate dallo script start_only_one_app.sh, che ottiene tutti i nomi delle applicazioni avviate e cerca l'applicazione che si desidera avviare. Se la finestra dell'applicazione esiste già, viene focalizzata, altrimenti viene avviata una nuova istanza di un'applicazione.
Altri script:
- 2nd_display_control.sh - attiva/disattiva il secondo monitor.
- moon_lamp.sh - accende/spegne la mia lampada lunare.
- pc_load.sh: crea una bolla di notifica con l'utilizzo e le temperature correnti di CPU e GPU.
- shutdown.sh - inizializza lo spegnimento del PC con 1 minuto di ritardo e crea un fumetto di notifica in cui viene visualizzato il tempo rimanente.
- spec_vpn.sh - si connette a un server OpenVPN specifico o se la connessione esiste già, si disconnette dal server.
- scorciatoia_controll.sh - prende il comando (più, meno, tab, chiudi) come argomento, rileva quale finestra è ora focalizzata e se viene trovata un'applicazione specifica attiva esegue l'azione di controllo. Ad esempio, per aprire una nuova scheda nell'editor di testo sublime, la scorciatoia predefinita è "CTRL+N" e nel terminale xfce - "CTRL+T", quindi questo script consente di aprire una nuova scheda in sublime e terminale con lo stesso pulsante.
La prima funzione del codificatore rotante è controllare il volume, la seconda funzione è controllare lo zoom della finestra attiva tramite scorciatoia_controll.sh.
Per il sistema operativo Windows è possibile mappare i collegamenti alle applicazioni tramite la finestra delle proprietà del programma come mostrato nella seconda immagine. Per qualsiasi altra cosa vorrai usare AutoHotkey. È il linguaggio di scripting di automazione per Windows.
Alcuni semplici esempi di sintassi AHK:
;Controllo del volume
^+t::Invia {Volume_Up}
Restituzione
^+v:: Invia {Volume_Giù}
Restituzione
;Chiudi finestra attiva
^+h::WinGetTitle, Titolo, A
PostMessage, 0x112, 0xF060,,, %Titolo%
Restituzione
;Spegni il PC
^+b::Esegui spegnimento /s
Passaggio 5: miglioramenti
Alcuni possibili miglioramenti:
- Pulsanti di migliore qualità.
- Il PCB del prototipo si flette parecchio quando vengono premuti i pulsanti.
- Illuminazione RGB per cambiare colore a seconda della funzione su cui è impostato il codificatore rotante.
- Più pulsanti (usa l'IC di espansione IO).
- Encoder rotativo migliore (o soluzione antirimbalzo migliore).
Consigliato:
Felpa con cappuccio programmabile Stranger Things: 9 passaggi (con immagini)
Felpa con cappuccio programmabile Stranger Things: potresti non dover mai passare del tempo in un mondo da incubo di mostri, ma a volte vuoi solo indossare una maglietta che dice che potresti assolutamente vivere lì se lo volessi. Poiché una maglietta del genere non esiste sul mercato aperto, abbiamo deciso di fare la nostra o
DoReMiQuencer - Sequencer MIDI programmabile con tastiera: 7 passaggi
DoReMiQuencer - Sequencer MIDI programmabile con tastiera: questo dispositivo è stato creato per essere utilizzato con VCVRack, un sintetizzatore modulare virtuale creato da VCV, ma può fungere da controller MIDI generico. Serve come sequencer MIDI o tastiera, a seconda della modalità selezionata. Le note MIDI mappate al ke
Tastiera programmabile in cartone: 8 passaggi (con immagini)
Tastiera programmabile in cartone: con lo sviluppo della tecnologia, le persone desiderano che le cose siano sempre più virtuali, tuttavia a volte è solo molto più pratico e conveniente avere qualcosa di fisico che puoi effettivamente toccare e con cui interagire con le tue mani. Un esempio di
Fai da te Massiccio 12000 Watt 230 V Programmabile Illuminazione Programmabile 12 Canali: 10 Passi
Configurazione dell'illuminazione programmabile a 12 canali da 12000 Watt e 230 V fai-da-te: Ciao a tutti, in questo progetto ti mostrerò come creare un enorme controller di luci a led da 12000 watt. Questa è una configurazione a 12 canali, utilizzando questo circuito puoi controllare qualsiasi luce da 230 V .Puoi creare diversi modelli di illuminazione. In questo video ho
Interfaccia della tastiera con 8051 e visualizzazione dei numeri della tastiera in 7 segmenti: 4 passaggi (con immagini)
Interfaccia della tastiera con 8051 e visualizzazione dei numeri della tastiera in 7 segmenti: In questo tutorial ti parlerò di come possiamo interfacciare la tastiera con 8051 e visualizzare i numeri della tastiera in un display a 7 segmenti