QNAP NASКомпьютер

ИК приемник для Kodi (XBMC) – PS/2

Kodi (ранее XBMC) — бесплатный кроссплатформенный медиаплеер и программное обеспечение для организации HTPC. В самом проигрывателе уже есть поддержка управления функциями с помощью клавиатуры. Но так как пользование пультом для простых функций управления все же удобней, было решено добавить такую функцию. По сути без установки дополнительного программного обеспечения это делается с помощью ИК пульта и приемника подключенного к компьютеру который принимает команды с пульта и в режиме эмуляции клавиатуры отправляет коды нажатой клавиши. Изначально проект был реализован на плате Arduino DUE (просто потому что она была в наличии) которая имеет аппаратный USB порт. Плата Arduino Nano не имеет аппаратного USB порта но так же может работать в режиме эмуляции клавиатуры при подключении в порт PS/2 компьютера.

В этом проекте была использована программа irmp2keyboard.


“Железо” – Hardware

Пульт

Для управления медиацентром подойдет в принципе любой пульт. Желательно чтобы пульт имел кнопки вверх-вниз, влево-вправо и ок для перемещения по меню. Мной был приобретен пульт от андроид приставки Tronsmart использующий протокол передачи данных NEC.


Приемник собраный на Arduino NANO

Для реализации приемника была использована плата Arduino NANO с подключеному к ней ИК приемником TSOP1738 выход которого подключен к пину D12 платы, штекер PS/2 – Data на D2 Arduino NANO, CLK на D3 Arduino NANO. Провод со штекером PS/2 был взят от старой мышки и схема прекрасно работает при включении в зеленый разьем для мыши.


На странице программы можно увидеть такое предупреждение:

- ВНИМАНИЕ: если порт PS2 напрямую подключен к Arduino, то загрузка плохого / неправильного скетча может повредить вашу материнскую плату! 
- То же самое применимо, если вы подключаете оба порта (PS2 и USB). Особенно, когда это делается между двумя разными ПК. 
- НИКАКИХ ГАРАНТИЙ! 
- Вас предупредили!

Программа – Software

Для проекта будем использовать программу irmp2keyboard. Вот чтот сказано на странице с программой:

IRMP2Keyboard – это простая в использовании прошивка Arduino, которая позволяет создать надежный приемник дистанционного управления для вашего ПК. Он может взаимодействовать через PS2 или USB. ПК видит ресивер как обычную клавиатуру. Вы сами выбираете, какие нажатия клавиш (или даже комбинации клавиш) будут выполняться при нажатии кнопок пульта дистанционного управления.

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

Основные особенности:

  • Поддержка многих пультов дистанционного управления благодаря библиотеке IRMP
  • Единственный инструмент, который вам понадобится для установки и настройки приемника IRMP2Keyboard, – это IDE Arduino .
  • Обе клавиатуры, PS2 и USB, можно “эмулировать”.
  • Запуск загрузки ПК с помощью пульта дистанционного управления, если ваша материнская плата поддерживает загрузку при нажатии клавиш клавиатуры PS2
  • В «режиме USB» можно настроить «код пробуждения», который при получении будет опускать контакт A3 на несколько миллисекунд. Вы можете использовать это, чтобы запустить Raspberry Pi для перезагрузки. Его также можно использовать для управления оптопарой для управления кнопкой питания на материнских платах ПК.

переходим на страничку программы irmp2keyboard.

Для скачивания программы себе на компьютер, жмем на странице на зеленую кнопку “Code” и потом “Download ZIP”.


Настройка программного обеспечения

Сначала в Менеджере библиотек Arduino нужно установить библиотеку “TimerOne“.

Чтобы ИК приемник управлял выбранным вами мультимедийным программным обеспечением, вы должны привязать кнопки пульта дистанционного управления к клавишам клавиатуры. Это делается в файле config_keybindings.h. Этот файл уже содержит привязки, которые я использую для справки.

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

Скорее всего, вам сначала нужно «расшифровать» пульт дистанционного управления, который вы хотите использовать. Для этого сначала загрузите скетч irmpdump .

Теперь откройте «Serial Monitor» и подготовьте эскиз irmp2keyboard для редактирования во втором окне Arduino IDE.

В мониторе порта при каждом нажатии клавиши на вашем пульте вы должны видеть код, похожий на этот:

0x02,0x7080,0x00c0,0x00

Выделите эту строку и переключитесь на IDE Arduino со своим скетчем irmp2keyboard. Включите вкладку с “config_keybindings.h” в ней. Здесь вам теперь нужно создать строки, подобные этой (и удалить строки, которые не нужны для вашей конфигурации):

  {{0x02,0x7080,0x00c0,0x00}, MOD_NONE, KEY_0},

Первая часть – это ваш код. Затем следует область модификаторов. Последнее поле – это фактическая клавиша, которую нужно нажать. Разрешенные ключи можно найти на вкладке PS2Keyboard.h в вашей среде разработки Arduino.

Пример с модификаторами (Ctrl + Alt + Entf)

  {{0x02,0x7080,0x00c0,0x00}, MOD_CTRL|MOD_ALT, KEY_DELETE},

Допустимые модификаторы:

  • MOD_CTRL
  • MOD_SHIFT
  • MOD_ALT
  • MOD_ALTGR

Обратите внимание что в файле «config.h» тип клавиатуры по умолчанию установлен PS2 в виде строки “#define PS2_KEYBOARD


Пример моего файла “config_keybindings.h”

Вот отрывок моего файла после того как я просканировал коды и вписал в соответствующие строки.

  {{0x02,0xff00,0x0047,0x00}, MOD_NONE, KEY_LEFT},
  {{0x02,0xbf40,0x004f,0x00}, MOD_NONE, KEY_LEFT},
  {{0x02,0xff00,0x0015,0x00}, MOD_NONE, KEY_RIGHT},
  {{0x02,0xbf40,0x0009,0x00}, MOD_NONE, KEY_RIGHT},
  {{0x02,0xff00,0x0046,0x00}, MOD_NONE, KEY_UP},
  {{0x02,0xbf40,0x000b,0x00}, MOD_NONE, KEY_UP},
  {{0x02,0xff00,0x0016,0x00}, MOD_NONE, KEY_DOWN},
  {{0x02,0xbf40,0x004c,0x00}, MOD_NONE, KEY_DOWN},
  // OK-Button
  {{0x02,0xff00,0x0055,0x00}, MOD_NONE, KEY_ENTER},
  {{0x02,0xbf40,0x004d,0x00}, MOD_NONE, KEY_ENTER},

Как вы можете заметить на каждую клавишу записано по два разных кода. Это коды от разных пультов. Первый код относится к пульту в начале статьи, но так как я пользуюсь DVB-T приставкой BBK c удобным пультом, я подумал что можно прописать коды от второго пульта тоже. И теперь можно взять любой из этих пультов и управлять проигрывателем KODI.