文章目录
前言
红外收发设备选用STM32F103RCT6作为主控芯片,通过内部内部晶振震荡产生的38KHz的方波信号拟合市面上主流的红外设备使用的红外波频率。红外收发设备由上位机、嵌入式系统、红外接收与发射电路组成命令端,示波器和空调设备作为用户终端接受命令端的指令控制。采用自主设计电路来实现红外信号的接收与发射,相比于使用成品模块进一步降低了成本,提高了性能。红外收发设备可实现的功能包括接收并识别红外编码信息、存储红外编码信息、与上位机的无线交互。此系统可以学习任意一种红外遥控器发出的信号并写入到内置FLASH存储,即输入捕获红外信号的高低电平持续时间,随后使用PWM产生38KHz载波用于发送存储的电平时间数据,进而完成对信号的学习,发送等。同时对此红外收发设备的Qt上位机进行开发,从而实现远程无线控制遥控器设备的功能,使遥控操作更具智能化——本文主要是对格力空调的控制原理进行解析。
一、NEC协议是什么?
NEC协议的关键特性包括:
1. 数据帧结构:一个完整的NEC协议数据帧包含引导码、用户码(或称为地址码)、用户码反码、命令码和命令码反码。引导码用于同步接收端,用户码用于区分不同的设备或品牌,命令码表示具体的控制指令,而反码则是为了校验数据的正确性。
2. 载波频率:NEC协议使用38kHz的载波频率对信号进行调制,以便于通过红外光传输。
3. 脉冲宽度调制(PWM):在NEC协议中,逻辑“0”和逻辑“1”的编码方式基于脉冲距离调制(PPM),即每个位的时间间隔不同。具体来说,逻辑“0”为560μs的脉冲后跟560μs的空闲时间,总共1.12ms;逻辑“1”则为560μs的脉冲后跟1.6875ms的空闲时间,总共2.25ms。
4. 重复码:当遥控器按键持续按下时,每110毫秒会发送一次重复码,以维持操作状态而不必重新发送整个数据帧。重复码通常由9ms的高电平脉冲、2.25ms的低电平间隔以及560μs的高电平组成。
简而言之,最主要就是红外发射器使用在一个高低电平时间内的不同占比时间代表“0”和“1”,使用一串连续的“0”和“1”来代表不同的控制信号。
数据中接受数据“0”:560us 低电平 + 560us 高电平
数据中接受数据“1”:560us 低电平 + 1680us 高电平
二、格力红外控制器原理
1.格力红外控制码格式
一般格式为起始码+35位数据+连接码+32位数据+结束码,但是有些空调遥控器可能会连续发送两段如上格式的码值,需要具体分析。
如上所示即为格力空调遥控器发出一段码值,使用红外接收管接收并使用示波器捕获显示的红外控制码段。
可以看到,最开始是一段起始码,紧接着是35位“0”,“1”数据,再接着一段连接码,再接着是32位“0”,“1”数据,最后是一段结束码。
起始码:9000us 低电平 + 4500us高电平;
连接码:560us低电平 + 20000us高电平;
结束码:560us低电平 + 高电平;
数据“0”:560us低电平 + 560us高电平;
数据“1”:560us低电平 + 1680us高电平;
(在实际控制中,高低电平控制时间有50us的偏差不影响实际的控制效果)
2.各码段含义
前35段数据:
连接码后的32位数据:
其中,
注意:对于校验码的码值,测试发现网上的码值计算都不适合,实际测试发现不同遥控器控制的校验码都有不同,在实际应用中,建议测试几个控制信号的校验码后进行类推,一般相近控制信号的校验码都是递增或递减的。
这是我当初参考的文章,大家可以了解一下: