Аудиосистема на CubieBoard a10, или пытаемся подружить кубик и пульт
Ожидает приглашения
Всем привет! В данном проекте я расскажу, как на кубиборде управлять медиаплеером MOCP (консольным) с помощью пульта ДУ.
Итак, варите кофе, поехали.
У нас имеется:
1 cubieboard a10 (далее кубик);
2 Пульт от ТВ;
3 Крепкий кофе.
Кубик заранее прошит Cubian БЕЗ графического интерфейса. Изначально на кубике не запущен модуль, отвечающий за IR. Для инициализации при загрузке дописываем в файл /etc/modules строчку sunxi_ir.
Перезагружаемся.
Чтобы проверить работоспособность, набираем:
Тыкаем кнопочки на пульте. Если появляются символы навроде

… то всё работает успешно. Выходим. Не забываем про кофе.
Далее ставим сам плеер.
Пока программа устанавливается, я расскажу, почему выбрал именно её. Во-первых, mocp запускается как демон, и можно закрыть интерфейс, не останавливая музыку. Во-вторых, есть управление с помощью аргументов (подробнее: man mocp). В-третьих, управление горячими клавишами почти интуитивное.
Установка должна пройти без проблем. Запуск для проверки работоспособности:
Должно вылезти такое чудо:

Пока всё гут.
Сейчас создаём файл ir и копируем туда код:
Думаю, комментарии говорят сами за себя. Один момент. В скобках после case вписывайте 7 блок из команды
Запускаем плеер, выбираем папку с музыкой. Далее запускаем нашу программу как демон:
Получаем примерно такую картину:

Если ошибок нет, то можно уже пользоваться.
P.S. 2 месяц теста — полёт нормальный.
Подготовка
Итак, варите кофе, поехали.
У нас имеется:
1 cubieboard a10 (далее кубик);
2 Пульт от ТВ;
3 Крепкий кофе.
Кубик заранее прошит Cubian БЕЗ графического интерфейса. Изначально на кубике не запущен модуль, отвечающий за IR. Для инициализации при загрузке дописываем в файл /etc/modules строчку sunxi_ir.
Перезагружаемся.
Чтобы проверить работоспособность, набираем:
cat /dev/input/event1 | hexdump
Тыкаем кнопочки на пульте. Если появляются символы навроде
… то всё работает успешно. Выходим. Не забываем про кофе.
Далее ставим сам плеер.
apt-get install mocp
Пока программа устанавливается, я расскажу, почему выбрал именно её. Во-первых, mocp запускается как демон, и можно закрыть интерфейс, не останавливая музыку. Во-вторых, есть управление с помощью аргументов (подробнее: man mocp). В-третьих, управление горячими клавишами почти интуитивное.
Установка должна пройти без проблем. Запуск для проверки работоспособности:
mocp
Должно вылезти такое чудо:
Пока всё гут.
Сам код
Сейчас создаём файл ir и копируем туда код:
#!/usr/bin/php5
<?php
$dev="/dev/input/event1";
$f=fopen($dev, 'rb');
if($f){
while (!feof($f)){
$b=fread($f,32); //каждая кнопка формирует данные по 64 бита, 32-нажата кнопка, еще 32 - отпустили
$d=bin2hex($b); //получили hex строку
$d=substr($d,18,8); //код кнопки пульта и её статус
$button=substr($d,0,4); //кнопка
$key=substr($d,4); //0001 или 0000
switch($button){
case "0007":
if ($key=="0001"){shell_exec("mocp --next");} //следующий трек
shell_exec("echo " .($key=="0001"?"255":"0"). " > /sys/class/leds/blue\:ph21\:led2/brightness"); //зажигаем синий светодиод
break;
case "0004":
if ($key=="0001"){shell_exec("mocp -r");} // предидущий трек
shell_exec("echo " .($key=="0001"?"255":"0"). " > /sys/class/leds/blue\:ph21\:led2/brightness");//зажигаем синий светодиод
break;
case "00ff":
if ($key=="0001"){shell_exec("mocp -G");} // пауза / проигрывание
shell_exec("echo " .($key=="0001"?"255":"0"). " > /sys/class/leds/blue\:ph21\:led2/brightness");//зажигаем синий светодиод
break;
case "0002":
if ($key=="0001"){shell_exec("mocp -v+5");} // громкость+
shell_exec("echo " .($key=="0001"?"255":"0"). " > /sys/class/leds/blue\:ph21\:led2/brightness");//зажигаем синий светодиод
break;
case "0006":
if ($key=="0001"){shell_exec("mocp -v-5");} // громкость-
shell_exec("echo " .($key=="0001"?"255":"0"). " > /sys/class/leds/blue\:ph21\:led2/brightness");
break;
}
}
}
?>
Думаю, комментарии говорят сами за себя. Один момент. В скобках после case вписывайте 7 блок из команды
cat /dev/input/event1 | hexdump
. Это номер клавиши на пульте. Сохраняем. Даём права на исполнение:chmod +x /home/cubie/ir
Запускаем плеер, выбираем папку с музыкой. Далее запускаем нашу программу как демон:
./ir &
Получаем примерно такую картину:
Если ошибок нет, то можно уже пользоваться.
P.S. 2 месяц теста — полёт нормальный.