張璐+呂昂
摘 要:論述了一種雙網(wǎng)絡(luò)智能家居系統(tǒng)中的網(wǎng)關(guān)/服務(wù)器,該網(wǎng)關(guān)/服務(wù)器支持電力載波和藍(lán)牙兩種通信協(xié)議,而智能家居系統(tǒng)中的采控節(jié)點可根據(jù)自身特點選擇通信協(xié)議,增加網(wǎng)關(guān)/服務(wù)器的靈活性、兼容性和通用性。文章描述了雙網(wǎng)絡(luò)網(wǎng)關(guān)/服務(wù)器的兩種接入方式(兩種匯聚節(jié)點),給出了網(wǎng)關(guān)/服務(wù)器平臺及其網(wǎng)關(guān)/服務(wù)器應(yīng)用程序的設(shè)計方法。
關(guān)鍵詞:智能家居;網(wǎng)關(guān);服務(wù)器;匯聚節(jié)點;CGI;電力載波;藍(lán)牙
中圖分類號:TP393.1 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2015)07-00-04
0 引 言
智能家居系統(tǒng)主要實現(xiàn)智能家居設(shè)備的聯(lián)網(wǎng)、遠(yuǎn)程訪問和智能控制。在智能家居系統(tǒng)中,網(wǎng)關(guān)/服務(wù)器是核心部件,它一方面實現(xiàn)網(wǎng)關(guān)功能,將家庭內(nèi)部的智能家居設(shè)備接入Internet,實現(xiàn)家庭內(nèi)部網(wǎng)絡(luò)與外部的Internet互連;另一方面則實現(xiàn)服務(wù)器功能,為用戶提供家居設(shè)備的遠(yuǎn)程訪問服務(wù)。智能家居設(shè)備聯(lián)網(wǎng)方式有有線連接和無線連接兩種,常用的有線連接有以太網(wǎng)、CAN總線等[1];常用的無線連接有ZigBee、WiFi、Z-Wave等,它們的優(yōu)缺點參見文獻(xiàn)[1]。目前,國內(nèi)智能家居系統(tǒng)、智能家居設(shè)備的設(shè)計、生產(chǎn)廠商眾多,由于沒有統(tǒng)一的國際標(biāo)準(zhǔn)和國家標(biāo)準(zhǔn),各個廠商均根據(jù)自身情況選擇設(shè)備聯(lián)網(wǎng)方式,故目前智能家居設(shè)備聯(lián)網(wǎng)方式處于百花齊放狀態(tài),各廠商設(shè)備通信無法兼容。傳統(tǒng)的智能家居系統(tǒng)網(wǎng)關(guān)/服務(wù)器一般只支持一種家居設(shè)備的聯(lián)網(wǎng)方式,如大部分文獻(xiàn)都提到采用ZigBee通信協(xié)議,這使得網(wǎng)關(guān)/服務(wù)器存在較大的局限性,同時也限制了它的使用范圍。本文提出一種智能家居網(wǎng)關(guān)/服務(wù)器,它能支持兩種家居設(shè)備聯(lián)網(wǎng)方式,因而增加了兼容性、通用性,擴(kuò)展了它的使用范圍??紤]到新技術(shù)的發(fā)展,雙網(wǎng)絡(luò)網(wǎng)關(guān)/服務(wù)器可支持有線連接的電力載波通信和無線連接的藍(lán)牙通信。
1 系統(tǒng)結(jié)構(gòu)
普通家庭通過光纖或ADSL接入Internet,家庭內(nèi)網(wǎng)絡(luò)分為兩層,上層網(wǎng)絡(luò)是高速以太網(wǎng),連接家庭中的高速設(shè)備,如PC機(jī)、家庭媒體中心等。下層網(wǎng)絡(luò)采用雙網(wǎng)絡(luò)結(jié)構(gòu),可根據(jù)家居設(shè)備的性質(zhì)選擇連接方式。對于采用市電供電,安裝位置固定的家居設(shè)備,如窗簾、冰箱等則采用電力載波通信(PLC);而對于采用電池供電且需要移動工作的設(shè)備,如掃地機(jī)器人、環(huán)境監(jiān)測節(jié)點等,則采用藍(lán)牙通信[2]。
智能家居網(wǎng)關(guān)/服務(wù)器平臺采用嵌入式ARM-Linux平臺,這種平臺與傳統(tǒng)X86-Win平臺(或稱Wintel平臺)相比,其初期投資少,運行費用低。
智能家居雙網(wǎng)絡(luò)網(wǎng)關(guān)/服務(wù)器結(jié)構(gòu)如圖1所示,在ARM-Linux平臺上掛接電力載波匯聚節(jié)點和藍(lán)牙匯聚節(jié)點,分別收集智能家居中電力載波采控節(jié)點和藍(lán)牙采控節(jié)點的數(shù)據(jù),轉(zhuǎn)換成統(tǒng)一的UART數(shù)據(jù)幀格式,發(fā)送至ARM-Linux平臺。ARM-Linux平臺上運行網(wǎng)關(guān)/服務(wù)器應(yīng)用程序[3]。
圖1 雙網(wǎng)絡(luò)網(wǎng)關(guān)/服務(wù)器結(jié)構(gòu)圖
2 電力載波匯聚節(jié)點
匯聚節(jié)點一方面收集智能家居中采控節(jié)點采集來的數(shù)據(jù)并轉(zhuǎn)換成統(tǒng)一的UART數(shù)據(jù)幀發(fā)送至ARM-Linux平臺;另一方面,接收ARM-Linux平臺發(fā)來的控制信息,分發(fā)給采控節(jié)點。電力載波匯聚節(jié)點硬件電路如圖2所示,電力載波通信采用BWP08芯片,該芯片體積小,通訊可靠且通訊頻點可調(diào),功能可定制,適合智能家居領(lǐng)域應(yīng)用。圖2中,T1為隔離變壓器,用于隔離市電,耦合信號。C4、R1為接收回路,D1、D2為保護(hù)二極管,防止市電浪涌經(jīng)T1耦合燒壞電力載波芯片。C7、L1是濾波電路,接收信號最終進(jìn)入BWP08的SIN引腳。BWP08發(fā)送信號從VO引腳輸出,經(jīng)過C11、L2濾波,三極管Q1放大,由隔離變壓器耦合到電力線路上。
微處理器STC12C5A60S2收集BWP08的電力載波數(shù)據(jù),經(jīng)轉(zhuǎn)換后通過UART接口的TXD/RXD引腳發(fā)送出去。為減少微處理器程序運行負(fù)荷,同時也降低程序開發(fā)難度和工作量,STC12C5A60S2采用片內(nèi)硬件SPI接口與電力載波芯片BWP08數(shù)據(jù)進(jìn)行通信,其關(guān)鍵代碼如下:
sfr AUXR=0x8e;
sfr SPSTAT=0xcd;
#define SPIF 0x80
#define WCOL 0x40
sfr SPCTL=0xce;
sfr SPDAT=0xcf;
sbit SPISS=P1^4;
//以上代碼定義SPI相關(guān)特殊功能寄存器和SS引腳
SPDAT=0;
SPSTAT=SPIF|WCOL;
SPCTL=SPEN|MSTR;
//以上代碼初始化SPI接口工作方式
if(TI)
{ SPCTL=SPEN|MSTP;
MSSEL=1;
ACC=SPDAT;
SPISS=0;
SBUF=ACC; }
//以上代碼從SPI接口接收數(shù)據(jù),從UART口發(fā)送出去
3 藍(lán)牙匯聚節(jié)點
藍(lán)牙匯聚節(jié)點的功能與電力載波匯聚節(jié)點相同,只是傳輸協(xié)議采用藍(lán)牙協(xié)議。本設(shè)計采用藍(lán)牙4.0協(xié)議,藍(lán)牙4.0協(xié)議是三位一體協(xié)議,它包括傳統(tǒng)藍(lán)牙、高速藍(lán)牙和低功耗藍(lán)牙[4]。低功耗藍(lán)牙(Bluetooth Low Energy,BLE)具有極低的運行功耗和待機(jī)功耗,一顆紐扣電池可持續(xù)工作1年以上,非常適合電池供電的移動設(shè)備,并且它可組微微網(wǎng),一個主節(jié)點可以連接7個從節(jié)點,本文討論的藍(lán)牙匯聚節(jié)點就是藍(lán)牙微微網(wǎng)中的主節(jié)點[5]。藍(lán)牙匯聚節(jié)點的硬件電路如圖3所示,圖3中主要包括振蕩電路、復(fù)位電路、射頻電路和電源電路。該藍(lán)牙匯聚節(jié)點的核心是TI公司的CC2540藍(lán)牙芯片,該芯片是一顆真正的單芯片藍(lán)牙系統(tǒng),它集成了藍(lán)牙射頻電路(RF)和8051MCU以及相關(guān)配套電路,包括8 kB RAM 和 256 kB Flash 存儲器以及多個定時器、UART、ADC等,適合構(gòu)建小規(guī)模藍(lán)牙通信系統(tǒng)。
藍(lán)牙微微網(wǎng)的數(shù)據(jù)通信主要包括連接建立和數(shù)據(jù)傳輸,連接建立基本過程如圖4(a)所示,匯聚節(jié)點(主節(jié)點)先發(fā)起掃描請求,若掃描正在發(fā)送廣告的采控節(jié)點(從節(jié)點)時,若GAP服務(wù)的UUID匹配,則兩設(shè)備可以建立連接,接著匯聚節(jié)點發(fā)起建立請求,此時若采控節(jié)點響應(yīng),則兩節(jié)點進(jìn)入連接狀態(tài);數(shù)據(jù)傳輸基本過程如圖4(b)所示,匯聚節(jié)點通過特定的UUID進(jìn)行數(shù)據(jù)服務(wù)發(fā)現(xiàn),若發(fā)現(xiàn)數(shù)據(jù)服務(wù),匯聚節(jié)點發(fā)送要進(jìn)行數(shù)據(jù)操作特性(Characteristics)的UUID,采控節(jié)點將這個“特性”的句柄返回給匯聚節(jié)點,句柄即為特性值在屬性表中的地址,其包含要傳輸?shù)臄?shù)據(jù)[6]。匯聚節(jié)點軟件基于TI公司的藍(lán)牙BLE協(xié)議棧設(shè)計,TI公司為方便用戶設(shè)計藍(lán)牙節(jié)點,在其BLE中嵌入了OSAL(Operating System Abstraction Layer操作系統(tǒng)抽象層),它是一個事件驅(qū)動、時間輪詢的實時內(nèi)核,用于管理用戶任務(wù)。由于OSAL的任務(wù)管理與調(diào)度,藍(lán)牙連接建立和數(shù)據(jù)傳輸?shù)木唧w代碼分散在BLE協(xié)議棧的幾個API中。
(a)連接建立流程 (b)數(shù)據(jù)傳輸流程
圖4 藍(lán)牙連接建立和數(shù)據(jù)傳輸流程
4 網(wǎng)關(guān)/服務(wù)器
網(wǎng)關(guān)/服務(wù)器建立在ARM-Linux平臺上,ARM-Linux平臺采用三星S5PV210處理器作為硬件核心,該處理器采用ARM Cortex-A8內(nèi)核,1 GHz主頻,具有2 000 DMIPS運算能力,足以應(yīng)付智能家居網(wǎng)關(guān)/服務(wù)器工作任務(wù)。因此,若配備512 MB DDR2 RAM和4 GB MLC NAND FLASH存儲容量足夠Linux內(nèi)核、設(shè)備驅(qū)動,以及網(wǎng)關(guān)/服務(wù)器應(yīng)用程序的存儲和運行??稍诖擞布脚_上移植Linux3.0.8操作系統(tǒng),以及DM9000AEP以太網(wǎng)控制器、LCD液晶屏等外設(shè)驅(qū)動。服務(wù)器應(yīng)用程序主要包括兩部分:一部分是通過UART接口從匯聚節(jié)點接收數(shù)據(jù);第二部分是通過Internet或以太網(wǎng)向用戶提供訪問服務(wù)[7]。
在智能家居系統(tǒng)中,采控節(jié)點種類繁多,收集的信息也各不相同,為方便網(wǎng)關(guān)/服務(wù)器統(tǒng)一處理采控節(jié)點的信息,匯聚節(jié)點(包括電力載波匯聚節(jié)點和藍(lán)牙匯聚節(jié)點)從采控節(jié)點收集數(shù)據(jù)后,將其轉(zhuǎn)換成統(tǒng)一的格式發(fā)送給網(wǎng)關(guān)/服務(wù)器,其數(shù)據(jù)格式如表1所列,一個數(shù)據(jù)單元由4個字節(jié)(對應(yīng)UART為4幀數(shù)據(jù))組成,第一字節(jié)表示節(jié)點編號,表示范圍0~255,足以編碼家庭內(nèi)智能設(shè)備或采控節(jié)點。第二字節(jié)分兩部分,前半字節(jié)4位表示節(jié)點狀態(tài),如節(jié)點是否工作,狀態(tài)是否正常,不正常原因等;后半字節(jié)4位表示信息類型,如溫度、濕度、光照、電壓等。第三、四字節(jié)表示信息的數(shù)字,2字節(jié)帶符號數(shù)。
表1 UART數(shù)據(jù)格式
第一字節(jié) 第二字節(jié) 第三字節(jié) 第四字節(jié)
節(jié)點編號 節(jié)點狀態(tài) 信息類型 信息數(shù)值
8 b 4 b 4 b 16 b
Linux下UART串口數(shù)據(jù)傳輸分三步:打開串口、設(shè)置串口和數(shù)據(jù)傳輸,其關(guān)鍵代碼如下:
fd = open(dev[com_port], O_RDWR|O_NOCTTY|O_NDELAY);
if (fd < 0)
{ perror("open serial port");
return(-1); }
if(set_com_config(fd, 115200, 8, 'N', 1) < 0)
{ perror("set_com_config");
return 1; }
memset(buff, 0, BUFFER_SIZE);
read(fd, buff, BUFFER_SIZE);
采用底層文件操作函數(shù)open()打開串口,若返回文件描述符fd<0,串口打開不成功。串口打開成功后設(shè)置串口工作參數(shù),波特率115 200 b/s,數(shù)據(jù)位8位,沒有校驗位,停止位1位。最后采用read()函數(shù)讀取數(shù)據(jù),存入緩沖區(qū)buff中。
Linux下Web服務(wù)器有多種,如Apache、NCSA、httpd、Boa等,考慮到智能家居系統(tǒng)Web服務(wù)器數(shù)據(jù)量不大,同時ARM-Linux平臺資源也不算豐富,采用Boa服務(wù)器比較合適,它開放源代碼,性能高,速度快,運行時僅占140 K左右存儲器空間,且對CGI支持效果好[8]。Web服務(wù)器與應(yīng)用程序間采用CGI(Common Gateway Interface通用網(wǎng)關(guān)接口)。Web瀏覽器、Web服務(wù)器,以及服務(wù)器應(yīng)用程序間的關(guān)系如圖5所示,瀏覽器通過Internet傳遞瀏覽信息給服務(wù)器,服務(wù)器通過CGI接口將相關(guān)信息交給應(yīng)用程序處理,應(yīng)用程序再將處理結(jié)果通過CGI接口反饋給服務(wù)器,最后通過Internet呈現(xiàn)在瀏覽器上。通過CGI接口的應(yīng)用程序與遠(yuǎn)程Web瀏覽器之間通過表單(Form)傳遞數(shù)據(jù),系統(tǒng)中數(shù)據(jù)交互的關(guān)鍵代碼如下:
if (cgiFormSubmitClicked(“確認(rèn)”) == cgiFormSuccess)
{ =if (cgiFormCheckboxSingle(“l(fā)ed1”) == cgiFormSuccess)
{ coreDate_status[0].led |= bit0;
if (cgiFormCheckboxSingle(“l(fā)ed1_1”) == cgiFormSuccess)
coreDate_status[0].led |= bit1;
else
coreDate_status[0].led &= ~bit1;
}}
其中coreDate_status[]是結(jié)構(gòu)體數(shù)組,coreDate_status[0]代表0號采控節(jié)點采集的數(shù)據(jù),coreDate_status[0].led是對該結(jié)構(gòu)體中的led開關(guān)量進(jìn)行操作。
圖5 Web瀏覽器、Web服務(wù)器和服務(wù)器應(yīng)用程序間關(guān)系
5 結(jié) 語
本文介紹的雙網(wǎng)絡(luò)智能家居網(wǎng)關(guān)/服務(wù)器支持電力載波和藍(lán)牙協(xié)議,它采用ARM-Linux架構(gòu),其上移植Boa服務(wù)器,可通過CGI接口設(shè)計服務(wù)器應(yīng)用程序。網(wǎng)關(guān)/服務(wù)器接收匯聚節(jié)點(電力載波和藍(lán)牙)發(fā)送的統(tǒng)一UART數(shù)據(jù),為用戶提供遠(yuǎn)程訪問服務(wù),用戶不受設(shè)備硬件(PC、平板、手機(jī)均可)和軟件(Windows、android、IOS均可)制約,通過Web瀏覽器也可在本地或遠(yuǎn)程訪問服務(wù)器。
參考文獻(xiàn)
[1]郎躍躍,呂昂.一種基于的電力載波智能家居聯(lián)網(wǎng)系統(tǒng)[J].浙江萬里學(xué)院學(xué)報,2012,25(4):71-76.
[2] 賈亞軍, 謝建. 基于嵌入式系統(tǒng)智能家電遠(yuǎn)程監(jiān)控設(shè)計[J]. 儀表技術(shù), 2006(5): 15-17.
[3] Fuxing Yang, Chanyuan Liu, Zhongcai Pei, et al. The Design of Wireless Remote intelligent Home System Based on Zigbee and GPRS [C]. Proceedings of ICCTA 2011, Piscataway, NJ: IEEE Press, 2011: 689 – 693.
[4] TI.2.4-GHz Bluetooth low energy System-on-Chip[EB/OL].(2015-4-3). http://www.ti.com.cn/cn/lit/ds/symlink/cc2540.pdf
[5] Yu B, Xu L, Li Y. Bluetooth Low Energy (BLE) based mobile electrocardiogram monitoring system[C].Information and Automation, 2012 International Conference on. IEEE, 2012: 763-767.
[6]趙利英.基于低功耗藍(lán)牙的無線體域網(wǎng)硬件設(shè)計與實現(xiàn)[D].吉林:吉林大學(xué),2014.
[7]王建敏,魏海波.基于linux3.0.1和S3C6410的智能家居控制系統(tǒng)的嵌入式web服務(wù)器的移植和應(yīng)用[J].江西科技師范大學(xué)學(xué)報,2013(6):95-99.
[8]王靈芝,葉美霞,張建造.基于Zigbee及BOA服務(wù)器的嵌入式智能家居的設(shè)計[J] .閩南師范大學(xué)學(xué)報(自然科學(xué)版),2014 (3): 69-73.