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