3 軟件平臺設計
軟件平臺采用一種開放源碼的Linux 操作系統(tǒng),便于在其基礎上完成各項相關應用程序的開發(fā)。軟件主要涉及到操作系統(tǒng)的裁剪與編譯、驅(qū)動程序編寫和系統(tǒng)主程序編寫。
3. 1 家庭網(wǎng)關軟件體系結構
家庭網(wǎng)關采用模塊化設計方案,如圖4 所示由硬件驅(qū)動層、操作系統(tǒng)層、網(wǎng)絡協(xié)議層和應用程序?qū)咏M成。硬件驅(qū)動層描述網(wǎng)關節(jié)點中Zigbee 模塊和Wi-Fi 模塊的驅(qū)動; 操作系統(tǒng)層移植了ARM Linux 實時操作系統(tǒng)內(nèi)核; 網(wǎng)絡協(xié)議層移植了Zigbee 和Wi-Fi 協(xié)議棧,實現(xiàn)Zigbee 和Wi-Fi 協(xié)議雙向轉換;應用程序?qū)釉贚inux 內(nèi)核上移植嵌入式Web 服務器軟件Boa.

圖4 家庭網(wǎng)關結構。
網(wǎng)關中的網(wǎng)絡協(xié)議層主要完成從Wi-Fi 和Zigbee 協(xié)議的相互轉換工作。對于從Zigbee 設備發(fā)送到Wi-Fi 的數(shù)據(jù),在網(wǎng)關需要經(jīng)過以下處理步驟: Zigbee 設備接收到數(shù)據(jù)→去掉物理層Zigbee 分組→去掉MAC 層Zigbee 分組→添加MAC頭的Wi-Fi 分組→添加物理層頭的Wi-Fi 分組→Wi-Fi 處理或發(fā)送。Wi-Fi 接收數(shù)據(jù)到發(fā)送給Zigbee 設備的過程如下:
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)關的通信協(xié)議模型。
3. 2 Zigbee 組網(wǎng)軟件設計
家庭網(wǎng)關集成了Zigbee 網(wǎng)絡協(xié)調(diào)器和嵌入式Web 服務器,有兩個主要功能。1 ) 實現(xiàn)無線傳感器網(wǎng)絡的建立,傳感器節(jié)點管理和數(shù)據(jù)傳輸。將收集到的數(shù)據(jù)存儲在數(shù)據(jù)庫中,使用戶可以隨時查詢監(jiān)控Zigbee 終端設備的狀態(tài)。2) 用戶可以通過Web 瀏覽器直接訪問網(wǎng)關,可以進行實時監(jiān)測和遠程管理。
為了實現(xiàn)家庭網(wǎng)關的功能,在硬件平臺上移植了Linux2. 6 實時操作系統(tǒng)、Zigbee 協(xié)議棧和VT6656 的驅(qū)動程序,并使用基于HTTP 協(xié)議的Boa 服務器作為Web 服務器,其中ZigBee 網(wǎng)絡協(xié)調(diào)器的軟件實現(xiàn)包括ZigBee 協(xié)議和監(jiān)控管理程序的移植。該軟件流程如圖6 所示。

圖6 Zigbee 軟件流程。
在智能家居內(nèi)部ZigBee 無線網(wǎng)絡中,首先協(xié)調(diào)器進行初始化,然后協(xié)調(diào)器選擇一個稱為PAN ID 的標識號碼,接著啟動網(wǎng)絡,所有的設備接入CSMA-CA 機制的協(xié)調(diào)器。當協(xié)調(diào)器收到數(shù)據(jù)時,首先判斷是新節(jié)點加入網(wǎng)絡的請求還是設備節(jié)點的控制請求: 如果是新節(jié)點加入網(wǎng)絡的請求則分配網(wǎng)絡地址并綁定節(jié)點; 如果是控制請求,則調(diào)用控制請求處理函數(shù)處理數(shù)據(jù)。數(shù)據(jù)處理完畢,協(xié)調(diào)器返回等待請求監(jiān)聽狀態(tài)。
3. 3 家庭網(wǎng)關主程序設計
家庭網(wǎng)關是建立在傳輸層以上的協(xié)議轉換器,通常它連接兩個或多個相互獨立的網(wǎng)絡,每接收一種協(xié)議的數(shù)據(jù)包后,在轉發(fā)之前將它轉換為另一種協(xié)議的格式,Zigbee 協(xié)議棧由一系列分層結構組成,包括物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層、應用支持層和應用層,每一層為上一層提供服務。采集節(jié)點將要傳輸?shù)墓?jié)點地址信息和監(jiān)測數(shù)據(jù)以Zigbee 幀的形式打包發(fā)送給網(wǎng)關節(jié)點。傳送數(shù)據(jù)在通過物理介質(zhì)進入網(wǎng)關后,先用Zigbee 協(xié)議棧解封裝得到原始數(shù)據(jù),網(wǎng)關可以用操作系統(tǒng)上的應用軟件根據(jù)需要對原始數(shù)據(jù)處理。然后再以TCP / IP 協(xié)議打包后通過USB 口與Wi-Fi 通信模塊VT6656 相連,Wi-FiVT6656 網(wǎng)卡通過AP 路由器,將數(shù)據(jù)傳送到Wi-Fi 網(wǎng)絡中,AP路由器接入Internet,從而實現(xiàn)網(wǎng)關與Internet 相連。為實現(xiàn)系統(tǒng)的監(jiān)測和控制兩大功能,數(shù)據(jù)幀結構的設計由前導碼、數(shù)據(jù)模式、目標地址、數(shù)據(jù)長度、數(shù)據(jù)信息與校驗和等部分構成[3],其中數(shù)據(jù)信息字段又劃分為方向位、功能類型和數(shù)據(jù)。
方向位分為上行和下行兩種: 上行傳輸?shù)氖潜O(jiān)測數(shù)據(jù),下行傳輸?shù)氖强刂泼睢?/p>
家庭網(wǎng)關主程序處理流程如圖7 所示。硬件上電系統(tǒng)啟動以后,應用程序初始化,網(wǎng)關開始監(jiān)聽網(wǎng)絡,有數(shù)據(jù)到來網(wǎng)關進入中斷狀態(tài)。首先判斷是否Zigbee 數(shù)據(jù),如果是Zigbee數(shù)據(jù),按照WSN 協(xié)議處理數(shù)據(jù)然后打包轉發(fā)給Wi-Fi 模塊,網(wǎng)關返回監(jiān)聽狀態(tài); 如果不是Zigbee 數(shù)據(jù),網(wǎng)關判斷是否Wi-Fi 數(shù)據(jù),如果是則以Wi-Fi 協(xié)議處理數(shù)據(jù)然后打包轉發(fā)給Zigbee 模塊,并返回監(jiān)聽狀態(tài); 若是未知數(shù)據(jù),網(wǎng)關進行丟棄處理直接返回監(jiān)聽網(wǎng)絡狀態(tài)。
電子發(fā)燒友App






評論