[] LIRC Version:0.10.1-6.3
[] Raspberry Pi:4B
[] Raspbian OS; (32 bit)Linux raspberrypi 5.15.84-v7l+
1.安装lirc:
sudo apt-get update
sudo apt-get install lirc
2.编辑 /boot目录下的config.txt配置文件
sudo nano /boot/config.txt
3.在config.txt中找到启用红外功能的配置
# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=18
#dtoverlay=gpio-ir-tx,gpio_pin=17
4.将dtoverlay前面的注释‘#’去掉
# Uncomment this to enable infrared communication.
dtoverlay=gpio-ir,gpio_pin=18
dtoverlay=gpio-ir-tx,gpio_pin=17
#gpio-ir对应红外接收端;gpio-ir-tx对应红外发射端
5.重启系统:
sudo reboot
# 配置 /boot/config.txt 文件后需要重启生效
6.配置/etc/lirc/lirc_options.conf文件
a. sudo nano /etc/lirc/lirc_options.conf
b.找到文件中的‘driver’和‘device’选项,并且删除‘=’后面的参数
driver = devinput
device = auto
c.修改driver和device的值:
# 修改为:
driver = default
device = /dev/lirc0
# device 的值改成/dev/lirc1也行,但经测试,改为/dev/lirc1时无法使用红外发射功能
1. 启动红外驱动
mode2 -d /dev/lirc1
#如果失败可能是必须停止lircd服务才能进入接收红外信号模式,可以先运行sudo service lircd stop再运行红外接收命令
2.使用任何红外遥控设备对红外模块的测试
3.当红外遥控对准红外模块按下时,终端会出现类似如下代码就说明红外接收正常
树莓派可以通过lirc库发射接收红外信号,所以要先通过lirc库进行红外信号的配置后再发射
lirc软件包有一个irrecord命令可以配置按键,但是准确度不高。
这里我们仅用它输出配置文件格式
1. sudo irrecord -f -d /dev/lirc1
2.提示 Press RETURN to continue. 回车,之后等待,千万别按遥控按键
3.提示 Enter name of remote (only ascii, no spaces) : 输入配置文件的名字
4.提示 Press RETURN now to start recording. 回车开始录入
之后录入随意(可以一直按住一个键,如果点出现的慢,很可能是没有在命令前加 sudo),我们只是为了获取配置文件格式,官方要求是按不同的遥控器键,至少出现1个点,但不超过10个点,直到出现提示
5.接下来会让输入键名,然后按住该键,这里建议用 KEY_1、KEY_2 类似的名字(具体看下文附1),这样不会报错,他默认是对键名格式有要求的,忽略则可以在 irrecord 命令后加 --disable-spacename
6.录入一两个键就可以了,回车结束,我们只为了获得配置文件格式
回车后可能在当前目录直接生成 yopur.lirc.conf 文件,也可能会让按一个键再结束(注意!是按一个键,快按,不是按住不动!)
7. 复制模板到 /etc/lirc/lircd.conf
sudo cp your_files /etc/lirc/lircd.conf #your_files是你上一步配置的文件名
8.红外发射测试:
sudo service lircd restart # 重启服务(必须!!!!)
sudo irw
# 对着红外接收器按下之前录制的按键。控制台会出现如下形式字段:
# 00000000xxxxxxxx xx 按钮名称 遥控器名称
9.发射命令:irsend SEND_ONCE 遥控器名称 按钮名称
irsend SEND_ONCE orange_scale_ir KEY_0
#KEY_0是配置遥控按键时用户自定义的名字
10.检测红外模块是否发射:
a.开启另一个linux终端
b.第一个终端启用红外接收功能
mode2 -d /dev/lirc1
c.第二个终端启用红外发射功能
irsend SEND_ONCE SportPrear_Test KEY_0
#SportPrear_Test是配置遥控按键时用户自定义的配置文件名
#KEY_0是配置遥控按键时用户自定义的按键名
d.发射与接收效果
Button1与Button2功能完全一致所以只出一套教程即可
1.Button1(或者 Button2)按下在控制台打印效果
a.创建python测试文件
sudo nano key.py
b.编写python测试代码
# 根据模块原理图得知,Button在引脚的22 和27
import RPi.GPIO as GPIO #导入GPIO库
import time #导入时钟库
KEY =22 #定义按钮引脚(BCM方式)或者换成27
GPIO.setmode(GPIO.BCM) ##指定编号规则为BCM
GPIO.setup(KEY,GPIO.IN,GPIO.PUD_UP) #设置引脚为上拉输入
while True:
time.sleep(0.05) #延迟5ms
if GPIO.input(KEY) == 0: #判断KEY是否按下
print("KEY PRESS") #控制台打印
while GPIO.input(KEY) ==0: #消抖处理
time.sleep(0.01)
c.运行python测试代码文件
python ./key.py
d.测试效果图
2.Button1(或者 Button2)按下发射红外效果
a.将上面的代码修改为
# 根据模块原理图得知,Button在引脚的22 和27
import RPi.GPIO as GPIO
import os #导入OS模块
import time
KEY =22 #或者换成27
GPIO.setmode(GPIO.BCM)
GPIO.setup(KEY,GPIO.IN,GPIO.PUD_UP)
while True:
time.sleep(0.05)
if GPIO.input(KEY) == 0:
os.system('irsend SEND_ONCE SpotPrear_Test KEY_0')
#调用shell指令 irsend SEND_ONCE SpotPrear_Test KEY_0
print("KEY SEND TEST")
while GPIO.input(KEY) ==0:
time.sleep(0.01)
b.代码运行效果