4.6 红外接收模块
ESP32采用的是红外接收管,连接的引脚为IO7。红外接收管的主要功能为集成化的一种受光元件,其内部是将光电二极管和集成IC共同封装而成。通过红外接收管,可以将光信号(不可见光)转换成电信号,从而完成信号在空间距离上的无线传播。
(1)介绍与准备
我们需要对接收到的红外信号进行解码,还原出原始数据,需要IRremote进行处理。在Arduino IDE导航栏中点击“项目” —>“导入库” —>“管理库”,输入“IRremote”,查找选择最新版本进行安装。

图4.6.1 安装IRremote库
(2)实验代码
#include <U8g2lib.h>
#include <IRremote.h>
//设置红外信号脚
int ir_diode_pin= 7;
//配置一个红外接器
IRrecv IR(ir_diode_pin);
//存储解码后的结果
decode_results ir_decode_results;
//红外读取解码
void irRead()
{
if (IrReceiver.decode(&ir_decode_results)) //解码
{
Serial.print("红外解码:0x");
Serial.println(ir_decode_results.value, HEX); //以16进制输出红外解码值
IR.resume(); //继续接收下一个值
}
}
void setup() {
Serial.begin(9600); //串口初始化
IR.enableIRIn(); //红外初始化
}
void loop()
{
irRead(); //红外读取与处理
}
(3)实验讲解
函数 | 说明 |
---|---|
IR.resume() | 在使用decode()函数接收完红外信号后,必须使用resume()函数来重置IR接收器,才能再接收另一个红外线信号 |
IR.enableIRIn() | 红外初始化 |
IrReceiver.decode() | 接收到红外线信号 |
(4)实验现象
编译上传代码后,通过手机、遥控器等能发送红外信号的设备对红外接收管发送数据,在Arduino IDE的串口监视器(波特率为9600)里能看出打印不同的数据内容。

图4.6.2 串口显示接收到的红外数据