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