树莓派IR红外控制扩展板使用教程

开发环境

[] LIRC  Version:0.10.1-6.3

[] Raspberry Pi:4B

[] Raspbian OS; (32 bit)Linux raspberrypi 5.15.84-v7l+

安装LIRC软件并配置

1.安装lirc:

sudo apt-get update

sudo apt-get install lirc

驱动配置(/boot/cofig.txt)

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.代码运行效果