使用 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
发送红外信号,它会工作正常。如果您想使用 irrecord
、mode2
、irw
或 irexec
命令接收和记录红外信号,需要一些工作人员。
步骤 - 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
经过大量搜索后,我对有关如何为我的 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
发送红外信号,它会工作正常。如果您想使用 irrecord
、mode2
、irw
或 irexec
命令接收和记录红外信号,需要一些工作人员。
步骤 - 1:安装补丁以与内核 4.19.X 和 gpio-ir
一起使用 irrecordsudo 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