QNAP NASКомпьютер

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

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



“Железо” – Hardware

Пульт

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



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

Для реализации приемника была использована плата Arduino DUE с подключеному к ней ИК приемником TSOP1738 выход которого подключен к 3 пину платы.


Программа – Software

В интернете можно найти множество подобных реализаций. В Arduini IDE была написана простая программа с использованием двух библиотек:

#include <IRremote2.h>
#include <Keyboard.h>
int receiver_pin = 3; // input pin from receiver
char ctrlKey = KEY_LEFT_GUI;
IRrecv irrecv(receiver_pin);
decode_results results;

int key;
int count;

void setup()
{
  Serial.begin(9600);
  Keyboard.begin();
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    switch (results.value)
    {
      case 0xFF629D: // Up
        key = KEY_UP_ARROW;
        count = 0;
        break;
      case 0xFFA857: // Right
        key = KEY_RIGHT_ARROW;
        count = 0;
        break;
      case 0xFF6897: // down
        key = KEY_DOWN_ARROW;
        count = 0;
        break;
      case 0xFFE21D: // Left
        key = KEY_LEFT_ARROW;
        count = 0;
        break;
      case 0xFFAA55: // Ok
        key = KEY_RETURN;
        count = 0;
        break;
      case 0xFF02FD: // Home
        key = KEY_BACKSPACE;
        count = 0;
        break;
      case 0xFF42BD: // Play
        key = ' ';
        count = 0;
        break;
      case 0xFF609F: // Back
        key = KEY_ESC;
        count = 0;
        break;
      case 0xFFE817: // Mute
        key = KEY_F8;
        count = 0;
        break;
      case 0xFF28D7: // Vol-
        key = '-';
        count = 0;
        break;
      case 0xFF08F7: // Vol+
        key = '+';
        count = 0;
        break;
      case 0xFF18E7: // Power
        key = 's';
        count = 0;
        break;  
      case 0xFF20DF: // Screen
        key = 'z';
        count = 0;
        break;  
      case 0xFFFFFFFF:
        count++;
        break;
      default:
        key = -1;
        break;
    }

    if ((key != -1) && (count!=1)) // if count = 1, it is the first key repeat, so ignore it.
      Keyboard.write(key);

    irrecv.resume(); // Receive the next value
  }
}

Програмирование

  1. В Arduino IDE установите библиотеки:

В программе задайте переменной “receiver_pin” номер ножки к которой у вас подключен ИК приемник.

  1. Подключайте Arduino DUE к компьютеру через порт для программирования – Programming Port.
  1. В Arduino IDE указываем порт через который подключена плата Arduino DUE.
  1. Загружаем скетч в Arduino DUE.
  1. В Arduino IDE открываем монитор порта. Направляем пульт в сторону приемника и нажимаем на пульте кнопку “вверх”. Наблюдаем на мониторе порта код нажатой кнопки.
  1. Берем код нажатой кнопки и вписываем его в программу.

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

Теперь при приеме от пульта кода FF629D программа присвоит переменной key код кнопки Верх (KEY_UP_ARROW) и далее в режиме эмуляции PC клавиатуры через USB соединение отправит этот код на компьютер.

  1. Для работы Arduino DUE в режиме эмуляции клавиатуры подключите плату к компьютеру через разьем Native USB Port.