使用红外遥控空调,就必须先了解红外遥控的原理,数据的定义等。本博客解析了空调的最基本的功能的红外编码,包括:开关,温度,定时,风速,扫风,校验码。其他的功能因为空调型号不同而差别较大,所以暂时不作解析。同时,空调大部分时间工作在制冷模式下,其他模式下的编码也暂时未解析。
一,红外遥控原理
1,红外线
红外线是波长在760nm到1mm的电磁波,根据波长的不同可分为可见光(0.38um-0.76um)和不可见光。使用红外线作为遥控的话,由于红外发射管与红外接收管的响应波长一般为0.8um-0.94um,所以选择波长为0.76um-1.5um的红外光作为通讯的波长。
红外通信广泛应用于家电控制,其优点是抗干扰能力强(频率低),功耗小,性价比高等。
2,工作原理
发射器发射38khz方波为载波的红外光(占空比50),即红外光以38khz的频率闪烁着,接收器接收到以此频率闪烁的红外光时,会在其信号脚输出高电平信号,否则输出低电平。
根据这个最基本的原理来,来实现编码解码数据。数据就是一组二进制的数据,0和1的区别就是高低电平时间的不同。比如,以下例子中,0与1的区别就是1的高电平时间较长。发射器首先需要编码,根据二进制数据每一位的内容,发射持续时间不一样的红外光(控制低高电平时间),而接收器则需要判断高低电平的时间来解码数据。
二,实验波形
本实验是基于格力空调的红外数据
一帧红外编码数据的组成如下:
起始码+35位数据+连接码+32位数据+结束码
其中多次测量得出:
起始码:9000us 低电平 + 4500us高电平;
连接码:646us低电平 + 20000us高电平;
结束码:646us低电平 + 高电平;
数据0:646us低电平 + 516us高电平;
数据1:646us低电平 + 1643us高电平;
数据码中的0和1,经过多次的测量,取众数作为依据,实验数据如下:
三,红外编码解析
知道了一帧红外数据的0和1的表示,我们就可以自由的组成一帧数据。接下来需要了解的是在一帧数据中,数据位中的每一个bit代表的意思。
这里以25℃,制冷模式,低风速,无扫风,打开,定时时间为0
的一帧数据为例子:
第一段数据:
开关:bit3;
0:关闭;1:开启
风速:bit4,bit5;
自动风速:00
一级风速:10
二级风速:01
三级风速:11
扫风开关:bit6,以及第二段bit0;
0:关闭;1:开启
温度:bit8,bit9,bit10,bit11;
16℃: 0000
17℃: 1000
18℃: 0100
19℃: 1100
20℃: 0010
21℃: 1010
22℃: 0110
23℃: 1110
24℃: 0001
25℃: 1001
26℃: 0101
27℃: 1101
28℃: 0011
定时分钟数:bit12,bit13,bit14;
由于我的手机只能发送定时半小时为最小单位的定时时间,所以只有定时30分钟的数据
30min: 100
bit15 定时开关;
0:关闭;1:开启
定时小时数:bit16,bit17,bit18,bit19;
一小时:1000
两小时:0100
三小时:1100
…
第二段数据:
第二段数据比较简单,需要注意的就是bit0
是扫风的开关,她与第一段数据中的bit6
是一样的数值。另外是后四位bit28,bit29,bit30,bit31
组成的校验码。
网上也有许多关于校验码的公式,但是我试了后发现并不适用,于是自己尝试出了一条公式:
校验码 = 温度 - 18 + 定时小时数 + 空调开关 × 8;
例如以上例子的校验码是:25 - 18 + 0 + 1× 8 = 15 = 0xf;
四,小结
红外遥控的实现大同小异,最好还是要自己有测试的设备进行代码的测试。红外接收管和逻辑分析仪是你的不二选择。
友情连接:
esp32实现红外发射与接收
作者才疏学浅,难免有错误,希望指正。如果文章对你有帮助,帮忙点个赞呗。