摘要 本文研究了支持互聯(lián)網(wǎng)和PSTN兩種接入方式的基于藍牙技術的家庭網(wǎng)絡網(wǎng)關的實現(xiàn)方案,主要介紹了家庭網(wǎng)絡網(wǎng)關硬件和軟件的設計與研制。在介紹家庭網(wǎng)絡網(wǎng)關軟件設計與開發(fā)中,分別闡述了子網(wǎng)關和主網(wǎng)關的軟件設計與開發(fā),重點討論了主網(wǎng)關程序中信息家電控制器(information appliance controller,IAC)的工作流程和實現(xiàn)方法、互聯(lián)網(wǎng)和PSTN控制家電終端設備的實現(xiàn)。文章最后分析了控制多個家電終端的軟件實現(xiàn)。利用本文研制的家庭網(wǎng)絡網(wǎng)關已實現(xiàn)了對春蘭集團公司提供的洗衣機、空調等多個家電設備的遠程控制并通過了功能驗證。
1、引言
隨著科學技術的進步和社會發(fā)展水平的提高,人們對于生活品質的追求也日漸提高,傳統(tǒng)的家用電器越來越難滿足現(xiàn)代家庭的需要。因而,出現(xiàn)了融合現(xiàn)代通信技術和計算機技術,使傳統(tǒng)家電智能化并具有網(wǎng)絡功能的信息家電(information appliance,IA)技術。將各種信息家電進行有線或無線連接形成的家庭網(wǎng)絡,可以隨時隨地為家庭成員提供各種與家居生活密切相關的服務。藍牙技術以其低成本、低功耗、安全性好、傳輸性能優(yōu)越、組網(wǎng)靈活等諸多優(yōu)點成為實現(xiàn)家庭網(wǎng)絡的主要無線技術之一。目前,商品化的家庭網(wǎng)絡產(chǎn)品多數(shù)是簡單的網(wǎng)絡集成系統(tǒng),允許多臺計算機互連,實現(xiàn)單一互聯(lián)網(wǎng)接入、外設和文件共享;另一些是家庭環(huán)境中數(shù)據(jù)、語音和視頻的分布式系統(tǒng)。本文研究了支持互聯(lián)網(wǎng)和PSTN兩種接入方式的基于藍牙技術的家庭網(wǎng)絡網(wǎng)關,對其硬件、軟件設計與開發(fā)進行了詳細的介紹。
2、家庭網(wǎng)絡系統(tǒng)結構
家庭網(wǎng)絡按照設備、網(wǎng)關連接時所使用的物理傳輸介質和底層協(xié)議的類型可以劃分為家庭主網(wǎng)和家庭控制子網(wǎng)兩個不同的網(wǎng)段,其結構如圖1所示[1]。
圖1 家庭網(wǎng)絡的系統(tǒng)結構
家庭主網(wǎng)是在家庭網(wǎng)絡中包括信息設備、娛樂設備、通信設備、家庭主網(wǎng)網(wǎng)關等高信息傳輸速率設備的網(wǎng)段,其主要功能包括提供與各種公共網(wǎng)絡的交互、家庭的智能管理以及家庭電子娛樂。家庭網(wǎng)絡網(wǎng)關包括家庭主網(wǎng)網(wǎng)關(簡稱主網(wǎng)關)和家庭控制子網(wǎng)網(wǎng)關(簡稱子網(wǎng)關)。主網(wǎng)關能夠與家庭主網(wǎng)中的高速信息傳輸設備實現(xiàn)互聯(lián),為各種家電設備提供外部網(wǎng)絡的接口,同時作為服務器被內部設備和外部網(wǎng)絡訪問。
家庭控制子網(wǎng)是家庭網(wǎng)絡中包含子網(wǎng)關、移動控制終端、三表三防設備和信息家電終端等低速設備的網(wǎng)段。子網(wǎng)關能夠與家庭控制子網(wǎng)中的低速信息傳輸設備實現(xiàn)互聯(lián),同時為各種家電設備提供與家庭主網(wǎng)的接口。移動控制終端以無線方式與子網(wǎng)關相互通信,實現(xiàn)對所有家庭控制子網(wǎng)設備的集中控制,提供圖形用戶界面,方便用戶直觀地操作和控制各個設備。家庭控制子網(wǎng)中的家電終端設備在傳統(tǒng)的終端設備上增加了通信模塊,通過通信模塊,終端設備可以與子網(wǎng)關進行實時數(shù)據(jù)傳輸。
3、家庭網(wǎng)絡網(wǎng)關硬件設計與實現(xiàn)
主網(wǎng)關和子網(wǎng)關通常位于同一個物理平臺,即家庭網(wǎng)絡網(wǎng)關。圖2是本文研制的嵌入式家庭網(wǎng)絡網(wǎng)關的硬件原理。從圖中可以看出,家庭網(wǎng)絡網(wǎng)關由網(wǎng)關控制模塊、電話線路接口模塊和藍牙收發(fā)模塊構成。處理器采用Motorola MCF5272,µClinux嵌入式操作系統(tǒng)。處理器提供了FEC接口,使得用戶可以通過互聯(lián)網(wǎng)遠程訪問家庭網(wǎng)絡。藍牙收發(fā)模塊中采用了英國CSR公司的BlueCore2-External藍牙芯片[2]。
圖2 嵌入式家庭網(wǎng)絡網(wǎng)關硬件原理
電話線路接口模塊是家庭網(wǎng)絡網(wǎng)關和PSTN的接口,使得用戶可以通過PSTN遠程控制家庭網(wǎng)絡設備。該模塊由電話線路接口芯片、DTMF(雙音多頻)接收電路、FSK(頻移鍵控)解調及振鈴檢測電路組成。電話線路接口芯片選用Philips公司的TEA1062A,用于摘、掛機操作以及向遠端用戶發(fā)送控制成功或失敗的提示音,提示音由網(wǎng)關上的蜂鳴器發(fā)出。網(wǎng)關具備轉發(fā)來電信息的功能,由于常見的來電顯示標準分為DTMF和FSK兩種,網(wǎng)關同時設計了DTMF接收電路和FSK解調電路,用于分別接收DTMF標準和FSK標準的來電信息[3,4]。DTMF接收電路選用HOLTEK的HT9170D芯片,此芯片和MCF5272之間的信號為DV、D[3..0],其中DV和MCF5272的外部中斷引腳INT1連接。當HT9170D接收到一個DTMF數(shù)據(jù)后,DV信號由低電平跳變到高電平,觸發(fā)一個外部中斷,通知MCF5272讀取D[3..0]上的數(shù)據(jù)。FSK解調電路選用HOLTEK的HT9032C芯片,此芯片還提供振鈴檢測功能。HT9032C的RDET信號連接到MCF5272的外部中斷引腳INT4。HT9032C每收到一次振鈴信號,RDET信號產(chǎn)生一個低電平觸發(fā)MCF5272的一個外部中斷,告知MCF5272有電話呼入。交換機在呼叫的第一次振鈴和第二次振鈴之間發(fā)送FSK來電顯示信息,HT9032C先對FSK來電信息進行解調,去掉FSK來電格式中的引導碼和MARK碼,然后以1 200 bit/s的速率把有效的來電數(shù)據(jù)發(fā)送到MCF5272。
4、家庭網(wǎng)絡網(wǎng)關軟件設計與開發(fā)
家庭網(wǎng)絡網(wǎng)關軟件總體結構如圖3所示?梢钥吹剑W(wǎng)關軟件從功能上分為兩大部分,分別是主網(wǎng)關程序和子網(wǎng)關程序。主網(wǎng)關程序由Web服務器、通用網(wǎng)關接口(common gateway interface,CGI)程序、信息家電控制器(information appliance controller,IAC)和PSTN接入模塊組成。子網(wǎng)關程序由子網(wǎng)關應用程序、藍牙協(xié)議棧模塊、串口驅動模塊、配置管理程序等組成[5,6]。主網(wǎng)關和子網(wǎng)關程序之間實際上是進程間通信的關系;贐SD(Berkeley software distribution)套接口(Socket)不僅可以實現(xiàn)單機內的進程間通信,還可以實現(xiàn)不同計算機進程之間的通信。因此,選用通用的Socket接口定義主網(wǎng)關和子網(wǎng)關程序之間的接口,而且主網(wǎng)關與子網(wǎng)關程序的通信使用統(tǒng)一的通用設備控制協(xié)議(universal device control protocol,UDCP)[7]。
圖3 家庭網(wǎng)絡網(wǎng)關的軟件總體結構
4.1 子網(wǎng)關程序軟件設計與開發(fā)
子網(wǎng)關程序的主要功能為:等待子網(wǎng)內家電設備上線,下載家電設備描述文件;為IAC同步家電設備信息,包括設備描述文件和設備狀態(tài);轉發(fā)家電終端設備與IAC之間的UDCP數(shù)據(jù)報文。子網(wǎng)關應用程序是子網(wǎng)關程序的核心模塊,分別和藍牙協(xié)議棧模塊、串口驅動模塊、配置管理程序和IAC交互。這里采用I/O多路轉接的方式實現(xiàn)它們之間的交互,I/O多路轉接是由select函數(shù)提供[8]。子網(wǎng)關應用程序工作流程如圖4所示。子網(wǎng)關應用程序進行完相應的初始化操作后就進入主循環(huán)。主循環(huán)主要有兩個功能,一是為藍牙協(xié)議棧派發(fā)消息,二是用select處理IA及主網(wǎng)關程序發(fā)來的數(shù)據(jù),偵聽串口和Socket。為藍牙協(xié)議棧派發(fā)消息的循環(huán),直到消息鏈表中無消息可發(fā)時才結束,然后開始偵聽串口和Socket,當從串口或Socket取得一個事件或數(shù)據(jù)包時就停止偵聽,立即交藍牙協(xié)議;騏DCP處理。
圖4 子網(wǎng)關應用程序工作流程
4.2 主網(wǎng)關程序軟件設計與開發(fā)
4.2.1 IAC工作流程與實現(xiàn)
IAC是主網(wǎng)關程序的核心和樞紐,負責接收CGI(通用網(wǎng)關接口)程序發(fā)出的控制命令、PSTN接入模塊收到的控制命令以及與子網(wǎng)關應用程序交互。IAC以進程的方式運行,在系統(tǒng)啟動時,緊跟子網(wǎng)關應用程序啟動,在網(wǎng)關程序運行期間一直存在。IAC工作流程如圖5所示。與子網(wǎng)關程序類似,IAC與CGI程序、子網(wǎng)關應用程序和PSTN接入模塊的交互也采用I/O多路轉接的方式實現(xiàn)。
圖5 IAC工作流程
IAC與CGI程序之間采用直接內存訪問的方式進行通信。在高端RAM中劃出兩塊區(qū)間SRV_WBUF和CGI_WBUF。前者用于存放IAC至CGI程序的數(shù)據(jù),后者用于存放CGI程序至IAC的數(shù)據(jù)。CGI程序將控制命令封裝成UDCP數(shù)據(jù)報文的形式寫入CGI_WBUF后,向IAC發(fā)送信號SIGUSR1,通知IAC有控制命令到來。信號導致IAC中select函數(shù)返回,IAC在SIGUSR1信號處理函數(shù)中,從CGI_WBUF讀取數(shù)據(jù)并使用函數(shù)UDCP_SendData()通過Socket接口將命令發(fā)送給子網(wǎng)關應用程序。
PSTN接入模塊檢測到振鈴以及接收到DTMF或FSK來電時,會通知IAC,引起IAC的select函數(shù)返回。檢測到振鈴信號時,IAC控制電話線路接口芯片產(chǎn)生摘機操作,準備進一步接收遠端PSTN用戶的控制命令。當DTMF或FSK來電時,可分為兩種不同的情況。如果是用戶發(fā)來的控制命令,則接收并解析命令。當IAC接收到完整的一條控制命令后。將其封裝成UDCP數(shù)據(jù)報文的形式,通過Socket接口將命令發(fā)送給子網(wǎng)關應用程序。如果接收到的是主叫方來電顯示信息,則只存儲來電顯示信息,不轉發(fā)。如果30 s內沒有數(shù)據(jù)到來,則認為遠端用戶已掛機,IAC控制電話線路接口芯片產(chǎn)生掛機操作。
當Socket接口有數(shù)據(jù)時(如家電對控制命令的響應),也會導致select函數(shù)返回。如果當前處于互聯(lián)網(wǎng)控制狀態(tài),IAC將讀到的UDCP數(shù)據(jù)報文寫入SRV_WBUF,供CGI程序讀取,在網(wǎng)頁顯示。如果當前處于PSTN控制狀態(tài),則IAC會解析收到的數(shù)據(jù),控制蜂鳴器發(fā)出控制成功或失敗的提示音。
4.2.2 互聯(lián)網(wǎng)接入控制的實現(xiàn)
實現(xiàn)互聯(lián)網(wǎng)接入控制包括3部分工作:Web服務器配置、CGI程序的實現(xiàn)、CGI與IAC的通信。用戶通過互聯(lián)網(wǎng)控制家庭網(wǎng)絡內部設備時,首先要通過瀏覽器登錄到網(wǎng)關上的Web服務器。本文使用了µClinux下應用最為廣泛的嵌入式Web服務器boa,并且選擇CGI來進行網(wǎng)關Web服務器上的動態(tài)編程[9]。
Web服務器頁面與各CGI程序的調用關系如圖6所示。CGI程序login.cgi進行用戶檢測和密碼驗證;iacinit.cgi獲取家電設備注冊表,生成設備列表頁面;ia_parse.cgi生成家電終端設備的控制頁面;ia_op.cgi將用戶輸入信息封裝成UDCP命令后發(fā)給IAC,將家電對控制命令的響應信息在頁面上顯示;chstate.cgi定期獲取家電狀態(tài)信息及故障告警,每隔10 s刷新頁面;lanstat.cgi負責解析本地的網(wǎng)絡配置文件,顯示當前網(wǎng)絡信息并生成可供用戶配置的頁面;lanupdate.cgi負責將用戶的改動存入網(wǎng)絡配置文件;chpwd.cgi用于修改用戶密碼;logout.cgi注銷用戶登錄。
圖6 Web頁面和CGI程序的調用關系
考慮到CGI程序的運行期很短,當IAC有數(shù)據(jù)通知CGI程序時,我們采用了如下方式使用SRV_WBUF緩沖區(qū)。IAC啟動后將設備注冊表信息寫入SRV_WBUF,等待iacinit.cgi執(zhí)行時讀取。IAC收到來自子網(wǎng)關應用程序的UDCP數(shù)據(jù)報文后,將報文信息寫入SRV_WBUF,供ia_op.cgi或chstate.cgi執(zhí)行時讀取。
4.2.3 PSTN接入控制的實現(xiàn)
圖7給出了PSTN接入控制軟件結構框圖。從圖中可以看出,PSTN接入模塊由工作在內核態(tài)的一系列設備驅動程序構成,包括振鈴檢測驅動程序、FSK解調驅動程序、DTMF接收驅動程序以及電話線路接口驅動程序[10]。
圖7 PSTN接入控制軟件結構
圖8為FSK解調驅動程序的工作流程。FSK解調電路只有一根數(shù)據(jù)線連接到CPU的GPIO口上,這根數(shù)據(jù)線的每一字節(jié)數(shù)據(jù)都以0開始、以1結束,中間是8 bit的ASSIC碼,最低位最先發(fā)送,在沒有數(shù)據(jù)時數(shù)據(jù)線一直保持高電平。FSK數(shù)據(jù)幀由若干字節(jié)這樣的數(shù)據(jù)組成。由于FSK數(shù)據(jù)具有這種特殊的格式,把這根數(shù)據(jù)線同時接到CPU的外部中斷引腳INT4上,并設置為下降沿觸發(fā),這樣每來1 byte數(shù)據(jù)就會產(chǎn)生一次中斷。
圖8 FSK解調驅動程序工作流程
相比于FSK來電信息的接收而言,DTMF來電信息的接收就比較容易了,DTMF接收驅動程序在每次中斷來時只需要讀并行信號線,并進行簡單的解碼、緩存工作。這里把摘、掛機,抬高、拉低靜音等命令都包含在電話線路接口驅動程序的ioctl命令集中了。此外,在電話線路接口驅動中還實現(xiàn)了對蜂鳴器的控制,根據(jù)家電設備對PSTN用戶控制命令的不同響應,給出命令控制成功或失敗的提示音,以通知遠端用戶。
PSTN用戶控制命令格式如表1所示。目的設備標識用于區(qū)分對不同家電終端設備的控制,控制域和數(shù)據(jù)域分別是兩個字符,按照春蘭研究院提供的家電控制協(xié)議中關于控制命令的描述實現(xiàn)。“*”為間隔符號,“#”表示本條控制命令輸入完畢。PSTN接收模塊在收到控制命令后。需要將字符類型的控制命令進行轉換,封裝成UDCP數(shù)據(jù)報文。發(fā)送給相應的家電終端。
表1 PSTN用戶控制命令格式
目的設備標識間隔符 控制域數(shù)據(jù)域 結束符
1 個字符*2個字符2個字符#
5、對多個家電終端設備的控制
由于一個藍牙主設備最多可以支持7個從設備,因而,作者研制的家庭網(wǎng)絡網(wǎng)關可以最多支持7個在線的家電終端設備。不同的家電終端設備分配有不同的UDS(統(tǒng)一設備序列號),作為設備在家庭控制子網(wǎng)中UDCP層的網(wǎng)絡標識。子網(wǎng)關應用程序和IAC交互的每一個UDCP數(shù)據(jù)報文中都包含了源設備UDS和目的設備UDS,因而,主網(wǎng)關程序可以正確地區(qū)分不同的家電設備。在子網(wǎng)關應用程序中,定義了如下所示的結構數(shù)組來管理多個家電設備建鏈、登錄以及設備描述文件下載等的相關信息。
6、結束語
本文研究了支持兩種接入方式的嵌入式家庭網(wǎng)絡網(wǎng)關的實現(xiàn),闡述了家庭網(wǎng)絡網(wǎng)關硬件和軟件的設計與開發(fā),其中重點介紹了家庭網(wǎng)絡主網(wǎng)關的軟件設計與實現(xiàn),包括IAC的工作流程與實現(xiàn)、PSTN接入控制的實現(xiàn)、互聯(lián)網(wǎng)接入控制的實現(xiàn),最后分析了支持多個家電終端設備的網(wǎng)關軟件設計與實現(xiàn)。利用本文研制的網(wǎng)關設備,實現(xiàn)了用戶以PSTN和互聯(lián)網(wǎng)兩種方式對春蘭集團公司提供的洗衣機、空調等多個家電設備的遠程控制并通過功能驗證。
參考文獻
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.電話主叫識別信息傳送及顯示功能的檢驗規(guī)程(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 中國家庭網(wǎng)絡標準工作組.SJ/T11314-2005家庭控制子網(wǎng)通信協(xié)議規(guī)范.信息產(chǎn)業(yè)部,2005
8 Stevens W R著.尤晉元等譯.UNIX環(huán)境高級編程.北京:機械工業(yè)出版社,2000
9 合肥華恒網(wǎng)絡技術有限公司.華恒嵌入式LINUX開發(fā)套件HHCF5272-LCD-IDE-R1技術手冊,2002
10 Alessandro Rubini著.Lisoleg澤.Linux設備驅動程序.北京:中國電力出版社,2000