• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в конкурсе "Таинственные миры" 2024!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык

ИК-пульт для медиацентра на платформе LibreELEC Raspberry Pi 3 b+

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
В свое время я рассказывал об одноплатном компьютере Raspberry Pi 3 b+. Использую я его вместе со старым (но, все же жидкокристаллическим) монитором в качестве IP-TV. Тут был бы уместен широкоформатный монитор, но что есть, то есть.
Понятно, что телевизором удобно управлять дистанционно. Поначалу я пользовался соответствующими приложениями на смартфоне, но это не очень удобно (по крайней мере для меня). Они перегружены функциональностью, из-за чего приходится листать экраны, чтобы добраться до нужной функции. Кроме того, это приложение еще надо открыть, да еще дождаться, пока оно запустится. Поэтому я сразу начал искать способ приладить обычный инфракрасный пульт. И, как оказалось, такое техническое решение есть и оно совсем несложное.
Для этого понадобилось:
1) Пульт
2) Инфракрасный датчик
3) 3 коротких провода
Поскольку я не хотел паять непосредственно к "гребенке" GPIO, появился еще один пункт
4) Разъем, совместимый с GPIO
Пульт у меня был от старой автомагнитолы. Маленький, не очень удобный, но он уже был.
О проводах говорить смешно.
Датчик и разъем я заказал на aliexpress. Поскольку стоят они сущие копейки, то минимальная партия 10 штук. Того и другого.
Помучался с распайкой, никак не хотели провода паяться к контактам разъема. Даже испортил один разъем. Пока я не догадался, что надо просто маленькими плоскогубцами вытащить контакты из пластмассовой основы, после чего трудности с пайкой исчезли. Кроме того, если вставить обратно только нужные контакты, то для насаживания разъема на "гребенку" и снятия его затрачивается гораздо меньше усилий.
Схема распайки известна и приведена на рисунке.

SvOXgmKLgbs.jpg




Разумеется, я постарался сделать все аккуратно, и выглядит это вот так:

72957


72958


72959






После того, как было покончено с электрической частью, настал черед конфигурирования LibreELEC.
Информацию я брал отсюда.
Важное замечание: этот способ работает на LibrELEC версии не ниже 8.2.5
Надеюсь, вы знаете, как войти через терминал на LibreELEC. Login - root, пароль - libreelec
Самое первое, что надо сделать, подключить драйвер ИК-датчика. Для этого в файл /flash/config.txt следует добавить строку
Я ее добавил после строк
###################################################################
# End of default configuration
###################################################################
Внимание! Этот файл находится на отдельном разделе, который примонтирован с опцией "только чтение". Поэтому в LibreELEC не получится его отредактировать без дополнительных действий. А именно:
mount -o remount,rw /flash
После чего он становится доступен для записи (но только до перезагрузки).
Другой способ - вынуть microSD и отредактировать этот файл за рамками Rasberry.
После того, как этот файл отредактирован, перезагружаем.
Далее
Останавливаем KODI
Останавливаем lircd
Проверяем какие поддерживаются протоколы
Получаем что-то вроде
Found /sys/class/rc/rc0/ (/dev/input/event0) with:
Name: gpio_ir_recv
Driver: gpio_ir_recv, table: rc-empty
lirc device: /dev/lirc0
Supported protocols: other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp
Enabled protocols: lirc rc-5
bus: 25, vendor/product: 0001:0001, version: 0x0100
Repeat delay = 500 ms, repeat period = 125 ms
Список протоколов: other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp
Подбираем подходящий для пульта протокол (наколько я понимаю, other и lirc можно не проверять, но полной уверенности в этом у меня нет)
Устанавливаем протокол (в данном примере rc-5)
Направляем пульт на датчик. Жмем кнопки, смотрим скан-коды. Если ничего при этом не происходит, устанавливаем следующий протокол и повторяем действия. Если нашли нужный протокол, увидим что-то вроде.
Testing events. Please, press CTRL-C to abort.
2409.623141: lirc protocol(rc5): scancode = 0xe0b toggle=1
2409.623167: event type EV_MSC(0x04): scancode = 0xe0b
2409.623167: event type EV_SYN(0x00).
2409.729806: lirc protocol(rc5): scancode = 0xe0b toggle=1
2409.729827: event type EV_MSC(0x04): scancode = 0xe0b
2409.729827: event type EV_SYN(0x00).
Выход из режима - Ctrl-C
Если нужно запустить проверку без смены протокола, то набираем
Когда нашли подходящий протокол, нужно создать файл с "расшифровкой" кодов.
Список кодов клавиш можно получить, набрав
Лучше всего взять эти коды из файла /usr/share/kodi/system/Lircmap.xml в секции <remote device=“devinput”>
В результате всего я собрал для этого пульта следующую таблицу, которую поместил в файл /storage/.config/rc_keymaps/ir_car_mp3
# table ir_car_mp3, type: NEC
0x45 KEY_INFO
0x46 KEY_MUTE
0x47 KEY_POWER
0x44 KEY_STOP
0x40 KEY_PAUSE
0x43 KEY_PLAY
0x07 KEY_VOLUMEDOWN
0x15 KEY_VOLUMEUP
0x09 KEY_ESC
0x16 KEY_REWIND
0x19 KEY_FASTFORWARD
0x0d KEY_PREVIOUS
0x0c KEY_1
0x18 KEY_UP
0x5e KEY_C
0x08 KEY_LEFT
0x1c KEY_OK
0x5a KEY_RIGHT
0x42 KEY_HOME
0x52 KEY_DOWN
0x4a KEY_EXIT
(1 строка с комментарием обязательна! В ней указано имя файла ir_car_mp3 и протокол NEC)
После этого я создал файл /storage/.config/rc_maps.cfg со следующим содержимым
* * ir_car_mp3
Таблица готова. Загружаем ее
ir-keytable -c -w /storage/.config/rc_keymaps/ir_car_mp3
Теперь можно эту таблицу проверить:
Опять жмем кнопки и снова видим ПОЧТИ ту же картину. Но к ней добавляются "события кнопок" вида KEY_* из нашей таблицы.
После этого я сделал еще:
  1. Внес изменения в /flash/config.txt (как, см. выше)
