前言
关于树莓派配置红外遥控的过程,我相信玩过的人知道这里的坑有多少,在这写一下我配置的过程,仅供参考
硬件
1.树莓派4B 2.红外遥控器及接收模块,我用的 这里不得不提一下有关红外接收模,之前我用的不是图中的这个接收模块,在调试时死活不会来。换了这个后就OK了
配置过程
1. 打开命令终端,输入以下指令,安装 lirc
sudo apt-get update
sudo apt-get install lirc
2.修改配置文件
在命令终端输入 sudo nano /boot/config.txt 找到
删除这两句前面的 # 符号,如下图。其中第一句是红外接收引脚,第二句是红外发送引脚,这里用的是BCM编号模式 修改完成后 按 Ctrl+o 保存 ,Ctrl+x 退出
3.设置驱动文件
在命令终端输入
sudo nano /etc/lirc/lirc_options.conf
把
driver = devinput
device = auto
修改为
driver = default
device = /dev/lirc1
其他不要修改,如图 完成后 Ctrl+o 保存 ,Ctrl+x 退出
4.重启树莓派
sudo reboot
5.测试
测试红外信号,先把红外接收模块接好,注意模块的信号输出端是接在BCM17号上。然后在命令终端输入
sudo service lircd stop
mode2 -d /dev/lirc1
此时用遥控器对着红外接收器,随便按几个按钮。应该会打印出类似一些信息按Ctrl+c 退出
6.查看可用遥控键名
在命令终端输入
irrecord -l
在屏幕上输出以下信息 这里最好把这些数据都记录下来,后面要用到
7.开始录制
接下来的步骤会比较繁琐。需要耐心。首先输入
irrecord -d /dev/lirc1 ~/lircd.conf
屏幕出现
Press RETURN to continue.
按一下回车。等待屏幕出现
Enter name of remote (only ascii, no spaces) :
注意在此期间不要按任何按键 出现如上图后 输入文件名,文件名只能纯英文字符并且不能有空格。我这里输入myir 回车后 屏幕出现
Press RETURN now to start recording.
再次按下回车后,树莓派便开始记录按键。这时需要轮流随机按遥控器上的按键,每按下一个按键(不是长按) 屏幕就会出现一个点。这里需要一些耐心。一直重复随机按下遥控器的上按键,直到屏幕出现
Please enter the name for the next button (press <ENTER> to finish recording)
这里需要为你遥控器上的按键配置名字,名字只能从之前查看 可用按键名词里面取 参看第6步,例如 我这里输入 KEY_1 然后 按下回车 屏幕出现
Now hold down button "KEY_1".
按下用遥控器的数字 1 键,然后屏幕又出现
Please enter the name for the next button (press <ENTER> to finish recording)
输入 KEY_2 ,回车,等待屏幕出现
Now hold down button "KEY_2".
按下遥控器的数字 2 , 以此重复 我这里只记录遥控器上 1 2 3 三个数字按键。你可以记录完遥控器上的有所按键。按回车结束记录,此时屏幕出现 如下图 意思是按下回车后 需要重复的按遥控器上的同一个按键。注意不是长按!直到屏幕出现
Successfully written config file myir.lircd.conf
输入
sudo nano myir.lircd.conf
查看刚刚记录的按键,如图,正方形框中即为刚刚记录的按键。我这里只记录三个。同时需要删除图中红圈部分 修改后的文件 Ctrl+o 保存,Ctrl+x 退出
8.复制文件到Lirc目录下
sudo cp myir.lircd.conf /etc/lirc/lircd.conf.d
9.重命名文件
重命名devinput.lircd.conf需要改名为devinput.lircd.dist
cd /etc/lirc/lircd.conf.d
sudo mv devinput.lircd.conf devinput.lircd.dist
10.测试录制后的按键输出
sudo service lircd restart
sudo lircd --nodaemon --device /dev/lirc1 --driver default
sudo irw
按下遥控器上的按键,屏幕应该打印类似以下信息
11.关联python 程序
修改文件名
cd /etc/lirc
sudo mv irexec.lircrc lircrc
12.配置lircrc 文件
sudo nano lircrc
修改如图所示 说明: prog = test.py # test.py 为关联的程序名称 button = KEY_1 # 刚刚记录的按键名 Config = echo “KEY_1” # 传递给程序的消息,我这里就设置为按键名
修改完成 Ctrl+o 保存,Ctrl+x 退出
13.python 程序
import lirc
def pasreset(data):
if data == 'echo "KEY_1"':
print("1 按下")
elif data == 'echo "KEY_2"':
print("2 按下")
elif data == 'echo "KEY_3"':
print("3 按下")
with lirc.LircdConnection("test.py",) as conn:
while True:
string = conn.readline()
pasreset(string)
运行程序,按下遥控器,屏幕打印相应信息 完成
|