世界上第一幢智能建筑1984 年在美國(guó)出現(xiàn)后,家居環(huán)境智能化已成為當(dāng)前的社會(huì)主流,隨著人們生活節(jié)奏的加快和生活壓力的加大,智能家居成為人們追求舒適生活的必要途徑。智能家居網(wǎng)絡(luò)是指在家庭內(nèi)部通過(guò)一定的傳輸介質(zhì)( 如電力線、雙絞線、同軸電纜、無(wú)線電、紅外等) 將各種電氣設(shè)備和電氣子系統(tǒng)連接起來(lái),采用統(tǒng)一的通信協(xié)議,對(duì)內(nèi)實(shí)現(xiàn)資源控制,對(duì)外能通過(guò)網(wǎng)關(guān)設(shè)備與外部互連進(jìn)行信息交換的網(wǎng)絡(luò)系統(tǒng)。文中提出了通過(guò)ZigBee 無(wú)線組網(wǎng)技術(shù)構(gòu)建智能家居系統(tǒng)底層網(wǎng)絡(luò)的方案。目的在于使智能家居系統(tǒng)的底層網(wǎng)絡(luò)構(gòu)建變得簡(jiǎn)單快速,進(jìn)而使整個(gè)智能家居系統(tǒng)具備快速部署和易擴(kuò)展的特性。
1 網(wǎng)絡(luò)結(jié)構(gòu)概述
文中設(shè)計(jì)的智能家居系統(tǒng)基層網(wǎng)絡(luò)采用ZigBee無(wú)線組網(wǎng)技術(shù)實(shí)現(xiàn)家居系統(tǒng)內(nèi)部網(wǎng)絡(luò),基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)采用星型拓?fù)浣Y(jié)構(gòu)。通過(guò)ZigBee 無(wú)線通訊模塊與智能家電以及傳感器構(gòu)成家居內(nèi)部網(wǎng)絡(luò)的終端設(shè)備; 使用FFD( Full Function Device) 設(shè)備為家居內(nèi)部ZigBee網(wǎng)絡(luò)的中心協(xié)調(diào)器,負(fù)責(zé)建立和維護(hù)網(wǎng)絡(luò); 在中心協(xié)調(diào)器與中央控制服務(wù)器之間使用RS232 串口通信實(shí)現(xiàn)連接,并通過(guò)PC 機(jī)與互聯(lián)網(wǎng)相連,系統(tǒng)結(jié)構(gòu)如圖1 所示。作為智能家居系統(tǒng)的底層基礎(chǔ)網(wǎng)絡(luò),家居內(nèi)部ZigBee 無(wú)線網(wǎng)絡(luò)可以實(shí)現(xiàn)的功能有: ( 1) 收集家庭環(huán)境內(nèi)部的數(shù)據(jù)和信息。( 2) 對(duì)于終端設(shè)備上傳的簡(jiǎn)單情況做初步的預(yù)處理。( 3) 匯總基礎(chǔ)網(wǎng)絡(luò)信息,通過(guò)RS232 串口通訊協(xié)議將數(shù)據(jù)上傳到中央控制服務(wù)器。
圖1 系統(tǒng)結(jié)構(gòu)圖
2 ZigBee 技術(shù)
ZigBee 是基于IEEE802. 15. 4 標(biāo)準(zhǔn)制定的一種短距離、低功耗的無(wú)線個(gè)人網(wǎng)絡(luò)通信協(xié)議,具有近距離、低復(fù)雜度、自組織、低功耗、低數(shù)據(jù)速率、低成本的特點(diǎn)。
ZigBee 協(xié)議棧是以O(shè)SI(Open Systems Interconnection)七層結(jié)構(gòu)為參考建立起來(lái)的,為簡(jiǎn)化協(xié)議棧,ZigBee 協(xié)議棧由4 個(gè)層結(jié)構(gòu)組成,即物理層、MAC 層、網(wǎng)絡(luò)層和應(yīng)用層,ZigBee 協(xié)議棧結(jié)構(gòu)如圖2 所示。
圖2 ZigBee 協(xié)議棧結(jié)構(gòu)圖
(1) 物理層: 主要功能是啟動(dòng)和關(guān)閉無(wú)線電收發(fā)機(jī)、當(dāng)前頻道內(nèi)的能量監(jiān)測(cè)、接收包連接質(zhì)量指示、為CSMA - CA 確認(rèn)清除頻道、頻道頻率選擇、數(shù)據(jù)傳輸和接收。
?。?) 介質(zhì)接入控制層( MAC 層) : MAC 層負(fù)責(zé)維護(hù)物理無(wú)線電頻道的接口,任務(wù)包括: 對(duì)于協(xié)調(diào)器要負(fù)責(zé)產(chǎn)生網(wǎng)絡(luò)信標(biāo)、對(duì)網(wǎng)絡(luò)信標(biāo)進(jìn)行同步、維護(hù)個(gè)人局域網(wǎng)的加入和離開、維護(hù)設(shè)備安全、利用CSMA - CA 機(jī)制進(jìn)行頻道管理、處理與維護(hù)GTS 機(jī)制、在MAC 實(shí)體內(nèi)部保證可靠的連接等。
?。?) 網(wǎng)絡(luò)層: ZigBee 網(wǎng)絡(luò)層由ZigBee 聯(lián)盟自行定義,負(fù)責(zé)為無(wú)線網(wǎng)絡(luò)提供建立、加入和離開網(wǎng)絡(luò),進(jìn)行路由轉(zhuǎn)發(fā)等功能。
?。?) 應(yīng)用層: 由用戶根據(jù)需要來(lái)自行開發(fā),概括來(lái)說(shuō),應(yīng)用層要實(shí)現(xiàn)的功能為: 維持節(jié)點(diǎn)功能,發(fā)現(xiàn)該節(jié)點(diǎn)附近的其他工作節(jié)點(diǎn),維護(hù)和管理多個(gè)節(jié)點(diǎn)之間的通信。
3 ZigBee 基層網(wǎng)絡(luò)硬件
3. 1 ZigBee 數(shù)傳模塊介紹
系統(tǒng)ZigBee 基礎(chǔ)網(wǎng)絡(luò)的數(shù)傳模塊采用的芯片為CC2430 射頻芯片,CC2430 是無(wú)線SOC ( System OnChip) 設(shè)計(jì),系統(tǒng)所需的一般電路都已集成在芯片內(nèi)部,只需簡(jiǎn)單外圍電路就能實(shí)現(xiàn)信號(hào)收發(fā)功能。
CC2430 應(yīng)用電路如圖3 所示
電路使用非平衡天線。其中非平衡變壓器由電容C341和電感L341、L321、L331以及一個(gè)印制板微波傳輸線組成,整個(gè)結(jié)構(gòu)滿足射頻輸入、輸出匹配電阻50 Ω 的要求; R221和R261為偏置電阻,電阻R221主要用來(lái)為32 MHz的晶振提供合適的工作電流; XTAL1為32 MHz晶振,用1 個(gè)32 MHz 的石英諧振器和2 個(gè)電容( C191和C211) 構(gòu)成一個(gè)32 MHz 的晶振電路; XTAL2為32. 768 kHz 晶振,用1 個(gè)32. 768 kHz 的石英諧振器和2 個(gè)電容( C441和C431) 構(gòu)成一個(gè)32. 768 kHz 的晶振電路; 電壓調(diào)節(jié)器為所有要求1. 8 V 電壓的引腳和內(nèi)部電源供電,電容C241和C421為去耦合電容,用來(lái)電源濾波,以提高芯片工作的穩(wěn)定性。本系統(tǒng)在終端設(shè)備和中心協(xié)調(diào)器的設(shè)計(jì)中都采用標(biāo)準(zhǔn)的10 芯調(diào)試接口。
調(diào)試接口使用CC2430 的P2_1作為調(diào)試數(shù)據(jù)IO,P2_2作為調(diào)試時(shí)鐘,在非調(diào)試模式下這兩個(gè)IO 可作為GPIO.
調(diào)試接口允許片上的Flash 編程,且能訪問(wèn)存儲(chǔ)器和寄存器、設(shè)置斷點(diǎn)、單步運(yùn)行和修改寄存器內(nèi)容。當(dāng)RESET_N輸入保持低電平時(shí),如果強(qiáng)制調(diào)試時(shí)鐘連續(xù)經(jīng)歷兩個(gè)上升沿,系統(tǒng)便進(jìn)入調(diào)試模式。
3. 2 終端設(shè)備結(jié)構(gòu)設(shè)計(jì)
終端設(shè)備是智能家居環(huán)境內(nèi)部數(shù)據(jù)來(lái)源以及控制命令的具體執(zhí)行者,如圖4 所示,其主要由智能家電模塊、信號(hào)調(diào)制模塊和ZigBee 數(shù)傳模塊組成。一方面,終端設(shè)備通過(guò)智能家電模塊中的傳感器單元收集家居環(huán)境的內(nèi)部數(shù)據(jù)信息,通過(guò)信號(hào)調(diào)制模塊得到有用信號(hào),然后借助無(wú)線數(shù)傳模塊將信息上傳; 另一方面,終端設(shè)備可通過(guò)無(wú)線數(shù)傳模塊接收控制命令,并傳達(dá)給智能家電模塊的命令執(zhí)行單元進(jìn)行命令執(zhí)行。
3. 3 中心協(xié)調(diào)器結(jié)構(gòu)設(shè)計(jì)
中心協(xié)調(diào)器是智能家居無(wú)線內(nèi)部網(wǎng)絡(luò)的核心,負(fù)責(zé)建立和維護(hù)網(wǎng)絡(luò),并通過(guò)串口向PC 機(jī)發(fā)送終端設(shè)備上傳來(lái)的數(shù)據(jù)信息,同時(shí)將控制中心傳達(dá)的命令傳達(dá)到正確的終端設(shè)備,具體結(jié)構(gòu)如圖5 所示。與終端設(shè)備的不同之處在于中心協(xié)調(diào)器不包含智能家電模塊和信號(hào)調(diào)制模塊,為偵聽串口接收中斷,在中心協(xié)調(diào)器硬件平臺(tái)上擴(kuò)展了RS232 串口。
圖5 中心協(xié)調(diào)器結(jié)構(gòu)。
4 ZigBee 網(wǎng)絡(luò)通訊軟件
4. 1 信道分配
通過(guò)ZigBee 協(xié)議棧中的MAC _ RADIO _ SET _CHANEL( x) 可以配置智能家居系統(tǒng)無(wú)線ZigBee 網(wǎng)絡(luò)的無(wú)線信道,其中形參x 為信道編號(hào),缺省值為11 頻道。在mac_radio_defs. h 文件中可定義MAC_RADIO_SET_CHANEL( x) 函數(shù)。
原語(yǔ)來(lái)啟動(dòng)智能家居系統(tǒng)網(wǎng)絡(luò)的建立。由于文中采用星型網(wǎng)絡(luò),所以在智能家居系統(tǒng)中只允許中心協(xié)調(diào)器進(jìn)行初始的網(wǎng)絡(luò)建立。
具體過(guò)程: 應(yīng)用層通過(guò)NLME _ NETWORK _FORMATION. request 開啟網(wǎng)絡(luò)建立過(guò)程。網(wǎng)絡(luò)層接收命令后,隨即要求MAC 層進(jìn)行信道掃描; MAC 層完成第一次掃描后,將掃描結(jié)果回饋到網(wǎng)絡(luò)層,網(wǎng)絡(luò)層管理實(shí)體對(duì)接收到的信道按照能量值進(jìn)行排序,并進(jìn)一步處理,找到一條合適的信道; 隨后網(wǎng)絡(luò)層會(huì)為這個(gè)網(wǎng)絡(luò)配置一個(gè)PAN 標(biāo)識(shí)符和一個(gè)16 位的網(wǎng)絡(luò)地址來(lái)啟動(dòng)網(wǎng)絡(luò)。
4. 2 加入網(wǎng)絡(luò)
首先,終端設(shè)備通過(guò)NLME_NETWORK_DISCOVERY.request 原語(yǔ),啟動(dòng)加入網(wǎng)絡(luò)流程。網(wǎng)絡(luò)層隨后發(fā)送MLME_SCAN. request,要求MAC 層執(zhí)行信道掃描。
當(dāng)MAC 完成掃描后就會(huì)向網(wǎng)絡(luò)層管理實(shí)體回饋掃描信息。網(wǎng)絡(luò)層管理實(shí)體隨后發(fā)送網(wǎng)絡(luò)發(fā)現(xiàn)確認(rèn)原語(yǔ),將掃描到的ZigBee 版本號(hào)、堆棧結(jié)構(gòu)、各域網(wǎng)標(biāo)識(shí)符、邏輯信道以及是否允許連接等信息上傳應(yīng)用層。應(yīng)用層決定是否加入并通過(guò)發(fā)送加入原語(yǔ)申請(qǐng)加入。此時(shí)中心協(xié)調(diào)器在收到終端設(shè)備的申請(qǐng)加入請(qǐng)求后,中心協(xié)調(diào)器通過(guò)NLME_NETWORK_JOINING. request 原語(yǔ)向MAC 層下達(dá)允許加入的命令,并通過(guò)NLME _PERMIT_ JOINING. confirm 原語(yǔ)反饋命令執(zhí)行情況。
加入請(qǐng)求原語(yǔ)中的PermitDuration 參數(shù)是ZigBee 協(xié)調(diào)器允許終端設(shè)備的連接時(shí)間,有效值范圍0x00 ~0xFF.當(dāng)PermitDuration 參數(shù)被設(shè)定在0x01 到0xFE之間時(shí),網(wǎng)絡(luò)層管理實(shí)體就會(huì)設(shè)定一個(gè)定時(shí)器,用來(lái)計(jì)時(shí),以此進(jìn)行連接的時(shí)間限制。在智能家居系統(tǒng)中通常不需要對(duì)終端設(shè)備與中心協(xié)調(diào)器的連接進(jìn)行時(shí)間限制,所以這一參數(shù)通常設(shè)定為0xFF.
4. 3 終端設(shè)備程序流程
終端設(shè)備,通過(guò)傳感器模塊收集信息,并借助ZigBee模塊將收集來(lái)的信息上傳,當(dāng)ZigBee 模塊接收到控制命令時(shí),控制模塊負(fù)責(zé)根據(jù)命令執(zhí)行操作。程序流程如下: 開啟電源啟動(dòng)終端設(shè)備,初始化終端設(shè)備的硬件資源、并啟動(dòng)協(xié)議棧、加入網(wǎng)絡(luò)。當(dāng)設(shè)備成功加入網(wǎng)絡(luò)后,開始設(shè)置循環(huán)采集時(shí)鐘,當(dāng)有數(shù)據(jù)包被收到后,終端設(shè)備隨即解讀數(shù)據(jù)信息,并執(zhí)行命令。沒(méi)有數(shù)據(jù)包接收就進(jìn)入采集過(guò)程,當(dāng)發(fā)現(xiàn)采集數(shù)據(jù)超過(guò)限制時(shí),按預(yù)定程序進(jìn)入處理程序并向上傳達(dá)報(bào)警數(shù)據(jù)包報(bào)警,當(dāng)?shù)竭_(dá)循環(huán)采樣點(diǎn)時(shí),系統(tǒng)將該時(shí)刻的采集數(shù)據(jù)上傳。
圖6 終端設(shè)備程序流程圖
4. 4 中心協(xié)調(diào)器程序流程
中心協(xié)調(diào)器由ZigBee 模塊接收終端設(shè)備上傳來(lái)的數(shù)據(jù)信息,并通過(guò)串口線連接PC 機(jī)器,將收集來(lái)的信息傳輸給中央控制服務(wù)器。流程如下: 開啟電源開關(guān)啟動(dòng)中心協(xié)調(diào)器,其主程序啟動(dòng)。通過(guò)halBoardInit( )函數(shù)初始化設(shè)備的硬件設(shè)備,系統(tǒng)進(jìn)入網(wǎng)絡(luò)建立過(guò)程。
當(dāng)網(wǎng)絡(luò)建立完成之后,中心協(xié)調(diào)器進(jìn)入一個(gè)無(wú)限的循環(huán)工作狀態(tài): 如果有無(wú)線電數(shù)據(jù),就進(jìn)入無(wú)線電接收數(shù)據(jù)過(guò)程,接收完成后還需要將接收來(lái)的信息,上傳到控制中心; 如果沒(méi)有無(wú)線電數(shù)據(jù)接入,則判斷串口控制命令,協(xié)調(diào)器隨即開始解析命令,并向下傳達(dá)。當(dāng)這兩個(gè)過(guò)程完成時(shí),系統(tǒng)回到判斷是否有無(wú)線電數(shù)據(jù)的判斷過(guò)程,系統(tǒng)進(jìn)入再一次循環(huán)。
圖7 中心協(xié)調(diào)器程序流程圖
5 結(jié)束語(yǔ)
以ZigBee 無(wú)線組網(wǎng)技術(shù)構(gòu)建智能家居系統(tǒng)的底層基礎(chǔ)網(wǎng)絡(luò),通過(guò)構(gòu)建一種成本低廉、部署快捷的基礎(chǔ)無(wú)線網(wǎng)絡(luò),進(jìn)而降低智能家居系統(tǒng)的搭建成本和構(gòu)建難度。此外,以此為基礎(chǔ)的智能家居系統(tǒng)還具有良好的擴(kuò)展性,可根據(jù)具體的應(yīng)用需求,在不同的智能家電模塊與無(wú)線數(shù)傳模塊之間實(shí)現(xiàn)連接,使之接入智能家居系統(tǒng)。