《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于CC2530的無線傳感器網(wǎng)絡(luò)監(jiān)控平臺
基于CC2530的無線傳感器網(wǎng)絡(luò)監(jiān)控平臺
來源:電子技術(shù)應(yīng)用2012年第10期
任珍文, 黃玉清
西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621010
摘要: 設(shè)計了一種基于ZigBee的低復(fù)雜度、低功耗和低成本的無線傳感器網(wǎng)絡(luò)環(huán)境監(jiān)控平臺,該平臺可動態(tài)顯示網(wǎng)絡(luò)拓撲結(jié)構(gòu)。主要由ZigBee無線傳感器網(wǎng)絡(luò)、通信網(wǎng)關(guān)和ARM控制臺三部分構(gòu)成。以ARM9作為控制臺環(huán)境,ZigBee芯片CC2530為核心搭建無線網(wǎng)絡(luò),掛載溫/濕度傳感器、振動傳感器及壓力傳感器等構(gòu)成完整的環(huán)境監(jiān)測平臺。測試結(jié)果表明,設(shè)計的系統(tǒng)運行穩(wěn)定,數(shù)據(jù)采集準確,網(wǎng)絡(luò)健碩,具有可擴展性。
中圖分類號: TP315
文獻標(biāo)識碼: B
文章編號: 0258-7998(2012)10-0122-04
Monitoring platform of WSN based on CC2530
Ren Zhenwen, Huang Yuqing
School of Information Engineering, Southwest University of Science and Technology, Mianyang, 621010, China
Abstract: This paper introduces a design of wireless sensor network environment monitoring platform, which is based on ZigBee low complexity, low power consumption and low cost. The platform can dynamically display the network topology structure,and the platform is composed of ZigBee wireless sensor network, communication gateway, and ARM console.In order to complete this system, this paper uses the ARM9 microprocessor as CPU, ZigBee chip CC2530 as the core of building wireless network, mounting temperature/humidity sensors, vibration sensors, and the pressure sensors. Test results proved that the system runs stably, the collected data is accurate and the network is reliable and extensible.
Key words : wireless sensor network; CC2530; ZigBee; gateway; remote control

    隨著計算機技術(shù)和無線通信技術(shù)的快速發(fā)展,各種智能化產(chǎn)品不斷涌現(xiàn),其中無線傳感器網(wǎng)絡(luò)WSN(Wireless Sensor Networks)[1]具有無線通信、感知、協(xié)作等特點,并很快融入到生活的方方面面。在大型超市、高檔小區(qū)、辦公樓里常常需要適時監(jiān)測區(qū)域環(huán)境內(nèi)的溫度、濕度及有毒氣體的濃度,以保障生命財產(chǎn)安全。傳統(tǒng)的環(huán)境監(jiān)測系統(tǒng)布線煩瑣,消耗人力。ZigBee技術(shù)作為一種新興的短距離無線傳感器網(wǎng)絡(luò)通信標(biāo)準,具有低功耗、低延遲、自組織等優(yōu)點[2],因而廣泛應(yīng)用到生產(chǎn)、生活領(lǐng)域,市場前景非常廣闊。

    ZigBee標(biāo)準基于IEEE 802.15.4低速率無線個人局域網(wǎng),支持介質(zhì)訪問控制層和物理層標(biāo)準,并在此之上包含網(wǎng)絡(luò)層、安全層和應(yīng)用層,具備很強的設(shè)備聯(lián)網(wǎng)能力,它支持網(wǎng)狀結(jié)構(gòu)、星狀結(jié)構(gòu)及樹狀結(jié)構(gòu)三種自組織無線網(wǎng)絡(luò)拓撲類型結(jié)構(gòu)[3]。本文基于ARM9控制平臺實現(xiàn)了傳感器網(wǎng)絡(luò)信息的實時顯示和ZigBee節(jié)點設(shè)備的控制。該無線傳感器網(wǎng)絡(luò)室內(nèi)環(huán)境遠程監(jiān)控平臺,以ZigBee芯片CC2530作為傳感器節(jié)點控制和無線通信芯片,實現(xiàn)溫度、濕度和氣壓等環(huán)境信息的感知。
1 系統(tǒng)方案設(shè)計
    控制平臺基于WSN技術(shù)和嵌入式技術(shù),借鑒了國內(nèi)外優(yōu)秀環(huán)境監(jiān)測研究經(jīng)驗,設(shè)計了基于CC2530芯片采集傳感器數(shù)據(jù)的ZigBee無線網(wǎng)絡(luò)和基于ARM9的網(wǎng)絡(luò)控制臺。