Теперь моя строка
приобрела вид
dtoverlay=gpio-ir,rc-map-name=ir_car_mp3
2. В файл /storage/.config/autostart.sh добавил загрузку найденного протокола
Далее перезагружаю, если все вышеописанное сделано правильно, пользуюсь пультом.
Но этот пульт стал для меня временным решением. Он не очень удобен. Кнопки одинаковые. Перепутать легко, особенно в темноте. Поэтому я приобрел на aliexpress вот этот пульт.

j3LzhoOyr-0.jpg




Протокол для него оказался rc-5
Сформировал файл /storage/.config/rc_keymaps/ir_ali со следующим содержимым
# table ir_ali, type: rc-5
0xe0c KEY_POWER
0xe2d KEY_POWER
0xe3f KEY_LEFT
0xe2b KEY_RIGHT
0xe3d KEY_UP
0xe3e KEY_DOWN
0xe2c KEY_OK
0xe0d KEY_HOME
0xe0f KEY_EXIT
0xe0b KEY_PLAYPAUSE
0xe19 KEY_STOP
0xe10 KEY_FORWARD
0xe16 KEY_REWIND
0xe12 KEY_VOLUMEUP
0xe13 KEY_VOLUMEDOWN
0xe3c KEY_CHANNELUP
0xe11 KEY_CHANNELDOWN
0xe15 KEY_NEXT
0xe14 KEY_PREVIOUS
0xe36 KEY_EPG
0xe1d KEY_INFO
0xe17 KEY_ZOOM
0xe30 KEY_MUTE
0xe0a KEY_MENU
0xe1e KEY_VIDEO
0xe35 KEY_PVR
0xe01 KEY_1
0xe02 KEY_2
0xe03 KEY_3
0xe04 KEY_4
0xe05 KEY_5
0xe06 KEY_6
0xe07 KEY_7
0xe07 KEY_8
0xe07 KEY_9
0xe00 KEY_0
0xe32 KEY_RED
0xe31 KEY_GREEN
0xe39 KEY_YELLOW
0xe3a KEY_BLUE
В файле /flash/config.txt описанная выше строка приобрела вид
dtoverlay=gpio-ir,rc-map-name=ir_ali
В /storage/.config/autostart.sh заменил протокол так, что строка загрузки выглядит так
В файле /storage/.config/rc_maps.cfg теперь
* * ir_ali
И я пользуюсь полноразмерным. полноценным пультом.
PS: То, что я проделал, названо в Infrared Remotes [LibreELEC.wiki] HARD WAY. Есть еще EASY WAY, но я им не следовал, поскольку он мне показался более трудоемким, да еще не гарантирующим то, что я найду подходящий вариант.
 
Последнее редактирование:
Сверху Снизу