前言
最近做一个智慧用电相关项目,需要用到红外遥控空调来节省电费。正好梳理下相关知识点,以便后续翻阅使用。
原理
红外遥控是一种无线、非接触控制技术。发送方通过特定频率的调制载波信号发送一串编码,接收方通过红外接收管和放大电路接收信号后输出调解后的数字脉冲,转化成可以解读的数字信号。

下面是调制信号过程,发送端发送信号时输出38K调制波,不发送时为空。

目前市面上有大量红外解码芯片,可以把调制波解读成下面这种方波信号,具体的:高电平解读成高电平,38K调制波解读成低电平,以高低电平的持续时间来解读成“1”,“0”的数字信号。当然你也可以直接用红外接收管通过软件来实现。

协议介绍
上面提到,“1”和“0”的数字信号是通过高低电平持续时间来解读的,当然持续时间允许有误差,一般5%以内都能接受。我们以NEC和美的R05D红外协议为例子来看下具体的工作过程。
NEC协议
一般NEC协议是,同步码+8位地址码+8位地址反码+8位控制码+8位控制反码。下面以接受端视角来举例
- 同步码:9ms低电平 + 4.5ms高电平;

- 数据“0”:560us低电平 + 560us高电平

- 数据“1”:560us低电平 + 1680us高电平

- 完整一帧NEC红外数据:

NEC协议属于通用协议,具体指令根据厂家自己定义,所以这里地址码00,地址反码FF,控制码01,控制反码FE只是举例,没有具体含义。下面再介绍一种常用协议。
美的R05D协议
编码格式: L,A,A',B,B',C,C',S,L,A,A',B,B',C,C'。
L为引导码,S为分隔码,A为认别码(A=10110010=B2,预留方案时A=10110111=B7),A'为A的反码,B'为B的反码,C'为C的反码。第一帧和第二帧相同。
- 引导码L:4.4ms低电平 + 4.4ms高电平

- 两帧之间分隔符S:0.54ms低电平 + 5.22ms高电平

- 数据“0”:0.54ms低电平 + 0.54ms高电平

- 数据“1”:0.54ms低电平 + 1.62ms高电平

- 一次发码终止:0.54ms低电平+持续高电平

- 完整一帧R05D红外数据

各个编码含义:
| B | B | C | C | C |
|---|---|---|---|---|
| B7B6B5 | B4B3B2B1B0 | C7C6C5C4 | C3C2 | C1C0 |
| 风 速(见下表) | 1 1 1 1 1 | 温度(见下表) | 模式(见下表) | 0 0 |
| 风 速 | B7B6B5 | 温 度 | C7C6C5C4 | 模式 | C3C2 |
|---|---|---|---|---|---|
| 自 动 | 1 0 1 | 17℃ | 0000 | 自动 | 10 |
| 低 风 | 1 0 0 | 18℃ | 0001 | 制冷 | 00 |
| 中 风 | 0 1 0 | 19℃ | 0011 | 抽湿 | 01 |
| 高 风 | 0 0 1 | 20℃ | 0010 | 制热 | 11 |
| 固定风 | 0 0 0 | 21℃ | 0110 | 送风 | 01 |
| 22℃ | 0111 | ||||
| 23℃ | 0101 | ||||
| 24℃ | 0100 | ||||
| 25℃ | 1100 | ||||
| 26℃ | 1101 | ||||
| 27℃ | 1001 | ||||
| 28℃ | 1000 | ||||
| 29℃ | 1010 | ||||
| 30℃ | 1011 | ||||
| 无定义 | 1110 | ||||
| 在抽湿.自动模式及自动模式下的经济运行,风量应为固定风, 即:B7B6B5=000 | 制冷及制热时的经济运行,风量为自动风,即:B7B6B5=101 | 注:在只送风模式, C7C6C5C4=1110 | 注:送风和抽湿模式代码一样,但抽湿模式有温度代码,而送风模式无。 |
最后
红外解码相对来说还是比较容易的,工作量基本是在通过不同的键值发送来猜测每个bit对应的含义,再有现成协议的情况下基本就没上面难度。目前常用的空调有美的,格力,AUX等,后面两个市面上就没有成文的协议,后续有空再写下相关的解码思路。
本文作者:HelloGakki
本文链接:https://pinaland.cn/archives/infrared-remote-nec-midea-r05d-protocol.html
版权声明:所有文章除特别声明外均系本人自主创作,本文遵循署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议,转载请注明出处。























