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