日立空调红外编码规则解析
一、空调红外控制原理
空调遥控器是通过发射断断续续的红外光来传递信息的,我们可以把发射的时候看做是“1”,没发射的时候看做是“0”,这样的话发射出去的信号就可以转充当一组通讯的数据,不同的按键以不同的编码方式发射。当空调接收到这些红外光后按照制定好的规则解码就可以知道遥控发送的什么命令,从而执行相应的操作。
同一个品牌的空调,它们的编码规则都是一致的,所以我们只要找到它们红外发射的编码规则,就可以模拟这个信号来控制这个品牌的所有空调。
二、解码原理
要想破解编码规则,首先要用红外接收管接收空调发出来的红外信号,然后用示波器去观察这个信号。空调红外编码一般最前面会有至少一个引导码,是由一个特定时间的低电平和高电平组成的,不知道的同学可以去查一下NEC规则。然后紧接着的就是要传输的数据,一般数据“0”和“1”也是由一个低电平+一个高电平组成,只是电平的时间不一样,不同品牌的空调,“0”和“1”高低电平的时间也有差别。好了,知道这些信息之后,就可以用单片机去捕获这些电平了,通过采集每一个电平持续的时间就可以知道传输数据的是“0”还是“1”,然后通过串口打印出来就可以得到完整的一帧数据。然后通过改变某一个变量测量多组数据,找出变化那部分的规律就可以推出编码规则了。
三、电平规则
第1个引导码:低电平约30ms,高电平约50ms
第2个引导码:低电平3-3.5ms,高电平1.5-2ms
数据0:低电平350-400us,高电平约450us
数据1:低电平350-400us,高电平约1300us
注:这些电平的持续时间是有一定的容错空间的,所以不一定要严格按照这个值来发射红外信号,如果你发现按这些值不能控制空调,可以在这个值的基础上进行边缘修正,多尝试,总能找到合适的值。
四、编码规则
状态:关机->制冷/制热/除湿:1000
制冷/制热/除湿->关机:0100
风速切换:0011
温度加:0001
温度减:1001
PS:一般的空调都没有这个状态位,直接用一个开关机位就行了,不知道搞这个有什么意义
模式:制热110 制冷001 除湿101
风速:微110 弱001 强101 自动100
温度:(温度-16)(逆序)
如:24度 = (24 - 16)(逆序) = 1000(逆序)= 0001
开关:开1 关0
校验 = [ 56(即7左移4位)- 温度逆序值*2 - 模式逆序 - 风速逆序 - 状态逆序 + 开关取反左移8位 ](逆序)
如:关机 -> 制冷17度 风速自动
校验 = [ 56 - 2 - 4 - 1 - 1 + 0 ](逆序)= 48(逆序)=(00110000)(逆序)= 00001100
制冷17度 风速自动 -> 关机
校验 = [ 56 - 2 - 4 - 1 - 2 + 128 ](逆序)= 175(逆序)=(10101111)(逆序)=11110101
PS:这个校验的公式可能不止一种,我推出来的这个不一定是原厂的公式,你们有兴趣可以去研究一下。
注:定时开机、定时关机和睡眠这些在我的项目中不需要用到,所以没有去找规律,定时开关机按照我的经验应该是分别用8个位表示的,很可能是在校验前面这一部分,感兴趣的同学可以按照我这个方法去找一下。除了校验码剩下的应该都比较好找规律,至于校验…呵呵…这校验我花了我不少时间才破解了,因为有一个古怪的状态位,不过我现在把前面的校验规则推出来了,后面再加上定时开关机应该不难。
好了,关于日立空调码值就讲到这里,如果还有什么问题,可以留言给我,如果文章有误,请一定要指出来,如果这篇博文正好帮助到你,可以给我点个赞,谢谢!!!