CC2531的無線傳感器網(wǎng)絡(luò)節(jié)點軟件設(shè)計
掃描二維碼
隨時隨地手機看文章
摘要:提出一種基于射頻芯片CC2531的無線傳感器網(wǎng)絡(luò)節(jié)點的軟件設(shè)計方案,基于任務(wù)調(diào)度機制,采用功能模塊化設(shè)計。簡要介紹了無線傳感器網(wǎng)絡(luò)的系統(tǒng)結(jié)構(gòu)和節(jié)點的硬件電路,重點對系統(tǒng)軟件主流程以及數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)傳輸和能源管理4個功能模塊的軟件設(shè)計作了詳細(xì)介紹。
關(guān)鍵詞:無線傳感器網(wǎng)絡(luò);ZigBee;CC2531;軟件設(shè)計
引言
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)是由一組傳感器網(wǎng)絡(luò)節(jié)點組成。它們通過多跳自組織的方式構(gòu)成無線通信網(wǎng)絡(luò)系統(tǒng),傳感器節(jié)點實時采集分布區(qū)域內(nèi)監(jiān)測對象的各種信息,以無線通信方式發(fā)送至上位機。節(jié)點硬件提供了實現(xiàn)相關(guān)功能的平臺,而真正實現(xiàn)這些功能的應(yīng)用需要借助軟件來完成。因此,軟件設(shè)計對整個節(jié)點的功能控制和資源的分配利用有較大的影響。
1 無線傳感器網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)
整個傳感器網(wǎng)絡(luò)是由若干個采集節(jié)點、1個匯聚節(jié)點、1個數(shù)據(jù)中轉(zhuǎn)器以及1個便于用戶查看和控制的上位機組成。系統(tǒng)的結(jié)構(gòu)如圖1所示。采集節(jié)點用于對環(huán)境數(shù)據(jù)的采集和數(shù)據(jù)的預(yù)處理,擔(dān)當(dāng)數(shù)據(jù)的路由;匯聚節(jié)點負(fù)責(zé)整個網(wǎng)絡(luò)的開啟和維護,向采集節(jié)點發(fā)送命令,搜
集節(jié)點的數(shù)據(jù),以及完成與數(shù)據(jù)中轉(zhuǎn)器之間的串口通信;數(shù)據(jù)中轉(zhuǎn)器承擔(dān)數(shù)據(jù)的中轉(zhuǎn),負(fù)責(zé)轉(zhuǎn)發(fā)上位機的命令;上位機是數(shù)據(jù)搜集的終端設(shè)備,并且可以根據(jù)用戶的需要對節(jié)點的采集時間間隔、休眠時間間隔、傳感器的開關(guān)進行相應(yīng)設(shè)置。
2 節(jié)點硬件設(shè)計
為方便數(shù)據(jù)的搜集,匯聚節(jié)點和采集節(jié)點硬件電路設(shè)計相同,只是軟件設(shè)計有所不同。任意節(jié)點都可作為匯聚節(jié)點與數(shù)據(jù)中轉(zhuǎn)器通過串口進行通信,來搜集網(wǎng)絡(luò)中其他節(jié)點的數(shù)據(jù)。節(jié)點的硬件結(jié)構(gòu)如圖2所示。
核心芯片選用TI公司推出的ZigBee芯片CC2531。它以8051微處理器為內(nèi)核,自身攜帶的射頻收發(fā)器用來實現(xiàn)無線傳感器網(wǎng)絡(luò)節(jié)點的通信。選用5 路I/O口來控制傳感器的打開和關(guān)閉。傳感器組將相應(yīng)的環(huán)境數(shù)據(jù)變成電壓、電流等信號送給信號調(diào)理電路,經(jīng)相關(guān)調(diào)理后送到CC2531的A/D轉(zhuǎn)換器接口進行A/D采樣,最后將得到的采樣數(shù)據(jù)存入一個外接的256 Kb的存儲器中。當(dāng)節(jié)點作為網(wǎng)絡(luò)中的匯聚節(jié)點時,CC25 31的兩路I/0口被設(shè)置成UARTO串口Tx和Rx,用于與數(shù)據(jù)中轉(zhuǎn)器進行串口通信。為保證節(jié)點長期穩(wěn)定地工作,選用3 Ah的鉛酸充電電池,兩組鉛酸電池采用雙電源供電模式。軟件通過控制兩組鉛酸電池的切換實現(xiàn)對節(jié)點的輪流供電,并在電池電壓不足時控制太陽能電池板對其進行充電,保持“一充一供”的狀態(tài)。
3 節(jié)點軟件設(shè)計
3.1 ZigBee技術(shù)簡介
ZigBee技術(shù)是一種近距離、低復(fù)雜度、低功耗、低傳輸速率、低成本的雙向無線通信技術(shù),主要適合于自動控制和遠(yuǎn)程控制等領(lǐng)域,可以嵌入到各種設(shè)備中,相對于其他的無線通信標(biāo)準(zhǔn)更簡單緊湊。此外,ZigBee具有省電、可靠、延時短、網(wǎng)絡(luò)容量大、安全等優(yōu)點。
3.2 節(jié)點軟件主流程
本軟件設(shè)計基于TI公司的Z-Stack 2007協(xié)議棧。Z-Stack 2007是TI公司專門為CC2531芯片設(shè)計的ZigBee協(xié)議棧。它是由一個簡單的單線程操作系統(tǒng)管理,該系統(tǒng)基于任務(wù)調(diào)度的機制。各個任務(wù)的事件處理函數(shù)按照任務(wù)的優(yōu)先級被放入函數(shù)指針數(shù)組tasksArr[idx]中,事件以16位的變量形式存放在數(shù)組tasksEvents[idx]中,因此每個任務(wù)最多可定義16個事件。
操作系統(tǒng)運行流程如圖3所示。主函數(shù)在完成節(jié)點相關(guān)的初始化之后會進入操作系統(tǒng),操作系統(tǒng)是一個無限循環(huán),一直在檢測各個任務(wù)中的事件 tasksEvents[idx],當(dāng)它不為零時就會調(diào)用相應(yīng)的事件處理函數(shù)tasksArr[idx]。處理完一個事件會將代表此事件的位清零,同時返回未處理的事件,直到這個任務(wù)中所有的事件處理完畢(即所有的事件位都被清零),操作系統(tǒng)就會跳向下一個任務(wù)進行事件處理。
3.3 節(jié)點軟件模塊化設(shè)計
節(jié)點軟件采用的是功能模塊化設(shè)計,不同功能用不用模塊表示,不同模塊間用接口連接,通過接口來調(diào)用其他模塊的功能。如圖4所示,傳感器節(jié)點主要由數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、數(shù)據(jù)傳輸模塊和電源管理模塊組成。
3.3.1 數(shù)據(jù)采集模塊
數(shù)據(jù)采集模塊主要實現(xiàn)對監(jiān)測區(qū)域內(nèi)各種信息的采集和數(shù)據(jù)的轉(zhuǎn)換。
實驗證明,節(jié)點在進行數(shù)據(jù)和命令收發(fā)的通信過程中功耗很大。為了降低功耗,在軟件設(shè)計上節(jié)點在聯(lián)網(wǎng)狀態(tài)下只執(zhí)行通信任務(wù),在休眠過程中只執(zhí)行采集任務(wù)。數(shù)據(jù)采集模塊工作流程如圖5所示。節(jié)點接收到休眠設(shè)置命令,對命令進行解析并從命令中提取傳感器標(biāo)志位,在整個網(wǎng)絡(luò)進入休眠后,根據(jù)傳感器標(biāo)志位來打開需要的傳感器。被打開的傳感器對監(jiān)測區(qū)域內(nèi)的各種信息進行采集,然后將采集到的數(shù)據(jù)送到信號調(diào)理電路轉(zhuǎn)換成電壓、電流等信號。經(jīng)過調(diào)理后的信號直接傳人 CC2531已配置好的A/D轉(zhuǎn)換器接口進行A/D采樣。A/D轉(zhuǎn)換器可通過軟件編程改變采樣精度,其精度為7~12位。
3.3.2 數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊是無線傳感器節(jié)點的核心,負(fù)責(zé)控制整個傳感器節(jié)點的操作,存儲和處理本身采集的數(shù)據(jù)以及其他節(jié)點發(fā)來的數(shù)據(jù)。為便于管理和調(diào)度,節(jié)點所要進行的操作都是被定義為事件進行處理的,每個事件完成相應(yīng)操作。將事件按一定關(guān)系串接就能實現(xiàn)節(jié)點工作時要完成的系統(tǒng)功能。
數(shù)據(jù)處理模塊工作流程如圖6所示。數(shù)據(jù)處理模塊對接收到的命令進行解析后,會對所有要執(zhí)行的操作進行判斷。對于本節(jié)點要完成的操作,就會觸發(fā)相應(yīng)的事件,實現(xiàn)相應(yīng)的功能;對于其他未完成的操作命令,會通過數(shù)據(jù)傳輸模塊轉(zhuǎn)發(fā)給其他節(jié)點。在處理完本條命令之后,會繼續(xù)等待或接收下一條命令。
3.3.3 數(shù)據(jù)傳輸模塊
數(shù)據(jù)傳輸模塊負(fù)責(zé)與其他傳感器節(jié)點進行無線通信,傳輸控制消息和收發(fā)采集數(shù)據(jù),通過軟件來控制無線通信模塊的工作模式。若為數(shù)據(jù)發(fā)送模式,先按照通信協(xié)議中規(guī)定的數(shù)據(jù)格式對數(shù)據(jù)進行打包,然后再將數(shù)據(jù)包發(fā)送出去;若為數(shù)據(jù)接收模式,則按照數(shù)據(jù)格式對接收到的數(shù)據(jù)包進行解析,再進行下一步處理。數(shù)據(jù)傳輸模塊工作流程如圖7所示。
3.3.4 電源管理模塊
電源管理模塊主要功能是為傳感器節(jié)點提供運行所需的能量,并進行電量檢測。無線傳感器網(wǎng)絡(luò)需要在無人值守情況下長時間地工作在惡劣環(huán)境條件下,因此更換電池是一件很麻煩的事情。為保證鉛酸電池能夠為節(jié)點長期供電,節(jié)點硬件電路設(shè)計了一個充電控制電路對其進行充電管理。
CC2531專門提供一個I/O口對供電電壓進行A/D采樣,當(dāng)供電的電源電壓不足(即低于設(shè)定的某一個值)時,通過軟件控制進行切換,先讓另一組電源對節(jié)點進行供電,再打開太陽能充電電路對本組電源充電。節(jié)點在通信和采集數(shù)據(jù)時功耗很大,因此在每一次的通信和采集數(shù)
據(jù)完成之后都會檢測當(dāng)前供電電壓值和當(dāng)前的充電電壓值,根據(jù)兩個電壓值決定是否進行電源切換、對電源進行充電,以及充電是否完成。
結(jié)語
基于CC2531的無線傳感器網(wǎng)絡(luò)系統(tǒng)的軟件設(shè)計比較復(fù)雜,本文僅就傳感器節(jié)點的各功能模塊的軟件設(shè)計作了介紹。實驗結(jié)果表明:節(jié)點工作狀態(tài)穩(wěn)定,故障率低,可以按照用戶設(shè)置準(zhǔn)確地對環(huán)境信息進行采集。整個系統(tǒng)具備數(shù)據(jù)可靠、功耗低、可遠(yuǎn)程控制等顯著優(yōu)點,具有良好的應(yīng)用前景。