直接回答:树莓派做红外遥控靠 LIRC:先按说明接好接收和发射模块、改配置文件指定引脚,再用 irrecord 录下遥控器的按键码,之后就可以用 irsend 按键名发射。
超简单!树莓派红外遥控配置
前言 第一步:驱动配置(/boot/config.txt) 第二步:安装lirc,并配置 第三步:测试 第四步:按键配置(/etc/lirc/lircd.conf 第五步:测试 第六步:使用 配置(~/.lircrc) 写在最后
前言
- 网上很多关于树莓派红外配置的教程,但都讲的很不清晰,也有很多是上个世纪的老古董了,本篇是综合众多教程并结合本人树莓派系统(2020-05-27 Raspberry Pi OS (32-bit) Lite)写的。
- 在很多重要配置处下方,会对比其他教程。
- 本配置是基于 4.19.x 及更高内核的,你并不需要降低你的系统内核,如果你是4.19.x以下的内核,那么网上有很多教程。
- 本教程仅配置红外接收。
第一步:驱动配置(/boot/config.txt)
1 | dtoverlay=gpio-ir,gpio_pin=17 |
前边注释 ‘#’ 去掉(两行都去掉),这两行在 /boot/config.txt文件默认是有的 17对应GPIO17(红外接收),18对应GPIO18(红外发射) 这里需要重启一次树莓派
对比:
其他教程有说配置/etc/modules文件的,这里并不需要! 有说modprobe加载lirc-rpi的,这里并不需要!4.19.x 及更高内核并没有该驱动啦! 还有在/boot/config.txt配置 dtoverlay=lirc-rpi 的,这是4.19.x之前的配置方式!
第二步:安装lirc,并配置
1 | sudo apt-get install lirc |
这里跟其他教程一样,需要安装lirc软件包
/etc/lirc/lirc_options.conf 配置
1 | driver = default |
修改这两处即可! ls /dev 你会看到 lirc0、lirc1其中一个或两个,至此驱动程序配置成功,就这么简单! 上文device,接收就跟接收的GPIO引脚对应的设备一样,如果之前配置跟我一样,这里就一样即可。
对比:
其他教程有修改 /etc/lirc/hardware.conf 文件的,这里不需要,那是之前的修改方式。
第三步:测试
到这里你可以测试接收了
1 | mode2 -d /dev/lirc1 |
执行该命令后 按遥控器会有类似下面的输出:
1 | pulse 629 |
红外接收正常!!!
如果不正常,可能需要做两个操作
- 重启树莓派
- 关闭进程
sudo service lidcd stop,如果关不掉,就用systemctrl
第四步:按键配置(/etc/lirc/lircd.conf)
lirc软件包有一个irrecord命令可以配置你的按键,但是准确度极低,这里我仅用它输出配置格式而已
1 | sudo irrecord -f -d /dev/lirc1 |
这里强烈建议加 -f 参数,没有该参数输出的配置文件都有问题,看运气 一定要加 sudo
附1
1 | irrecord -l # 会列出允许的键名,从中选取即可 |
配置文件格式就得到了!类似下面这种格式:
1 | 前边是一大片注释 |
该文件对格式,空格有严格要求!!!!!
接下来开始录入信号
1 | mode2 -m -d /dev/lirc1 |
加-m参数是为了获得raw格式的输出,而不是前文space pulse格式输出 620000 并不是真的620000 ,反正会有一个很大的数(相比于9170) 132000 也不是真的 132000,也会有一个很大的数(相比于9170) 复制 两个大数之间的内容,复制到lircd.conf文件中 name KEY_X 下,第一个数要与原数位置对应,前文说过,这里有严格的空格要求,他这里每个字段都是右对齐的 切记!lircd.conf 文件中不要两个大数,亲测保留会报错的!!! 建议每个key配置后留一空行
1 | name KEY_1 |
第五步:测试
可以测试按键配置了!
1 | sudo service lircd restart # 重启服务(必须!!!!) |
按键,看是否跟配置的键名一样 类似如下输出:
xxxxxxxxx 0xXX KEY_1 mini_con
到此所有配置就结束了!!!
第六步:使用
本人使用的是 lirc 软件包中的 irexec
配置(~/.lircrc) 配置格式如下:
1 | begin |
配置文件一定要在执行 irexec 命令的用户家目录,文件名为 .lircrc 在这里你就可以开始你的想象了 ^_^ ps:一键开启smb,一键apache2、httpd,或者控制一个硬件开关等等…
写在最后
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。