Съдържание:

Програмируема клавиатура: 5 стъпки (със снимки)
Програмируема клавиатура: 5 стъпки (със снимки)

Видео: Програмируема клавиатура: 5 стъпки (със снимки)

Видео: Програмируема клавиатура: 5 стъпки (със снимки)
Видео: 32 Секретные Комбинации Для Вашей Клавиатуры 2024, Юли
Anonim
Програмируема клавиатура
Програмируема клавиатура
Програмируема клавиатура
Програмируема клавиатура

В този проект ще покажа как да направите сравнително проста и евтина програмируема клавиатура за картографиране на най -използваните клавишни комбинации, приложения и др.

Тази клавиатура се открива като клавиатура във всички основни операционни системи, не са необходими допълнителни драйвери.

Консумативи

  • Ротационен енкодер.
  • Много (в зависимост от вашите нужди) бутони.
  • Arduino Pro Micro, Arduino Leonardo или всяка друга дъска за разработчици с Atmega32U4 MCU.
  • Тел, спойка, поялник и др.
  • (По избор) Някаква тежка основа за предпазване на клавиатурата от плъзгане, използвам стар 3.5 "HDD

Стъпка 1: Електрическа верига

Електрическа верига
Електрическа верига

Избрах да използвам Arduino Pro Micro dev платка с Atmega32U4 MCU, която има 18 използваеми цифрови пина.

Щифтовете за свързване на бутони и въртящ се енкодер бяха избрани без специално внимание, но трябва да се отбележат някои неща:

  1. Всички пинове с възможност за цифрово четене имат вътрешни издърпвания, което позволява да се смекчат външните резистори за изтегляне. Разбира се, кодът трябва да бъде актуализиран съответно, тъй като той очаква състоянието на щифта да премине от ниско към високо при натискане на бутони.
  2. В примера на библиотеката encoder.h се отбелязва, че най -добрата производителност на енкодера се постига, когато и двата щифта, свързани към MCU, прекъсват способните пинове. Повечето аналогови пинове на Atmega32U4 нямат възможност за прекъсване.
  3. Точните стойности на резистора за изтегляне нямат голямо значение, всичко от 1 kΩ до 100 kΩ ще работи добре. По -големите стойности на съпротивлението позволяват по -малко разсейване на мощността, но водят до по -бавна реакция на извода на промените в напрежението. Просто изберете стойностите на резисторите, които имате най -много.
  4. Механичните енкодери не са най -надеждните неща поради контактно износване и подскачане. Ето защо е необходимо добро решение за премахване. Избраните от мен стойности на кондензатора и времената на забавяне в кода вероятно няма да дадат най -добри резултати за вас. Така че е необходимо малко експериментиране. Или преминете към нещо като оптичен енкодер, но цената му е значително по -висока.

Стъпка 2: Монтаж

Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж

Исках да направя клавиатурата възможно най -чиста, затова запоявах всички компоненти на гърба на прототипната платка. Реших, че клавиатурата ще бъде по -ергономична, ако се използва повдигната под малък ъгъл. Ето защо запоявах Arduino Pro Micro на отделна платка и свързах всички цифрови щифтове с проводник към бутоните. По -удобно е да свържете USB кабел по този начин.

Намерих стар 3,5-инчов твърд диск, който да използвам като основа за клавиатурата, доста тежък и предотвратява плъзгането на формата на дъската по бюрото при работа (помагат и подплъзгащи подложки). Също така има удобни 3 мм отвори за винтове, в които завинтявам месингови стойки и фиксира дъската под лек ъгъл.

Стъпка 3: Програмиране

Кодът е написан с Arduino IDE. Ще трябва да инсталирате 2 библиотеки:

  • Кодер от Пол Стофреген
  • Клавиатура от Arduino

За да компилирате за Atmega32U4, вие също трябва да инсталирате файла на дъската на Arduino Pro, Sparkfun има страхотен урок как да направите това.

Едно нещо, което трябва да отбележите предварително, е да внимавате да не оставяте „натиснати клавиши“в кода си. Това се случи с мен и MCU непрекъснато изпращаше спам към някаква комбинация от клавиши. Единственият начин, по който съм наясно как да поправя това, е да запиша отново зареждащото устройство в MCU. Ако ще завършите като мен, можете да следвате това ръководство, за да запишете boot-loader, ще ви трябва друга платка arduino, която да използвате като програмист.

