Автор Тема: Ик приемник  (Прочитано 11040 раз)

Оффлайн him

  • Завсегдатай
  • *
  • Сообщений: 1 032
Re: Ик приемник
« Ответ #30 : 14.12.2015 22:41:35 »
победили на com порту:
# setserial /dev/ttyS0 uart none
# modprobe lirc_serial
# mode2
# irrecord -H default -d /dev/lirc0 /etc/lircd.conf

# echo 'LIRCD_OPTIONS="-H dev/input -d /dev/lirc0"' >> /etc/sysconfig/lircd

# service lircd start
# irw

# gpasswd -a <пользователь> lirc

вот как то так!

Оффлайн him

  • Завсегдатай
  • *
  • Сообщений: 1 032
Re: Ик приемник
« Ответ #31 : 16.12.2015 23:33:04 »
подскажите, как лучше сделать автозапуск:
# setserial /dev/ttyS0 uart none
# modprobe lirc_serial
# service lircd start
$ irexec -d
при загрузке компьютера?
« Последнее редактирование: 17.12.2015 00:43:20 от him »

Оффлайн him

  • Завсегдатай
  • *
  • Сообщений: 1 032
Re: Ик приемник
« Ответ #32 : 17.12.2015 12:40:06 »
на сколько правильно для автоматической загрузки
# modprobe lirc_serial
сделать так:

echo 'lirc_serial' >> /etc/modules
?

изучение темы автозагрузки:
https://forum.altlinux.org/index.php?topic=184.150

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

как мне сделать все таки авто загрузку?


в интернете нашел:
/var/lib/setserial/autoserial.conf
конфигурирования порта, туда рекомендуют вставить:
setserial /dev/ttyS0 uart none
в альте нету такого файла!
может что то есть в замену??
« Последнее редактирование: 17.12.2015 17:22:30 от him »

Оффлайн him

  • Завсегдатай
  • *
  • Сообщений: 1 032
Re: Ик приемник
« Ответ #33 : 18.12.2015 12:39:11 »
подскажите!
файл конфигурации lircrc от irexec
    begin
        prog    = ...
        remote  = ...
        button  = ...
        [button = ...] (optional, for key sequences)
        repeat  = ...
        delay   = ...
        ignore_first_events = ...
        config  = ...
        [config = ...] (optional, for toggle button behaviour)
        mode    = ...
        flags   = ...
    end

что означает поле prog    = ... я ни как не могу понять.
на оф сайте написано:
gives the name of the program that should receive the configstring given in config.

я так понимаю что значение может быть "kodi" или "irexec" а вчем разница?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email

Оффлайн him

  • Завсегдатай
  • *
  • Сообщений: 1 032
Re: Ик приемник
« Ответ #36 : 20.12.2015 19:42:24 »
(пишу статью, стадия: прием замечаний)
Установка и настройка медиацентра kodi(xbmc) lirc с пультом ДУ под AltLinux
Предисловие: Захотел я как то собрать медиа-проигрыватель, что бы было можно фильмы смотреть и мультики, я давно пытаюсь отказаться от телевизора, надоела мне эта реклама. Мне хотелось, что бы все было удобно, управлялось с пульта от телевизора или музыкального центра. Информации было много в интернете. Но я захотел все сделать под себя, так что, вот что получилось!

