蔡燕玲
(厦门海洋职业技术学院,厦门361012)
蔡燕玲(讲师),主要从事单片机原理与应用的教学。
遥控家居设备是智能家居领域的重要研究部分。智能家居设备的遥控有多种方法,在可视范围内遥控某一设备的最经济、最可靠的方法就是采用红外遥控。当今,几乎所有可遥控的家电设备都采用红外遥控。本设计就是在不改变原有电器的结构及放置位置的情况下,利用红外遥控技术控制所有带红外遥控器的家电。相对于无线射频遥控来说,应用红外遥控的缺点是遥控距离近,且必须在可视范围内,但这个问题目前已可以通过红外转发器[1]来解决。
本系统构建了应用嵌入式计算机eBoxⅠⅠ遥控家电设备的红外遥控系统原型。在此基础上,通过互联网可进一步实现远程红外遥控功能。
智能家居红外遥控系统示意图如图1所示。
系统包括两大部分:一部分是基于AT89S52单片机的红外接收/解码、红外调制发射电路板,用于实现各种红外遥控器按键发射信号的解码,以及解码的红外调制发射。另一部分是在嵌入式系统开发平台eBoxⅠⅠ上存储相关家电的红外遥控器各按键的发射编码,通过控制系统界面上的遥控器按钮将按键发射编码传送到专用电路板上,并发射红外遥控信号,即用eBoxⅠⅠ控制家中所有可接收红外遥控的设备(如电视机、热水器、灯具等)。系统还可进一步扩展,接收由远程终端设备(如手机、PDA、PC等)通过网络发来的控制eBoxⅠⅠ的指令,从而远程控制家电设备。
红外遥控系统软件流程如图2所示。
图1 智能家居红外遥控系统示意图
eBoxⅠⅠ[2]是微软提供的基于 Windows CE的嵌入式系统开发平台。eBoxⅠⅠ具有体积小、重量轻、功耗低、噪音低、便于移动、系统相对封闭、安全性高等特点,且具有强大的运算能力和网路功能。本系统仅用到eBoxⅠⅠ的串口。
eBoxⅠⅠ是嵌入式计算机,需要先安装操作系统。从应用角度看,嵌入式操作系统分为通用型和专用型。通用型操作系统适应面广,但应用到实际中一般要经过重新定制以适应具体环境;专用型操作系统则专门针对某种应用环境而设计,可不经裁减直接应用。Windows CE操作系统属于常见的通用型嵌入式操作系统,需要根据设计需要重新裁减、定制。定制工具采用微软提供的工具软件Platform Builder(PB)[3]。
定制Windows CE操作系统过程如下:
①使用Platform Wizard生成一个初始镜像。运行Platform Builder 5.0,选择File|New Platform建立一个项目,在项目导向对话框中按提示输入项目名及路径;接着选择BSP包,因eBoxⅠⅠ的CPU是Vortex86,所以在选项中选择“EMULATOR:X86”和“ⅠCOP_VORTEX86_50:X86”两项;然后选择设计模板,在应用程序和多媒体选项中选择Custom Device;最后在网络和通信组件中选择MFC及Standard SDK for Windows CE,并在Core Services中选择串口支持和网络支持功能,这样就完成了新项目平台的选取配置工作。
② 项目定制。在上面生成的项目平台基础上,还可以根据需要进一步添加/删减组件和驱动程序。从组件目录中找出需要的设备驱动,右击并选择Add to OS Design,把应用程序添加到项目中。至此,一个Windows CE自定义平台已完成,下一步准备生成一个Windows CE操作系统镜像。
③编译项目。在菜单栏的工具中选取编译类型Debug或Release。Debug编译可提供附加的调试信息,但它是Release类型的两倍大,这里选Debug类型。然后,在菜单栏上选择Build OS/Build and Sysgen,开始编译项目并生成CE镜像文件。
图2 红外遥控系统软件流程
运行于Windows CE下的应用程序,其采用的编程工具有微软推出的Windows CE程序可视化开发工具EVB(Embedded Visual Basic)、EVC(Embedded Visual C++)和VS.NET。在嵌入式系统资源有限的情况下,较慢的处理器和较少容量的存储器要求操作系统和应用软件尽可能地减少对系统资源的消耗,同时还要保证较高的执行效率。因此,EVC是最适合开发 Windows CE下软件的开发工具。
2.3.1定制红外遥控系统界面
主界面如图3所示,系统有三个功能选项,分别为控制、学习和服务器设置。
图3 主界面
学习子界面如图4所示。要对某一家电进行远程控制,必须先将该家电红外遥控器上各键的编码保存在eBoxⅠⅠ的Flash存储器中,红外遥控器发射的编码是经过调制后的编码,需解调还原成与按键对应的发射编码。由于各种红外遥控器的编码格式不同,经解码后还原成发射编码的格式是未知的,因此把从红外遥控器发射红外信号到解码后得到红外发射编码的存储过程称为“学习”,即学习原红外遥控器各按键的编码格式及相关编码。
图4 学习子界面
在学习子界面中,可根据实际需要选择要控制的家电。本系统只列举了5种家电:LⅠGHTⅠNG SYSTEM(照明系统)、BACKGROUD MUSⅠC(背 景 音 乐)、WATER HEATER(热水器)、AⅠR-CONDⅠTⅠON(空调)和TV(电视)。例如选择TV,则出现图5所示的TV遥控器学习界面。
控制子界面如图6所示。控制子界面通过eBoxⅠⅠ或远程计算机设备控制家居设备,每种家居设备都还有进一步的控制界面。如果选择TV,则弹出类似TV遥控器的控制界面,如图7所示。
图5 TV遥控器学习界面
图6 控制子界面
SERVER设置界面如图8所示。进行远程控制前,需设置服务器和用户等参数。进行远程控制时,通过客户端软件登录。各参数设置正确后,将出现图3所示的主界面,选择SERVER SETTⅠNG就会出现图8所示的界面。在该界面中设置相应的地址、端口、用户名和密码,完毕后点击OK按钮。
图7 TV遥控器控制界面
2.3.2eBoxII串口编程
图8 SERVER设置界面
系统中电路板与eBoxⅠⅠ的通信采用串口通信方式。
在eBoxⅠⅠ方面,通过Windows CE提供的串行通信函数[4]可进行串口数据的收发。串口操作如下:
①打开串口;
②关闭串口;
③配置串口;
④设置串口读写时间;
⑤写串口函数;
⑥读串口函数。
编者注:源程序详见本刊网站www.mesnet.com.cn。
由于市场上各类电器的红外遥控器编码格式不同,不同厂家生产的同类电器其红外遥控器的编码格式也不同,造成各类红外遥控器编码无法以统一的编码格式进行识别。本系统通过分析接收到的逻辑位高低电平的持续时间,获得对应的按键发射编码,并将这些编码通过串口通信保存在eBoxⅠⅠ上,需要时再将对应的发射编码调制发射。
为了实现红外接收/解码及红外调制发射功能,制作了一块以AT89S52单片机为核心的专用电路板,如图9所示。该电路板包括红外接收/解码模块、串口通信模块、红外调制发射模块及电源部分。
图9 红外接收/解码、红外调制发射专用电路板
2.4.1红外接收/解码模块
红外接收/解码电路以AT89S52为核心,包括红外接收电路和单片机解码部分。这部分的功能是接收红外遥控器发出的信号,并将解调信号送AT89S52;由单片机的定时器计算逻辑位高低电平的持续时间,通过综合分析判断出编码串中两种不同逻辑的组合方式,从而获得家电的红外遥控器相应键按下后,发射出的红外编码信号的解码数据。
2.4.2串口通信模块
单片机内部的存储器容量有限,由单片机解码后将数据传送到eBoxⅠⅠ保存。单片机自带串口,eBoxⅠⅠ也有与PC机一样的RS232C接口,因此二者间的数据传送采用最简单的串行通信。eBoxⅠⅠ与单片机的连接电路如图10所示。
图10 eBoxII与单片机的串口连接
2.4.3红外调制发射模块
在eBoxⅠⅠ端,打开遥控器界面后,点击某个按钮,则调用对应该按钮的红外遥控器发射编码,由串口将数据传送到电路板,再经AT89S52单片机调制后由发射电路发射红外遥控信号。
发射遥控信号的方式与红外遥控器发射信号的方式必须保持一致,才能控制相应的设备。因此,由eBoxⅠⅠ传来的红外遥控器发射解码必须经过调制后才能发射。实现发射编码的脉宽调制有两种方法:一种是将二进制脉冲信号与调制信号相与;另一种是利用单片机中的定时器产生调制信号,并用软件的方法将发射编码调制在调制信号上,然后通过Ⅰ/O口输出已调制信号。
为了提高电路的稳定性,应尽量减少元器件等硬件。本系统采用软件调制信号的方法,用AT89S52的定时器T1产生38kHz的调制信号,对从eBoxⅠⅠ传来的发射编码进行调制。也就是说,逻辑“1”为低电平时输出调制信号,为高电平时关闭输出;同理,逻辑“0”为低电平时输出调制信号,为高电平时关闭输出。已调信号由AT89S52的引脚输出,经三极管放大后控制红外发射管,由红外发射管发射红外信号,其原理等同于由红外遥控器发射红外编码信号。
整个系统原型包括红外接收/解码、红外调制发射专用电路板和基于eBoxⅠⅠ的Windows CE下的应用程序。
在eBoxⅠⅠ上启动应用程序,出现图3所示的主界面,选择LEARNⅠNG→TV,出现图6所示的TV遥控器学习界面。对照原有的TV遥控器,进行每个按键的学习。先点击该界面的START按钮,eBoxⅠⅠ处于准备学习状态。例如要学习“7”键,将TV遥控器的发射端对准红外接收/解码电路中的红外接收模块,按下TV的“7”键,则“7”键的发射编码由AT89S52单片机传送到eBoxⅠⅠ上。点击文本框中的按钮“7”,则遥控器上“7”键的红外发射编码就保存在界面上按钮“7”对应的文件中。如此学习各键,eBoxⅠⅠ就保存了该遥控器所有按键的红外发射编码。学习完毕,点击OVER按钮退出学习过程。
返回到主界面。选择CONTROLLⅠNG→TV,出现图7所示的TV遥控器控制界面。此时,如果要选择电视的7频道,则点击按钮“7”,eBoxⅠⅠ将按钮“7”对应的红外发射编码传送到单片机,并由单片机调制后经红外发射电路发射,从而使电视调到7频道。
测试结果:用eBoxⅠⅠ遥控电视时,效果等同于用原有的红外遥控器控制。
本系统原型对一个家庭中所有红外遥控器的键码进行“学习”,并将“学习”结果保存在一台嵌入式计算机上。在嵌入式计算机上开发红外遥控系统,最终目的不仅是为了实现在家中遥控设备,而是为远程遥控家居设备搭建一个很好的平台。另外,在这台嵌入式计算机上还能开发出其他与智能家居有关的系统(如视频监控系统、温控系统等),实现完善的智能家居体系。
[1]TDXE6436 红 外 转 发 器 [OL].[2010-06].http://www.taiyito.com/Simplified/ProductView.asp?ⅠD=139.
[2]ⅠCOP Technology Ⅰnc.eBoxⅠⅠ Windows CE 5.0Jump Start,2006.
[3]周毓林,等.Windows CE.net内核定制及应用开发[M].北京:电子工业出版社,2005.
[4]汪兵,等.EVC高级编程及其应用开发[M].北京:中国水利水电出版社,2005.