170

[Arduino] Программируемая клавиатура своими руками.

Доброго времени суток всем.
Немного предыстории.


Идея заиметь себе программируемую клавиатуру родилась у меня довольно таки давно. По работе и не только, я уже около 7 лет пользуюсь замечательными программами PunoSwitcher и Mkey. У них есть свои минусы, но все таки - все они здорово облегчают и автоматизируют многие рутинные задачи. И, в целом, основную массу моих потребностей в скриптах и программируемых клавишах можно реализовать софтверно через вышеописанные программы. Но здесь есть 3 существенных минуса:
Оговорюсь сразу, все это чистой воды субъективщина, и ИМХО

1) Программы “съедают” некоторые клавиши. Например переназначив всю Numpad клавиатуру, вы останетесь без удобного ввода цифровых значений, и каждый раз переключать режимы в том же Mkey(который имеет свойство зависать в самый нужный момент), не очень удобно.
2) При смене рабочей машины приходится каждый раз переназначать настройки и устанавливать софт. Да, можно сделать экспорт настроек и все такое прочее, но это не Plug&Play,в плане удобства.
3)Кроссплатформенность. Так вышло, что у меня основной машиной для “взять с собой в поездку налегке” является старенький нетбук AcerAspire One с Linux Arch на борту, ибо только он там работал адекватно. И оказавшись без своих скриптов и переназначенных клавиш, было очень некомфортно работать.
справедливости ради стоит упомянуть, что через какое-то время я накатил на него облеченную версию WIN 7 и все стало прекрасно, но пост это об этом).
И так как цены на программируемые клавиатуры кусались, и я подумал, “а что если сделать ее на Ардуино?”. И вот в результате родилось это "чудо".
За основу я взял проект из ролика небезызвестного @AlexGyver,  о комп.пранке.(ссылка)
Саня если ты это читаешь - огромное тебе спасибо. Ты не только вдохновил меня на это все, но облегчил разработку своими удобными библиотеками по работе с кнопками.

Комплектующие
Для создания проекта понадобится:
Arduino Pro Micro - 1 шт

PNP транзистор - 1 шт.

NPN транзисторы - 3 шт.

Резисторы:

200 Ом - 1 шт.

220 Ом - 6 шт

10 кОм - 1 шт.USB разъем (или PS/2 разъем) - 1 шт.

LED светодиоды - 3 шт.

Я использовал старые советские КТ315 / КТ 361, просто потому что они были под рукой.

Да, можно было бы выбросить транзисторы с LED светодиодов, но я решил немного заморочится).

Поначалу проект разрабатывался под старую PS/2 клавиатуру, поэтому на ранних фото вы можете наблюдать в схеме PS/2 разъем.

В ходе экспериментов стало ясно, что некоторые клавиатуры могут работать с Аодуиной, как Ps/2 устройства, после перезагрузки.Именно для этого в схеме есть PNP транзистор для перезагрузки клавиатуры, через полсекунды после подключения Ардуины.

Затем,специально под этот проект, на Али была куплена Numpad клавиатура за 300р, которая оказалась вонючим куском пластика, к тому же еще и с бракованной клавишей, которая вывалилась при распаковке.


И хотя к ее работоспособности у меня претензий нет, и удалось вернуть полцены, эту клаву к покупке не рекомендую. Сейчас, за 400-500р можно взять Numpad-механику. Но ее определение как PS/2 устройство, и совместимость с моим проектом я не гарантирую.

Демонстрация работы.


Одна из самых важных функций этой клавиатуры - возможность эмуляции нажатий нескольких клавиш - уже делает эту клаву, очень удобным инструментом в работе.Например.
Как то давно, на Пикабу был выложен пост  “Создание МОЩНОЙ программируемой клавиатуры”, путем использования программы HIDmacros.
МОЩНОЙ!

В частности там, в комментариях, @Festival.wTF,  хвастался комбинациями в фотошопе.

#comment_61663005

Чтож, как говорил Сергей Дружко.

Так же, вот пример работы одних из самых популярных комбинаций клавиш.

Всего, как вы могли понять из схемы подключения, в этом проекте имеется 4 режима в работы клавиатуры, с индикацией на LED светодиодах.

