ESP32 IDF库中的RMT驱动
RMT(Remote Control Module)驱动是ESP-IDF库中的一个重要组成部分,它主要用于处理远程控制编码和解码。
一、红外遥控器介绍
1. 红外遥控技术介绍
红外遥控是一种无线、非接触控制技术,具有抗干扰能力强、信息传输可靠、功耗低、成本低、易实现等显著优点。它被诸多电子设备特别是家用电器广泛采用,并越来越多地应用到计算机和手机系统中。
红外遥控系统由发射和接收两大部分组成,应用编码/解码专用集成电路芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
2. 红外器件特性
红外遥控器主要由红外发射器和红外接收器两部分组成。
(1)红外发射器
红外发射器通常是一个红外LED,它可以发射红外光。当电流通过LED时,它会发射出红外光。红外LED的发射波长通常在940nm左右,这是人眼无法看到的红外光。
(2)红外接收器
红外接收器是一个光电二极管,它可以将接收到的红外光转换为电信号。红外接收器通常有一个滤波器,可以过滤掉大部分的环境光,只接收特定频率的红外光。
红外发射管也是属于二极管类,红外发射电路通常使用三极管控制红外发射器的导通或者截止。在导通的时候,红外发射管会发射出红外光;反之,就不会发射出红外光。虽然我们用肉眼看不到红外光,但是我们借助手机摄像头就能看到红外光。红外接收管的特性是当接收到红外载波信号时,OUT引脚输出低电平;假如没有接收到红外载波信号时,OUT引脚输出高电平。
红外载波信号其实就是由一个个红外载波周期组成。在频率为38KHz下,红外载波周期约等于 26.3us(1s / 38 KHz ≈ 26.3 us)。
在一个红外载波发射周期里,发射红外光时间8.77us 和不发射红外光17.53us,发射红外光的占空比一般为1/3。相对地,整个周期内不发射红外光,就是载波不发射周期。在红外遥控器内已经把载波和不载波信号处理好,我们
需要做的就是识别遥控器按键发射出的信号,信号也是遵循某种协议的。在红外遥控器内已经把载波和不载波信号处理好,我们需要做的就是识别遥控器按键发射出的信号,信号也是遵循某种协议的。
这里推荐一个视频可以快速了解红外控制器件:
一帧红外遥控信号,竟如此复杂,超乎你的想象!红外遥控的工作原理!_哔哩哔哩_bilibili
3. 红外编解码协议介绍
红外遥控器通常使用特定的编解码协议来发送和接收数据。目前广泛使用的是:
- PWM(脉冲宽度调制)的NEC协议
- Philips PPM(脉冲位置调制)的RC-5协议
这里以NEC为主讲解ESP32红外遥控(RMT)。
NEC协议,其特征如下:
1)8位地址和8位指令(数据)长度;
2)地址和命令(数据 )2次传输(确保可靠性);
3)PWM脉冲位置调制,以发射红外载波的占比代表“0”和“1”;
4)载波频率为38KHz;
5)位时间为1.125ms或2.25ms。
在NEC协议中,如何为协议中的数据‘0’或者‘1’?这里分开红外接收器和红外发射器
红外发射器
- 发送协议数据‘0’ = 发射载波信号 560us + 不发射载波信号 560us
- 发送协议数据‘1’ = 发射载波信号 560us + 不发射载波信号 1680us
红外发射器的位定义如下图所示:
🚨需要注意的是红外编码发送的时候,并不单单是通过高低电平发送的,是在38khz的载波下进行发送的。
红外接收器
- 接收到协议数据‘0’ = 560us 低电平 + 560us 高电平
- 接收到协议数据‘1’ = 560us 低电平 + 1680us 高电平
NEC协议的数据格式包括以下几个部分:
(1)同步码
这是一个9ms的低电平+4.5ms的高电平,用于同步。
(2)地址码和地址反码
这是一个8位数据格式,低位在前,高位在后。
(3)控制码和控制反码
这部分用于表示具体的控制命令。
如果你长时间按住遥控按钮,使用NEC协议的红外遥控器将会发射一个以110ms为周期的重复码。每一次用户按下遥控器按钮,遥控器在发送一次指令码后,就不会再发送指令码了,而是发送一段重复码。
更多内容请看下回。