摘要:本文提出了一种利用PC机附加电路,驱动线我眼光管产生遥控信号控制各种家用电器的方法,通过采用设备码和命令码的概念实现遥控的通用性和灵活性,并给出了软硬件设计及应用实例。
关键词:家用电器 红外遥控 家电控制器 设备码 命令码
红外遥控实现PC控制家电
家用电器(简称家电)实现遥控化是一个巨大的飞跃,它极大地改善了家电的易用性和方便性。其实在很多场合不一定要人工操作这些家电,而希望由PC机包括一些专门设计的控制系统去实现对家电的自动控制,例如用PC机去控制录像机、VCD机等设备用于电化教学。
在不对PC机和家电做任何改动的前提下,本文试图从家电的遥控着手,利用PC机附加电路驱动红外发光管产生遥控信号,来控制各种具备遥控功能的家电。实质是将家电所用五花八门的红外遥控信号交由PC机软件及相应附加电路去处理,并产生与该家电所配遥控器完全相同的红外遥制信号,这样就可实现各种遥控型家电的PC机统一控制了。用户只需关心被控制家电的类型和需要实施哪些有效的操作,例如对电视机有选频道、调音量而不会有快放、暂停等操作。
家电控制器可以制成一块PC附加卡或与并口、串口相连的外接电路盒,再引出驱动红外发射管的端子,也可直接引至家电的遥控解码芯片输入端实现线控。关键是为屏蔽遥控信号的差异性,应在PC软件与附加电路之间合理分配功能。一路信号输出可以控制多种不同型号的家电,但很多同样的设备需要控制的,必须分出一路路单独控制。家电控制器可提供单路、8路、16路甚至32路输出。
采用设备码和命令码统一各种遥控编码
设计需考虑的问题是如何"同化"不同遥控器发射信号之间的差异。遥控编码方式涉及很多方面,首先是数字0和1的表示(调宽还是调相,脉宽和占空比);其次是帧结构(引导码和结束码,识别码和命令码长度及发送方式);再次是帧间结构(仅发一次还是反复多次,多帧交替发送,帧间间隔变化);最后是载波频率,以38KHz居多,也有40KHz甚至400KHz等特殊载波。
设计相应电路和软件时,应对上述诸多因素加以分析、归纳,将编码特点用一串二进制位表示出来形成设备码,对应于一个具体的遥控器。同一个设备码下也就是同一个遥控器不同的按键则用命令码来表示。驱动程序对一个个命令码按指定设备码格式加以"封装",形成所需要的遥控信号,达到控制家电的目的。
在解决控制通用性这个问题上,有两类产品有必要在此提及,那就是万用遥控器与学习型遥控器。
万用遥控器存储有很多家电遥控器的编码,最大缺点是灵活性差,即使是采用同一遥控芯片的遥控器可以选取不同的识别码(客户码)和命令码(数据码),从而构成几乎无数种具体的用法。新的遥控编码组合随新的家电机型层出不穷,导致采用专用集成电路(ASIC)或掩模型单片机(MaskROM MPU)制作的万用遥控芯片总会对一些设备,而且是越来越多的设备无法起作用。
学习型遥控器是将原家电遥控器对准学习型遥控器的接收器逐一按键,从而准确地记录该遥控器的波形,应用时再将这一波形再现、发射出去。这样的优点是通用性强,缺点是遥控器内存储器的容量极基有限,一般只能记录数十人键的波形,更换设备就更重新学习。
家电控制器不象万用遥控器那样具体到芯片的每一种应用以及每个码的功能,也不需要象学习型遥控器那样机械地记录每个按键的波形,而是综合了遥控编码方式的诸多因素形成特征字,将需要改变的部分数据编码分离出来由PC机软件去处理,极大地节省了数据存储量而又完全不失通用性。这样一来就具备了二者的优点而克服了相应的缺点。
各种遥控器按键编码的获取及编程接口
家电控制器应用时有广泛的适应性和极大的灵活性,并专门设计了遥控编码获取卡及相应的软件。运行遥控编码获取软件,将需要取代的遥控器对准卡上的红外接收单元按一下,软件立即报告该遥控器对应的设备码和所按键的命令码。同一遥控器所有键返回的设备码相同,只是命令码不一样。
例如万利达的VCP-N30B型VCD机,设备码是0x05210081,命令码对数字键1是0x3652,数字键2则是0x3650等等;又如先锋S-280型LD机,设备码是0x00161568,播放键和暂停键的命令码分别是0xe8和0x18等等。
只需知道设备码和命令码就可实现编程控制了,应用软件编程接口(API)有多种形式以适应不同的开发环境,例如对Windows类平台提供DLL动态连接库,对DOS环境提供C/C++语言的LIB库函数等,都仅需两个函数即可:1.Remote-Initialize(DWORD DeviceCode)
按设备码DeviceCode进行设置即初始化。设备码是一个32位长速型数。这个函数的执行时间仅需几个毫秒,而且在程序中可以反复快速切换,从而可以同时控制多个设备。
2.Remote-Operate (DWORD CommandCode,DWORD ChannelNumber)
按当前设备码DeviceCode的设置发出命令码CommandCode,由指定的通道ChannelNumber输出。这个函数的执行时间仅需几个微秒,但实际完成相应的动作则需数十毫秒或一百多毫秒甚至更长时间,所以连续两次调用之间要根据具体情况给出一定的延时。
下面给出一些简单的编程范例:当然,实际应用时应定义一些数据结构以方便编程,可以定义一个命令集合:CommandSet[]={//一种通用遥控器的命令码集合,按4×9=36排列
HOME,POWER,MUTE,CANCEL,
NUM1,NUM2,NUM3,NUM4,
NUM5,NUM6,NUM7,NUM8,
NUM9,NUM0,INS,DEL,
CH-,LAST,NEXT,CH+,
VOL-,FWD,RPTA,REW,
VOL+,PLAY,RPTB,PAUSE,
SPEED,UP,CLICK,ESC,
LEFT,DOWN,RIGHT,ENTER
//}这里定义了各种家电遥控器和PC机常用的功能键,共36个。
对一种具体的设备可以定义相应的命令数据表如下:VCD-N30B[]={//万利达VCP-N30B VCD机遥控器的命令码
0x3e64,0xffff,0xffff,0x3e76,
0x3e52,0x3e50,0x3e53,0x3e7a,
0x3e72,0x3e6a,0x3e79,0x3e71,
0x3e69,0x3e78,0x3e70,0xffff,
0xffff,0x3e7c,0x3e74,0xffff,
0x3e62,0x3e75,0xffff,0x3e7d,
0x3e61,0x3e60,0xffff,0x3e67,
0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0x3e6c,
//}0xffff表示对应的操作码相对于该设备而言不存在,或不必要。
进一步可以将上述数据表集中起来形成文件,编程时无需考虑具体的设备,只需关心能施加的操作即可,更换设备也只需修改一下数据文件,因此非常方便。
应用实例
教学节目点播系统
整个系统的结构见图1。安装于电教中心机房的主控计算机通过节点通信卡获得每个教室里的遥控器操作请求,根据系统数据设置对相应的请求进行解释,然后通过家电控制卡对指定的通道发出控制命令控制分配给该教室对应的播放设备。该设备播放的视频、音频通过闭路电视系统分频道,被送到相应的教室电视上再现,从而实现交互式多媒体教学。
家电多媒体控制中心
用户可以通过操作键盘、鼠标、触摸屏、PC遥控器等让PC机去间接地控制各种家电,例如让PC机打开录像机,播放指定节目、倒带、暂停、录像等等,满足特定的需要或增添新的乐趣。一些学校大都配有多功能教室,装配投影仪、录像机、VCD机、多媒体PC机等现代化的电教设备。主讲人员要操作这些设备就会同时用到多种遥控器,极为不便。使用家电控制卡将这些控制全由PC机来完成,主讲人员只需操作PC机即可控制这些设备甚至包括空调、窗帘等等,还可进一步用一只专门为PC机设计的PC遥控器遥控PC机完成所有功能。
此外,家电控制器还可用于工业控制、安全监控、电视台和电台节目制作等领域,让PC机精确控制众多视像设备协调工作等等。例如在规定的时间由程序去启动指定的设备用于监控等场合的定时录像,还可自动进行多路场景的录像切换;电台节目制作需要控制的专业视频设备如录像机、编辑机等更是十分之多,需要多人配合操作,用人工操作会相当繁锁而且难以保证设备间的精确同步。这些设备用程序控制就方便、简单得多,除控制视像音响类设备外还可控制空调器、电风扇、电动窗帘等其他电器,并能针对专门的遥控设备快速定制生产。
上一篇:自动功率控制
下一篇:大型粮库温度监控系统
- 热门资源推荐
- 热门放大器推荐