NeoLex
[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, хвастался комбинациями в фотошопе.
Чтож, как говорил Сергей Дружко.
Так же, вот пример работы одних из самых популярных комбинаций клавиш.
Всего, как вы могли понять из схемы подключения, в этом проекте имеется 4 режима в работы клавиатуры, с индикацией на LED светодиодах.
В моем случае, на 4 режимах работы, уже получается не 17 программируемых клавиш (доп.клавиши к сожалению не работают на PS/2 клавиатурах), а 68.
Вообщем, это все. Проект сделан чисто для себя, и я всего лишь хотел поделиться с сообществом своими наработками.
Разумеется, это еще не финальная версия. В дальнейших планах - уложить все это в аккуратную коробочку, для более презентабельного вида.
Уже заказаны маленькие, удобные SMD светодиоды
Ссылка на код и схему подключения
Скетч представляет из себя только "каркас", но я думаю те, кто решится повторить этот проект, разберутся как сделать комбинации под свои нужды.
З,Ы Я гуманитарий, и лепил все это методом тыка и активного гугления.Поэтому, господа скептические программисты, можете сколь угодно критиковать мой кривой код, и высказывать недовольство на тему целесообразности данной поделки).
Советы и конструктивную критику обязательно приму к сведению.
Спасибо за внимание)
Автовыключалка телевизора на Ардуино, или "АнтиСпящийБатя v.0.3"
Доброго времени суток.
Более года назад я начал увлекаться ардуиной, и в частности одним из первых задуманных к исполнению проектов, было устройство, которое выключало бы телевизор в определенный момент времени, например, когда условный "батя" уснул в 3 часа ночи)
Собственно вот в этом посте я просил помощи у местных товарищей(и отдельное спасибо некоторым за помощь), в изготовлении этой приблуды.
И вот, не так давно руки дошли таки запилить первый сырой рабочий прототип).
Схема собирается вот так
Весь код писался в программе FlProg.
Как видите, в проект я добавил дисплей, чтобы отслеживать не сбиваются ли часы, но в последствии решил не ставить его.
Как собирать все это.
1. Подключаем компоненты как указано на схеме выше.
2.Устанавливаем часы реального времени
3.Считываем код нужной кнопки ИК пульта
сохраняем его, и добавляем в блок IRsend
4.Выставляем нужное время в блоке RTC Alarm (будильник)
4.Заливаем код в Ардуину
Собственно - все). Можно пользоваться.
Прошу не пинать тапками, ибо я знаю что все это можно было сделать более аккуратно, и с меньшим количеством костылей.
Компоненты которые были использованы в поделке:
1. Ардуино NANO
2. Резисторы - 10 кОм, 200 Ом.
3. Модуль часов реального времени DS3231
4.IR светодиод(белый)
вместо него можно использовать готовый модуль HX-53