使用 LIRC 为 Raspberry PI (RPi) 设置红外遥控器

Setup IR Remote Control Using LIRC for the Raspberry PI (RPi)

经过大量搜索后,我对有关如何为我的 RPi 项目设置红外遥控器的信息相互矛盾感到惊讶和沮丧。我认为这很容易,但设置 Linux 红外线控制 (LIRC) 很长一段时间以来一直存在问题

但是随着 Raspbian 的 Buster 版本的发布,2019 年 6 月发生了很大的变化,使得那里的大部分教程变得毫无价值。许多教程让您创建一个 hardware.conf 文件,但 LIRC 不需要也不想要它,并且 lirc-rpi 模块已被 gpio-ir 模块替换。

那么如何使用 Raspbian (Buster) 在 RPi 上设置 LIRC?

此答案假设 RPi 为 运行 raspbian(Buster 2019 年 6 月版)。还假定具有终端的应用知识、来自命令提示符的基本命令和编辑文本文件。

第 1 步:安装 lirc

1) 打开终端 window 并安装 LIRC。请注意,这可能会引发错误 "Failed to start Flexible IR remote input/output application support",因为安装的文件现在附加了 .dist 并且必须删除后缀,如下所述。不难但令人沮丧。

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

----别担心!因为这可能会引发错误 "Failed to start Flexible IR remote input/output application support",因为需要从 lirc_options.conf 中删除 .dist 后缀。只需如图所示复制文件即可。

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

2) 现在 lirc_options.conf 文件已重命名

,重新安装 lirc
$ sudo apt-get install lirc

第 2 步:编辑 lirc_options.conf

编辑/etc/lirc/lirc_options.conf 如下两行:

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

步骤 3:执行复制以从 lircd.conf.dist

中删除 .dist 后缀

从 /etc/lirc/lircd.conf.dist

中删除后缀 .dist
$ sudo cp /etc/lirc/lircd.conf.dist /etc/lirc/lircd.conf

第 4 步:编辑 config.txt

编辑/boot/config.txt,在lirc-rpi模块部分添加一行如下。此示例假设 RPi 在 BCM 引脚 17 上用于红外接收器 'listening',但可以使用任何 RPi IO 引脚。我还没有尝试过,但是如果你想从 RPi 发送命令,然后添加并取消注释第 4 行,如下所示,以在 BCM 引脚 18

上发送 IR 命令
:
:
:
# 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 步:测试远程

此步骤假设您已将红外接收器连接到 config.txt 中指定的引脚上的 RPi。

1) 停止 LIRCD 服务并使用 mode2 命令测试远程

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

3) 将遥控器指向接收器并按一些按钮。你应该看到这样的东西:

:
:
space
pulse
:
:

4) 按Ctrl-C退出

5) 您的 IR 接收器已设置并准备好继续第 2 部分并在 python.

中访问

上述解决方案不适用于 Raspbian Buster Kernel 4.19。我用 (Raspbian Buster version 2020-05-27)

检查过

但是,如果您只使用 irsend 发送红外信号,它会工作正常。如果您想使用 irrecordmode2irwirexec 命令接收和记录红外信号,需要一些工作人员。

步骤 - 1:安装补丁以与内核 4.19.X 和 gpio-ir

一起使用 irrecord
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:如果您已经用apt安装了lirc,请按如下方式卸载

sudo apt remove lirc liblirc0 liblirc-client0

步骤 - 3:在 Raspbian Buster

中安装 gpio-ir 补丁
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:执行复制以从 lirc_options.conf.dist 和 lircd.conf.dist

中删除 .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

Here is the reference for full description