![Програмируема клавиатура: 5 стъпки (със снимки) Програмируема клавиатура: 5 стъпки (със снимки)](https://i.howwhatproduce.com/images/006/image-16981-j.webp)
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:57
![Програмируема клавиатура Програмируема клавиатура](https://i.howwhatproduce.com/images/006/image-16981-1-j.webp)
![Програмируема клавиатура Програмируема клавиатура](https://i.howwhatproduce.com/images/006/image-16981-2-j.webp)
В този проект ще покажа как да направите сравнително проста и евтина програмируема клавиатура за картографиране на най -използваните клавишни комбинации, приложения и др.
Тази клавиатура се открива като клавиатура във всички основни операционни системи, не са необходими допълнителни драйвери.
Консумативи
- Ротационен енкодер.
- Много (в зависимост от вашите нужди) бутони.
- Arduino Pro Micro, Arduino Leonardo или всяка друга дъска за разработчици с Atmega32U4 MCU.
- Тел, спойка, поялник и др.
- (По избор) Някаква тежка основа за предпазване на клавиатурата от плъзгане, използвам стар 3.5 "HDD
Стъпка 1: Електрическа верига
![Електрическа верига Електрическа верига](https://i.howwhatproduce.com/images/006/image-16981-3-j.webp)
Избрах да използвам Arduino Pro Micro dev платка с Atmega32U4 MCU, която има 18 използваеми цифрови пина.
Щифтовете за свързване на бутони и въртящ се енкодер бяха избрани без специално внимание, но трябва да се отбележат някои неща:
- Всички пинове с възможност за цифрово четене имат вътрешни издърпвания, което позволява да се смекчат външните резистори за изтегляне. Разбира се, кодът трябва да бъде актуализиран съответно, тъй като той очаква състоянието на щифта да премине от ниско към високо при натискане на бутони.
- В примера на библиотеката encoder.h се отбелязва, че най -добрата производителност на енкодера се постига, когато и двата щифта, свързани към MCU, прекъсват способните пинове. Повечето аналогови пинове на Atmega32U4 нямат възможност за прекъсване.
- Точните стойности на резистора за изтегляне нямат голямо значение, всичко от 1 kΩ до 100 kΩ ще работи добре. По -големите стойности на съпротивлението позволяват по -малко разсейване на мощността, но водят до по -бавна реакция на извода на промените в напрежението. Просто изберете стойностите на резисторите, които имате най -много.
- Механичните енкодери не са най -надеждните неща поради контактно износване и подскачане. Ето защо е необходимо добро решение за премахване. Избраните от мен стойности на кондензатора и времената на забавяне в кода вероятно няма да дадат най -добри резултати за вас. Така че е необходимо малко експериментиране. Или преминете към нещо като оптичен енкодер, но цената му е значително по -висока.
Стъпка 2: Монтаж
![Монтаж Монтаж](https://i.howwhatproduce.com/images/006/image-16981-4-j.webp)
![Монтаж Монтаж](https://i.howwhatproduce.com/images/006/image-16981-5-j.webp)
![Монтаж Монтаж](https://i.howwhatproduce.com/images/006/image-16981-6-j.webp)
![Монтаж Монтаж](https://i.howwhatproduce.com/images/006/image-16981-7-j.webp)
Исках да направя клавиатурата възможно най -чиста, затова запоявах всички компоненти на гърба на прототипната платка. Реших, че клавиатурата ще бъде по -ергономична, ако се използва повдигната под малък ъгъл. Ето защо запоявах 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: Конфигуриране на преки пътища
![Конфигуриране на преки пътища Конфигуриране на преки пътища](https://i.howwhatproduce.com/images/006/image-16981-8-j.webp)
![Конфигуриране на преки пътища Конфигуриране на преки пътища](https://i.howwhatproduce.com/images/006/image-16981-9-j.webp)
Това, което прави всеки пряк път, зависи и от вас, всички имаме различни предпочитания. Ще дам за пример какви преки пътища съм конфигурирал за себе си. Използвам 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: Подобрения
![Подобрения Подобрения](https://i.howwhatproduce.com/images/006/image-16981-10-j.webp)
Някои възможни подобрения:
- Бутони с по -добро качество.
- Прототипната платка се огъва доста при натискане на бутони.
- RGB осветление за промяна на цвета в зависимост от това на коя функция е зададен въртящият се енкодер.
- Още бутони (използвайте IO разширител IC).
- По -добър ротационен енкодер (или по -добро решение за отстраняване).
Препоръчано:
Програмируема тиквена светлина: 25 стъпки (със снимки)
![Програмируема тиквена светлина: 25 стъпки (със снимки) Програмируема тиквена светлина: 25 стъпки (със снимки)](https://i.howwhatproduce.com/images/001/image-743-8-j.webp)
Програмируема тиквена светлина: Тази инструкция е за създаване на програмируема тиквена светлина с микроконтролер ATTiny. Това е замислено като учебна демонстрация, за да въведе всеки (на възраст 8+) в електрониката и програмирането на микроконтролери, използващи Arduino IDE. Наклонен обект
Програмируема качулка Stranger Things: 9 стъпки (със снимки)
![Програмируема качулка Stranger Things: 9 стъпки (със снимки) Програмируема качулка Stranger Things: 9 стъпки (със снимки)](https://i.howwhatproduce.com/images/009/image-26402-j.webp)
Програмируема качулка Stranger Things: Може би никога няма да се налага да прекарвате време в кошмарен свят на чудовища, но понякога просто искате да носите риза, която казва, че напълно бихте могли да живеете там, ако искате. Тъй като такава риза не съществува на свободния пазар, решихме да направим нашата
Картонена програмируема клавиатура: 8 стъпки (със снимки)
![Картонена програмируема клавиатура: 8 стъпки (със снимки) Картонена програмируема клавиатура: 8 стъпки (със снимки)](https://i.howwhatproduce.com/images/005/image-13338-23-j.webp)
Картонена програмируема клавиатура: С развитието на технологиите хората искат нещата да стават все по -виртуални, но понякога е просто по -практично и удобно да имате нещо физическо, което всъщност можете да докоснете и да взаимодействате със собствените си ръце. Един пример за
Програмируема хранилка за аквариумни риби - Проектирана гранулирана храна: 7 стъпки (със снимки)
![Програмируема хранилка за аквариумни риби - Проектирана гранулирана храна: 7 стъпки (със снимки) Програмируема хранилка за аквариумни риби - Проектирана гранулирана храна: 7 стъпки (със снимки)](https://i.howwhatproduce.com/images/003/image-7648-35-j.webp)
Програмируема хранилка за аквариумни риби - проектирана гранулирана храна: хранилка за риба - проектирана гранулирана храна за аквариумни риби. Нейният много прост дизайн на напълно автоматична хранилка за риби. Работи с малко микро серво SG90 9g и Arduino Nano. Захранвате цялото захранващо устройство с USB кабел (от USB зарядно устройство или USB порт на вашия
Най -тънката програмируема кожена гривна в света!: 6 стъпки (със снимки)
![Най -тънката програмируема кожена гривна в света!: 6 стъпки (със снимки) Най -тънката програмируема кожена гривна в света!: 6 стъпки (със снимки)](https://i.howwhatproduce.com/preview/how-and-what-to-produce/10968817-worlds-thinnest-programmable-leather-bracelet-6-steps-with-pictures-j.webp)
Най-тънката програмируема кожена гривна в света!: Схема на бутони, от Aniomagic, е толкова невероятна малка джаджа. Това е околен програмен четец с размер на никел, който може да се програмира със специално синхронизирани светкавици. С него ще направим най -тънката, програмируема гривна в света