隋浩+徐國凱+孫炎輝
摘 要:利用各類傳感器采集外界信息,產生模擬電壓信號,通過模數轉換進而得到數字信號,摒棄傳統的有線串口發數模式,用CC2430芯片作為節點的核心芯片,負責數據處理和無線射頻工作。根據以上要求給出了系統硬件結構及軟件設計方案,并綜合考慮到了節點的功耗問題。
關鍵詞:CC2430;無線傳感網絡;節點;ZigBee協議
中圖分類號:TP393 文獻標志碼:A 文章編號:2095-1302(2014)02-0047-04
0 引 言
保護民族物質文化和非物質文化遺產的任務一直都為國家所重視,少數民族博物館中的文物是國家最為寶貴的民族物質文化遺產,利用發展前景最為廣闊的無線傳感技術,將數字化保護概念落實到實際的少數民族遺產保護當中,搭建無線傳感網絡以完成數據的采集和傳遞,將博物館中的實時環境信息轉換為易讀的數字信號傳遞給管理員。
受到“十一五”國家科技支撐計劃的重點課題《民族特需品數字化關鍵技術研究與示范應用[課題編號2009BAH41B05]》項目的支持,研發一套適合民族家具博物館的物聯網無線傳感網絡產品。本文對整個無線傳感網絡體系中的網絡節點硬件、軟件提出具體設計思路和實現方法。
1 ZigBee網絡路徑
1.1 路由基本算法
ZigBee[1]網絡區別于其他無線傳感網絡之處就在于其預先進行地址分配,各節點由分布式算法根據一系列網絡參數來確定,節點只有通過協調器或者路由器節點才能加入網絡,加入網絡后隨即獲得一個唯一的地址。我們這里設Cm和Rm分別為節點所能分配的最大節點數和路由節點數,Lm為網絡的最大深度,則網絡深度為d的路由節點所能分配的地址塊大小如式(1)所示:
(1)
深度為d的父親節點分配的第k個路由節點和第n個終端節點的地址分別為:
(2)
(3)
在式(2)、(3)中,Aparent代表負責分配網絡地址的父節點地址,ZigBee網絡路由算法應用的就是這種分布式網絡地址分配機制。
1.2 基于AODV路由算法
AODV即無線自組網按需平面距離向量路由協議,此算法通過檢查自己的路由表,如存在到達目的節點的表項則直接跳取到下一地址,否則節點以洪泛的方式向網絡廣播路由請求數據包,當該數據包到達目的節點時,目的節點以單播方式向路由發起節點回復路由數據包[2]。當路由發起節點收到路由回復包后,一條新加入到路由表的通信鏈路便產生了。
該算法有很多優點能夠大大提高網絡通信效率,有效地避免傳統網絡路由算法中出現的環路問題。基于需求的距離向量鏈路中由于發送數據之前需要對現有的通信路徑進行遍歷過程,因此在網絡較大的情況時也會導致網絡數據傳輸延時增大,進而造成網絡效率不高的問題。
1.3 基于樹型結構路由算法
在網絡中,深度為d,源節點S若要想傳輸到任意節點D時,就可以簡單地根據的公式S (4) 依據式(4)來進行跳到下一個地址的行為,否則將數據輸出給父親節點。該算法的優點是空間復雜度以及時間復雜度比較簡單,適用在網絡節點數目不是很多的情況,否則會導致分組傳輸時延高的缺點,從而造成網絡效率低下的問題。 Cluster-Tree算法是在樹型路由算法技術基礎上,由協調器作為中心點生成簇樹狀網絡拓撲結構,通過判斷目的節點是否是具有轉發功能設備的下屬節點,以決定是否進行數據包的轉發,最終達到分層遍歷查找目的節點的結果[3]。這種算法可以大大減少信息冗余度和源節點的發送功率,對于數據高內聚非常有利,也在一定程度上彌補了樹型結構的缺點。 2 ZigBee網絡節點硬件設計 2.1 節點總體硬件設計 節點按功能共可分為CC2430模塊、電源模塊和天線模塊三大模塊。其總體硬件設計如圖1所示。 圖1 節點總體硬件圖 2.2 CC2430模塊 CC2430具有增強性能的8051MCU、8 KB RAM等,其增強的8051MCU核的性能是工業標準8051核性能的8倍[4]。CC2430/CC2431還具備直接存儲器定址(DMA)功能,它能夠被用于減輕8051微控制器內核對數據搬移,因此提高了芯片整體的性能、可編程看門狗定時器、AES-128 安全協處理器、多達8輸入的8~14位ADC、USART、睡眠模式定時、上電復位、掉電檢測電路(Brown Out Detection)等,CC2430有兩個晶振,分別是32 MHz晶振和32.768 kHz晶振。 2.3 天線模塊 CC2430發送數據時,信號從差分射頻端口RF_P、RF_N經巴倫電路變為單端信號,由 RXTX_SWITCH信號控制2個邏輯開關,選通功率放大電路(PA),放大后的信號從天線發射出去。接收信號時,在RXTX_SWITCH信號控制下,從天線接收的信號經低噪聲放大電路(LNA)放大,巴倫電路轉換,由RF_P、RF_N端口接收。天線模塊電路圖如圖2所示。 2.4 電源模塊 電源模塊主要是由TPS79533低壓穩壓器輸出3.3 V電壓,其輸入電壓范圍是2.7~5.5 V,并具有較高的電源抑制比、超低噪聲、較好的電壓線性和負載瞬態效應以及較小的電壓漂移。可以將5 V的電源通過DC-DC變換器得到3.3 V的工作電壓,電源電路如圖3所示。 圖2 天線模塊電路 圖3 電源模塊電路 3 ZigBee網絡節點軟件設計 3.1 ZigBee協議棧 ZigBee無線網絡的實現,是建立在ZigBee協議棧[5,6]的基礎上的,協議棧采用分層的結構,協議分層的目的是為了使各層相對獨立,每一層都提供一些服務,服務由協議定義,它們向高層提供服務,并由低層提供服務。
在ZigBee協議棧中,物理層、MAC層位于最低層,且與硬件相關;網絡層、安全層、應用框架層以及安全層建立在物理層和MAC層之上,并且完全與硬件無關。分層的結構脈絡清晰、一目了然,給設計和調試帶來極大的方便。
Z-Stack采用了操作系統的思想來構建,采用事件輪循機制[7],當各層初始化之后,系統進入低功耗模式,事件發生時,喚醒系統,開始進入中斷處理事件,結束后繼續進入低功耗模式。如果同時有幾個事件發生,先判斷優先級,再逐次處理事件。
3.2 協調器網絡的建立
在ZigBee網絡中,網絡協調器具有建立一個網絡、維護鄰居設備表、對邏輯網絡地址進行分配、允許設備MAC層/應用層的連接或斷開網絡的功能,網絡協調器在進行一些初始化之后調用aplFormNetwork()來建立網絡。協調器通過掃描一個空信道來建立一個新的網絡,然后選擇一個隨機的PANID并開始監聽此信道[8]。同時協調器還有一個目前連接設備的列表,以支持其他設備加入網絡。網絡建立程序如下:
void main(void){
……
halInit();//硬件初始化
aplInit();//協議棧初始化
……
aplFormNetwork();//建立網絡
while(apsBusy()){apsFSM();}//等待網絡相應
while(1)
{apsFSM();//執行協議棧
}
……
}
3.3 節點加入網絡
當一個網絡建立成功以后,便要考慮路由節點和RFD節點如何加入到網絡中去。節點通過調用aplJoinNetword()函數加入到協調器建立的網絡當中。通過掃描信道找到協調器并進一步申請加入網絡,獲取協調器的地址,同時將自己的地址發送給協調器。網絡加入成功以后,網絡節點則進入休眠狀態,知道有命令或者數據發送時才被喚醒。網絡加入的程序如下:
void main(void){
halInit();//硬件初始化
aplInit();//協議棧初始化
……
do{
aplJoinNetwork();//加入網絡
while(apsBusy()){apsFSM();}//等待網絡格式化
}
while(aplGetStatus()=WXLPAN_STATUS_SUCCESS);
while(1){apsFSM();}//執行協議棧
……
}
3.4 數據發送與接收
在ZigBee協議棧中進行數據發送可以調用AF-DataRequest函數來實現,該函數會調用協議棧里面與硬件相關的函數最終將數據通過天線發送出去。以下是AF_DataRequest數據發送程序:
afStatus_t AF_DataRequest(afAddrType_t *dstAddr,
endPointDesc_t *srcEP,,
uint16 cID,
uint16 len,
uint8 *buf,
uint8 *transID,
uint8 options,
uint8 radius)
上面的程序中:afAddrType_t *dstAddr為包含了目的節點的網絡地址以及發送數據的格式;endPointDesc_t *srcEP為使用網絡地址來區分不同的節點,用端口號來區分統一節點的不同端口;uint16 cID為描述命令號,不同的命令號代表不同的控制命令,用來表示不同的控制操作;uint16 len為表示發送數據的長度;uint8 *buf為指向發送數據緩沖區的指針;uint8 *transID為指向發送序號的指針,每次發送數據后就會自動加1,配合接收端計算丟包率;uint8 options為默認取AF_DISCV_ROUTE;uint8 radius為默認取AF_DEFAULT_RADIUS。
在發送數據之前,接收的設備必須處于工作狀態,否則將會出現“丟包”。上層使用NLME-SYNC.request原語初始化設備,打開其接收機,該原語將引起網絡層使用MLME-POLL.request原語對其父設備進行輪詢[9]。ZigBee協調器或路由器的網絡層必須在最大程度上保證任何時間接收機總是處于接收狀態。
當協調器接收到節點發送來的數據后,操作系統會將該數據封裝成一個消息,然后放入消息隊列中,每個消息都有自己的消息ID,表示接收到新數據的消息的ID是AF_INCOMING_MSG_CMD[10],其宏定義為:
#define AF_INCOMING_MSG_CMD 0x1A
在協調器中相應代碼如下:
MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive(GenericApp_TaskID);
while(MSGpkt)
{
switch(MSGpkt->hdr.event)
{
case AF_INCOMING_MSG_CMD;
GenericApp_MessageMSGCB(MSGpkt);
break;
……
}
}
首先使用osal_msg_receive函數從消息隊列中接收一個消息,然后使用switch-case語句udixiaoxileixing進行判斷(判斷消息ID),如果消息ID是AF_INCOMING_MSG_CMD則進行相應的數據處理,進而完成數據的接收。
4 測試結果
測試采用的軟件是Packet Sniffer,Packet Sniffer 是一款專門的協議分析軟件,可以對各層協議上的信息包進行分析和解碼;顯示出錯的包以及接入錯誤;指示觸發包;在接收和注冊過程中可連續顯示包,可以利用Packet Sniffer分析ZigBee建立網絡,加入網絡,發送數據,接收數據的過程[11]。IEEE8022.15.4/ZigBee協議下協調器的組網過程如圖4所示。
圖4 協調器組網
從圖4 中顯示的數據包數據中,第2行到第7行是建立一個網絡的過程,在這里可以看出在網絡層管理實體一旦選擇了一個PAN標識符,就會立刻選擇一個0x0000的16位網絡地址,并且設置MAC層的macShortAddress PIB 屬性,使其等于所選擇的網絡地址。
第8行的源地址是路由器的物理地址0x1716151413120 030,它的PANID沒有確定為0xFFFFF,這時的路由器還沒有加入網絡,所以還沒有網絡地址,目的地址為協調器的網絡地址0x0000,它的PANID為0x0022;它的命令是聯合方式加入請求。該行表示的意思是向協調器發送聯合方式加入請求,發送完成后將得到一個應答。
節點在等待應答并回應后,就開始加入建立好的無線網絡,其加入網絡的過程如圖5所示。
圖5 節點加入網絡
從圖中可見,已成功組網的協調器在收到應答以后,節點開始加入網絡。與此同時,協調器開始為路由器分配網絡地址,路由器分配到的網絡地址(Source Address)為0x0001。這樣就完成了節點加入網絡的過程,并分配了各自的網絡地址,從而也完成了無線網絡的組建和節點加入網絡的過程。
5 結 語
本系統采用ZigBee技術設計無線網絡節點,其設計思想簡單,成本較低并且有著很好的擴展性,可以適應不同環境對系統的要求,與此同時,通過通用串口搭載不同的傳感器又可以輕而易舉地實現對各種信息的采集和傳輸工作,在短距離無線傳感網絡的應用上有著明顯的優勢,相信日后的發展前景會更好,給人們日常生活工作帶來更大的便利。
參 考 文 獻
[1] 冷亮,劉丹.基于ZigBee的無線傳感網絡[J].中國科技財富,2008(7): 115,118.
[2] 杜煥軍,張維勇,劉國田.ZigBee網絡的路由協議研究[J].合肥工業大學學報:自然科學版,2008,31(10):1618-1621.
[3] 李剛,陳俊杰,葛文濤.一種改進的ZigBee網絡Cluster-Tree路由算法[J].測控技術,2009,28(9):52-55.
[4] REESE R. Implementation of microstrip balun for CC2420 and CC243x [M]. USA: Texas Instruments, 2006.
[5] 張任,王堅峰,嚴海.基于ZigBee的無線傳感器網絡節點設計[J].機電工程,2008,25(8):18-20.
[6] 孟海濱,張紅雨.嵌入式系統電源芯片選型與應用[J].單片機與嵌入式系統應用,2010(12):7-10.
[7] 曹振國.基于ZigBee的集裝箱站組網設計與實現[J].自動化與儀器儀表,2010(4):50-52.
[8] 趙晨.基于ZigBee技術的無線傳感器網絡的研究與實現[D].青島:中國海洋大學,2007.
[9] 屈明佑,雷航,郭文生.基于ZigBee的現場數據采集系統設計與實現[J].電訊技術,2008(4):36-40.
[10]張帥華,楊遠,梁玉堂,等.基于AT91SAM9260的ZigBee工業以太網網關設計[J].微計算機信息,2011,27(8):113-114.
[11]閆哲,杜濤,左海利.智能家居控制系統的設計及實現[J].自動化技術及應用,2010,29(2):93-96.
Design and implementation of node in the WSN based on ZigBee
SUI Hao, XU Guo-kai, SUN Yan-hui
(College of Electromechanical and Information Engineering, Dalian Nationalities University, Dalian 116600, China)
Abstract: The information is collected by sensors, to produce analog voltage signals. The digital signal is obtained through A/D conversion. CC2430 chip is used as core chip instead of traditional sending model with wired style to take charge of data processing and wireless radio frequency. According to the requirement, the solution of the hardware structure and software design is presented, and the power consumption is also taken into consideration.
Keywords: CC2430; wireless sensor network; node; ZigBee protocol
4 測試結果
測試采用的軟件是Packet Sniffer,Packet Sniffer 是一款專門的協議分析軟件,可以對各層協議上的信息包進行分析和解碼;顯示出錯的包以及接入錯誤;指示觸發包;在接收和注冊過程中可連續顯示包,可以利用Packet Sniffer分析ZigBee建立網絡,加入網絡,發送數據,接收數據的過程[11]。IEEE8022.15.4/ZigBee協議下協調器的組網過程如圖4所示。
圖4 協調器組網
從圖4 中顯示的數據包數據中,第2行到第7行是建立一個網絡的過程,在這里可以看出在網絡層管理實體一旦選擇了一個PAN標識符,就會立刻選擇一個0x0000的16位網絡地址,并且設置MAC層的macShortAddress PIB 屬性,使其等于所選擇的網絡地址。
第8行的源地址是路由器的物理地址0x1716151413120 030,它的PANID沒有確定為0xFFFFF,這時的路由器還沒有加入網絡,所以還沒有網絡地址,目的地址為協調器的網絡地址0x0000,它的PANID為0x0022;它的命令是聯合方式加入請求。該行表示的意思是向協調器發送聯合方式加入請求,發送完成后將得到一個應答。
節點在等待應答并回應后,就開始加入建立好的無線網絡,其加入網絡的過程如圖5所示。
圖5 節點加入網絡
從圖中可見,已成功組網的協調器在收到應答以后,節點開始加入網絡。與此同時,協調器開始為路由器分配網絡地址,路由器分配到的網絡地址(Source Address)為0x0001。這樣就完成了節點加入網絡的過程,并分配了各自的網絡地址,從而也完成了無線網絡的組建和節點加入網絡的過程。
5 結 語
本系統采用ZigBee技術設計無線網絡節點,其設計思想簡單,成本較低并且有著很好的擴展性,可以適應不同環境對系統的要求,與此同時,通過通用串口搭載不同的傳感器又可以輕而易舉地實現對各種信息的采集和傳輸工作,在短距離無線傳感網絡的應用上有著明顯的優勢,相信日后的發展前景會更好,給人們日常生活工作帶來更大的便利。
參 考 文 獻
[1] 冷亮,劉丹.基于ZigBee的無線傳感網絡[J].中國科技財富,2008(7): 115,118.
[2] 杜煥軍,張維勇,劉國田.ZigBee網絡的路由協議研究[J].合肥工業大學學報:自然科學版,2008,31(10):1618-1621.
[3] 李剛,陳俊杰,葛文濤.一種改進的ZigBee網絡Cluster-Tree路由算法[J].測控技術,2009,28(9):52-55.
[4] REESE R. Implementation of microstrip balun for CC2420 and CC243x [M]. USA: Texas Instruments, 2006.
[5] 張任,王堅峰,嚴海.基于ZigBee的無線傳感器網絡節點設計[J].機電工程,2008,25(8):18-20.
[6] 孟海濱,張紅雨.嵌入式系統電源芯片選型與應用[J].單片機與嵌入式系統應用,2010(12):7-10.
[7] 曹振國.基于ZigBee的集裝箱站組網設計與實現[J].自動化與儀器儀表,2010(4):50-52.
[8] 趙晨.基于ZigBee技術的無線傳感器網絡的研究與實現[D].青島:中國海洋大學,2007.
[9] 屈明佑,雷航,郭文生.基于ZigBee的現場數據采集系統設計與實現[J].電訊技術,2008(4):36-40.
[10]張帥華,楊遠,梁玉堂,等.基于AT91SAM9260的ZigBee工業以太網網關設計[J].微計算機信息,2011,27(8):113-114.
[11]閆哲,杜濤,左海利.智能家居控制系統的設計及實現[J].自動化技術及應用,2010,29(2):93-96.
Design and implementation of node in the WSN based on ZigBee
SUI Hao, XU Guo-kai, SUN Yan-hui
(College of Electromechanical and Information Engineering, Dalian Nationalities University, Dalian 116600, China)
Abstract: The information is collected by sensors, to produce analog voltage signals. The digital signal is obtained through A/D conversion. CC2430 chip is used as core chip instead of traditional sending model with wired style to take charge of data processing and wireless radio frequency. According to the requirement, the solution of the hardware structure and software design is presented, and the power consumption is also taken into consideration.
Keywords: CC2430; wireless sensor network; node; ZigBee protocol
4 測試結果
測試采用的軟件是Packet Sniffer,Packet Sniffer 是一款專門的協議分析軟件,可以對各層協議上的信息包進行分析和解碼;顯示出錯的包以及接入錯誤;指示觸發包;在接收和注冊過程中可連續顯示包,可以利用Packet Sniffer分析ZigBee建立網絡,加入網絡,發送數據,接收數據的過程[11]。IEEE8022.15.4/ZigBee協議下協調器的組網過程如圖4所示。
圖4 協調器組網
從圖4 中顯示的數據包數據中,第2行到第7行是建立一個網絡的過程,在這里可以看出在網絡層管理實體一旦選擇了一個PAN標識符,就會立刻選擇一個0x0000的16位網絡地址,并且設置MAC層的macShortAddress PIB 屬性,使其等于所選擇的網絡地址。
第8行的源地址是路由器的物理地址0x1716151413120 030,它的PANID沒有確定為0xFFFFF,這時的路由器還沒有加入網絡,所以還沒有網絡地址,目的地址為協調器的網絡地址0x0000,它的PANID為0x0022;它的命令是聯合方式加入請求。該行表示的意思是向協調器發送聯合方式加入請求,發送完成后將得到一個應答。
節點在等待應答并回應后,就開始加入建立好的無線網絡,其加入網絡的過程如圖5所示。
圖5 節點加入網絡
從圖中可見,已成功組網的協調器在收到應答以后,節點開始加入網絡。與此同時,協調器開始為路由器分配網絡地址,路由器分配到的網絡地址(Source Address)為0x0001。這樣就完成了節點加入網絡的過程,并分配了各自的網絡地址,從而也完成了無線網絡的組建和節點加入網絡的過程。
5 結 語
本系統采用ZigBee技術設計無線網絡節點,其設計思想簡單,成本較低并且有著很好的擴展性,可以適應不同環境對系統的要求,與此同時,通過通用串口搭載不同的傳感器又可以輕而易舉地實現對各種信息的采集和傳輸工作,在短距離無線傳感網絡的應用上有著明顯的優勢,相信日后的發展前景會更好,給人們日常生活工作帶來更大的便利。
參 考 文 獻
[1] 冷亮,劉丹.基于ZigBee的無線傳感網絡[J].中國科技財富,2008(7): 115,118.
[2] 杜煥軍,張維勇,劉國田.ZigBee網絡的路由協議研究[J].合肥工業大學學報:自然科學版,2008,31(10):1618-1621.
[3] 李剛,陳俊杰,葛文濤.一種改進的ZigBee網絡Cluster-Tree路由算法[J].測控技術,2009,28(9):52-55.
[4] REESE R. Implementation of microstrip balun for CC2420 and CC243x [M]. USA: Texas Instruments, 2006.
[5] 張任,王堅峰,嚴海.基于ZigBee的無線傳感器網絡節點設計[J].機電工程,2008,25(8):18-20.
[6] 孟海濱,張紅雨.嵌入式系統電源芯片選型與應用[J].單片機與嵌入式系統應用,2010(12):7-10.
[7] 曹振國.基于ZigBee的集裝箱站組網設計與實現[J].自動化與儀器儀表,2010(4):50-52.
[8] 趙晨.基于ZigBee技術的無線傳感器網絡的研究與實現[D].青島:中國海洋大學,2007.
[9] 屈明佑,雷航,郭文生.基于ZigBee的現場數據采集系統設計與實現[J].電訊技術,2008(4):36-40.
[10]張帥華,楊遠,梁玉堂,等.基于AT91SAM9260的ZigBee工業以太網網關設計[J].微計算機信息,2011,27(8):113-114.
[11]閆哲,杜濤,左海利.智能家居控制系統的設計及實現[J].自動化技術及應用,2010,29(2):93-96.
Design and implementation of node in the WSN based on ZigBee
SUI Hao, XU Guo-kai, SUN Yan-hui
(College of Electromechanical and Information Engineering, Dalian Nationalities University, Dalian 116600, China)
Abstract: The information is collected by sensors, to produce analog voltage signals. The digital signal is obtained through A/D conversion. CC2430 chip is used as core chip instead of traditional sending model with wired style to take charge of data processing and wireless radio frequency. According to the requirement, the solution of the hardware structure and software design is presented, and the power consumption is also taken into consideration.
Keywords: CC2430; wireless sensor network; node; ZigBee protocol