采用Zigbee技術(shù)和嵌入式系統(tǒng)的家用電器網(wǎng)關(guān)設(shè)計
針對現(xiàn)代社會對信息獲取便捷度和家庭網(wǎng)絡(luò)化的要求,設(shè)計了一種可以組織家用電器成小型網(wǎng)絡(luò)的家用網(wǎng)關(guān)。
該網(wǎng)關(guān)采用Zigbee技術(shù)和嵌入式系統(tǒng)相結(jié)合的設(shè)計方案,采用了自行設(shè)計的Zigbee協(xié)議棧結(jié)構(gòu)使其適合嵌入式系統(tǒng),達到了連接組網(wǎng)和交換信息的能力。
關(guān)鍵詞:家用網(wǎng)關(guān);Zigbee;TCP/IP;串口調(diào)試
0 引言
網(wǎng)關(guān)對于使用過網(wǎng)絡(luò)的人也許都不陌生,如家中或者辦公室中的連接個人電腦與國際互聯(lián)網(wǎng)的路由器。這里討論的網(wǎng)關(guān),它的作用不是連接你的個人電腦到互聯(lián)網(wǎng)上遨游,而是將你家中大大小小的家用電器連接到你的個人電腦上,進而不需要你走進家中就能通過PC機控制家用網(wǎng)關(guān)來獲取家電信息和控制它們。因為采用了Zigbee無線技術(shù),所以又稱為家用無線網(wǎng)關(guān)。
1 Zigbee技術(shù)的體系結(jié)構(gòu)和拓撲結(jié)構(gòu)
在Zigbee技術(shù)中,其體系結(jié)構(gòu)通常是通過“層”來量化它的各個簡化標(biāo)準(zhǔn)的,每一層負責(zé)完成為其所規(guī)定的任務(wù),并向上層提供服務(wù)。Zigbee技術(shù)的體系結(jié)構(gòu)自下往上主要由物理(PHY)層、媒體接入控制(MAC)層、網(wǎng)絡(luò)/安全層以及應(yīng)用框架層構(gòu)成。
Zigbee技術(shù)網(wǎng)絡(luò)有2種拓撲結(jié)構(gòu):星型拓撲結(jié)構(gòu)和對等拓撲結(jié)構(gòu)(如圖1所示)。其中定義了兩種設(shè)備:全功能設(shè)備(FFD)和精簡功能設(shè)備(RFD)。FFD在硬件功能上比較完備,可以與所有其他的FFD或RFD通信,而RFD只能和與其關(guān)聯(lián)的FFD進行通信。與RFD相關(guān)聯(lián)的FFD設(shè)備稱為該RFD的“協(xié)調(diào)器”。在整個網(wǎng)絡(luò)中,有一個FFD充當(dāng)網(wǎng)絡(luò)協(xié)調(diào)器。除直接參與應(yīng)用外,網(wǎng)絡(luò)協(xié)調(diào)器還需要完成成員身份管理、鏈路狀態(tài)信息管理以及分組轉(zhuǎn)發(fā)等任務(wù)。
2 家用網(wǎng)關(guān)結(jié)構(gòu)及其軟硬件組成
結(jié)合本課題中家用網(wǎng)關(guān)和家用電器的主從關(guān)系,本文采用基于星型拓撲結(jié)構(gòu)的Zigbee網(wǎng)絡(luò)。因為Zigbee無線網(wǎng)關(guān)需要將基于TCP協(xié)議的信息轉(zhuǎn)發(fā)給Zigbee網(wǎng)絡(luò)其它的節(jié)點,故它必須為一個FFD設(shè)備,同時它在整個Zigbee網(wǎng)絡(luò)還要管理其它節(jié)點的一些信息,故其又實現(xiàn)為一個協(xié)調(diào)器。
根據(jù)課題要求,選擇的系統(tǒng)硬件組成:采用S3C4480嵌入式開發(fā)板,該開發(fā)自帶2M FLASH和8M RAM。網(wǎng)絡(luò)芯片采用RTL8019 10M網(wǎng)絡(luò)芯片,Zigbee通信模塊采用TI的CC2420芯片(兩片)。
選用的系統(tǒng)軟件組成:uCOS-Ⅱ+基本功能Zigbee協(xié)議棧+LWIP TCP/IP協(xié)議棧。
Zigbee無線網(wǎng)關(guān)基本功能為將基于TCP協(xié)議的網(wǎng)絡(luò)與基于Zigbee協(xié)議棧的數(shù)據(jù)進行轉(zhuǎn)換,從而可以將基于常用的以太網(wǎng)的數(shù)據(jù)發(fā)送到Zigbee網(wǎng)絡(luò)中,也可以將Zigbee網(wǎng)絡(luò)中的數(shù)據(jù)發(fā)送到以太網(wǎng)中。開啟Zigbee無線網(wǎng)關(guān),其它的RFD節(jié)點通過與其通信,加入到該無線網(wǎng)絡(luò)中。這樣Zigbee無線網(wǎng)關(guān)就可以管理所有節(jié)點。
這里涉及兩個主要協(xié)議棧:Zigbee協(xié)議棧和TCP/IP協(xié)議棧。
TCE/IP協(xié)議棧這里選擇適合嵌入式應(yīng)用的LWIP協(xié)議棧,具有良好的移植性并且開放源代碼。
考慮到目前還沒有完全可以用的Zigbee協(xié)議棧,在這里定義并實現(xiàn)了—個基本功能的Zigbee協(xié)議棧。其基本結(jié)構(gòu)為:
(1)phy層:該層主要實現(xiàn)與具體Zigbee模塊硬件有關(guān)的操作。
(2)mac層:基于phy層提供的接口,實現(xiàn)對Zigbee網(wǎng)絡(luò)的基本初始化,設(shè)置PAID,設(shè)置IEEE 64位地址,選擇通信通道,實現(xiàn)接收和發(fā)送Zigbee數(shù)據(jù)包功能。
(3)nwk層:該部分用來從mac獲得接收到的數(shù)據(jù),對數(shù)據(jù)進行分析,進行一系列的操作。根據(jù)發(fā)送來的數(shù)據(jù),如果是應(yīng)用層的數(shù)據(jù),向上傳遞接收到的數(shù)據(jù)。如果是網(wǎng)絡(luò)層命令,則進行具體操作。
實現(xiàn)的網(wǎng)絡(luò)層命令有:
a)終端節(jié)點(RFD)請求加入該網(wǎng)絡(luò):進行驗證,并為加入的終端節(jié)點分配地址。
b)終端節(jié)點(RFD)請求離開該網(wǎng)絡(luò):進行驗證,并將該節(jié)點從節(jié)點信息列表中刪除。
c)終端節(jié)點(RFD)加入該網(wǎng)絡(luò)成功。
d)終端節(jié)點(RFD)離開該網(wǎng)絡(luò)成功。
除此之外還包括針對這些請求的FFD響應(yīng)命令。
(4)app層:該層從nwk層獲得數(shù)據(jù),并根據(jù)數(shù)據(jù)內(nèi)容進行操作,與具體應(yīng)用有關(guān)。
3 家用網(wǎng)關(guān)的具體操作流程及其偽代碼
Zigbee協(xié)議棧與TCP/IP協(xié)議棧,分別作為uCOS-II系統(tǒng)的兩個任務(wù),這兩個任務(wù)之間通過消息隊列或者郵箱的形式進行數(shù)據(jù)通信,用以實現(xiàn)任務(wù)的數(shù)據(jù)交換。
在啟動主機軟件時,用戶通過設(shè)定要連接的Zigbee網(wǎng)關(guān)IP,從而使用Zigbee網(wǎng)關(guān)的連接。在連接成功以后,PC主機請求Zigbee網(wǎng)絡(luò)中所有節(jié)點的信息,Zigbee網(wǎng)關(guān)將Zigbee網(wǎng)絡(luò)中所有的節(jié)點信息發(fā)送給主機,主機軟件顯示所有可能的節(jié)點。獲得所有節(jié)點信息以后,用戶就可以選擇要通信的節(jié)點,并通過TCP將所有的操作信息發(fā)送給該節(jié)點,從而實現(xiàn)對節(jié)點控制和監(jiān)控。
這里寫出Zigbee協(xié)議棧任務(wù)基本流程偽代碼。
4 網(wǎng)關(guān)調(diào)試方法
具體的操作過程:
(1)打開串口調(diào)試助手軟件,設(shè)置波特率為57 600,8位,l位停止,無奇偶校驗和流量控制協(xié)議。
(2)連接好Zigbee與PC的串口,同時連接電源。
(3)在串口調(diào)試助手軟件中將顯示有關(guān)設(shè)備啟動的信息和Zigbee網(wǎng)關(guān)相關(guān)信息。這時說明Zigbee網(wǎng)絡(luò)已經(jīng)初始化完成,并形成了一個Zigbee網(wǎng)絡(luò)。
(4)打開主機軟件,設(shè)置好連接的網(wǎng)關(guān)IP地址,然后點擊“連接”按鈕,這時在軟件左邊的列表框中顯示所有的Zigbee節(jié)點信息,也可以通過下面的“刷新節(jié)點信息”來獲得最新的節(jié)點信息列表。
主機軟件最下面的只讀編輯框,里面顯示的是一些日志信息,方便調(diào)試。圖3顯示了網(wǎng)關(guān)調(diào)試情況:
5 結(jié)論
通過網(wǎng)關(guān)設(shè)計分析,發(fā)現(xiàn)該網(wǎng)關(guān)具有實用性和可行性。在網(wǎng)關(guān)的設(shè)計過程中,遇到不少困難,比如目前還沒有適用于ARM平臺的Zigbee協(xié)議棧,只能對現(xiàn)有的各種Zigbee協(xié)議棧進行修改和移植,以適合ARM平臺,這一步實現(xiàn)起來較為復(fù)雜。另外,為了節(jié)省設(shè)備成本,測試中兩個RFD設(shè)備同時接在一個Zigbee無線網(wǎng)關(guān)設(shè)備上,距離較近,在實際生產(chǎn)測試中并不適用。