红外遥控器信号的采集及压缩
【摘 要】现代家庭生活中,由于红外遥控器数量不断增加,人们产生了对集成型红外遥控器的需求。本文提出了红外遥控器信号采集及压缩的方案,该方案以STM32F103RB微控制器为核心,使用HS0038作为采集模块。经测试,该设计能可靠采集各种红外遥控器的信号,具有较低的误码率,而且能对采集到的信号数据进行压缩,压缩比平均可达到28%。
【关键词】红外遙控器 ;STM32F103RB ;HS0038 ;信号采集 ;数据压缩
一、引言
红外通信作为一种短距离、可靠的无线控制方式,在家电领域已被广泛应用。但由于存在多种红外遥控器编码方式,且各种编码方式间互不兼容,致使家中红外遥控器的数量随着电器设备的数量与日剧增。为此,研究红外遥控器信号(下文简称红外信号)的采集及压缩的方法,为最终实现红外遥控器的集成奠定基础,具有一定的研究意义。
二、红外遥控器的编码分析
由于不同的电器设备生产厂家采用不同的编码方式,导致不同电器设备的红外遥控器不能相互替代。为此,在大量收集各种红外信号的基础上,对其进行了细致的分析,得出以下几个结论:
(1)调制方式以脉宽调制为主:红外遥控器编码存在的调制方式有脉宽调制,相位调制,脉冲位置调制,但大部分都采用脉宽调制方式。(2)载波频率不固定:不同遥控器的载波频率不同,最低可达36KHz,最高可达42KHz,但大多数载波频率在38KHz左右。(3)通讯协议组成迥异:每种协议都是在地址码与控制码的基础上添加引导码、结束码、控制码反码或地址反码。(4)发送方式不同:发送方式的不同体现在发送的次数上,有一次发送一帧、一次发送两帧或一次发送多帧。
三、红外遥控器采集硬件设计
设计需要采集红外信号,并将所得到的信号数据编码保存起来,为此设计了由STM32F103RB微控器、红外采集电路、存储器等构建的硬件平台进行测试。
(一) STM32F103RB微控器
STM32F103RB是意法半导体公司推出的STM32F103xx中等容量增强型系列中的一款微控器。该系列微控器整合了工作频率为72MHz的高性能ARM CortexTM-M3内核。该系列微控器的节电模式适用于低功耗的应用设计[1]。
凭借STM32F103RB任意边沿捕捉功能的16位定时器以及高速的处理能力,能精确采集红外信号的电平时长,快速处理采集到的数据;低功耗特性降低了对电源的要求。
(二)红外采集电路
红外信号的载波频率基本集中在38KHz,因此采集电路使用HS0038一体化红外接收头。HS0038是一款体积小、内置IC、抗干扰能力强、可低压工作的红外接收头。当HS0038接收到38KHz红外遥控器信号脉冲时,将输出低电平;当HS0038未接收到38KHz红外遥控器信号脉冲时,将输出高电平。
(三)储存器
将各种红外信号进行采集,并集中在一个遥控器中,需要大容量、具有掉电保存功能、可低电压工作的存储器,设计选用AT24c128作为存储器。AT24c128是Atmel推出的高速、128Kb的2线串行EEPROM,拥有商业和工业应用中所必须的低功耗和低电压的特性,工作电压范围为1.7V~5.5V[2],能满足设计的功能要求。
四、红外信号处理的软件设计
红外信号处理的软件设计主要包括信号采集、信号数据压缩。信号采集使用微控器中的定时捕捉模式,因此系统启动后,需完成对系统初始化;当检测到红外信号输入时,微控器便进行捕捉采集;完成采集后,若采集的红外信号异常,数据不被保存;若采集的红外信号正常,数据被压缩并保存。软件设计的流程图如图1所示。
(一)红外遥控器信号采集
红外遥控器信号采集是通过记录红外遥控器信号电平时长实现的。这种方式可以在红外遥控器信号编码方式未知的情况下,将红外遥控器信号完全复制。根据采样定理,为了更好地还原信号,将微控器内16位定时器的工作频率设定在1MHz,并设置为输入捕捉工作模式。
逻辑分析仪采集某NEC红外信号波形如图2所示。微控器采集到的该红外信号数据(下文称信号数据)如表1所示。
图2 红外信号波形
表1 红外信号电平时长数据
该组数据共有71个,每个数据占2字节的存储空间,共需142字节,其中N为奇数的数据为低电平时长,N为偶数的数据为高电平时长。
(二) 索引表压缩
信号数据需要占用大量存储空间,且数据具有规律性,可对信号数据进行压缩。由于红外遥控器信号电平时长的种类有限,故采用索引表的方式。表1中的数据经索引表压缩后数据如表2所示,所需的存储空间降到85个字节。
表2 建立索引表后的数据
(三) 数据编码
根据高电平索引个数少于6个、低电平索引个数少于4个的特点,使用一个字节的第3~4位存放低电平索引表数据,用相同字节的第0~2位存放高电平的数据。由于表2中数据数组的元素个数为奇数,故在其后面添加一个数值为2的元素。将表2中的数据经编码,除高低电平索引外的结果如表3所示。信号数据经编码压缩后所需存储空间降到50个字节。
表3 数据编码后的数据
五、 验证测试
将保存的信号数据还原成电平时长的数据,并与原始采集到的数据进行对比,以确定信号还原误差。图4所示原始红外信号时长与还原信号的对比如表4所示。
表4 信号数据对比
采集到的信号数据经过数据压缩,占用极少的存储空间。以上述NEC编码为例,有效原始数据长度为71,共需142字节存储空间。经建索引表,产生2个高电平索引和5个低电平索引,以及71个索引表数据,因此需要字节的存储空间。经过编码压缩后,信号数据的存储空间变为字节。最终,整个压缩过程的压缩率为。
六、总结
设计可以精确记录任意红外编码方式的红外遥控器信号电平时长。在完成信号采集工作后,将原始信号数据建立索引表、数据编码,减少了所需的存储空间,提升了存储空间利用率。在测试阶段,利用硬件平台进行对生活中10种常见各类红外遥控器(彩电、空调、DVD等)进行测试,均能正常采集、压缩并还原。此设计为实现智能遥控器提供一种方式,若利用微控器丰富的通讯接口,则可以实现物联网智能遥控器。
参考文献:
[1] STM32F103x8B_13587_Rev 14.pdf.http://.cn
[2] 128Kb I2C-compatible 2-wire Serial EEPROM.pdf. http:///
[3] 郝建国,赵英杰,张卫东.家用电器遥控系统集成电路大全.北京:人民邮电出版社,1996
[4] 李建华.实用遥控器原理与制作[M].北京:人民邮电出版社,1996
[5] 聂诗良,李磊民.红外遥控信号的一种编码解码方法[J].仪器技术与传感器。2004(8):28.32.