摘要:利用ZigBee技術,組成具有可“自愈”能力的Mesh網絡,實現(xiàn)無線串口通信。ZigBee技術的Mesh網絡,單個模塊的傳輸距離在10~100 m之間,加功放在1 km以上。傳輸速率為250 kb·s-1,完全能滿足一般用戶的要求。
關鍵詞:ZigBee技術;Mesh網絡;“自愈”能力;無線串口
RS-232串行通信是異步通信中應用最廣的標準總線,在沒有Modem的情況下,一般傳輸距離限制在15 m內,使得遠距離串口通信受到較大限制。無線技術是當今設備通信中取代有線技術的必然趨勢。
本文利用ZigBee無線技術組成Mesh網絡實施串口通信,網絡中任意兩個模塊的傳輸距離可達100 m,如果模塊有功放,傳輸距離可上升至1.5 km。因為Mesh網絡的多跳性,數(shù)據(jù)能夠多跳傳輸,所以數(shù)據(jù)的傳輸距離取決于跳數(shù)的多少,如圖1所示S4經過3跳把數(shù)據(jù)傳送到S1,如果每一跳距離是1 km,則傳輸距離達3 km,這有效地解決了有線串口傳送的距離限制問題。同時,ZigBee網絡中最大的數(shù)傳速率為250 kb·s-1,完全能滿足一般用戶的要求。
1 ZigBee無線串口設計原理
1.1 節(jié)點入網后的初始化
根據(jù)ZigBee技術的要求,ZigBee網絡中存在3種角色,協(xié)調器、路由和終端設備,協(xié)調器負責建立網絡,路由器負責路由,終端設備只能收發(fā)數(shù)據(jù)。協(xié)調器和路由統(tǒng)稱為全功能設備(FFD)。
在此,所有的設備都統(tǒng)稱為節(jié)點(node),只是所扮演的角色不一樣,每個節(jié)點都人為地在程序里給它們取名,如:01、02、03表示節(jié)點1、節(jié)點2、節(jié)點3,00保留給協(xié)調器。
協(xié)調器(00)加電后組建網絡,各節(jié)點自動發(fā)現(xiàn)并加入網絡,根據(jù)本文的設計,節(jié)點在加入網絡后都會自動地向網絡中的其他節(jié)點廣播其16位網絡地址和名字,網絡中的其他節(jié)點接收到這廣播數(shù)據(jù)后將該數(shù)據(jù)儲存在數(shù)組NodeAddress[]中,然后以單播的方式向新加入節(jié)點反饋自己的網絡地址和名字,新節(jié)點也將該數(shù)據(jù)保存在數(shù)組NodeAddress[]中,從而保證網絡中的每個節(jié)點都知道其他節(jié)點的網絡地址和名字。具體流程如圖2所示。
1.2 串口數(shù)據(jù)的格式
當節(jié)點串口有數(shù)據(jù)要發(fā)送的時候,必須要指明,數(shù)據(jù)的發(fā)送目的地,所以從串口輸入的數(shù)據(jù)必須滿足一定的格式,本設計規(guī)定該格式為:××……;××為要發(fā)送的目的節(jié)點名字,……為要發(fā)送的數(shù)據(jù)。譬如向節(jié)點01發(fā)送數(shù)據(jù)“ZigBee”,格式為:01 ZigBee。因為節(jié)點在加入網絡的時候,已經建立了名字和網絡地址的對應表,所以發(fā)送節(jié)點會自動將01解釋為網絡地址0x0023,從而將數(shù)據(jù)準確地發(fā)送到節(jié)點01上。
2 無線串口硬件設計
2.1 系統(tǒng)框圖
串口接收、發(fā)送系統(tǒng)可以是PC或者其他嵌入式系統(tǒng),ZigBee控制系統(tǒng)負責組網和接收發(fā)送數(shù)據(jù)。這里主要研究ZigBee控制系統(tǒng)。
2.2 芯片選擇
選擇TI公司的2.4 GHz片上系統(tǒng)解決方案CC2530。CC2530是用于IEEES02.15.4、ZigBee和RF4CE應用的一個片上系統(tǒng)解決方案。它能以較低的總材料成本建立強大的網絡節(jié)點。CC2530結合了領先的RF收發(fā)器的優(yōu)良性能,業(yè)界標準的增強型8051CPU,使操作更容易,具備不同的運行模式,尤其適應超低功耗要求的系統(tǒng)。
2.3 無線串口電路設計
CC2530中的P0_1和P0_2為TTL電平的串口接收發(fā)送管腳,可直接與TTL電平的串口系統(tǒng)相連,如果與PC機連,要加上MAX232模塊。可見該無線串口與其他系統(tǒng)的兼容性很強,而且連接方便。
3 軟件設計
3.1 ZigBee協(xié)議棧簡介
ZigBee協(xié)議棧以IEEE 802.15.4標準為基礎,IEEES02.15.4工作組主要負責制定物理層(PHY)、媒體訪問控制層(MAC)。ZigBee聯(lián)盟提供了網絡層和應用層(APL)框架的設計。其中,應用層的框架包括了應用支持子層(APS)、ZigBee設備對象(ZDO)及由制造商制定的應用對象。如圖5所示。
采用TI公司的Z—Stack 07協(xié)議棧實現(xiàn)ZigBee協(xié)議。Z—Stack 07協(xié)議棧,對之前幾個版本的協(xié)議進行了改進,使得網絡穩(wěn)定性更強,組網更靈活。
3.2 主體程序流程與任務
TI的Z—Stack 07/PRO協(xié)議棧,對應的開發(fā)環(huán)境為IAR 7.51A。在安裝完Z—Stack 07協(xié)議棧之后,用IAR打開工程文件GenericApp,GenericApp是TI公司專門為開發(fā)者提供的開發(fā)模板,在此借助該模板實現(xiàn)無線串口。
打開GenericApp后,如圖6所示,App文件夾即為應用層代碼文件夾。利用模板只需在GenericApp.c中加入實現(xiàn)代碼,就可以實現(xiàn)無線串口。
Z—Stack采用操作系統(tǒng)的思想來構建,采用任務輪循機制,當各層初始化之后,系統(tǒng)進入低功耗模式,當任務有事件發(fā)生時,喚醒系統(tǒng),開始進入中斷處理任務事件,結束后繼續(xù)進入低功耗模式。如果同時有幾個事件發(fā)生,判斷優(yōu)先級,逐次處理事件。Z—Stack的工作流程如圖7所示。
3.3 無線串口程序流程
因為Z—Stack是采用任務輪循機制,GenericApp是屬于其中的一個任務,在文件GenericApp.c中的任務初始化函數(shù)GenericApp_Init()中添加串口初始化代碼,在GenericApp_ProcessEven()函數(shù)中添加無線串口收發(fā)事件Serial_RecEven和Serial_TranEven的處理函數(shù)。圖8和圖9是GenericApp_Init()函數(shù)流程圖和GenericApp_ProcessEven()函數(shù)流程圖。
圖中初始化NV Flash是用以儲存其他節(jié)點網絡地址名字對應表。
當節(jié)點上電加入ZigBee網絡后,便會執(zhí)行GenericApp_Init()函數(shù),初始化串口,并向網絡中的其他節(jié)點以廣播的方式發(fā)送其網絡地址和名字。
當網絡中的其他節(jié)點接收到數(shù)據(jù)時,便會觸發(fā)接收數(shù)據(jù)事件,GenericApp_ProcessEven()函數(shù)判斷是串口接收數(shù)據(jù)命令還是儲存網絡地址命令,如果是前者,便將數(shù)據(jù)寫到串口;如果是后者則先判斷是否來自于廣播方式發(fā)送來的數(shù)據(jù):若是則儲存該網絡地址和名字,并且以單播的方式回饋本節(jié)點的網絡地址,保證網絡中的各個節(jié)點都知道其他節(jié)點的地址和名字;若不是就儲存該網絡地址和名字,不用反饋本節(jié)點的網絡地址和名字。
當GenericApp_ProcessEven()函數(shù)檢測到Serial_TranEven事件發(fā)生時,便讀串口并將數(shù)據(jù)按照約定的格式發(fā)送出去。
4 實際測試
4.1 測試1
無功放ZigBee模塊W00與W02,如圖10~圖12所示。
實驗環(huán)境:足球場,可視距離100 m。實驗結果如圖12所示。
Node:02 ShortAddress:0x3595是W02加入網絡后自動向W00發(fā)送網絡地址和名字。因為W00是協(xié)調器,默認地址為0x00,已預存在各模塊中。
4.2 測試2
無功放ZigBee模塊W00,W02,W03和W04,實驗環(huán)境:各大樓之間。如圖13所示。
W00與W02、W03能直接通信,W00經過兩跳后可與W04,通信,W02經過兩跳后可以與W04通信。實驗結果截圖如14所示。
Node:04 ShortAddress:0xE805是W04入網后向W02發(fā)送的網絡地址和名字,Node:02 ShortAddress:0x3595是W02節(jié)點回饋的網絡地址和名字。由實驗可知,基于ZigBee的無線串口通信,數(shù)據(jù)傳輸穩(wěn)定、可靠,有效解決長距離串口通信問題。
5 Mesh網絡無線串口的特點
(1)能夠遠距離串口通信。通信距離取決于單個節(jié)點的有效傳輸距離和跳數(shù),一般無功放模塊傳輸距離為100 m,經過5跳可以傳輸500 m的距離。如果加上功放,單個節(jié)點的傳輸距離為1.5 km,5跳為7.5 km。缺點是加上功放,成本增加。
(2)Mesh網絡具有自愈能力,當某條路徑被切斷,節(jié)點會自動尋找另外的路徑傳輸數(shù)據(jù),如圖15所示。
(3)兼容性好,易安裝。簡單的串口線連接。由圖4可知,從模塊中引出4根TTL電平的串口線,直接可以與嵌入式系統(tǒng)連接,或者加上MAX232便可以與PC連接。
6 結束語
利用ZigBee無線技術組成Mesh網絡實施串口通信,無線通信距離取決于單跳距離和跳數(shù),而默認最大跳數(shù)為20,但多跳的出現(xiàn)會導致數(shù)據(jù)延時,出現(xiàn)誤碼。建議跳數(shù)控制在5跳之內,此時數(shù)據(jù)傳輸穩(wěn)定、時延短、誤碼率低,能有效地解決有線串口距離限制的問題。