3 軟件平臺(tái)設(shè)計(jì)
軟件平臺(tái)采用一種開放源碼的Linux 操作系統(tǒng),便于在其基礎(chǔ)上完成各項(xiàng)相關(guān)應(yīng)用程序的開發(fā)。軟件主要涉及到操作系統(tǒng)的裁剪與編譯、驅(qū)動(dòng)程序編寫和系統(tǒng)主程序編寫。
3. 1 家庭網(wǎng)關(guān)軟件體系結(jié)構(gòu)
家庭網(wǎng)關(guān)采用模塊化設(shè)計(jì)方案,如圖4 所示由硬件驅(qū)動(dòng)層、操作系統(tǒng)層、網(wǎng)絡(luò)協(xié)議層和應(yīng)用程序?qū)咏M成。硬件驅(qū)動(dòng)層描述網(wǎng)關(guān)節(jié)點(diǎn)中Zigbee 模塊和Wi-Fi 模塊的驅(qū)動(dòng); 操作系統(tǒng)層移植了ARM Linux 實(shí)時(shí)操作系統(tǒng)內(nèi)核; 網(wǎng)絡(luò)協(xié)議層移植了Zigbee 和Wi-Fi 協(xié)議棧,實(shí)現(xiàn)Zigbee 和Wi-Fi 協(xié)議雙向轉(zhuǎn)換;應(yīng)用程序?qū)釉贚inux 內(nèi)核上移植嵌入式Web 服務(wù)器軟件Boa.
圖4 家庭網(wǎng)關(guān)結(jié)構(gòu)。
網(wǎng)關(guān)中的網(wǎng)絡(luò)協(xié)議層主要完成從Wi-Fi 和Zigbee 協(xié)議的相互轉(zhuǎn)換工作。對(duì)于從Zigbee 設(shè)備發(fā)送到Wi-Fi 的數(shù)據(jù),在網(wǎng)關(guān)需要經(jīng)過以下處理步驟: Zigbee 設(shè)備接收到數(shù)據(jù)→去掉物理層Zigbee 分組→去掉MAC 層Zigbee 分組→添加MAC頭的Wi-Fi 分組→添加物理層頭的Wi-Fi 分組→Wi-Fi 處理或發(fā)送。Wi-Fi 接收數(shù)據(jù)到發(fā)送給Zigbee 設(shè)備的過程如下:
Wi-Fi 接收到數(shù)據(jù)→去掉物理層Wi-Fi 分組→去掉MAC 層Wi-Fi 分組→添加MAC 頭的Zigbee 分組→添加物理層頭的Zigbee 分組→Zigbee 處理或發(fā)送。Wi-Fi-Zigbee 通信協(xié)議模型如圖5 所示。
圖5 Zigbee /Wi-Fi 網(wǎng)關(guān)的通信協(xié)議模型。
3. 2 Zigbee 組網(wǎng)軟件設(shè)計(jì)
家庭網(wǎng)關(guān)集成了Zigbee 網(wǎng)絡(luò)協(xié)調(diào)器和嵌入式Web 服務(wù)器,有兩個(gè)主要功能。1 ) 實(shí)現(xiàn)無線傳感器網(wǎng)絡(luò)的建立,傳感器節(jié)點(diǎn)管理和數(shù)據(jù)傳輸。將收集到的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中,使用戶可以隨時(shí)查詢監(jiān)控Zigbee 終端設(shè)備的狀態(tài)。2) 用戶可以通過Web 瀏覽器直接訪問網(wǎng)關(guān),可以進(jìn)行實(shí)時(shí)監(jiān)測(cè)和遠(yuǎn)程管理。
為了實(shí)現(xiàn)家庭網(wǎng)關(guān)的功能,在硬件平臺(tái)上移植了Linux2. 6 實(shí)時(shí)操作系統(tǒng)、Zigbee 協(xié)議棧和VT6656 的驅(qū)動(dòng)程序,并使用基于HTTP 協(xié)議的Boa 服務(wù)器作為Web 服務(wù)器,其中ZigBee 網(wǎng)絡(luò)協(xié)調(diào)器的軟件實(shí)現(xiàn)包括ZigBee 協(xié)議和監(jiān)控管理程序的移植。該軟件流程如圖6 所示。
圖6 Zigbee 軟件流程。
在智能家居內(nèi)部ZigBee 無線網(wǎng)絡(luò)中,首先協(xié)調(diào)器進(jìn)行初始化,然后協(xié)調(diào)器選擇一個(gè)稱為PAN ID 的標(biāo)識(shí)號(hào)碼,接著啟動(dòng)網(wǎng)絡(luò),所有的設(shè)備接入CSMA-CA 機(jī)制的協(xié)調(diào)器。當(dāng)協(xié)調(diào)器收到數(shù)據(jù)時(shí),首先判斷是新節(jié)點(diǎn)加入網(wǎng)絡(luò)的請(qǐng)求還是設(shè)備節(jié)點(diǎn)的控制請(qǐng)求: 如果是新節(jié)點(diǎn)加入網(wǎng)絡(luò)的請(qǐng)求則分配網(wǎng)絡(luò)地址并綁定節(jié)點(diǎn); 如果是控制請(qǐng)求,則調(diào)用控制請(qǐng)求處理函數(shù)處理數(shù)據(jù)。數(shù)據(jù)處理完畢,協(xié)調(diào)器返回等待請(qǐng)求監(jiān)聽狀態(tài)。
3. 3 家庭網(wǎng)關(guān)主程序設(shè)計(jì)
家庭網(wǎng)關(guān)是建立在傳輸層以上的協(xié)議轉(zhuǎn)換器,通常它連接兩個(gè)或多個(gè)相互獨(dú)立的網(wǎng)絡(luò),每接收一種協(xié)議的數(shù)據(jù)包后,在轉(zhuǎn)發(fā)之前將它轉(zhuǎn)換為另一種協(xié)議的格式,Zigbee 協(xié)議棧由一系列分層結(jié)構(gòu)組成,包括物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、應(yīng)用支持層和應(yīng)用層,每一層為上一層提供服務(wù)。采集節(jié)點(diǎn)將要傳輸?shù)墓?jié)點(diǎn)地址信息和監(jiān)測(cè)數(shù)據(jù)以Zigbee 幀的形式打包發(fā)送給網(wǎng)關(guān)節(jié)點(diǎn)。傳送數(shù)據(jù)在通過物理介質(zhì)進(jìn)入網(wǎng)關(guān)后,先用Zigbee 協(xié)議棧解封裝得到原始數(shù)據(jù),網(wǎng)關(guān)可以用操作系統(tǒng)上的應(yīng)用軟件根據(jù)需要對(duì)原始數(shù)據(jù)處理。然后再以TCP / IP 協(xié)議打包后通過USB 口與Wi-Fi 通信模塊VT6656 相連,Wi-FiVT6656 網(wǎng)卡通過AP 路由器,將數(shù)據(jù)傳送到Wi-Fi 網(wǎng)絡(luò)中,AP路由器接入Internet,從而實(shí)現(xiàn)網(wǎng)關(guān)與Internet 相連。為實(shí)現(xiàn)系統(tǒng)的監(jiān)測(cè)和控制兩大功能,數(shù)據(jù)幀結(jié)構(gòu)的設(shè)計(jì)由前導(dǎo)碼、數(shù)據(jù)模式、目標(biāo)地址、數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)信息與校驗(yàn)和等部分構(gòu)成[3],其中數(shù)據(jù)信息字段又劃分為方向位、功能類型和數(shù)據(jù)。
方向位分為上行和下行兩種: 上行傳輸?shù)氖潜O(jiān)測(cè)數(shù)據(jù),下行傳輸?shù)氖强刂泼睢?/p>
家庭網(wǎng)關(guān)主程序處理流程如圖7 所示。硬件上電系統(tǒng)啟動(dòng)以后,應(yīng)用程序初始化,網(wǎng)關(guān)開始監(jiān)聽網(wǎng)絡(luò),有數(shù)據(jù)到來網(wǎng)關(guān)進(jìn)入中斷狀態(tài)。首先判斷是否Zigbee 數(shù)據(jù),如果是Zigbee數(shù)據(jù),按照WSN 協(xié)議處理數(shù)據(jù)然后打包轉(zhuǎn)發(fā)給Wi-Fi 模塊,網(wǎng)關(guān)返回監(jiān)聽狀態(tài); 如果不是Zigbee 數(shù)據(jù),網(wǎng)關(guān)判斷是否Wi-Fi 數(shù)據(jù),如果是則以Wi-Fi 協(xié)議處理數(shù)據(jù)然后打包轉(zhuǎn)發(fā)給Zigbee 模塊,并返回監(jiān)聽狀態(tài); 若是未知數(shù)據(jù),網(wǎng)關(guān)進(jìn)行丟棄處理直接返回監(jiān)聽網(wǎng)絡(luò)狀態(tài)。
評(píng)論
查看更多