1. 引言
早在30年代便有人提出家庭是“Machine for Living”的远景,50年代更有人提出了“Automated Home”的说法;时至今日,“Digital Home”,“Intelligent Home”,“Smart Home”等异曲同工的说法如雨后春笋般冒出来。“Smart Home”被翻译为智能家居,把电脑、网络、自动控制等技术应用于传统家具、电器,使之代替人的某些劳动,从而实现家庭居住条件的简单化、智能化,其基本目标是为人们提供一个高效、舒适、安全、便利、环保的生活环境。
在快思聪(Crestron)亚洲有限公司提供设备赞助和澳门特别行政区科学技术发展基金提供经费赞助的支持下,澳门科技大学智能家居实验室从2006开始开发智能家居系统。利用快思聪亚洲有限公司提供的硬件设备成功实现了有线触摸屏、无线触摸屏、挂墙式触摸屏和网页对智能家居系统的控制。但由于触摸屏的价格相对较高,在家里利用网页控制智能家居系统又不太方便,因此,本文提出了一种较为经济且方便的控制方案,即手机通过蓝牙对智能家居系统进行控制。
蓝牙技术是一种统一的开放性全球短距离无线通信协议标准,它有着低成本、短距离无线连接的优势,具有使用方便、可靠性高、低功耗等特性,能与多种固定或移动设备的通信环境建立无线连接,可应用在计算机、手机及其它家电产品上。随着手机应用的普及化和功能的完善化,使用手机通过蓝牙控制智能家居将是一种具有广阔前景的方法。
2.澳门科技大学智能家居系统(MUST Smart Home System)
澳门科技大学智能家居系统的结构如图2.1所示。其中,PRO2是主处理器,用来控制整个智能家居系统;CNPCI-8是电源继电器,通过红外线(Infrared rays)来控制电视机(TV)、DVD播放器(DVD player)和冷风机(Air conditioner)的电源开关;CLI-220N-4为灯光控制器,用来控制四组吊灯(Lamps);TPS-4500V、TPMC-10、CT-1000分别为有线触摸屏、无线触摸屏、挂墙式触摸屏。Web page和X-Panel(.exe file)是在电脑(PC)上生成的两种不同的网页格式。
智能家居系统的控制界面和逻辑程序分别使用快思聪公司的界面设计软件Vision Tools Pro-e(VT Pro-e) 和逻辑设计软件SIMPL Windows设计而成,通过将程序传送到主处理器PRO2上,从而实现有线触摸屏、无线触摸屏、挂墙式触摸屏和网页对智能家居系统的控制。其软件开发步骤如图2.2所示。
3.智能家居蓝牙遥控系统的实现
前面介绍了澳门科技大学的智能家居系统,接下来我们讨论手机通过蓝牙遥控智能家居系统的实现过程。
3.1智能家居蓝牙遥控系统的实现流程
手机通过蓝牙遥控智能家居系统需要经过一系列流程。
首先,在逻辑设计软件SIMPL Windows中建立TCP/IP Server, User Program Commands和Serial I/O元素,分别对它们进行相应的逻辑编程。
其次,手机电脑连接系统(Mobile to PC System,以下简称MPS)使手机通过蓝牙与客户端电脑相连接,打开电脑的一个串口,并将手机上用户所写的指令发送到电脑相应的串口。
再次,蓝牙控制系统(Bluetooth Control System,以下简称BCS)从电脑相应的串口读出指令并判断指令相对应的命令,然后转发给主处理器PRO2。
最后,主处理器PRO2通过指定的端口接收指令,并通过其功能模块执行相应操作,从而实现各种控制。
具体流程如图3.1所示。
下面将详细说明MPS和BCS的实现过程以及主处理器PRO2的控制原理。
3.2 MPS的实现
MPS通过蓝牙使手机和电脑建立连接,打开电脑的一个串口,手机通过按键向相应串口中写入指令,使用Python语言可以简便地实现这一功能。Python是一种即译式的、互动的、面向对象的编程语言,它包含了模组式的操作、异常处理、动态数据的形态与结构以及类别的使用等功能。和其他语言相比,Python中可以用一个语句表达复杂的操作,不需要声明变量,且具有可扩充性。
3.2.1 MPS的开发步骤
随着python语言的日益发展,各个手机代理商都将python解释器移植到它的移动终端系统上,该方案所采用的Python for Series 60就是其中之一。基于Nokia S60系统进行python程序开发的步骤如下:
(1)安装Python for Series 60的Python解释器,即一个后缀为*.sis的文件;
(2)在PC上编写所需的python程序,并保存为*.py文件;
(3)将*.py文件通过蓝牙传送到手机上即可运行(无需编译或者安装)。
3.2.2 MPS的实现流程
MPS的目标是使手机通过蓝牙连接到电脑并且可以通过手机向电脑写入相应指令,为了完成这些功能,需要解决两个问题:
(1)建立蓝牙连接处理函数bt_connect();
(2)创建一个可触发数字输入框,并建立手机通过蓝牙发送指令至电脑串口的函数bt_typetext()。
程序实现的流程如图3.2所示。
3.3 BCS的实现
指令写入电脑串口后,BCS需要从电脑相应的串口读取指令并转发给智能家居系统主处理器PRO2,从而实现相应的控制功能。本方案采用Visual Basic(简称VB)来实现该程序,其界面如图3.3所示。
其中,PC Serial用于电脑相应串口的打开,Pro2IP用于智能家居系统主处理器的连接,Send用于相应指令的发送。
下面将分别介绍这三个功能块。
3.3.1 PC Serial功能块
当手机通过蓝牙与电脑成功连接时,蓝牙适配器会虚拟一个串口通信的环境并自动分配串口。程序编写中使用了VB提供的通信控件——MSCOMM控件,它通过串行端口传输和接收数据,为应用程序提供串行通讯功能;通过该控件可设置串行通信的数据发送和接收,也可以对串口状态及串口通信的信息格式和协议进行设置。
在BCS主控界面(图3.3)PC Serial部分输入相应串口号并对其参数作相应设置(一般情况使用默认设置),打开串口,下方显示“串口打开中”表示串口成功打开。
3.3.2 Pro2IP功能块
在建立服务端与客户端的连接时,采用了Microsoft VB提供的用于Windows Sockets编程的可用控件——Winsock控件。Winsock控件有两个重要属性:Protocol和State。
Protocol属性用于设定使用的协议是TCP还是UDP:取值sckTCPProtocol表示TCP,取值sckUDPProtocol则表示UDP,这里需要建立客户机与服务器的TCP连接,故取值Protocol = sckTCPProtocol。State属性用于反映当前TCP/IP的连接状态。
实现该功能块需要两个步骤,首先,分别设置控件的RemoteHost属性和RemotePort属性,用于制定服务器的IP地址和侦听端口。然后,使用Connect方法向服务器发送请求:
若服务器接受客户端程序请求,即Winsock.State=sckConnected,则客户端程序产生Connect事件,就可以使用SendData方法发送数据;若接收到Close事件,则用Close方法关闭连接。
其流程图如图3.4所示。
在BCS主控界面(图3.3)Pro2IP部分输入主处理器的IP及预设定的端口号,打开连接,下方显示:IP连接成功,则表示连接成功;否则,连接失败。
3.3.3 Send功能块
Send功能块使用了VB MScomm控件的OnComm事件,在事件程序编写中设定了快捷方式,左侧0-9数字分别对应右侧十种不同的控制命令,我们根据电脑串口接收到的数据判断发送什么指令到主处理器PRO2,从而实现控制。[Page]
3.4主处理器PRO2的控制原理
主处理器PRO2成功接受BCS发送的指令后,User Program Commands元素接收指令并通过TCP/IP Server元素中已指定的端口传送至TCP/IP Server元素,继而转送至Serial I/O元素进行指令匹配,如果指令匹配成功,则执行相应命令。
各元素逻辑图如图3.5所示。
4.结束语
随着因特网和移动通信的迅猛发展,社会发展日趋信息化,人们的生活方式、工作方式以及思维方式都随之发生了巨大的变化;智能家居的逐步发展给当今信息社会注入了新的生机和活力,智能家居蓝牙遥控系统是一种经济且方便的控制方法,蓝牙技术的日益成熟及智能家居的逐步普及使得该方案具有潜在的市场前景。
参考文献:
[1]卫振林 著《Visual Basic程序设计》[M] 第2版 北京,机械工业出版社,2004年
[2]严紫建,刘元安 著《蓝牙技术》[M] 北京邮电大学出版社,2001年
[3]http://www.crestronasia.com
[4]http://www.mobilenin.com