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