摘要 本文研究了支持互联网和PSTN两种接入方式的基于蓝牙技术的家庭网络网关的实现方案,主要介绍了家庭网络网关硬件和软件的设计与研制。在介绍家庭网络网关软件设计与开发中,分别阐述了子网关和主网关的软件设计与开发,重点讨论了主网关程序中信息家电控制器(information appliance controller,IAC)的工作流程和实现方法、互联网和PSTN控制家电终端设备的实现。文章最后分析了控制多个家电终端的软件实现。利用本文研制的家庭网络网关已实现了对春兰集团公司提供的洗衣机、空调等多个家电设备的远程控制并通过了功能验证。
1、引言
随着科学技术的进步和社会发展水平的提高,人们对于生活品质的追求也日渐提高,传统的家用电器越来越难满足现代家庭的需要。因而,出现了融合现代通信技术和计算机技术,使传统家电智能化并具有网络功能的信息家电(information appliance,IA)技术。将各种信息家电进行有线或无线连接形成的家庭网络,可以随时随地为家庭成员提供各种与家居生活密切相关的服务。蓝牙技术以其低成本、低功耗、安全性好、传输性能优越、组网灵活等诸多优点成为实现家庭网络的主要无线技术之一。目前,商品化的家庭网络产品多数是简单的网络集成系统,允许多台计算机互连,实现单一互联网接入、外设和文件共享;另一些是家庭环境中数据、语音和视频的分布式系统。本文研究了支持互联网和PSTN两种接入方式的基于蓝牙技术的家庭网络网关,对其硬件、软件设计与开发进行了详细的介绍。
2、家庭网络系统结构
家庭网络按照设备、网关连接时所使用的物理传输介质和底层协议的类型可以划分为家庭主网和家庭控制子网两个不同的网段,其结构如图1所示[1]。
图1 家庭网络的系统结构
家庭主网是在家庭网络中包括信息设备、娱乐设备、通信设备、家庭主网网关等高信息传输速率设备的网段,其主要功能包括提供与各种公共网络的交互、家庭的智能管理以及家庭电子娱乐。家庭网络网关包括家庭主网网关(简称主网关)和家庭控制子网网关(简称子网关)。主网关能够与家庭主网中的高速信息传输设备实现互联,为各种家电设备提供外部网络的接口,同时作为服务器被内部设备和外部网络访问。
家庭控制子网是家庭网络中包含子网关、移动控制终端、三表三防设备和信息家电终端等低速设备的网段。子网关能够与家庭控制子网中的低速信息传输设备实现互联,同时为各种家电设备提供与家庭主网的接口。移动控制终端以无线方式与子网关相互通信,实现对所有家庭控制子网设备的集中控制,提供图形用户界面,方便用户直观地操作和控制各个设备。家庭控制子网中的家电终端设备在传统的终端设备上增加了通信模块,通过通信模块,终端设备可以与子网关进行实时数据传输。
3、家庭网络网关硬件设计与实现
主网关和子网关通常位于同一个物理平台,即家庭网络网关。图2是本文研制的嵌入式家庭网络网关的硬件原理。从图中可以看出,家庭网络网关由网关控制模块、电话线路接口模块和蓝牙收发模块构成。处理器采用Motorola MCF5272,µClinux嵌入式操作系统。处理器提供了FEC接口,使得用户可以通过互联网远程访问家庭网络。蓝牙收发模块中采用了英国CSR公司的BlueCore2-External蓝牙芯片[2]。
图2 嵌入式家庭网络网关硬件原理
电话线路接口模块是家庭网络网关和PSTN的接口,使得用户可以通过PSTN远程控制家庭网络设备。该模块由电话线路接口芯片、DTMF(双音多频)接收电路、FSK(频移键控)解调及振铃检测电路组成。电话线路接口芯片选用Philips公司的TEA1062A,用于摘、挂机操作以及向远端用户发送控制成功或失败的提示音,提示音由网关上的蜂鸣器发出。网关具备转发来电信息的功能,由于常见的来电显示标准分为DTMF和FSK两种,网关同时设计了DTMF接收电路和FSK解调电路,用于分别接收DTMF标准和FSK标准的来电信息[3,4]。DTMF接收电路选用HOLTEK的HT9170D芯片,此芯片和MCF5272之间的信号为DV、D[3..0],其中DV和MCF5272的外部中断引脚INT1连接。当HT9170D接收到一个DTMF数据后,DV信号由低电平跳变到高电平,触发一个外部中断,通知MCF5272读取D[3..0]上的数据。FSK解调电路选用HOLTEK的HT9032C芯片,此芯片还提供振铃检测功能。HT9032C的RDET信号连接到MCF5272的外部中断引脚INT4。HT9032C每收到一次振铃信号,RDET信号产生一个低电平触发MCF5272的一个外部中断,告知MCF5272有电话呼入。交换机在呼叫的第一次振铃和第二次振铃之间发送FSK来电显示信息,HT9032C先对FSK来电信息进行解调,去掉FSK来电格式中的引导码和MARK码,然后以1 200 bit/s的速率把有效的来电数据发送到MCF5272。
4、家庭网络网关软件设计与开发
家庭网络网关软件总体结构如图3所示。可以看到,网关软件从功能上分为两大部分,分别是主网关程序和子网关程序。主网关程序由Web服务器、通用网关接口(common gateway interface,CGI)程序、信息家电控制器(information appliance controller,IAC)和PSTN接入模块组成。子网关程序由子网关应用程序、蓝牙协议栈模块、串口驱动模块、配置管理程序等组成[5,6]。主网关和子网关程序之间实际上是进程间通信的关系。基于BSD(Berkeley software distribution)套接口(Socket)不仅可以实现单机内的进程间通信,还可以实现不同计算机进程之间的通信。因此,选用通用的Socket接口定义主网关和子网关程序之间的接口,而且主网关与子网关程序的通信使用统一的通用设备控制协议(universal device control protocol,UDCP)[7]。
图3 家庭网络网关的软件总体结构
4.1 子网关程序软件设计与开发
子网关程序的主要功能为:等待子网内家电设备上线,下载家电设备描述文件;为IAC同步家电设备信息,包括设备描述文件和设备状态;转发家电终端设备与IAC之间的UDCP数据报文。子网关应用程序是子网关程序的核心模块,分别和蓝牙协议栈模块、串口驱动模块、配置管理程序和IAC交互。这里采用I/O多路转接的方式实现它们之间的交互,I/O多路转接是由select函数提供[8]。子网关应用程序工作流程如图4所示。子网关应用程序进行完相应的初始化操作后就进入主循环。主循环主要有两个功能,一是为蓝牙协议栈派发消息,二是用select处理IA及主网关程序发来的数据,侦听串口和Socket。为蓝牙协议栈派发消息的循环,直到消息链表中无消息可发时才结束,然后开始侦听串口和Socket,当从串口或Socket取得一个事件或数据包时就停止侦听,立即交蓝牙协议栈或UDCP处理。
图4 子网关应用程序工作流程
4.2 主网关程序软件设计与开发
4.2.1 IAC工作流程与实现
IAC是主网关程序的核心和枢纽,负责接收CGI(通用网关接口)程序发出的控制命令、PSTN接入模块收到的控制命令以及与子网关应用程序交互。IAC以进程的方式运行,在系统启动时,紧跟子网关应用程序启动,在网关程序运行期间一直存在。IAC工作流程如图5所示。与子网关程序类似,IAC与CGI程序、子网关应用程序和PSTN接入模块的交互也采用I/O多路转接的方式实现。
图5 IAC工作流程
IAC与CGI程序之间采用直接内存访问的方式进行通信。在高端RAM中划出两块区间SRV_WBUF和CGI_WBUF。前者用于存放IAC至CGI程序的数据,后者用于存放CGI程序至IAC的数据。CGI程序将控制命令封装成UDCP数据报文的形式写入CGI_WBUF后,向IAC发送信号SIGUSR1,通知IAC有控制命令到来。信号导致IAC中select函数返回,IAC在SIGUSR1信号处理函数中,从CGI_WBUF读取数据并使用函数UDCP_SendData()通过Socket接口将命令发送给子网关应用程序。
PSTN接入模块检测到振铃以及接收到DTMF或FSK来电时,会通知IAC,引起IAC的select函数返回。检测到振铃信号时,IAC控制电话线路接口芯片产生摘机操作,准备进一步接收远端PSTN用户的控制命令。当DTMF或FSK来电时,可分为两种不同的情况。如果是用户发来的控制命令,则接收并解析命令。当IAC接收到完整的一条控制命令后。将其封装成UDCP数据报文的形式,通过Socket接口将命令发送给子网关应用程序。如果接收到的是主叫方来电显示信息,则只存储来电显示信息,不转发。如果30 s内没有数据到来,则认为远端用户已挂机,IAC控制电话线路接口芯片产生挂机操作。
当Socket接口有数据时(如家电对控制命令的响应),也会导致select函数返回。如果当前处于互联网控制状态,IAC将读到的UDCP数据报文写入SRV_WBUF,供CGI程序读取,在网页显示。如果当前处于PSTN控制状态,则IAC会解析收到的数据,控制蜂鸣器发出控制成功或失败的提示音。
4.2.2 互联网接入控制的实现
实现互联网接入控制包括3部分工作:Web服务器配置、CGI程序的实现、CGI与IAC的通信。用户通过互联网控制家庭网络内部设备时,首先要通过浏览器登录到网关上的Web服务器。本文使用了µClinux下应用最为广泛的嵌入式Web服务器boa,并且选择CGI来进行网关Web服务器上的动态编程[9]。
Web服务器页面与各CGI程序的调用关系如图6所示。CGI程序login.cgi进行用户检测和密码验证;iacinit.cgi获取家电设备注册表,生成设备列表页面;ia_parse.cgi生成家电终端设备的控制页面;ia_op.cgi将用户输入信息封装成UDCP命令后发给IAC,将家电对控制命令的响应信息在页面上显示;chstate.cgi定期获取家电状态信息及故障告警,每隔10 s刷新页面;lanstat.cgi负责解析本地的网络配置文件,显示当前网络信息并生成可供用户配置的页面;lanupdate.cgi负责将用户的改动存入网络配置文件;chpwd.cgi用于修改用户密码;logout.cgi注销用户登录。
图6 Web页面和CGI程序的调用关系
考虑到CGI程序的运行期很短,当IAC有数据通知CGI程序时,我们采用了如下方式使用SRV_WBUF缓冲区。IAC启动后将设备注册表信息写入SRV_WBUF,等待iacinit.cgi执行时读取。IAC收到来自子网关应用程序的UDCP数据报文后,将报文信息写入SRV_WBUF,供ia_op.cgi或chstate.cgi执行时读取。
4.2.3 PSTN接入控制的实现
图7给出了PSTN接入控制软件结构框图。从图中可以看出,PSTN接入模块由工作在内核态的一系列设备驱动程序构成,包括振铃检测驱动程序、FSK解调驱动程序、DTMF接收驱动程序以及电话线路接口驱动程序[10]。
图7 PSTN接入控制软件结构
图8为FSK解调驱动程序的工作流程。FSK解调电路只有一根数据线连接到CPU的GPIO口上,这根数据线的每一字节数据都以0开始、以1结束,中间是8 bit的ASSIC码,最低位最先发送,在没有数据时数据线一直保持高电平。FSK数据帧由若干字节这样的数据组成。由于FSK数据具有这种特殊的格式,把这根数据线同时接到CPU的外部中断引脚INT4上,并设置为下降沿触发,这样每来1 byte数据就会产生一次中断。
图8 FSK解调驱动程序工作流程
相比于FSK来电信息的接收而言,DTMF来电信息的接收就比较容易了,DTMF接收驱动程序在每次中断来时只需要读并行信号线,并进行简单的解码、缓存工作。这里把摘、挂机,抬高、拉低静音等命令都包含在电话线路接口驱动程序的ioctl命令集中了。此外,在电话线路接口驱动中还实现了对蜂鸣器的控制,根据家电设备对PSTN用户控制命令的不同响应,给出命令控制成功或失败的提示音,以通知远端用户。
PSTN用户控制命令格式如表1所示。目的设备标识用于区分对不同家电终端设备的控制,控制域和数据域分别是两个字符,按照春兰研究院提供的家电控制协议中关于控制命令的描述实现。“*”为间隔符号,“#”表示本条控制命令输入完毕。PSTN接收模块在收到控制命令后。需要将字符类型的控制命令进行转换,封装成UDCP数据报文。发送给相应的家电终端。
表1 PSTN用户控制命令格式
目的设备标识间隔符 控制域数据域 结束符
1 个字符*2个字符2个字符#
5、对多个家电终端设备的控制
由于一个蓝牙主设备最多可以支持7个从设备,因而,作者研制的家庭网络网关可以最多支持7个在线的家电终端设备。不同的家电终端设备分配有不同的UDS(统一设备序列号),作为设备在家庭控制子网中UDCP层的网络标识。子网关应用程序和IAC交互的每一个UDCP数据报文中都包含了源设备UDS和目的设备UDS,因而,主网关程序可以正确地区分不同的家电设备。在子网关应用程序中,定义了如下所示的结构数组来管理多个家电设备建链、登录以及设备描述文件下载等的相关信息。
6、结束语
本文研究了支持两种接入方式的嵌入式家庭网络网关的实现,阐述了家庭网络网关硬件和软件的设计与开发,其中重点介绍了家庭网络主网关的软件设计与实现,包括IAC的工作流程与实现、PSTN接入控制的实现、互联网接入控制的实现,最后分析了支持多个家电终端设备的网关软件设计与实现。利用本文研制的网关设备,实现了用户以PSTN和互联网两种方式对春兰集团公司提供的洗衣机、空调等多个家电设备的远程控制并通过功能验证。
参考文献
1 Shen Lianfeng,Man Lei,Yuan Yuheng et al. Research and development on the home network in China In:Proceedings of the 9th International Symposium on Consumer Electronics (ISCE 2005),Macau, China, June 2005
2 Cambridge Silicon Radio Limited.BlueCore2-external product data sheet,October 2001
3 YDN 069-1997.电话主叫识别信息传送及显示功能的技术要求和测试方法,1998
4 TTL 02-1998.电话主叫识别信息传送及显示功能的检验规程(DIMF 传送方式)。1998
5 Bluetooth SIG.Specification of the Bluetooth system,volume 1,core,version 1.1,2001
6 Bluetooth SIG.Specification of the Bluetooth system,volume 2,profile,version 1.1,2001
7 中国家庭网络标准工作组.SJ/T11314-2005家庭控制子网通信协议规范.信息产业部,2005
8 Stevens W R著.尤晋元等译.UNIX环境高级编程.北京:机械工业出版社,2000
9 合肥华恒网络技术有限公司.华恒嵌入式LINUX开发套件HHCF5272-LCD-IDE-R1技术手册,2002
10 Alessandro Rubini著.Lisoleg泽.Linux设备驱动程序.北京:中国电力出版社,2000