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