1.1 系統(tǒng)總體功能介紹
    本系統(tǒng)實現(xiàn)圖形化網(wǎng)絡(luò)拓撲結(jié)構(gòu)的動態(tài)構(gòu)建和管理,以及圖形化控制ZigBee節(jié)點設(shè)備;支持多跳網(wǎng)絡(luò);支持外界環(huán)境狀態(tài)信息感知,傳感器數(shù)據(jù)精確采集、無線傳輸和顯示,當(dāng)環(huán)境信息超過臨界值時報警等功能。
1.2 系統(tǒng)框架設(shè)計
    系統(tǒng)由ARM控制臺模塊、基于ZigBee的無線傳感器網(wǎng)絡(luò)通信模塊及網(wǎng)關(guān)模塊三個主體部分構(gòu)成,系統(tǒng)框架結(jié)構(gòu)如圖1所示。

    控制臺模塊采用ARM9芯片作為處理器,基于Linux操作系統(tǒng),搭配自制底板作為控制臺軟件運行環(huán)境,采用QT-4.5.3作為應(yīng)用程序開發(fā)框架進行控制臺軟件開發(fā)。
    無線傳感器網(wǎng)絡(luò)通信模塊采用基于IEEE 802.15.4標(biāo)準的ZStack-CC2530協(xié)議棧開發(fā),完成ZigBee網(wǎng)絡(luò)建立、維護以及傳感器數(shù)據(jù)采集、節(jié)點控制等功能。傳感器節(jié)點由ZigBee節(jié)點融合傳感器構(gòu)成。
    (1) ZigBee節(jié)點。包括協(xié)調(diào)器節(jié)點,路由器節(jié)點和終端節(jié)點,采用ZigBee芯片CC2530自主設(shè)計和繪制電路圖以及外圍硬件電路。CC2530是一款SoC芯片,集成了處理器、無線電和串口等外設(shè)。
    (2) 傳感器。包括溫濕度傳感器,振動傳感器及壓力傳感器等,用于對環(huán)境狀態(tài)信息的動態(tài)感知。
    網(wǎng)關(guān)模塊采用集成于ARM平臺的串行口,通過UART方式連接ZigBee協(xié)調(diào)器與控制臺,根據(jù)預(yù)定的幀進行通信。上行和下行的數(shù)據(jù)都通過網(wǎng)關(guān)在網(wǎng)絡(luò)上傳輸,由其負責(zé)數(shù)據(jù)包的解析和轉(zhuǎn)發(fā)。
1.3 系統(tǒng)通信協(xié)議及數(shù)據(jù)格式設(shè)計
    本系統(tǒng)在控制臺與ZigBee協(xié)調(diào)器之間,使用UART傳輸數(shù)據(jù);在ZigBee網(wǎng)絡(luò)節(jié)點之間都按照ZigBee協(xié)議實現(xiàn)通信??刂婆_、網(wǎng)關(guān)、ZigBee網(wǎng)絡(luò)之間按照約定的數(shù)據(jù)幀格式進行數(shù)據(jù)包傳遞,幀結(jié)構(gòu)由幀頭、數(shù)據(jù)負載、幀尾三部分組成,如圖2所示。

    (1) 1 B的幀頭0XFB和1 B的幀尾0XFE。
    (2) 1 B的幀長度和1 B的幀負載屬性。
    (3) 多個字節(jié)的業(yè)務(wù)負載數(shù)據(jù),ZigBee網(wǎng)絡(luò)中的數(shù)據(jù)業(yè)務(wù)主要有節(jié)點設(shè)備描述符、節(jié)點設(shè)備數(shù)據(jù)、狀態(tài)和控制業(yè)務(wù)。
    節(jié)點設(shè)備描述符用于描述當(dāng)前ZigBee節(jié)點的短地址、長地址,以及節(jié)點所掛載的傳感器類型和數(shù)目;節(jié)點設(shè)備數(shù)據(jù)為傳感器實時采集的環(huán)境數(shù)據(jù);狀態(tài)和控制業(yè)務(wù)為用戶發(fā)出指令。
2 無線傳感器網(wǎng)絡(luò)程序設(shè)計
    無線傳感器網(wǎng)絡(luò)基于ZStack-CC2530-2.2.0-1.3.0開發(fā),實現(xiàn)了ZigBee網(wǎng)絡(luò)的構(gòu)建,內(nèi)部使用小型操作系統(tǒng)OSAL[3],實現(xiàn)任務(wù)和消息的管理。數(shù)據(jù)采集和傳輸由自定義傳感器數(shù)據(jù)采集任務(wù)在應(yīng)用層登記串口消息后,交由OSAL管理完成。
