LIRC 是 Linux Infrared remote control的缩写,是linux系统下开源的软件包。这个软件让你的Linux系统能够控制红外线信号。LIRC有个具有图形用户界面的前端,叫做KDELirc。

LIRC安装

sudo apt-get install lirc

配置

sudo vim /boot/config.txt
在系统启动文件config.txt中添加:

  1. #Uncomment this to enable the lirc-rpi module
  2. dtoverlay=lirc-rpi
  3. gpio_in_pin=18
  4. gpio_out_pin=17

sudo vim /etc/lirc/hardware.conf
编辑LIRC的配置文件:

#LIRCD_ARGS="--uinput --listen"
LIRCD_ARGS=""
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

sudo vim /etc/lirc/lirc_options.conf
修改相应的内容如下:

driver = default
device = /dev/lirc0

reboot 重启树莓派,让配置生效。

重启LIRC功能

sudo /etc/init.d/lirc stop
sudo /etc/init.d/lirc start
如果系统找不到命令,可能是最新版lirc,使用如下命令:
sudo /etc/init.d/lircd stop
sudo /etc/init.d/lircd start
或者sudo /etc/init.d/lircd restart
或者sudo service lircd restart

简单测试

必须停止lircd服务才能进入接收红外信号模式
sudo service lircd stop
mode2 -d /dev/lirc0
运行上述命令后,用遥控器对着接收管随便按一按钮,如果有如下输出结果就表示正常:

space 16777215
pulse 8999
space 4457
pulse 680
space 1627
......

录入红外信号

因为以下命令要创建一个遥控器配置文件,所以先进入到具有续写权限的目录下面,运行如下命令。

# 参数-f --force 表示 Force raw mode
irrecord -f -d /dev/lirc0 --disable-namespace

根据提示输入遥控名称按钮名称,完成录制后,当前目录下会生成一个遥控器配置文件遥控名称.lircd.conf

编辑遥控器配置文件

因为空调遥控器每次发送的信号不是单纯的一个”byte”,与其说它是“控制信号”,不如说是一个“状态”、“情景”。直接录制的样本中记录的信号极可能是不正确的,所以需要手动更改遥控名称.lircd.conf配置文件。接下来使用mode2命令在控制台接收遥控器发出的信号,然后将其加入到遥控名称.lircd.conf中。
使用如下命令:

# -m --mode 使用行列显示模式,不显示pulse、space
mode2 -m -d /dev/lirc0

对着红外接收装置按下遥控器要录制的按键,除去第一行很大的那个数,把其他数据全部复制,粘贴到配置文件的 遥控名称.lircd.conf对应的按键名称下面,注意粘贴格式位置。
重复上述操作。替换配置文件遥控名称.lircd.conf中所有按键名称下面的信号数据。

最后,把配置文件复制到指定目录 /etc/lirc/lircd.conf/ 并重启lircd服务:

sudo cp 遥控名称.lircd.conf /etc/lirc/lircd.conf.d/
sudo service lircd restart

发射红外控制信号

如果没有使用开关三极管,可能需要把树莓派拿到靠近空调的地方,并且把红外发射管对准空调。如果使用了三极管,那么注意树莓派和空调之间不要有明显的物体阻隔即可。

# 发射命令:irsend SEND_ONCE 遥控器名称 按钮名称
irsend SEND_ONCE 遥控名称 按键名称

如果前面的步骤一切正常,但在发射信号时报错“transmission failed”。请检查生成的遥控器配置文件,查看flags项,若是flags RAW_CODES|CONST_LENGTH,请尝试将其修改成flags RAW_CODES并重启lircd服务。再测试能否发射信号。

附录

树莓派IR红外发射接收硬件配置

image.png

image.png

原配置文件附件

config.tar.gz

参考文档

博客文章:
https://segmentfault.com/a/1190000014135418
https://www.jianshu.com/p/9cfb0bf02006
http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board#Introduction
http://ukonline2000.com/?p=296
红外协议NEC:https://www.cnblogs.com/yulongchen/archive/2013/04/12/3017409.html
https://www.geek-workshop.com/thread-3564-1-1.html
LIRC官网:http://www.lirc.org/
LIRCD.CONF:http://www.lirc.org/html/lircd.conf.html