В моем случае, на 4 режимах работы, уже получается не 17 программируемых клавиш (доп.клавиши к сожалению не работают на PS/2 клавиатурах), а 68.

Вообщем, это все. Проект сделан чисто для себя, и я всего лишь хотел поделиться с сообществом своими наработками.

Разумеется, это еще не финальная версия. В дальнейших планах - уложить все это в аккуратную коробочку, для более презентабельного вида.
Уже заказаны маленькие, удобные SMD светодиоды

Ссылка на код и схему подключения

ГуглДиск


Скетч представляет из себя только "каркас", но я думаю те, кто решится повторить этот проект, разберутся как сделать комбинации под свои нужды.

З,Ы Я гуманитарий, и лепил все это методом тыка и активного гугления.Поэтому, господа скептические программисты, можете сколь угодно критиковать мой кривой код, и высказывать недовольство на тему целесообразности данной поделки).
Советы и конструктивную критику обязательно приму к сведению.

Спасибо за внимание)

Arduino & Pi

1.5K постов20.9K подписчиков

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

0
Автор поста оценил этот комментарий

Поздравляю, вы изобрели клавиатуру с макросами. Предлагаю ознакомиться с функционалом бюджетной клавиатуры A4Tech G800V или её аналогами, которые имеют 16 программируемых клавиш без всяких выносных блоков, занимающих место

Иллюстрация к комментарию
раскрыть ветку (1)
11
Автор поста оценил этот комментарий
И так как цены на программируемые клавиатуры кусались, и я подумал, “а что если сделать ее на Ардуино?”.

На эту строчку поста мы, как бы, йух забьем, да?)
Я вкурсе, что есть такие клавы, мисье капитан. И да, я ознакомился с ценами в т.ч на Али, Ебей и др и они мне показались дороговатыми.
Разумеется, тот кто имеет лишние 2к рублей не будет всем вышеописанным заморачиваться.

Да и цель у меня была, попробовать решить задачку "а может ли ардуина в программируемую клавиатуру?". Да, может, и клава получается очень даже юзабельная.


Проект делался в первую очередь для саморазвития, а пост выложен для любителей DIY.

показать ответы
0
Автор поста оценил этот комментарий

проще уже свою клаву собрать https://www.arduino.cc/reference/en/language/functions/usb/k...

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Если бы тебе реально было интересно, и ты заглянул бы в мой код, ты бы увидел что я эти библиотеки и использую))
Просто библиотека PS2Keyboard, служит посредником, между физической клавиатурой(USB или PS2) и собственно Ардуиной.
Это, по сути, и есть "своя клава".
Вы хотябы читали бы чтоли, прежде чем умничать...)

показать ответы
0
Автор поста оценил этот комментарий

"LED светодиоды" - это жесть. LED(англ.  Light Emitting Diode) - светоизлучающий диод.
"... с индикацией на светоизлучающих диодах светодиодах".
аж глазам больно.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Пардоньте)

0
Автор поста оценил этот комментарий

не, я имел в виду, что вместо нумпада твоего подсоединить клаву. На нумпаде 18 кнопок, а на клаве-то 101 и больше..

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
А, если так - конечно можно!)
Я изначально тестировал, как и писал выше, на старой PS/2 полноразмерной клаве. Большую часть ее клавиш можно забиндить под свои макросы.

Даже больше скажу...я порылся на складе и нашел...Din 6 клаву и разъем к ней).
Ради интереса, загуглил распиновку и подключил ее к ардуине. Все заработало)
показать ответы
0
Автор поста оценил этот комментарий

Технически, ведь можно и вторую обычную клавиатуру подключить? Вообще, давно у меня была идея педалей наделать.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Технически, ведь можно и вторую обычную клавиатуру подключить?

Впринципе, если назначить пины данных и синхросигнала второй клавы, на другие пины ардуины, то мб и получится...
Но для таких поделок уже лучше использовать USB HOST Sheeld, чтобы было два различных HID устройства. Но это уже совершенно другой уровень...) Я только вскользь коснулся этой темы.

показать ответы
1
Я вас тоже
Автор поста оценил этот комментарий

