NeoLex

NeoLex

пикабушник
193К рейтинг 120 подписчиков 22К комментариев 151 пост 16 в горячем
164

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

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост

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


Идея заиметь себе программируемую клавиатуру родилась у меня довольно таки давно. По работе и не только, я уже около 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, просто потому что они были под рукой.

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост

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

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

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост
[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост

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

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

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост


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

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


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

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

#comment_61663005

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост

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

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост

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

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

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

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

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

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

ГуглДиск


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

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

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

Показать полностью 6 4
19

Автовыключалка телевизора на Ардуино, или "АнтиСпящийБатя v.0.3"

Доброго времени суток. 

Более года назад я начал увлекаться ардуиной, и в частности одним из первых задуманных к исполнению проектов, было устройство, которое выключало бы телевизор в определенный момент времени, например, когда условный "батя" уснул в 3 часа ночи)

Собственно  вот в этом посте я просил помощи у местных товарищей(и отдельное спасибо некоторым за помощь), в изготовлении этой приблуды.

И вот, не так давно руки дошли таки запилить первый сырой рабочий прототип).

Автовыключалка телевизора на Ардуино, или "АнтиСпящийБатя v.0.3" Arduino, Flprog, Irremote, Длиннопост

Схема собирается вот так

Автовыключалка телевизора на Ардуино, или "АнтиСпящийБатя v.0.3" Arduino, Flprog, Irremote, Длиннопост

Весь код писался в программе FlProg.

Автовыключалка телевизора на Ардуино, или "АнтиСпящийБатя v.0.3" Arduino, Flprog, Irremote, Длиннопост

Как видите, в проект я добавил дисплей, чтобы отслеживать не сбиваются ли часы, но в последствии решил не ставить его.

Как собирать все это.
1. Подключаем компоненты как указано на схеме выше.
2.Устанавливаем часы реального времени

3.Считываем код нужной кнопки ИК пульта

Автовыключалка телевизора на Ардуино, или "АнтиСпящийБатя v.0.3" Arduino, Flprog, Irremote, Длиннопост

сохраняем его, и добавляем в блок IRsend

Автовыключалка телевизора на Ардуино, или "АнтиСпящийБатя v.0.3" Arduino, Flprog, Irremote, Длиннопост
Автовыключалка телевизора на Ардуино, или "АнтиСпящийБатя v.0.3" Arduino, Flprog, Irremote, Длиннопост

4.Выставляем нужное время в блоке RTC Alarm (будильник)

Автовыключалка телевизора на Ардуино, или "АнтиСпящийБатя v.0.3" Arduino, Flprog, Irremote, Длиннопост

4.Заливаем код в Ардуину

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

Компоненты которые были использованы в поделке:

1. Ардуино NANO

2. Резисторы - 10 кОм, 200 Ом.

3. Модуль часов реального времени DS3231

4.IR светодиод(белый)

вместо него можно использовать готовый модуль HX-53

Автовыключалка телевизора на Ардуино, или "АнтиСпящийБатя v.0.3" Arduino, Flprog, Irremote, Длиннопост
Показать полностью 7
Отличная работа, все прочитано!