Итак моя ОС AltLinux 7, графический интерфейс mate, это бывшие гномики версии 2 вроде как.
Итак настраиваем репозиторий, обновляем его.
Устанавливаем сам медиа проигрыватель. Называется он kodi старое название xbmc.
# apt-cache search kodi
kodi - Kodi Media Center
# apt-get install kodi
Так же нам понадобится программа которая будет принимать сигналы с пульта дистанционного управления по ИК каналу и выполнять какие то действия.
# apt-get install lircУстановили, отлично.
Теперь давайте соберем сам приемник ИК. Схем много в интернете, вот точно рабочая.
Прицепил, называется рис. 2.png
Это самый простой и рабочий вариант. Насколько слов по схеме. Диодик нужен для того, что бы не испортить нашу схему от переплюсовки. Например, когда наш компьютер загрузился, то на 7 ноге (RTS) будет -12 вольт. Схема не включится, но и не сгорит. Диод можно поставить почти любой мало мощный, я поставил советский КД522Б.
Далее идет резистор. Он используется для оттяжки. Точность его не особо сильно важна, просто значение 4,7 КилоОма оптимально, но можно и 5к1 и 10к. По мощности любой, если советский то 0,125Вт, можно даже smd капельку поставить, тоже подойдет.
Далее идет пяти вольтовый стабилизатор напряжения. Если нет того, что в схеме указан, можно поставить крен5а. Распиновки можно посмотреть в интернете.
Конденсатор электолитический 4,7-20 микрофарад, с напряжением от 6,3 вольта, главное полярность не перепутайте.
Инфро Красный приемник указанный в схеме, это сборка, с ИК фото диодом, фильтрами, замечательная вещь! Тут надо знать одну тонкость, 38 в номере это означает частоту модуляции несущей сигнала. Разные пульты используют разные частоты, тем самым они пытаются не мешать друг другу. Поэтому перед покупкой этой микросхемы надо узнать несущую Вашего пульта. На практике мне это сделать самому без дорогих приборов не удалось. И в интернете я ничего не нашел для своего пульта. Взял 1738, потом 1736 и тот, и тот работали прекрасно. Значит мне повезло. Но есть пульты у которых несущая 56кГц по моему, но надеюсь это будет не Ваш случай.
Можно так же дополнительно навесить всяких светодиодиков, что бы они мигали при нажатии на кнопки или горели при включении, но это уже факультативчик. Главное не перестарайтесь, более 20 милиАмпер не нагружайте свое устройство, так как будет падать напряжение.
Все собираем.
Кстати, кому интересно, все детальки запихиваются в пласмаску-ручку ком-порта, а ИК датчик выносится на коротеньких проводках наружу. В качестве разъема для ИК датчика я использовал разъем от спикера, 4 пина, который втыкается в материнку, с черным и красным проводками.
В современных материнских платах com-порт не выводится на ряду с другими разъемами на панельку, но есть вероятность, что он есть введе штырьков на самой материнке.
И так в тыкаем чудо девайс и смотрим видет ли его система.
$ ls /dev | grep ttyS
ttyS0
ttyS1
ttyS2
ttyS3
хм.. интересно.. но вобщем мой com1 - это ttyS0
Ядро ОС как правило занимает устройтво /dev/ttyS0 и нам его надо освободить для "личных" целей. Даем команду от рута.
# setserial /dev/ttyS0 uart noneпосле этого загружаем модуль ядра
# modprobe lirc_serialМожно проверить, что все загрузилось
# lsmod | grep lirc_serial
lirc_serial             9923  0
lirc_dev                9370  1 lirc_serial

