ИК приемник для 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
}
}
Програмирование
- В Arduino IDE установите библиотеки:
В программе задайте переменной “receiver_pin” номер ножки к которой у вас подключен ИК приемник.
- Подключайте Arduino DUE к компьютеру через порт для программирования – Programming Port.
- В Arduino IDE указываем порт через который подключена плата Arduino DUE.
- Загружаем скетч в Arduino DUE.
- В Arduino IDE открываем монитор порта. Направляем пульт в сторону приемника и нажимаем на пульте кнопку “вверх”. Наблюдаем на мониторе порта код нажатой кнопки.
- Берем код нажатой кнопки и вписываем его в программу.
Таким образом вписывайте в программу коды кнопок своего пульта и присваивайте им нужные значения.
Теперь при приеме от пульта кода FF629D программа присвоит переменной key код кнопки Верх (KEY_UP_ARROW) и далее в режиме эмуляции PC клавиатуры через USB соединение отправит этот код на компьютер.
- Для работы Arduino DUE в режиме эмуляции клавиатуры подключите плату к компьютеру через разьем Native USB Port.