基于ZigBee技術的糧庫環(huán)境監(jiān)測系統(tǒng)設計
引言
基于ZigBee技術的無線傳感器網絡具有低功耗、低復雜度、自組織、低成本、高安全等特性,是專為低速傳感器和控制網絡設計的無線網絡協(xié)議,非常適合于自動控制和遠程控制領域。將ZigBee技術應用于糧庫環(huán)境監(jiān)測,能夠在很大程度上提高糧庫監(jiān)測的范圍及準確性,解決了傳統(tǒng)糧庫布線困難、組網復雜、系統(tǒng)不易維護等缺點。
1系統(tǒng)功能與總體結構
1.1系統(tǒng)功能
糧庫環(huán)境監(jiān)測系統(tǒng)可以實現對糧庫溫濕度信息的采集、處理和傳輸,用戶可以通過上位機監(jiān)測糧庫的溫濕度信息和采集節(jié)點的工作電壓,同時可以通過上位機輸入相應的指令去控制采集節(jié)點的開啟、關閉及采集的時間間隔。當溫濕度超過所設定的報警值時,上位機監(jiān)測系統(tǒng)將會發(fā)出報警,提醒用戶采取相應安全措施對糧庫進行管理。
1.2系統(tǒng)總體結構
糧庫環(huán)境監(jiān)測系統(tǒng)主要由ZigBee無線傳感網絡、上位機監(jiān)測中心兩部分組成,ZigBee組網采用了網狀拓撲結構,建立了協(xié)調器、路由器和終端三類節(jié)點。上電后,采集節(jié)點自動組建ZigBee無線傳感網絡,將定時采集的糧庫環(huán)境數據以多跳形式匯聚到網絡協(xié)調器,最終通過USB接口將數據發(fā)送到上位機監(jiān)控中心。監(jiān)控中心實時顯示采集到的糧庫溫濕度信息和節(jié)點電壓信息,并具有報警提示功能。
2系統(tǒng)硬件設計
系統(tǒng)硬件部分主要包括傳感器模塊、CC2530無線傳輸模塊、電源模塊等。采用數字溫濕度傳感器DHT11設計一個傳感器模塊,用于采集溫濕度信息,傳感器外圍電路如圖1所示。無線傳輸模塊包含協(xié)調器、路由器、終端三類節(jié)點,用來對傳感器采集到的數據進行處理和傳輸,CC2530外圍電路如圖2所示。ZigBee模塊可選用兩種供電方式:USB總線供電,2節(jié)5號干電池供電,并由LED顯示供電狀態(tài),電源電路如圖3所示。
3系統(tǒng)軟件設計
系統(tǒng)軟件設計主要包括ZigBee組網系統(tǒng)軟件設計和上位機監(jiān)測界面軟件設計兩部分。
3.1ZigBee組網系統(tǒng)軟件設計
ZigBee組網系統(tǒng)軟件設計包括傳感器節(jié)點軟件設計和協(xié)調器節(jié)點軟件設計。傳感器節(jié)點主要完成對糧庫環(huán)境溫濕度參數的采集、處理和發(fā)送。當傳感器節(jié)點收到外部中斷時給DHT11發(fā)送查詢指令,等待DHT11數據轉換后進行數據發(fā)送,發(fā)送完畢后進入休眠狀態(tài),等待有請求時再次激活,傳感器節(jié)點工作流程如圖4(a)所示。協(xié)調器負責選擇工作信道、發(fā)送網絡信標、組建網絡、管理網絡節(jié)點與存儲網絡節(jié)點信息,且同監(jiān)控中心交互數據,協(xié)調器節(jié)點工作流程如圖4(b)所示。對ZigBee進行電源管理,使傳感器節(jié)點能夠在非工作狀態(tài)下進入休眠狀態(tài),需要做兩項準備工作。首先要在preprozessor里加入POWER_SAVINGo其次,將Tools->f8wConfig.cfg中-DPOLL_RATE、-DRESPONSE_POLL_RATE設置為0。然后找到文件hal_drivers.c中:
if(!Hal_KeyIntEnable)
{//osal_start_timerEx(Hal_TaskID,HAL_KEY_EVENT,100);}
把osal_start_timerEx()這句去掉。要不然key的polling會調用osal_start_timerex(),每100ms檢查key電壓的變化,導致無法長時間休眠。通過在Tools->f8wConfig.cfg中設置-DPOLL_RATE可以設置休眠時間,如需要休眠10s,則-DPOLL_RATE=10000。
3.2上位機監(jiān)測界面軟件設計
上位機監(jiān)測界面利用VC6.0開發(fā)工具進行設計,主要實現數據的接收、存儲、分析和對終端采集節(jié)點的控制。
一方面,可以在上位機界面上實時顯示傳感器節(jié)點采集到的溫濕度信息和電源電壓,另一方面,可以通過上位機界面輸入相應的指令控制傳感器節(jié)點開啟、關閉及采集的時間間隔,例如:發(fā)送796F80后關閉796F節(jié)點,發(fā)送796F40后開啟796F節(jié)點。當串口接收到的溫濕度超過所設置的報警限值時,單元格顏色變紅(超上限)或變藍(超下限),通過函數m_Grid.SetCellBackColor()設置單元格顏色,同時可以聽見“嘟嘟”的報警聲,用函數MessageBeep(0xFFFFFFFF)發(fā)出報警。當電池電壓過低時,可以通過上位機輸入相應指令去控制傳感器節(jié)點的關閉以更換電池。在項目中插入MSComm、FlexGrid、Button等控件,利用ClassWizard定義CMSComm類控制變量,添加串口事件消息處理函數OnComm(),打開和設置串口參數。OnComm。函數實現關鍵代碼如下:voidSCommTest::OnComm()
{……m_Grid.SetTextMatrix(l,2,strT);
sumt=bt[0]*100+bt[l]*10+bt[3];〃提取溫度if(m_checkt.GetCheck())//設置溫度報警{if(sumt>=250)
{::MessageBeep(0xFFFFFFFF);〃扌艮警m_Grid.SetFixedRows(1);m_Grid.SetFixedCols(2);
m_Grid.SetCellBackColor(255);}//顏色else{ }
}……}上位機軟件流程如圖5所示。
4系統(tǒng)測試
該系統(tǒng)通過布置1個協(xié)調器節(jié)點、2個路由器節(jié)點、5個傳感器節(jié)點和一臺PC機,在實驗室進行了模擬測試。測試結
果如圖6所示。
由測試結果可知,ZigBee網絡能夠完成外部溫濕度信息的釆集,在上位機監(jiān)控中心可以實時顯示釆集到的外部溫濕度信息和節(jié)點電源電壓。當釆集到的溫度超過報警上限值30笆時,單元格顏色變紅,同時發(fā)出“嘟嘟”的報警聲。在上位機監(jiān)測界面輸入指令FFFF80手動發(fā)送后關閉了所有節(jié)點,再次輸入指令FFFF40手動發(fā)送后開啟所有節(jié)點。系統(tǒng)數據傳
輸準確、可靠,數據丟包率幾乎為0。
5結語
本文所設計的糧庫監(jiān)測系統(tǒng)能夠實現多節(jié)點數據的實時采集、處理、傳輸和顯示,同時具有閾值比較、智能報警等功能,管理人員可以通過上位機發(fā)送相應的指令對傳感器節(jié)點進行控制。通過引入休眠機制實現了傳感器節(jié)點的休眠/喚醒調度,使其低功耗運行,減少了節(jié)點能耗。該系統(tǒng)有效地解決了傳統(tǒng)糧庫監(jiān)測系統(tǒng)布線困難、組網復雜、系統(tǒng)不易維護等缺點,具有很好的應用價值。