В главния цикъл MCU първо чете всяко състояние на бутон, ако се установи промяна на състоянието от LOW на HIGH, се изпълнява функция keyboard_shortcut (i). Променливата i е идентификатор на натиснатия бутон, общият брой на бутоните се определя от ALL_BUTTONS (в моя случай 15). Когато се изпълнява, keyboard_shortcut (i) изпраща CTRL+SHIFT и след това буква, която е съпоставена с идентификатора на бутона: 1-> A, 2-> B, 3-> C и т.н. Някои комбинации като CTRL+SHIFT+N са пропуснати, защото е вече се използва в Windows10 по подразбиране (в този случай за създаване на нова папка). Ето списъка с всички преки пътища на Windows по подразбиране. След кратко закъснение MCU изпраща сигнал за освобождаване на всички клавиши и функцията излиза обратно към основния цикъл.

След като всички бутони са проверени, MCU проверява дали позицията на въртящия се енкодер е променена и ако се промени, keyboard_shortcut (i) се изпълнява с уникален идентификатор.

Натискането на бутона на енкодера обръща логическата променлива encoderButtonFlag. Когато енкодерът се завърти, към компютъра се изпраща различен пряк път, в зависимост от посоката на въртене и стойността на encoderButtonFlag.

Ако debugFlag е зададен на 1, съобщенията за отстраняване на грешки се изпращат чрез UART към сериен монитор.

Стъпка 4: Конфигуриране на преки пътища

Конфигуриране на преки пътища
Конфигуриране на преки пътища
Конфигуриране на преки пътища
Конфигуриране на преки пътища

Това, което прави всеки пряк път, зависи и от вас, всички имаме различни предпочитания. Ще дам за пример какви преки пътища съм конфигурирал за себе си. Използвам Linux Mint 19.3 с десктоп мениджър xfce4, така че моите примери включват главно bash скриптове, но ще покажа и някои основни примери за Windows10.

На първата снимка можете да видите кои скриптове съм картографирал към кои преки пътища. Това става от менюто с настройки на xfce, процесът за това е направо напред. Можете да намерите тези скриптове в моето хранилище на GitHub

По -малките 6 бутони в долната част са за стартиране на приложения като уеб браузър или файлов мениджър, някои от тези приложения се извикват от скрипта start_only_one_app.sh, който получава имената на всички стартирани приложения и търси приложението, което искате да стартирате. Ако прозорецът на приложението вече съществува, той се фокусира, в противен случай се стартира нов екземпляр на приложение.

Други скриптове:

  • 2nd_display_control.sh - включва/изключва втория монитор.
  • moon_lamp.sh - включва/изключва лунната ми лампа.
  • pc_load.sh - създава балон с известия с текущото използване и температури на процесора и графичния процесор.
  • shutdown.sh - инициализира изключването на компютъра с 1 минутно забавяне и създава балон с известия, в който се показва оставащото време.
  • spec_vpn.sh - свързва се със специфичен OpenVPN сървър или ако вече съществува връзка, прекъсва връзката със сървъра.
  • shortcut_controll.sh - приема командата (плюс, минус, табулация, затваряне) като аргумент, открива кой прозорец е фокусиран сега и ако е намерено конкретно приложение, изпълнява контролно действие. Например, за да отворите нов раздел в възвишен текстов редактор, прекият път по подразбиране е "CTRL+N", а в терминала xfce - "CTRL+T", така че този скрипт позволява да отворите нов раздел в възвишен и терминал със същия бутон.

Първата функция на въртящия се енкодер е да контролира силата на звука, втората функция е да контролира активното мащабиране на прозореца чрез shortcut_controll.sh.

За операционната система Windows можете да картографирате преки пътища към приложения чрез прозореца със свойства на програмата, както е показано на втората снимка. За всичко друго ще искате да използвате AutoHotkey. Това е скриптов език за автоматизация за Windows.

Някои прости примери за синтаксис на AHK:

;Контрол на звука

^+t:: Изпращане {Volume_Up}

връщане

^+v:: Изпращане {Volume_Down}

връщане

; Затваряне на активния прозорец

^+h:: WinGetTitle, Title, A

PostMessage, 0x112, 0xF060,,, %Заглавие %

връщане

; Компютър за изключване

^+b:: Изпълнение на изключване /s

Стъпка 5: Подобрения

Подобрения
Подобрения

Някои възможни подобрения:

  • Бутони с по -добро качество.
  • Прототипната платка се огъва доста при натискане на бутони.
  • RGB осветление за промяна на цвета в зависимост от това на коя функция е зададен въртящият се енкодер.
  • Още бутони (използвайте IO разширител IC).
  • По -добър ротационен енкодер (или по -добро решение за отстраняване).

Препоръчано: