基于射頻模塊nRF905的糧庫無線溫濕度監(jiān)控系統(tǒng)
引言
溫濕度是影響糧食倉儲過程中品質(zhì)好壞的主要因素。目前我國許多糧食倉儲單位仍采用測溫儀器與人工抄錄、管理相結(jié)合的傳統(tǒng)方法,這不僅效率低,而且往往由于判斷失誤和管理不力造成局部或大范圍糧食霉變的現(xiàn)象時有發(fā)生。
本文介紹采用nRF905射頻模塊、多個DS18B20構(gòu)成的測溫網(wǎng)絡(luò)、濕度傳感器HS1101組成一種糧庫無線全數(shù)字溫濕度監(jiān)控系統(tǒng),徹底擺脫了傳統(tǒng)的人工抄錄方法,能實時檢測糧倉中的溫濕度,并根據(jù)所測的數(shù)據(jù)控制空調(diào)器、除濕機(jī)等外部設(shè)備的運(yùn)行,確保糧倉內(nèi)合適的溫濕度環(huán)境,該設(shè)計具有簡單可靠和靈活方便的特點(diǎn)。
硬件設(shè)計
系統(tǒng)硬件結(jié)構(gòu)由兩個部分組成:中央監(jiān)控系統(tǒng)CMS和多個遠(yuǎn)程終端節(jié)點(diǎn)RTN(見圖1)。
圖1 系統(tǒng)硬件
中央監(jiān)控系統(tǒng)主要包括監(jiān)控計算機(jī)和主接收器,監(jiān)控計算機(jī)與主接收器之間通過串口(RS232)來通信,控制遠(yuǎn)程終端節(jié)點(diǎn)單片機(jī)(P89LPC916)讀取溫濕度值、并且實時記錄讀取的通道編號、DS18B20編號、時間??梢宰鳛樵假Y料的積累,用于將來的數(shù)據(jù)分析,人機(jī)界面和單片機(jī)的通信用Visual Basic編程。
主接收器:通過無線射頻
|
遠(yuǎn)程終端主要由P89LPC916單片機(jī)、射頻模塊nRF905、DS18B20的測溫網(wǎng)絡(luò)、濕度傳感器HS1101、外部設(shè)備驅(qū)動器及放大調(diào)整電路組成。通過P89LPC916單片機(jī)的3個通用IO連接多個DS18B20構(gòu)成“一線總線”通信,實現(xiàn)DS18B20的測溫網(wǎng)絡(luò)。濕度傳感器HS1101探測現(xiàn)場環(huán)境濕度,經(jīng)過A/D轉(zhuǎn)換后變?yōu)閿?shù)字信號?,F(xiàn)場檢測信號由P89LPC916單片機(jī)進(jìn)行處理,最后將數(shù)據(jù)通過nRF905收發(fā)器送出。當(dāng)P89LPC916單片機(jī)檢測到異常的儲糧溫濕度時,啟動風(fēng)機(jī)等外部設(shè)備,送信號到監(jiān)控計算機(jī)和報警電路,有聲光報警,提醒工作人員。
DS18B20
美國Dallas公司的DS18B20數(shù)字式溫度傳感器,工作電壓3.0~5.5V,溫度測量范圍-55~125℃,在-10~85℃范圍內(nèi)測量精度為±0.5℃。與傳統(tǒng)的熱敏電阻溫度傳感器不同,它能夠直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式,可以分別在93.75ms和750ms內(nèi)將溫度值轉(zhuǎn)化為9位和12位的數(shù)字量。該芯片在檢測點(diǎn)已把被測信號數(shù)字化了,因此在單總線上傳送的是數(shù)字信號。本系統(tǒng)設(shè)計中選擇了該傳感器,使得系統(tǒng)溫度傳感器模塊的硬件極其簡單,只占用單片機(jī)系統(tǒng)的一個數(shù)據(jù)I/O口加一個上拉電阻即可。
DS18B20因其序列號在出廠前已寫入片內(nèi)ROM中,主機(jī)在進(jìn)入操作程序前必須逐一接入DS18B20用讀ROM(33H)命令將該DS18B20的序列號讀出。當(dāng)主機(jī)需要對眾多在線DS18B20的某一個進(jìn)行操作時,首先要發(fā)出匹配ROM命令(55H),接著主機(jī)提供64位序列碼,之后的操作就是針對該DS18B20的。在DS18B20組成的多路測溫系統(tǒng)中,主機(jī)在發(fā)出跳過ROM命令之后,再發(fā)出統(tǒng)一的溫度轉(zhuǎn)換啟動碼44H,就可以實現(xiàn)所有DS18B20的統(tǒng)一轉(zhuǎn)換。再經(jīng)過1s后就可以用很少的時間去逐一地讀回每個DS18B20的溫度數(shù)據(jù)。
射頻芯片nRF905
nRF905是挪威Nordic公司推出的單片射頻發(fā)射器芯片,工作電壓為1.9~3.6V,工作于433/868/915MHz3個ISM頻道。nRF905可以自動完成處理字頭和CRT(循環(huán)冗余碼校驗)的工作,可由片內(nèi)硬件自動完成曼徹斯特編碼/解碼,使用SPI接口與微控制器通信,配置非常方便,其功耗非常低,以-10dBm的輸出功率發(fā)射時電流只有11mA,在接收模式時電流為12.5mA。
nRF905傳輸數(shù)據(jù)時為非實時方式,即發(fā)送端發(fā)出數(shù)據(jù),接收端收到后先暫存于芯片存儲器內(nèi),外面的MCU可以在需要時再到芯片中去取。nRF905一次的數(shù)據(jù)傳輸量最多為32B。
無線數(shù)據(jù)傳送的實現(xiàn)
本設(shè)計中將單片機(jī)P89LPC916的SPI接口和nRF905的SPI接口相連,另外再選幾個I/O口連接nRF905的輸入輸出信號,如圖2所示。
圖2 nRF905控制電路
nRF905在正常工作前應(yīng)由P89LPC916先根據(jù)需要寫好配置寄存器,其后的工作主要是兩個:發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。
發(fā)送數(shù)據(jù)時,P89LPC916先把nRF905置于待機(jī)模式(PWR_UP引腳為高、TRX_CE引腳為低),然后通過SPI總線把發(fā)送地址和待發(fā)送的數(shù)據(jù)都寫入相應(yīng)的寄存器中,之后把nRF905置于發(fā)送模式(PWR_UP、TRX_CE和TX_EN全置高),數(shù)據(jù)就會自動通過天線發(fā)送出去。為了數(shù)據(jù)可靠地傳輸,將射頻配置寄存器中的自動重發(fā)位(AUTO_RETRAN)設(shè)為有效,數(shù)據(jù)包重復(fù)不斷地一直向外發(fā),直到P89LPC916把TRX_CE拉低,退出發(fā)送模式為止。
接收數(shù)據(jù)時,P89LPC916把nRF905的TRX_CE引腳置為高電平,TX_EN引腳拉為低電平后,就開始接收數(shù)據(jù)。本設(shè)計中P89LPC916設(shè)定的40s內(nèi)一直判斷nRF905的DR引腳是否變高,若為高,則證明接收到了有效數(shù)據(jù),可以退出接收模式,若一直沒有接收到,待時間到時也退出接收模式。退出后在待機(jī)模式,P89LPC916通過SPI總線把nRF905內(nèi)部的接收數(shù)據(jù)寄存器中的數(shù)據(jù)讀出,即接收到的有效數(shù)據(jù)。
軟件設(shè)計
本系統(tǒng)設(shè)計的重點(diǎn)是控制nRF905的程序設(shè)計,首先是對nRF905進(jìn)行初始配置,配置完成后按需要編寫用戶數(shù)據(jù)的發(fā)送或接收程序。
圖3 軟件系統(tǒng)的整體數(shù)據(jù)處理流程
初始化
·初始化nRF905的射頻配置寄存器
這些寄存器中有很多信息,必須根據(jù)實際情況進(jìn)行配置,本設(shè)計中nRF905外接16MHz晶體,XOF應(yīng)配置為0
|
·配置nRF905的發(fā)送地址
在實際工作中,nRF905可以自動濾除地址不相同的數(shù)據(jù),只有地址匹配且校驗正確的數(shù)據(jù)才會被接收,并存儲在接收數(shù)據(jù)寄存器中。本設(shè)計中配置最多4個字節(jié)(32位),發(fā)送端的發(fā)送地址應(yīng)與接收端設(shè)備的接收地址相同。
用戶程序
根據(jù)系統(tǒng)的硬件設(shè)計方案,分為發(fā)送端和接收端兩個部分,軟件系統(tǒng)的整體數(shù)據(jù)處理流程如圖3所示。軟件系統(tǒng)分為5個模塊:溫濕度采集模塊、外部設(shè)備模塊、RF發(fā)送模塊、RF接收模塊、中央監(jiān)控系統(tǒng)報表統(tǒng)計分析模塊。
通信協(xié)議
系統(tǒng)結(jié)構(gòu)為有多個發(fā)送端向1個接收端單向發(fā)送溫濕度數(shù)據(jù),同時要求接收端能夠根據(jù)接收的數(shù)據(jù)內(nèi)容判斷信號來自哪一個發(fā)送模塊;接收端根據(jù)溫濕度數(shù)據(jù)是否越界從而驅(qū)動前端外部設(shè)備。為此,將系統(tǒng)通信協(xié)議設(shè)置為如下格式:
Preamble為引導(dǎo)字節(jié),Add為接收機(jī)地址,Payload為有效加載數(shù)據(jù)(包括接收顯示單元識別碼Rid、源發(fā)送單元識別碼Sid及Data字——在接收時Data字高八位內(nèi)容即為溫度數(shù)據(jù),低八位內(nèi)容即為濕度數(shù)據(jù);發(fā)送控制命令即為外部設(shè)備控制字,長度為2字節(jié)),CRC為校驗碼。nRF905處于發(fā)射模式時,Add和Payload由微控制器按順序送入射頻模塊nRF905,Preamble和CRC由nRF905自動加載。接收時,nRF905先接收一個數(shù)據(jù)包,分別驗證Preamble、Add和CRC正確后,再將Payload數(shù)據(jù)送入微控制器處理;當(dāng)接收顯示單元微處理器判斷Payload中的Rid和本機(jī)識別碼一致時,繼續(xù)處理后繼數(shù)據(jù),并通過Sid來判斷收到的數(shù)據(jù)來自哪一個監(jiān)測點(diǎn),保存至中央監(jiān)控系統(tǒng)數(shù)據(jù)庫供后期數(shù)據(jù)分析處理。
結(jié)語
基于nRF905、濕度傳感器HS1101以及DS18B20智能溫度傳器設(shè)計的分布式多點(diǎn)測量系統(tǒng)能很好的滿足糧庫溫濕度監(jiān)測的要求。自2006年3月在中山市某應(yīng)急糧加工中心使用至今,系統(tǒng)穩(wěn)定可靠,簡單易用。
參考文獻(xiàn):
1.Dallas Semiconductor. DS18B20 Datasheet.http://www.maxim-ic.com.cn,2005-06-14
2.Nordic VLSI ASA Inc.nRF905 Datasheet. rev1-2.http://www.nvlsi.com,2005-01-22
3.毛哲、謝兆鴻等,糧情智能測控系統(tǒng)的研制,微計算機(jī)信息,2003.6:39-40