树莓派4B 4.19.X内核,红外接收与发送(附python发送红外)教程

声明:本人不是技术男,大部分教程都是参考网络上的,下面把参考地址贴出来,不妥之处轻喷,谢谢。(_)**

https://www.jianshu.com/p/96f16846dfa3
https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=235256
https://www.jianshu.com/p/eefb1e5d9a23

我的树莓派环境:硬件-树莓派4B 系统-Raspbian Buster with desktop2019-09-26

注意:此教程仅适用于Raspbian的Buster版系统,内核版本为4.19.X,安装时请确保每一步都跑完

接线方法(左接收,右发射),请无视交叉线/(ㄒoㄒ)/~~

ti111mg.jpg

安装过程:

1.安装Raspbian Buster中安装gpio-ir补丁:

如果已经使用apt安装了lirc请先使用下面命令卸载,没有安请无视

sudo apt remove lirc liblirc0 liblirc-client0
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 

最后一项如果安装失败不要着急,先继续往下做!!

2.配置相关文件:

①配置/boot/config.txt
sudo nano /boot/config.txt

然后在文件末尾添加如下:

dtoverlay=gpio-ir,gpio_pin=24
dtoverlay=gpio-ir-tx,gpio_pin=25

24为GIPO24口 是红外输入口,25为GPIO25口,为红外输出口

②复制配置文件
sudo cp /etc/lirc/lirc_options.conf.dist /etc/lirc/lirc_options.conf
sudo cp /etc/lirc/lircd.conf.dist /etc/lirc/lircd.conf

注意:此时再次执行标题1里面的最后一步安装命令即可安装成功!

③配置/etc/lirc/lirc_options.conf文件
sudo nano /etc/lirc/lirc_options.conf

将driver = XXX 和 device = XXX 两行更改如下:

driver = default
device = /dev/lirc1

至此,驱动及Lirc就安装完成,请重启你的树莓派

3.录制遥控:

①测试驱动是否正确
sudo service lircd stop    # 停止lircd服务

mode2 -d /dev/lirc1    # 接收红外信号

此时用遥控器对着红外接收器,应该会打印出一些信息,否则前面步骤可能出现了问题。

②查看可用遥控键名
irrecord -l

把录制时需要的键名记录下来,只能从这里面挑选,不能自定义

③开始录制

输入如下代码开始录制

irrecord -d /dev/lirc1 ~/lircd.conf

出现 Press RETURN to continue. 按回车继续
出现 Please don't press any buttons, just wait a few seconds... 则不要按任何键,等待即可
出现 Enter name of remote (only ascii, no spaces) : 则输入你要录制的文件名称,请用英文字母命名
出现 Press RETURN now to start recording. 先按回车,然后随机轮流按你的遥控器上的按钮,按钮每发送一次信息屏幕上会出现一个 . 每个按钮不要连续出现白点超过8次。等待屏幕上大约出现一行白点后,又会出现 Please keep on pressing buttons like described above. 然后点按其中的一个按键,直至出现代码。
出现 Please enter the name for the next button (press to finish recording) 后即可录制按键,按照
先输入 代码名称 (就是你上一步记录的键名)然后按回车 ,出现Now hold down button "XXXX" 时 按住相应的遥控按钮不放直至再次出现前面内容。重复此步骤直到录制完成,按回车继续。
出现 Press RETURN to continue.后 点按你刚才录制按钮中的某一个直至完成!
然后查看你录制好的文件,如果出现

KEY_M 0x40F730CF 0x07745000

类似的字段 说明录制成功了

④复制你的配置到Lirc目录

首先复制你的配置文件到/etc/lirc/lircd.conf.d目录,执行如下代码

sudo cp XXX /etc/lirc/lircd.conf.d  # XXX处改为你录制的文件名

然后要重命名devinput.lircd.conf需要改名为devinput.lircd.dist,执行如下代码

cd /etc/lirc/lircd.conf.d
sudo mv devinput.lircd.conf devinput.lircd.dist
⑤修改你录制文件
cd /etc/lirc/lircd.conf.d
sudo nano XXX # XXX处改为你录制的文件名

然后修改按键的类似如下

KEY_M 0x40F730CF 0x07745000

字符,一般是去掉后面相同的那一串,例如我的:
修改前:

      KEY_POWER                0x40F700FF 0x176FB400
      KEY_VOLUMEDOWN           0x40F7708F 0x176FB400
      KEY_VOLUMEUP             0x40F708F7 0x176FB400
      KEY_LAST                 0x40F7B04F 0x176FB400
      KEY_NEXT                 0x40F78877 0x176FB400
      KEY_PAUSE                0x40F7F00F 0x176FB400
      KEY_M                    0x40F730CF 0x176FB400

修改后:

      KEY_POWER                0x40F700FF
      KEY_VOLUMEDOWN           0x40F7708F
      KEY_VOLUMEUP             0x40F708F7
      KEY_LAST                 0x40F7B04F
      KEY_NEXT                 0x40F78877
      KEY_PAUSE                0x40F7F00F
      KEY_M                    0x40F730CF
⑥测试配置是否成功

重启 lircd 服务

sudo service lircd restart 

执行irw命令进行测试(如果没有输出建议reboot重启一次):

sudo irw

然后和按遥控上你录制的按钮出现类似如下:

0000000040f700ff 00 KEY_POWER YX3
0000000040f7b04f 00 KEY_LAST YX3
0000000040f7f00f 00 KEY_PAUSE YX3
0000000040f7708f 00 KEY_VOLUMEDOWN YX3
0000000040f78877 00 KEY_NEXT YX3
0000000040f78877 00 KEY_NEXT YX3
0000000040f708f7 00 KEY_VOLUMEUP YX3
0000000040f7f00f 00 KEY_PAUSE YX3

即为成功!

至此,遥控录制就完成了!

5.红外发送:

①修改配置

如果使用红外发送,则必须对/etc/lirc/lirc_options.conf文件进行修改

sudo nano /etc/lirc/lirc_options.conf

修改device = /dev/lirc1为device = /dev/lirc0

然后重启lirc

sudo service lircd restart 
②使用发射命令

使用命令irsend SEND_ONCE [遥控名称] [按钮名称],例如:

irsend SEND_ONCE MyInfrared KEY_POWER 

红外发射即可发射对应功能

6.使用Python发送红外:

查阅了很多资料,没有找到比较好的方法
所以使用python的发送linux指令功能,大概如下:

import os
os.system('irsend SEND_ONCE YX3 KEY_POWER')

运行就类似在控制台发送了irsend SEND_ONCE YX3 KEY_POWER指令。
至于接受红外,我还没有研究,研究后一并再更新~!

你可能感兴趣的:(树莓派4B 4.19.X内核,红外接收与发送(附python发送红外)教程)