Как DIY, это прекрасно! Обсуждение вопроса  "дороговизны" клавы  с макросами - это за гранью...но имхо  DIY жк дисплеи в клавиатуру ( сист. монитор или что кому нужно - весщь весьма пользительная) да и выглядит круто.

Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
DIY жк дисплеи в клавиатуру ( сист. монитор или что кому нужно - весщь весьма пользительная) да и выглядит круто.

Соглашусь, но только не в клавиатуру, а отдельным блоком, под монитор, например. Как у того же АлексаГайвера

Иллюстрация к комментарию
3
Автор поста оценил этот комментарий

За проект - однозначный плюс, хороший и интересный DIY, особенно с учётом приписки "я гуманитарий".


Себе для таких целей покупал б/у программируемую клавиатуру от Logitech, работает отлично, но нужен свой софт.

Потом ради интереса на той же Arduino + клавиатурный блок (вроде 4x4) с AliExpress делал аналог вашей клавиатурки (подключал в режиме software emulated USB HID), только остановился на том, что коды клавиш жестко прошиты в коде и для смены нужно обновлять прошивку.


Благодаря вам открыл для себя, что как минимум некоторые современные USB клавиатуры до сих пор поддерживают режим PS/2.


Единственное, чего так и не понял у вас - вы к компьютеру в каком режиме подключаетесь? Как USB HID или также как PS/2 клавиатура?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Единственное, чего так и не понял у вас - вы к компьютеру в каком режиме подключаетесь? Как USB HID или также как PS/2 клавиатура?

Число логически, к компу подлючается Ардуина,  которая работает как USB HID устройство, а уже к ней - PS/2 клава(как клавиатурный блок по сути). Значит - USB HID.

Благодаря вам открыл для себя, что как минимум некоторые современные USB клавиатуры до сих пор поддерживают режим PS/2.
Если честно, я когда только начинал все это делать, сам удивился, когда клавиатура с Али заработала как PS/2 устройство через переходник). А потом и бюджетная logitech k120.

Иллюстрация к комментарию
0
Автор поста оценил этот комментарий

я имел в виду кнопки на цифровые входы прикрутить без ps/2 клавиатуры, тогда можно было бы впихнуть все в один корпус и было бы удобно. А вот USB клавиатуру так вообще просто не прикрутишь. Тут USB host надо

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Если USB клава поддерживает ps2 режим - можно прикрутить. В посте об этом и писал.
Да и Вообще, что мешает спаять клавиатуру на своих свичах (как матричную) и подключить через ps/2 библиотеку?
0
Автор поста оценил этот комментарий

Об AHK, вы,  видимо, не слыхали.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Слышали, пользовались, понравилось. Еще вопросы риторические будут?

0
Автор поста оценил этот комментарий

Угу, большое спасибо. Это же именно скетч не для чтения данных с клавы, а для её эмуляции ардуиной?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Насколько я понял - библиотека работает в обе стороны. Но могу ошибаться.

0
Автор поста оценил этот комментарий

Вот вопрос - есть ли где библиотека для эмуляции PS/2 клавы ардуиной? Лично я не нашёл, может кто подскажет?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Добавил в папку по ссылке внизу поста. Туда же добавлю потом список всех сайтов, откуда черпал инфу.
показать ответы
0
Автор поста оценил этот комментарий
Блин, уважаемый, где были Вы и Ардуино в 2008-2010 годах когда я играл в L2
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

:D Поверь, у меня было много таких же ситуаций, когда начал изучать ардуину...)

0
Автор поста оценил этот комментарий

Плюс за прямую ссылку на исходники. На пикабу с этим проблема.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Самого это раздражало всегда).

Если будет не лениво, добавлю в ту же папку еще все используемые библиотеки и

Lite"версию скетча с 1 режимом работы.

0
Автор поста оценил этот комментарий

Не плохо бы уж и экранчиками под кнопки замутиться, был же похожий проект у лебедева...  Вопрос , однако в цене как я понимаю...

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это было бы дорого, да).
У меня была идея добавить в проект OLED диспллей с обозначениями клавиш, но потом решил упростить и сделать индикацию лишь светодиодами.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества