Настройка ИК-пульта дистанционного управления с помощью LIRC для Raspberry PI (RPi)

После долгих поисков я был удивлен и встревожен противоречивой информацией о том, как настроить ИК-пульт дистанционного управления для моего проекта RPi. Я думал, что это будет легко, но настройка Linux InfraRed Control (LIRC) долгое время была проблематичной.

Но многое изменилось в июне 2019 года с выпуском версии Raspbian для Buster, что сделало большую часть руководств бесполезными. Во многих учебных пособиях вы создаете файл hardware.conf, но LIRC не нуждается и не хочет этого, а модуль lirc-rpi был заменен модулем gpio-ir.

Так как же настроить LIRC на RPi с помощью Raspbian (Buster)?


person user1200233    schedule 09.08.2019    source источник


Ответы (2)


Этот ответ предполагает, что RPi работает под управлением raspbian (версия Buster, июнь 2019 г.). Также предполагается знание терминала, базовых команд из командной строки и редактирования текстовых файлов.

Шаг 1. Установите lirc

1) Откройте окно терминала и установите LIRC. Имейте в виду, что это, скорее всего, вызовет ошибку «Не удалось запустить поддержку приложений удаленного ввода-вывода с гибкой ИК-подсветкой», поскольку к установленным файлам теперь добавлен .dist, а суффикс необходимо удалить, как указано ниже. Не тяжело, но неприятно.

$ sudo apt-get update
$ sudo apt-get install lirc

----НЕ ВОЛНУЙСЯ! так как это, скорее всего, вызовет ошибку «Не удалось запустить поддержку приложения удаленного ввода/вывода гибкого ИК», поскольку суффикс .dist необходимо удалить из lirc_options.conf. Просто скопируйте файл, как показано.

$ sudo cp /etc/lirc/lirc_options.conf.dist /etc/lirc/lirc_options.conf

2) Переустановите lirc теперь, когда файл lirc_options.conf был переименован.

$ sudo apt-get install lirc

Шаг 2. Отредактируйте файл lirc_options.conf

Отредактируйте /etc/lirc/lirc_options.conf следующим образом, изменив эти две строки:

:
:
driver = default
device = /dev/lirc0
:
:

Шаг 3. Выполните копирование, чтобы удалить суффикс .dist из файла lircd.conf.dist

Удалить суффикс .dist из /etc/lirc/lircd.conf.dist

$ sudo cp /etc/lirc/lircd.conf.dist /etc/lirc/lircd.conf

Шаг 4. Отредактируйте файл config.txt

Отредактируйте /boot/config.txt, добавив одну строку в раздел модуля lirc-rpi следующим образом. В этом примере предполагается, что RPi «прослушивает» контакт 17 BCM для ИК-приемника, но можно использовать любой контакт ввода-вывода RPi. Я еще не пробовал, но если вы хотите отправлять команды из RPi, добавьте и раскомментируйте 4-ю строку, как показано ниже, чтобы отправлять ИК-команды на контакт 18 BCM.

:
:
:
# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi
dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18
:
:
:

Шаг 5. Проверьте состояние и перезагрузите компьютер

1) Остановите, запустите и проверьте состояние lircd, чтобы убедиться в отсутствии ошибок!

$ sudo systemctl stop lircd.service
$ sudo systemctl start lircd.service
$ sudo systemctl status lircd.service

2) Перезагрузить

$ sudo reboot

Шаг 6. Проверьте удаленное управление

Этот шаг предполагает, что у вас есть ИК-приемник, подключенный к вашему RPi через контакт, указанный в config.txt.

1) остановите службу LIRCD и протестируйте удаленный доступ с помощью команды mode2

$ sudo systemctl stop lircd.service
$ sudo mode2 -d /dev/lirc0

3) Направьте пульт на приемник и нажмите несколько кнопок. Вы должны увидеть что-то вроде этого:

:
:
space
pulse
:
:

4) Нажмите Ctrl-C, чтобы выйти

5) Ваш ИК-приемник настроен и готов перейти к части 2 и получить доступ к нему в Python.

person user1200233    schedule 09.08.2019
comment
Этот ответ подходит, если вы действительно хотите использовать драйвер по умолчанию (у которого глупое имя). Однако LIRC — это сложный и гибкий инструмент с другими доступными драйверами, в частности, devinput по умолчанию. См. эл. g., официальные документы по адресу lirc.org/html/configuration-guide.html. - person leamas; 11.08.2019
comment
Спасибо за ответ. В чем разница между gpio_pin и gpio_in_pin в config.txt? В чем разница между lirc-rpi и gpio-ir? - person Mubin Icyer; 01.01.2020
comment
Я не смог запустить команду mode2. Я получил Cannot initiate device /dev/lirc0 ошибку. Я также должен остановить сокет sudo systemctl stop lircd.socket - person Mubin Icyer; 01.01.2020

Приведенное выше решение не работает с Raspbian Buster Kernel 4.19. Я проверил это с помощью (версия Raspbian Buster 2020-05-27)

Однако он отлично работает, если вы используете только irsend, который отправляет ИК-сигналы. Если вы хотите получать и записывать ИК-сигналы с помощью команд irrecord, mode2, irw или irexec, потребуется некоторый персонал.

Шаг – 1. Установите исправление, позволяющее использовать иррекорд с ядром 4.19.X и gpio-ir

sudo su -c "grep '^deb ' /etc/apt/sources.list | sed 's/^deb/deb-src/g' > /etc/apt/sources.list.d/deb-src.list"
sudo apt update
sudo apt install devscripts

Шаг 2. Если вы уже установили lirc с помощью apt, удалите его следующим образом

sudo apt remove lirc liblirc0 liblirc-client0

Шаг 3. Установка с патчем для gpio-ir в Raspbian Buster

sudo apt install dh-exec doxygen expect libasound2-dev libftdi1-dev libsystemd-dev libudev-dev libusb-1.0-0-dev libusb-dev man2html-base portaudio19-dev socat xsltproc python3-yaml dh-python libx11-dev python3-dev python3-setuptools
mkdir build
cd build
apt source lirc
wget https://raw.githubusercontent.com/neuralassembly/raspi/master/lirc-gpio-ir-0.10.patch
patch -p0 -i lirc-gpio-ir-0.10.patch
cd lirc-0.10.1
debuild -uc -us -b
cd ..
sudo apt install ./liblirc0_0.10.1-5.2_armhf.deb ./liblircclient0_0.10.1-5.2_armhf.deb ./lirc_0.10.1-5.2_armhf.deb

Примечание. Окончательная команда установки завершится ошибкой. Вы должны настроить файлы /boot/config.txt и /etc/lirc/lirc_options.conf.

Шаг 4. Отредактируйте /boot/config.txt

:
:
:
# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi
dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18
:
:
:

Шаг 5. Выполните копирование, чтобы удалить суффикс .dist из lirc_options.conf.dist и lircd.conf.dist

sudo cp /etc/lirc/lirc_options.conf.dist /etc/lirc/lirc_options.conf
sudo cp /etc/lirc/lircd.conf.dist /etc/lirc/lircd.conf

Шаг 6. Переустановите

sudo apt install ./liblirc0_0.10.1-5.2_armhf.deb ./liblircclient0_0.10.1-5.2_armhf.deb ./lirc_0.10.1-5.2_armhf.deb 

Шаг 7. Отредактируйте /etc/lirc/lirc_options.conf

:
:
driver = default
device = /dev/lirc0
:
:

Шаг 8. Проверьте состояние и перезагрузите компьютер

Проверять:

$ sudo systemctl stop lircd.service
$ sudo systemctl start lircd.service
$ sudo systemctl status lircd.service

Перезагрузить:

$ sudo reboot

Шаг – 9. Тестирование удаленного доступа

$ sudo systemctl stop lircd.service
$ sudo mode2 -d /dev/lirc0

По ссылке полное описание

person Ma'ruf    schedule 13.06.2020