2.1 傳感器數(shù)據(jù)采集與傳輸程序設(shè)計
    本文所述的網(wǎng)絡(luò)是由協(xié)調(diào)器、路由器和終端節(jié)點構(gòu)成的樹狀網(wǎng)絡(luò)。協(xié)調(diào)器節(jié)點建立網(wǎng)絡(luò),其他節(jié)點則主動尋找連接協(xié)調(diào)器的最小代價路由[3]。所有節(jié)點上電之初將發(fā)送節(jié)點的設(shè)備描述符,并周期上傳節(jié)點在線狀態(tài)信息。終端節(jié)點采集傳感器數(shù)據(jù)經(jīng)路由器轉(zhuǎn)發(fā)至協(xié)調(diào)器。
2.2 串口數(shù)據(jù)傳輸程序設(shè)計
    串口作為命令和數(shù)據(jù)傳輸接口,協(xié)議棧默認登記在MT層[4],本系統(tǒng)將串口消息登記到應(yīng)用層,并在應(yīng)用層完成處理。初始化串口并注冊好回調(diào)函數(shù)后,當(dāng)串口接收緩沖非空時,就會觸發(fā)系統(tǒng)消息事件?;卣{(diào)函數(shù)首先檢測串口命令的起始標(biāo)識,獲得起始標(biāo)識后,按照系統(tǒng)定義的串口命令格式讀取緩沖區(qū),同時填充到預(yù)先分配的結(jié)構(gòu)內(nèi)存區(qū)間。結(jié)束標(biāo)識用于校驗該串口命令是否發(fā)生誤操作、誤傳輸。若傳輸正確,則將串口命令按照定義的消息格式登記到應(yīng)用層處理。
3 控制臺軟件程序設(shè)計
    控制臺主要由網(wǎng)關(guān)通信功能塊、網(wǎng)絡(luò)拓撲控制與顯示功能塊,設(shè)備控制與顯示功能塊構(gòu)成,實現(xiàn)人機交互,實現(xiàn)對設(shè)備的控制和對數(shù)據(jù)的處理、顯示。
3.1 控制臺總體結(jié)構(gòu)介紹
    控制臺有4個功能界面,分別為網(wǎng)絡(luò)拓撲主界面、設(shè)備列表界面、全局控制界面及設(shè)備控制界面。各界面之間彼此聯(lián)系、共享數(shù)據(jù),總體框架如圖3所示。

3.2 控制臺功能設(shè)計
    控制臺實現(xiàn)兩方面的功能:(1)處理來自網(wǎng)關(guān)模塊的數(shù)據(jù),根據(jù)節(jié)點描述符完成ZigBee網(wǎng)絡(luò)拓撲結(jié)構(gòu)動態(tài)構(gòu)建和節(jié)點狀態(tài)信息動態(tài)直觀展示,并根據(jù)傳感器數(shù)據(jù)動態(tài)顯示相應(yīng)信息。(2)接收用戶指令,發(fā)送相應(yīng)的控制數(shù)據(jù)包給網(wǎng)關(guān)模塊,并轉(zhuǎn)發(fā)至ZigBee協(xié)調(diào)器,完成對設(shè)備的精確控制,如打開、關(guān)閉設(shè)備,控制采集頻率等。
    圖3中網(wǎng)絡(luò)拓撲主界面用于ZigBee網(wǎng)絡(luò)拓撲結(jié)構(gòu)動態(tài)構(gòu)建和節(jié)點狀態(tài)信息動態(tài)展示;設(shè)備列表界面展示每個ZigBee節(jié)點上傳感器硬件信息;全局控制界面針對特定ZigBee節(jié)點進行整體控制;設(shè)備控制界面區(qū)別于全局控制界面,用來控制ZigBee節(jié)點上指定標(biāo)簽的傳感器設(shè)備。
3.3 通信網(wǎng)關(guān)程序設(shè)計
    網(wǎng)絡(luò)通信接口作為網(wǎng)關(guān),負責(zé)ZigBee網(wǎng)絡(luò)協(xié)調(diào)器與控制臺軟件之間數(shù)據(jù)包的解包與封包,并按照數(shù)據(jù)幀結(jié)構(gòu)進行通信。通過串口連接實現(xiàn)數(shù)據(jù)接收和發(fā)送。
    通信網(wǎng)關(guān)結(jié)構(gòu)如圖4所示,網(wǎng)關(guān)不僅負責(zé)將上位機接收到的用戶下行命令封包,并遞送到ZigBee協(xié)調(diào)器,并轉(zhuǎn)發(fā)到相應(yīng)無線節(jié)點,而且還負責(zé)ZigBee網(wǎng)絡(luò)上行數(shù)據(jù)包的解包,并遞送到控制臺。

 

 

    由于ZigBee網(wǎng)絡(luò)數(shù)據(jù)包接收速率和控制臺處理速率之間不匹配,本系統(tǒng)采用循環(huán)隊列對數(shù)據(jù)進行緩沖,以匹配兩端數(shù)據(jù)速率的不平衡。讀、寫循環(huán)隊列函數(shù)采用多線程實現(xiàn),線程一實現(xiàn)讀取串口數(shù)據(jù)并寫入隊列;線程二實現(xiàn)讀取循環(huán)隊列數(shù)據(jù)交由控制臺處理。線程之間利用互斥鎖和條件對臨界區(qū)進行保護,以實現(xiàn)同步。通過信號來喚醒。程序主體部分由一個主進程負責(zé)維護兩個子線程,兩個子線程分別對循環(huán)隊列進行讀寫操作。環(huán)形緩沖區(qū)以互斥鎖實現(xiàn)單生產(chǎn),單消費模式,可有效節(jié)省空間,提高數(shù)據(jù)的處理速度。
    在無線傳輸過程中可能發(fā)生丟包或者亂碼。產(chǎn)生丟包則網(wǎng)關(guān)讀取的數(shù)據(jù)不是完整的一幀;而出現(xiàn)亂碼則雖然收到完整的一幀數(shù)據(jù),但是其中部分字節(jié)已經(jīng)出現(xiàn)錯誤。只有當(dāng)收到數(shù)據(jù)為完整的數(shù)據(jù)幀并且無亂碼時,才能調(diào)用解析函數(shù)進行解析。
    針對傳輸中的丟包和亂碼,網(wǎng)關(guān)模塊使用了兩種數(shù)據(jù)校驗方法:一種是幀頭、幀尾檢測法,用于驗證完幀的完整性;另一種為增加校驗碼法,用于檢驗數(shù)據(jù)包是否發(fā)生丟包。
    網(wǎng)關(guān)程序流程如圖5所示,圖中由主進程產(chǎn)生兩個子線程,主進程運行run_module,負責(zé)初始化,包括打開串口,設(shè)置循環(huán)隊列,產(chǎn)生子線程等。由主進程產(chǎn)生的兩個子線程分別為寫線程write_rs232和讀線程read_rs232。寫線程讀取串口的數(shù)據(jù),并將數(shù)據(jù)存儲到循環(huán)隊列中,讀線程從循環(huán)隊列讀取并解析數(shù)據(jù)。如果寫線程有數(shù)據(jù),將會使讀線程阻塞并等待寫線程完畢,讀線程讀取數(shù)據(jù)后也會發(fā)送信號到阻塞的寫線程,采用互斥鎖和條件變量的同步方式保護了共享數(shù)據(jù)區(qū)不被破壞,實現(xiàn)了數(shù)據(jù)同步。

3.4 網(wǎng)絡(luò)拓撲控制與顯示程序設(shè)計
    網(wǎng)絡(luò)拓撲控制與顯示功能部分對來自ZigBee網(wǎng)絡(luò)的數(shù)據(jù),裁決模塊將根據(jù)最近30 s收到的傳感器節(jié)點信息來判定某ZigBee節(jié)點是否掉線,掉線或復(fù)活都將重構(gòu)網(wǎng)絡(luò)拓撲圖,并更新全局存儲區(qū)。
    在網(wǎng)絡(luò)拓撲頁設(shè)置周期2 s的定時器QTimer,用于周期更新網(wǎng)絡(luò)拓撲結(jié)構(gòu)。時間到,則提取共享存儲區(qū)中的全局變量,檢測是否存在超出30 s還未向控制臺報告存活狀態(tài)信息的節(jié)點。若存在,則初始化這樣的ZigBee節(jié)點為灰色,并失活此節(jié)點,如果再次檢測到該節(jié)點上線,則恢復(fù)其缺省顏色并激活。采用另一個共享內(nèi)存區(qū)存儲網(wǎng)絡(luò)結(jié)構(gòu),提高網(wǎng)絡(luò)拓撲顯示速度,若網(wǎng)絡(luò)拓撲有變動,則更新此共享區(qū)。
    本平臺采用的設(shè)備描述符包含64 bit長地址,避免了因個別節(jié)點死掉后重新上線,而協(xié)調(diào)器將重新分配短地址避免導(dǎo)致網(wǎng)絡(luò)拓撲結(jié)構(gòu)中出現(xiàn)一個實際節(jié)點對應(yīng)多個顯示節(jié)點的錯誤。在構(gòu)建拓撲圖的過程中,線性掃描每個終端節(jié)點,遞歸建立網(wǎng)絡(luò)拓撲。
3.5 傳感器數(shù)據(jù)顯示與設(shè)備控制程序設(shè)計
    控制臺接收用戶指令,根據(jù)指令裁決器決定設(shè)備列表顯示或傳感器數(shù)據(jù)顯示。對設(shè)備控制結(jié)果由控制回饋模塊顯示,成功則表明指令已經(jīng)傳至網(wǎng)關(guān),但不能確定遠程ZigBee節(jié)點是否收到該指令。
    控制臺讀取用戶給定的指令,交由裁決器判斷用戶指令類型,若為傳感器數(shù)據(jù)顯示指令,則進入傳感器指令顯示界面,并提取傳感器數(shù)據(jù)全局變量,以1 s為周期動態(tài)顯示傳感器數(shù)據(jù);若為設(shè)備控制指令,則進入設(shè)備控制界面,根據(jù)用戶指定的設(shè)備地址和編號,發(fā)送控制命令至遠程節(jié)點。
4 平臺測試與數(shù)據(jù)指標(biāo)
    無線網(wǎng)絡(luò)由 1個協(xié)調(diào)器節(jié)點、1個路由器節(jié)點及7個終端節(jié)點構(gòu)成。終端節(jié)點都掛有溫/濕度傳感器,振動傳感器及壓力傳感器。節(jié)點距離在10 m~20 m之間,多個終端節(jié)點和協(xié)調(diào)器之間有墻體阻擋, 通過路由器接入網(wǎng)絡(luò)進行測試。
    測試1:每個ZigBee節(jié)點加入網(wǎng)絡(luò),網(wǎng)絡(luò)拓撲結(jié)構(gòu)都能正確顯示,且路由器斷電后,其子節(jié)點尋找最近的父節(jié)點并加入網(wǎng)絡(luò),重構(gòu)網(wǎng)絡(luò)拓撲。
    測試2:控制臺正確顯示遠程ZigBee節(jié)點上的傳感器設(shè)備。
    測試3:傳感器關(guān)閉、打開、周期采集等控制功能測試正常。
    測試4:分別測試各個ZigBee節(jié)點不同時間的傳感器數(shù)據(jù)值,結(jié)果顯示準確。
    測試5:在測試1的基礎(chǔ)上,測試網(wǎng)絡(luò)丟包和數(shù)據(jù)速率。實際測試得到ZigBee無線網(wǎng)絡(luò)穩(wěn)定數(shù)據(jù)速率為20.5 kb/s,發(fā)送速率越高,則丟包率越高。
    本文設(shè)計的基于CC2530的ZigBee無線傳感器網(wǎng)絡(luò)監(jiān)控平臺具有較強的網(wǎng)絡(luò)穩(wěn)定性,且丟包率和失誤率較小,網(wǎng)絡(luò)拓展能力較強,可搭建不同的網(wǎng)絡(luò)拓撲結(jié)構(gòu)以適應(yīng)復(fù)雜的實際環(huán)境;能實時感知環(huán)境狀態(tài)信息并交互處理,控制遠程傳感器設(shè)備。將此技術(shù)用于環(huán)境監(jiān)控是一種可行的技術(shù)方案,也是未來物聯(lián)網(wǎng)發(fā)展的一個方向。
參考文獻
[1] 李長庚,劉威鵬,胡純意,等.基于ARM和ZigBee的WSN節(jié)點設(shè)計與實現(xiàn)[J].計算機工程,2010,36(17):135-137.
[2] 尹慧琳,王磊,馮占軍. 無線傳感器網(wǎng)絡(luò)節(jié)點分布式信息融合算法研究[J].計算機工程與應(yīng)用,2007,43(17):18-20.
[3] 謝川.ZigBee中改進的Cluster-Tree路由算法[J].計算機工程,2011,37(7):115-117.
[4] 刑偉偉,白瑞林,孟偉.ZigBee無線網(wǎng)關(guān)在MODBUS通信中的應(yīng)用[J].計算機工程與應(yīng)用,2011,47(29):81-84.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。