汪波涛,张珣
(杭州电子科技大学 电子信息学院,杭州310018)
当前民用遥控设备,主要分为两种遥控方式:红外和无线。无线设备通常采用315 MHz与433 MHz频段无线电或者红外线进行遥控操作。多数遥控器都采用了“一对一”的控制方式[1],不同设备之间采用的频率一般都不相同,波形长短也不一样,这样就导致人们生活中有很多遥控器,需要控制一个设备的时候,必须寻找到对应的遥控器才能进行相关控制,这给实际生活带来了麻烦与不便。无线自学习转发系统可任意学习无线和红外波形,进行数据压缩后存储到EFM32GG230的FLASH中,将多个遥控器的功能综合到一个系统上,实现“一机多发”。
遥控器是需要长期待机的设备控制器件,传统遥控器采用电池供电,功耗大、耗电快。本系统采用了EFM32GG230,该款芯片是挪威Energy Micro推出的超低功耗ARM架构的MCU,具有丰富的外设接口。在活动模式下执行来自FLASH实际代码时,每MHz所耗电量为180μA,在深度睡眠EM3模式下为900 n A,在关机模式下为20 n A,EFM32GG230的LESENSE、LEUART,以及LETIMER模块均针对低功耗设置。LESENSE能够在低功耗模式EM2下对电流进行检测,无需CPU干预,待检测完成后唤醒CPU进行数据处理及运算。LEUART在9 600 bps的波特率下仅为150 n A。在应用基准测试中,EFM32GG230微控制器的低电流性能加上低于2μs的启动时间,使其电池寿命延长了至少4倍。
红外线是波长在750 nm至1μm之间的电磁波,它的频率低于可见光,是一种人的眼睛看不到的光线。红外遥控具有抗干扰能力强、信息传输可靠、功耗低、成本低、易于实现等显著优点。
一般的红外遥控系统由红外遥控信号发生器、红外遥控信号接收器、微处理器和外围电路构成。当遥控器某个按键按下,其内部的信号发射器产生预先设定好的编码脉冲,经过载波调制后由红外发射管串行输出,红外信号的调制有脉冲宽度调制(PWM)和脉冲位置调制(PPM)等方法。二进制的调制由发射端单片机来完成,不同的遥控器有不同的载波频率。以常见的电视红外遥控为例,它把编码后的二进制信号调制成频率为38 kHz的间断脉冲串,此脉冲串即是用于红外发射二极管发送的信号。其调制原理如图1所示。
图1 红外发射调制原理(38 kHz载波)
另一端遥控接收模块完成对红外遥控信号的接收、放大、检波、整形、解调出遥控编码脉冲。遥控编码脉冲是一组串行二进制编码,对于一般的红外遥控系统,此串行编码输入到微控制器,由其内部完成遥控指令解码,并执行相应的遥控功能。
无线发射的原理与红外基本一致,433和315分别指的是工作频率在433 MHz和315 MHz的无线信号,其采用调幅方式进行发射,发射距离一般在50~120 m,无线方式优势在于传输距离比红外远,而且可穿墙[2]。
从整体设计来看,本系统分为信号接收学习模块、MCU控制模块、信号转发模块。通过红外接收头接收红外波形信号(433、315分别采用各自的接收模块),然后利用EFM32GG230的引脚捕获CC0、CC1、CC2对信号进行捕获,完全捕获的原始信号进入EFM32GG230主控 MCU,由EFM32GG230进行数据压缩,压缩后存储到FLASH中。当需要发射时,通过EFM32GG230从FLASH中提取压缩后的数据,进行数据还原,而后与EFM32GG230内部的PWM功能产生的载波进行信号调制,调制好的信号经由发射处理模块进行发射操作,完成一次遥控转发。图2为学习转发系统框图。
图2 学习转发系统框图
进入程序后开始等待信号,如果得到学习信号,则进一步判断是红外学习还是无线学习,无线学习有自适应能力,能够自动判断收到的信号是433 MHz还是315 MHz,然后进行相关的数据压缩,压缩后存储到FLASH中以待后期取用。如果得到的是发射信号,则进行判断是红外信号还是无线信号,然后从FLASH中读取相应数据,如果FLASH中并没有数据(即没有学习),则返回到开始处继续等待,若有数据则进行解压缩操作,然后进行载波调制(红外信号),最后由相关模块发射出去。发射模块配有多个发射探头,可根据需要选择不同通道进行发射,也可以多通道共同发射信号,发射完毕后回到开始处等待新指令。本系统的程序流程图如图3所示。
图3 程序流程图
本系统采用的波形数据压缩算法为替代压缩算法,经过大量的分析,遥控器基本分为红外遥控器、433遥控器和315遥控器,后两种合称为无线遥控器。红外遥控器控制的设备包括电视、DVD、电动窗帘、电风扇、热水器、空调等。据大量红外遥控器的波形分析,空调遥控器的波形为最长,测试中波形最长的空调遥控器为日本的DAIKIN空调,捕获的脉冲数达到了5 000多个,将信号和载波分离解调后实际波形达到了300多个,如果直接保存,将大大浪费FLASH的宝贵空间。相关的压缩代码如下所示:
由以上代码可以看出,本系统采用结构体来存储一个码的相关信息,包括该码波形的波形类型个数、各种波形的长度、数据长度、压缩后的数据以及学习标志。
经过仔细观察分析,发现现有的绝大部分遥控器的编码都有一个共性,就是其中整段码中单个脉冲的类型为有限个数,除了开头和结尾部分存在部分不同的波形,其他中间部分的波形一般为两三种,加上几种比较少见的波形,整体而看,波形个数为5或6个。
为了尽可能地适应市面上的遥控器类型,将波形总数设置为10种,基本上可以涵盖现有市面上任何一种遥控器上单个按键的码值波形类型。分别用0~9来表示这10种波形,然后再利用一个结构图数组来存储相应波形的高低电平长度。
这样,就将原先较长的高低电平长度存储值变成了脉冲类型号的存储,需要存储的数据长度大大压缩,本来需要16位甚至更多的位来存储一个脉冲,现在只需要4位即可存下一个脉冲类型,压缩率达到了75%。
发射相关码时,只需根据脉冲号发射相应脉冲的高低电平。经试验,此压缩方法转发成功率极高,几乎0失误,实现完美压缩、自如发射。
本系统不必考虑需要学习的编码到底是什么协议标准,也不用考虑无线码是433还是315,其具有自适应判断能力,能够自动识别码型。不采用使用高低电平宽度存储数据的方法,避免过度地浪费宝贵的内存空间,而利用波形类型号存储,存储时所用空间会小得多,大大降低了硬件成本,提高了空间利用率,简化了电路。
本系统在实际应用中,能够很好地控制各种设备,一次学习成功率和转发成功率都很高,无线、红外转发切换流畅,获得了满意的效果,具有广阔的市场前景。
[1]安颖,张春英,王裕琛.红外遥控器在单片机控制系统中的应用[J].电子技术,2003(6):60-62.
[2]李朝青.无线发送/接收IC芯片及其数据通信技术选编[M].北京:北京航空航天大学出版社,2003.