Управление компьютером голосом используя Arduino, Digispark, ИК пульт и Яндекс.Алиса с умным пультом

Скрипты и Кодинг

Завелись у меня дома с недавних пор компактная умная колонка Яндекс.Станция Мини, а к ней спустя день был добавлен и умный пульт Яндекс. Связка удобная, но в некотором роде вынужденная мера. Так как у меня не большая Яндекс.Станция, а мини, с этим связаны некоторые ограничения, к примеру отсутствует возможность просмотра и управление фильмами напрямую, имея тот же смарт телевизор и включенную подписку на Кинопоиске. Добавив умный пульт, появилась возможность управлять голосовыми командами как телевизором, так и некоторыми другими домашними устройствами, имеющих ик порты и возможность управления пультами дистанционного управления.

При этом частенько я смотрю те же фильмы по подписке с компьютера, выведя картинку через HDMI порты на телевизор. Что еще нужно для счастья? Как оказалось все же мелочи, но нужны, хотя бы не бегать каждый раз компьютеру, чтобы нажать на воспроизведение или развернуть\свернуть фильм или переключить на следующую серию сериала, убавить звук, закрыть фильм и так далее. Одним словом получить возможность лежа на диване перед телевизором, осенним холодным вечером, смотреть фильмы и неспешно превращаться в кота, вальяжным голосом отдавая команды Алисе, чтобы она перечеркнула фильм, нажала на паузу и прочее. Как выяснилось это желание вполне осуществимо.

Потребуются следующие компоненты:

— Digispark USB-A на ATtiny85 (Цена 320 р.)
— Комплект:пульт дистанционного управления и приемник HX1838 (Цена 130 р.)

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

— Модуль реле 1-канальный 5V, (Цена 110 р.)

Необходимо только для управления голосом:

— Яндекс.Станция Мини
— Яндекс.умный пульт или аналоги

В целом общий принцип работы таков: Digispark с заранее залитым кодом и подключенным к нему ИК приемником, подключается к USB порту компьютера, после чего работая в качестве эмулятора клавиатуры, через ИК пульт дистанционного управления, мы отдаем Digispark пультом команды, выполняя которые он имитирует нажатия на клавиатуре с заранее прописанными клавишами и их комбинации. А имея умную колонку и умный пульт мы эти же команды можем отдавать голосом. А при наличии острой необходимости, еще и дистанционно выключать компьютер (Включать не получится, есть некоторые особенность работы кода Arduino, кому интересно, могу отдельно рассказать).

Первым делом необходимо скачать Arduino IDE.

Затем подключить Digispark к компьютеру, для чего вам понадобятся драйвера, очень советую воспользоваться официальной инструкцией или поискать в сети инструкции, так как расписывать процесс подключения настройки Arduino IDE и Digispark, тема отдельной статьи. Мы же будем считать, что у вас все уже давно настроено и готово к заливке кода скетча и его настройке под ваши нужды.

Приступаем к сборке:
Для общего понимания и удобства, ниже схема выводов и портов.

Собираем все необходимые компоненты по следующей схеме:

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

В конечном итоге должно получиться примерно такое:

Почти готово.

Если у вас такие же компоненты как у меня, вам останется только выбрать готовый скетч (код с реле или без него) и залить его в память вашего Digispark.

Код для использования без реле — Github [Digispark_IRcontrol.ino]
Код для использования с реле — Github [Digispark_IRcontrol_Relay.ino]

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

В данном примере мы используем следующие кнопки и комбинации

Кнопка на пульте: — Действие: VOL — (стрелка вниз)
Кнопка на пульте: + Действие VOL + (стрелка вверх)
Кнопка на пульте: << Действие Page Up Кнопка на пульте: >> Действие Page Down
Кнопка на пульте: >= Действие: SPACE
Кнопка на пульте: CH Действие: Mute Ctr + M
Кнопка на пульте: 200+ Действие: F11
Кнопка на пульте: 1 Действие: ESC
Кнопка на пульте: 2 Действие: EXIT ALT + X
Кнопка на пульте: 3 Действие: TAB TAB
Кнопка на пульте: 6 Действие: ENTER ENTER
Кнопка на пульте: 7 Действие: Backspace

Данные клавиши и их комбинации, подобраны под часто используемые нажатия на клавиатуре при просмотре фильмов в браузере или через Media Player Classic, используя готовый код, вы можете все легко адаптировать под свои потребности.

На случай если вам понадобятся другие кнопки и комбинации: список кодов

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

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

реклама


Принцип работы скетча следующий:

После заливки и применения кода, необходимо открыть текстовый документ. Поочередно нажимая на кнопки на пульте, в текстовый документ должны начать печататься коды кнопок. Дальше вам останется только взять эти готовые коды и по аналогии с готовым кодом, сделать свой вариант.

Если код в текстовом документе не появляется, или появляются только нули, но при этом на плате ИК приемника мигает индикатор получения сигнала, попробуйте менять значения в строке 4, большую или меньшую сторону. Например вместо #define DATA_SIZE 20 установить #define DATA_SIZE 25, если не вышло, то #define DATA_SIZE 30 и так до тех пор, пока код не начнет печататься.

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

Если у вас есть Яндекс.Станция Мини и Яндекс.умный пульт и вы хотите научить их управлять компьютером голосом, вместо вас, тогда читаем дальше.

Первым делом запускаем приложение «Яндекс» или устанавливаем, если оно у вас еще не установлено.

Идем в раздел сервисы > Устройства

Нажимаем на «Пульт» и войдя в меню настройки пульта, жмем на кнопку «Добавить устройство»

В разделе «Добавления устройства», в самом низу жмем на пункт «Настроить вручную».

В открывшемся окне даем название вашему устройству, например «компьютер» и жмем на «дальше».

В новом окне необходимо «Добавить команду» и следовать по инструкции.

В качестве совета:
— Устройство следует называть коротко и емко, при подаче голосовых команд вам нужно будет каждый раз его называть не путаясь и не запинаясь.

— Команды следует называть понятно, коротко и емко.

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

Например на пробел можно добавить такие команды:
-Нажми пробел
-Нажми паузу
-Пауза
-Нажми воспроизведение
-Воспроизведение
-Пробел

Конечная команда будет звучать так: Алиса, нажми пробел на компьютере.

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

Последняя версия DigiKeyboard.h на Github
Скетчи на Github все варианты и коды
Драйвера для Digispark
Оригинальный код взят у Lepeshka92

Совместимо с Windows 7-10 и с Mac OS ( на последнем просто воткнул в порт и все работает).

 
 
Вы нашли это полезным ?!
Если хотите отблагодарить, угостите чашечкой кофе ( yoomoney or ko-fi or boosty )

Отблагодарить автора

9 минут на чтение (0) комментарий

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

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *