背景
通常情况下红外遥控采用NEC协议传输数据,而美的空调采用 R05D 协议,因此一般的红外发射模块无法对空调进行控制。
本文将对美的空调 R05D 协议展开分析,并通过 STM32 单片机进行红外遥控。
R05D 红外协议原理
1.编码格式
编码格式为 L A A' B B' C C' S L A A' B B' C C'
2.L S A B C 字母说明
L 为引导码,S 为分隔码,A 为识别码 (一般为 10110010 = 0xB2,预留方案 10110111 = 0xB7),A' 为 A 的反码,B' 为 B 的反码,C' 为 C 的反码
3.帧
第一帧和第二帧相同,二者之间有一个分隔码 S
4.长度
A B C 长度均为 8 位,故一帧长度为 48 位(不包含 L S)
5.发送顺序
高位先发,即 MSB 在先,LSB 在后
6.B、C 含义
如下表所示:
B
B7 B6 B5 | B4 B3 B2 B1 B0 |
---|---|
风速 | 1 1 1 1 1 |
C
C7 C6 C5 C4 | C3 C2 | C1 C0 |
---|---|---|
温度 | 模式 | 0 0 |
风速
风速 | B7 B6 B5 |
---|---|
自动 | 1 0 1 |
低风 | 1 0 0 |
中风 | 0 1 1 |
高风 | 0 0 1 |
固定风 | 0 0 0 |
注:在抽湿以及自动模式下,风速为固定风(B7 B6 B5 = 0 0 0)
制冷以及制热模式下,风速为自动风(B7 B6 B5 = 1 0 1)
温度
温度 | C7 C6 C5 C4 |
---|---|
17°C | 0 0 0 0 |
18°C | 0 0 0 1 |
19°C | 0 0 1 1 |
20°C | 0 0 1 0 |
21°C | 0 1 1 0 |
22°C | 0 1 1 1 |
23°C | 0 1 0 1 |
24°C | 0 1 0 0 |
25°C | 1 1 0 0 |
26°C | 1 1 0 1 |
27°C | 1 0 0 1 |
28°C | 1 0 0 0 |
29°C | 1 0 1 0 |
30°C | 1 0 1 1 |
无定义 | 1 1 1 0 |
注:只送风模式下,温度代码为 C7 C6 C5 C4 = 1 1 1 0
模式
模式 | C3 C2 |
---|---|
自动 | 1 0 |
制冷 | 0 0 |
抽湿 | 0 1 |
制热 | 1 1 |
送风 | 0 1 |
注:抽湿模式和送风模式代码一致,不同点在于抽湿模式有温度代码,而送风模式无
示例:
自动 制冷 25°C
(BIN) L 10110010 01001101 10111111 01000000 11000000 00111111 S ......
(HEX) L 0xB2 0x4D 0xBF 0x40 0xC0 0x3F S ......
7.引导码 L
发射端:4.4ms 高电平 + 4.4ms 低电平(与图片相反,下同)
接收端:4.4ms 低电平 + 4.4ms 高电平(与图片对应,下同)
8.分隔码 S
发射端:0.54ms 高电平 + 5.22ms 低电平
接收端:0.54ms 低电平 + 5.22ms 高电平
9.数据位 0
发射端:0.54ms 高电平 + 0.54ms 低电平
接收端:0.54ms 低电平 + 0.54ms 高电平
10.数据位 1
发射端:0.54ms 高电平 + 1.62ms 低电平
接收端:0.54ms 低电平 + 1.62ms 高电平
11.发射波形
12.关机
固定为 A=0xB2 B=0x7B C=E0
即:
(BIN) L 10110010 01001101 01111011 10000100 11100000 00011111 S ...
(HEX) L 0xB2 0x4D 0x7B 0x84 0xE0 0x1F S ...
设计思路
通过 STM32 定时器功能,对红外发射管进行控制,输出 38kHz 载波,传输 R05D 红外编码。
具体需准备:
- STM32F103C8T6
- 红外发射管 (5mm)
使用到的外设:
GPIO、PWM、TIM2
下一篇文章将给出实现代码。