基于FPGA的家居遥控设计
遥控器所处的状态并提示用户进行正确的操作。
3.2 教练器
教练器的作用是产生种类足够多的编码信号供学习器来学习,进而控制不同的接收器。
SC2262是一种CMOS工艺制造的低功耗低价位通用编码电路,最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码, SC2262最多可有6位(D0-D5)数据端管脚,其编码方式如图4所示。
图4.SC2262的编码脉冲
3.3 接收器
SC2272 是与SC2262 配对使用的一块遥控解码专用集成电路。它可支持多达531441个地址的编码,极大的减少了码的冲突。SC2272 对从Din(14脚)端子送入的信号进行解码。解码出来的地址码与所设置地址输入端进行比较。如果所设置的地址与连续2个字码匹配,则SC2272 做以下动作:
a)当解码得到有“1”数据时,驱动相应的数据输出端为高电平;
b)驱动VT (17脚)输出为高电平。
将SC2272与继电器结合就可以控制电灯、电扇等用电器的电源开关,再加上小型直流电动机就可控制窗帘等机械装置。
3.4 与主机接口
为了能使此遥控器控制电脑就须将红外信号送入主机内,有两种可行的接口,分别为电视卡的红外接收头和串口。
3.4.1电视卡的红外接收头
现在的电视卡很多都带有红外遥控器,这样的遥控器除了可以控制电视的播放外,通过适当的软件,它还可以控制音频、视频播放、图片浏览程序及电脑的关机等,实现真正的电脑遥控功能。这种方法的缺点是需要购买电视卡,成本较高,不予采用。
3.4.2 串口
现在流行的有半软半硬和全软两种方案,半软半硬方案在红外接收头与串口间加入了数据预处理电路,使数据符合串口规范,降低了编程难度,减少了CPU占用率;而全软方案则是直接把红外接收头收到的数据送入串口,完全由软件处理,其编程难度和CPU占用率偏大,但硬件电路非常简单。图5是“软”方案的硬件电路。
图5.串行红外接口电路
由于目前应用串口的技术比较成熟,网上有很多现成的插件可以借鉴,因此我们决定采用串口的方式实现。4 软件设计
4.1 液晶(LCD)驱动程序
我们采用89S51单片机来控制液晶屏,通过不断循环读取FPGA的状态编码来控制液晶显示器实时地刷新其显示内容,其中包括遥控系统当前所处的状态(是处于学习状态还是遥控状态)以及当前处理的对象类别和编号,防止用户由于不清楚当前遥控的对象而产生误操作,同时在每一个状态液晶屏都要提示用户下一步该如何操作,为用户提供一个十分人性化的使用界面,软件使用Keil C编写。其程序流程如图6所示。
图6.LCD显示软件流程
4.2 Girder程序
Girder是一款完全免费的软件,从本质上说它可接收来自任何输入设备的指令,识别后做事先定义好的动作,如启动某个程序或鼠标双击等。首先要设置好硬件,从网上下载串口驱动文件IgorPlug.dll拷贝到Girder目录下的子目录Plugins中。Girder软件的界面如图7。
进入“filesettings”,点击选项卡上的“Plugins”,找到滚动窗口中的“Igor SFH-56 device”,在它前面的小框中打上勾,再点击左边的“Setting”, 选择你所使用的串口,点击OK就可以通过串口来控制电脑了。
图7.Girder的主界面
对于像关机,关闭显示器等动作,Girder已经有设置好的现成的命令可用,对于一些较复杂的播放软件的控制可以通过简单的设置来完成。
5 关键技术--对编码信号的学习方法
红外遥控信号的编码方式多种多样,例如图8所示的是一种电视卡自带的遥控器的编码波形,它采用的是Space编码,前面9ms的脉冲加4ms低电平是引导码,中间是8位地址码00H、8位地址反码FFH、8位数据码E8H、8位数据反码17H,从引导码开始计时发送108ms后若按键仍没有松开则以后每隔108ms发送一个9ms高+2ms底+0.5ms高的重复简码,直到按键松开为止。
图8. 一种电视卡的遥控器编码波形
如果每一种遥控器都通过解码后存储“0”“1”的数字信号,那么解码的工作将是非常繁重而且不经济的,一个简单的方法是记录下波形中每个高低电平的宽度,使用时再按照原始形式将波形发射出去。
6 结语
智能家居各类产品的智能化加速必将推动家居产业发展,让我们共同期待,相信智能时代还会创造更多的智能奇迹,智能家居生活终会飞入寻常百姓家,普通百姓也能享受高科技时代下的智慧生活。
- 基于FPGA的DSP设计方法(08-26)
- 电力电子装置控制系统的DSP设计方案(04-08)
- 基于DSP Builder的VGA接口设计(04-10)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)
- 数字信号处理(DSP)应用系统中的低功耗设计(05-02)
- 基于DSP的嵌入式显微图像处理系统的设计(06-28)