После этого, на контакте 7 (RTS) com-порта появляется +12 вольт и наше устройство включается.
Так же должно появиться устройство /dev/lirc0 смотрим
# ls /dev | grep lirc
lirc0
Проверяем как работает приемник.
# mode2
space 10040
pulse 174
space 19128
pulse 332
space 499
pulse 375
space 452
.....
Нажимаем на кнопки пульта и должны видеть pulse, space. Это значит что все читает! Поздравляю.
Дальше сложнее. Нам надо собрать файл в котором будут коды нашего пульта соответствовать неким названиям-кодам. Этот файл будет находится тут /etc/lircd.conf На самом деле тут (http://lirc.sourceforge.net/remotes/) можно попробовать найти готовый файл /etc/lircd.conf с кодами от Вашего пульта. Но я делал сам с помощью программки irrecord.

Ознакомимся с "названиями-кодами"
$ irrecord --list-namespace
KEY_0
KEY_102ND
.....
Так мы будем называть прилетающие коды от нашего пульта. Следующее на что стоит обратить внимание, это на сколько наворочен Ваш пульт. Мой простенький пульт toshiba ct-90090 считывался командой
# irrecord -H default -d /dev/lirc0 /etc/lircd.conf
Но я захотел прицепить соньку... sony rm-pp412 мой маленький программируемый комбаин. Оказалось он таким образом не считывается. Пришлось по другому его читать.
# irrecord -f -H default -d /dev/lirc0 /etc/lircd.confИ вот что у меня получилось.
# cat /etc/lircd.conf

# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0(default) on Mon Dec 14 23:38:57 2015
#
# contributed by
#
# brand:                       /etc/lircd.conf
# model no. of remote control:
# devices being controlled by this remote:
#

begin remote

  name  sony_RM-PP412-video11
  flags RAW_CODES|CONST_LENGTH
  eps            30
  aeps          100

  gap          45015

      begin raw_codes

          name KEY_LEFT
             2473     511     687     551    1261     510
              667     558     651     506     669     573
             1264     497    1305     545    1264     503
             1250     580     670     499    1253     584
              663

          name KEY_RIGHT
             2460     539    1221     613     625     543
              628     557     649     585     639     527
             1248     593    1236     549    1261     530
             1250     578     625     551    1245     584
              623

          name KEY_UP
             2391     601     627     529    1248     599
              635     519     655     591     622     543
              622     586    1254     536    1210     624
             1236     554     626     584    1227     564
              625

          name KEY_DOWN
             2454     547    1253     479    1280     587
              657     501     669     581     628     537
              672     537    1277     514    1286     548
             1250     509     689     551    1252     507
              685

          name KEY_OK
             2422     530    1279     575     632     546
              626     584     627     540    1219     614
              627     541    1214     621    1240     550
             1249     580     627     541    1259     572
              628

          name KEY_ENTER
             2373     619     626     542    1249     582
              627     543    1244     589    1241     548
              624     584    1251     548    1249     582
             1222     529     624     625    1215     537
              661

          name KEY_EXIT
             2413     545    1300     505    1300     515
             1284     550     625     499    1332     546
             1251     504    1283     570     641     508
              691     484     657     540     659     584
             1285     508    1292     543     623     543
             1295

          name KEY_PLAY
             2447     552     621     544    1290     546
              622     544    1284     547    1251     509
              700     538     627     541    1302     535
             1248     541     669     540    1252     536
              685

          name KEY_PAUSE
             2485     513    1298     522     678     502
              663     574    1263     499    1302     534
              666     502     700     540    1258     498
             1303     540     657     502    1308     500
              668

          name KEY_STOP
             2443     555     624     582     628     540
              652     560    1250     541    1247     584
              625     546     634     555    1265     567
             1226     582     627     570    1220     584
              629

          name KEY_NEXT
             2416     587     620     541     687     521
             1284     512    1251     577    1254     542
              671     535     626     541    1252     559
             1273     541     675     530    1253     542
              669

          name KEY_PREVIOUS
             2427     540    1213     622    1238     519
              625     617    1233     526    1284     573
              634     542     623     585    1236     558
             1249     574     632     542    1250     578
              624

          name KEY_VOLUMEUP
             2420     555     704     500    1249     544
              707     503     663     531    1254     549
              669     581     629     496     716     526
              635     543     698     509     664     504
             1268     526    1230     599     685     525
              665

          name KEY_VOLUMEDOWN
             2506     489    1289     508    1328     496
              668     509     699     501    1287     534
              675     504     721     518     638     537
              685     524     668     499     708     502
             1291     501    1321     511     664     507
              704

          name KEY_MUTE
             2517     481     712     518     645     510
             1326     524     640     509    1334     521
              636     542     704     504     670     498
              721     488     684     543     647     503
             1326     517    1292     494     699     521
              648

          name KEY_POWER
             2451     548    1250     541     627     584
             1256     534     648     561    1254     555
              650     543     622     596    1236     548
             1260     530     627     583    1256     557
              636

          name KEY_MENU
             2403     587    1208     579     627     586
             1204     564    1282     532     624     587
              623     593    1195     590    1260     552
             1246     562     623     570    1254     553
              624

          name KEY_PREVIOUSSONG
             2483     514     665     582    1245     511
             1295     551     648     506    1298     552
              645     505    1295     562    1241     523
             1249     578     665     508    1251     584
              653

          name KEY_NEXTSONG
             2474     526    1279     486    1297     508
             1314     509     668     510    1320     502
              667     533    1294     506    1249     543
             1305     532     662     502    1312     523
              628
             
  name KEY_VIDEO
             2441     557     636     539    1271     560
              630     540     626     582     628     564
             1228     581     625     548     676     532
              628     590     653     504     672     572
             1244     513    1291     563     640     510
              657
             
      end raw_codes

end remote
После создания своего файла, открываем его на редактирование и правим название пульта, у меня оно такое: name  sony_RM-PP412-video11 По этому названию, в дальнейшем будет определяться наш пульт, точнее команды именно с нашего пульта, а не кого то там другого. Это важный момент.

Вносим строчку в другой конфиг:
# echo 'LIRCD_OPTIONS="-H dev/input -d /dev/lirc0"' >> /etc/sysconfig/lircd так он выглядет у меня:
# example config for creative audigy 2 livecdrive
# see https://bugzilla.altlinux.org/show_bug.cgi?id=9454
#
# OPT="--driver livedrive_midi -c /dev/snd/midiC0D1"



# OPT="-H dev/input -d /dev/lirc0 /etc/lircd.conf"
# OPT="-H dev/input -d /dev/lirc0 /etc/lircd.conf"
# OPT=" /etc/lircd.conf"
# OPT="--driver dev/input --device /dev/lirc0 /etc/lircd.conf"
# LIRCD_OPTIONS="-H dev/input -d /dev/input/event7"
LIRCD_OPTIONS="-H dev/input -d /dev/lirc0"



#DRIVER=default
#HWMOD="lirc_serial"
#DEVICE=/dev/lirc0
#COM_PORT=/dev/ttyS0
#DRIVER_OPTS="irq=4 io=0x3e8"
#####DRIVER_OPTS="irq=4 io=0x3f8"

Теперь стартуем
# service lircd startДля диагностики или рестартов есть такие варианты
# service lircd stop
# service lircd restart
# service lircd status
После этого смотрим как все работает, запускаем, жмем на кнопки с пульта.
# irw
0000000000000008 00 KEY_PLAY sony_RM-PP412-video11
0000000000000008 01 KEY_PLAY sony_RM-PP412-video11
0000000000000008 02 KEY_PLAY sony_RM-PP412-video11
0000000000000008 03 KEY_PLAY sony_RM-PP412-video11
0000000000000009 00 KEY_PAUSE sony_RM-PP412-video11
0000000000000009 01 KEY_PAUSE sony_RM-PP412-video11
0000000000000009 02 KEY_PAUSE sony_RM-PP412-video11
0000000000000009 03 KEY_PAUSE sony_RM-PP412-video11
000000000000000a 00 KEY_STOP sony_RM-PP412-video11
000000000000000a 01 KEY_STOP sony_RM-PP412-video11
000000000000000a 02 KEY_STOP sony_RM-PP412-video11
000000000000000a 03 KEY_STOP sony_RM-PP412-video11
Ура. Все получилось. Здесь мы видем код кнопки и имя пульта. Если у Вас такого нету. Причина кроется в ошибке файлов /etc/sysconfig/lircd или /etc/lircd.conf  !!! Я много времени потратил что бы их победить. Использовал метод научного тыка. Так как документация на них суха, и многие вещи мне были не понятны.

Пробуем запустиь kodi
$ kodiОн создаст свои папки.
Теперь нам надо научить kodi все это дело понимать с пульта. Копируем файл
$ cp /usr/share/kodi/system/Lircmap.xml ~/.kodi/userdata/Lircmap.xmlДалее его правим. Хотя рекомендуют его не трогать, а подключать свой файл.
Этот файл ждет команду с пульта имя которого sony_RM-PP412-video11 и каждому коду сопоставляет действие.
Моя допись в файл выглядит так
$ cat ~/.kodi/userdata/Lircmap.xml
.......
<star>KEY_NUMERIC_STAR</star>
<hash>KEY_NUMERIC_POUND</hash>
<red>KEY_RED</red>
<green>KEY_GREEN</green>
<yellow>KEY_YELLOW</yellow>
<blue>KEY_BLUE</blue>
<recordedtv>KEY_PVR</recordedtv>
<liveradio>KEY_RADIO</liveradio>
</remote>

<remote device="sony_RM-PP412-video11">
<left>KEY_LEFT</left>
<right>KEY_RIGHT</right>
<up>KEY_UP</up>
<down>KEY_DOWN</down>
<select>KEY_OK</select>
<enter>KEY_ENTER</enter>
<back>KEY_EXIT</back>
<play>KEY_PLAY</play>
<pause>KEY_PAUSE</pause>
<stop>KEY_STOP</stop>
<forward>KEY_NEXT</forward>
<reverse>KEY_PREVIOUS</reverse>
<volumeplus>KEY_VOLUMEUP</volumeplus>
<volumeminus>KEY_VOLUMEDOWN</volumeminus>
<mute>KEY_MUTE</mute>
<power>KEY_POWER</power>
<menu>KEY_MENU</menu>
<StepForward>KEY_PREVIOUSSONG</StepForward>.
<StepBack>KEY_NEXTSONG</StepBack>
</remote>
</lircmap>
После этого можно запустить kodi и он прекрасно будет управляться с пульта. Есть и другие поддерживаемые команды kodi, но это будет для самостоятельного изучения.

Теперь небольшой тюнинг.
# gpasswd -a <пользователь> lircДобавляем Вашего пользователя в группу.
Теперь автоматизируем все это чудо, что мы делали с Вами руками. Что бы при включении компьютера, все необходимые настройки загружались сами. И пульт был бы готов к работе по умолчанию. Я понимаю, что у Линукса все авто запуски разделены по уровням, но я сделал так
# cat /etc/rc.d/rc.local
#!/bin/sh

setserial /dev/ttyS0 uart none
modprobe lirc_serial
service lircd start
Дал ему права на запуск.
# chmod +x /etc/rc.d/rc.localОтлично, далее мне захотелось, что бы kodi запускался с пульта.
Тоже возможно. Делаем такой файлик
cat ~/.xsession.d/start_irexec.sh
#/bin/sh
/usr/bin/irexec --daemon ~/.lircrc
Даем права на исполнение. Поясню, это что бы выполнялся автоматический запуск программы которая следит за нажатием кнопки "запустить kodi" в Операционной Системе. Запуск происходит после того как пользователь залогинился.
Далее файл конфигурации этой програмки
cat ~/.lircrc   
    begin
        prog    = irexec
        remote  = sony_RM-PP412-video11
        config  = ~/kodi_start.sh
        button  = KEY_VIDEO
        repeat  = 0
    end
Здесь
- название программы обработчика, у всех одинаково.
- имя пульта, у меня такое, писал об этом ранее
- далее идет скрипт запуска kodi
- кнопка на пульте к которой привязан запуск kodi.

Кстати я сделал разные кнопки "Старт/Включения" и "Выключения" kodi, что бы не было конфликтов.
Далее сам скрипт
cat ~/kodi_start.sh 
#/bin/sh

if [ "`ps -C kodi.bin -o comm=`" != 'kodi.bin' ]; then
nohup kodi -fs &
exit 1
fi
Не забудьте дать ему права на исполнение! Этот скрипт следит за тем, что бы не произошел двойной запуск kodi, при повторном нажатии кнопки "Старт" kodi на пульте.

Далее у меня была проблема со звуком. При запуске ОС он всегда выключен, и это мне не нравилось. Решение тоже нашлось. Надо установить
# apt-get install pavucontrol
И теперь можно получать удовольствие!!!

Автологин в mate 7
# /usr/libexec/lightdm/lightdm-set-defaults -a `Ваш пользователь`
Как с пульта завершить kodi и выключить компьютер? Вот ответ:
Запускаем kodi идем в "Система" - "Настройки" - "Система", включаем уровень настроек эксперт, далее "Экономия энергии" - "Режим выключения" и здесь ставим "Выключение".

Для справки права на некоторые файлы:
 -rwxr--r-- 1 user user 88 дек 20 19:13 kodi_start.sh
-rw-r--r-- 1 user user 165 дек 20 19:09 .lircrc
-rwxr--r-- 1 user user 46 дек 20 19:07 ~/.xsession.d/start_irexec.sh
-rw-r--r-- 1 user user 16101 дек 16 23:07 ~/.kodi/userdata/Lircmap.xml
-rwxr-xr-x 1 root root 83 дек 17 23:39 /etc/rc.d/rc.local
-rw-r--r-- 1 root root 6367 дек 17 00:27 /etc/lircd.conf
-rw-r--r-- 1 root root 594 дек 10 23:21 /etc/sysconfig/lircd

Версии ПО:
kodi-15.2-alt0
lirc-0.9.0-alt3
Linux 3.8.13.3-std-def-alt1.M70P.1 i686 GNU/Linux

Полезные ссылки:
http://www.lirc.org/
https://xbmc.org/
http://xbmc.ru/forum/

Дата написания статьи: 20.12.2015

=====================================
Прошу разместить мою статью на wiki       
Для полноты картины, кто бы помог с переводом lirc на русский ..
« Последнее редактирование: 11.01.2016 00:45:50 от him »