新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于nRF905的糧庫(kù)無(wú)線溫濕度監(jiān)控系統(tǒng)

基于nRF905的糧庫(kù)無(wú)線溫濕度監(jiān)控系統(tǒng)

作者: 時(shí)間:2007-08-09 來源:網(wǎng)絡(luò) 收藏
引言

  是影響糧食倉(cāng)儲(chǔ)過程中品質(zhì)好壞的主要因素。目前我國(guó)許多糧食倉(cāng)儲(chǔ)單位仍采用測(cè)溫儀器與人工抄錄、管理相結(jié)合的傳統(tǒng)方法,這不僅效率低,而且往往由于判斷失誤和管理不力造成局部或大范圍糧食霉變的現(xiàn)象時(shí)有發(fā)生。

  本文介紹采用射頻模塊、多個(gè)DS18B20構(gòu)成的測(cè)溫網(wǎng)絡(luò)、濕度傳感器HS1101組成一種全數(shù)字,徹底擺脫了傳統(tǒng)的人工抄錄方法,能實(shí)時(shí)檢測(cè)糧倉(cāng)中的,并根據(jù)所測(cè)的數(shù)據(jù)控制空調(diào)器、除濕機(jī)等外部設(shè)備的運(yùn)行,確保糧倉(cāng)內(nèi)合適的溫濕度環(huán)境,該設(shè)計(jì)具有簡(jiǎn)單可靠和靈活方便的特點(diǎn)。

硬件設(shè)計(jì)

  系統(tǒng)硬件結(jié)構(gòu)由兩個(gè)部分組成:中央CMS和多個(gè)遠(yuǎn)程終端節(jié)點(diǎn)RTN(見圖1)。

系統(tǒng)硬件

  圖1 系統(tǒng)硬件

  中央主要包括監(jiān)控計(jì)算機(jī)和主接收器,監(jiān)控計(jì)算機(jī)與主接收器之間通過串口(RS232)來通信,控制遠(yuǎn)程終端節(jié)點(diǎn)單片機(jī)(P89LPC916)讀取溫濕度值、并且實(shí)時(shí)記錄讀取的通道編號(hào)、DS18B20編號(hào)、時(shí)間。可以作為原始資料的積累,用于將來的數(shù)據(jù)分析,人機(jī)界面和單片機(jī)的通信用Visual Basic編程。

  主接收器:通過射頻

模塊以點(diǎn)對(duì)點(diǎn)或廣播方式發(fā)送監(jiān)控計(jì)算機(jī)的各種控制命令,在命令發(fā)出以后,采用逐一掃描的方式探測(cè)各個(gè)數(shù)據(jù)終端有沒有發(fā)送通信請(qǐng)求;若有則執(zhí)行相應(yīng)的要求。

  遠(yuǎn)程終端主要由P89LPC916單片機(jī)、射頻模塊、DS18B20的測(cè)溫網(wǎng)絡(luò)、濕度傳感器HS1101、外部設(shè)備驅(qū)動(dòng)器及放大調(diào)整電路組成。通過P89LPC916單片機(jī)的3個(gè)通用IO連接多個(gè)DS18B20構(gòu)成“一線總線”通信,實(shí)現(xiàn)DS18B20的測(cè)溫網(wǎng)絡(luò)。濕度傳感器HS1101探測(cè)現(xiàn)場(chǎng)環(huán)境濕度,經(jīng)過A/D轉(zhuǎn)換后變?yōu)閿?shù)字信號(hào)?,F(xiàn)場(chǎng)檢測(cè)信號(hào)由P89LPC916單片機(jī)進(jìn)行處理,最后將數(shù)據(jù)通過nRF905收發(fā)器送出。當(dāng)P89LPC916單片機(jī)檢測(cè)到異常的儲(chǔ)糧溫濕度時(shí),啟動(dòng)風(fēng)機(jī)等外部設(shè)備,送信號(hào)到監(jiān)控計(jì)算機(jī)和報(bào)警電路,有聲光報(bào)警,提醒工作人員。

DS18B20

  美國(guó)Dallas公司的DS18B20數(shù)字式溫度傳感器,工作電壓3.0~5.5V,溫度測(cè)量范圍-55~125℃,在-10~85℃范圍內(nèi)測(cè)量精度為0.5℃。與傳統(tǒng)的熱敏電阻溫度傳感器不同,它能夠直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式,可以分別在93.75ms和750ms內(nèi)將溫度值轉(zhuǎn)化為9位和12位的數(shù)字量。該芯片在檢測(cè)點(diǎn)已把被測(cè)信號(hào)數(shù)字化了,因此在單總線上傳送的是數(shù)字信號(hào)。本系統(tǒng)設(shè)計(jì)中選擇了該傳感器,使得系統(tǒng)溫度傳感器模塊的硬件極其簡(jiǎn)單,只占用單片機(jī)系統(tǒng)的一個(gè)數(shù)據(jù)I/O口加一個(gè)上拉電阻即可。

  DS18B20因其序列號(hào)在出廠前已寫入片內(nèi)ROM中,主機(jī)在進(jìn)入操作程序前必須逐一接入DS18B20用讀ROM(33H)命令將該DS18B20的序列號(hào)讀出。當(dāng)主機(jī)需要對(duì)眾多在線DS18B20的某一個(gè)進(jìn)行操作時(shí),首先要發(fā)出匹配ROM命令(55H),接著主機(jī)提供64位序列碼,之后的操作就是針對(duì)該DS18B20的。在DS18B20組成的多路測(cè)溫系統(tǒng)中,主機(jī)在發(fā)出跳過ROM命令之后,再發(fā)出統(tǒng)一的溫度轉(zhuǎn)換啟動(dòng)碼44H,就可以實(shí)現(xiàn)所有DS18B20的統(tǒng)一轉(zhuǎn)換。再經(jīng)過1s后就可以用很少的時(shí)間去逐一地讀回每個(gè)DS18B20的溫度數(shù)據(jù)。

射頻芯片nRF905

  nRF905是挪威Nordic公司推出的單片射頻發(fā)射器芯片,工作電壓為1.9~3.6V,工作于433/868/915MHz3個(gè)ISM頻道。nRF905可以自動(dòng)完成處理字頭和CRT(循環(huán)冗余碼校驗(yàn))的工作,可由片內(nèi)硬件自動(dòng)完成曼徹斯特編碼/解碼,使用SPI接口與微控制器通信,配置非常方便,其功耗非常低,以-10dBm的輸出功率發(fā)射時(shí)電流只有11mA,在接收模式時(shí)電流為12.5mA。

  nRF905傳輸數(shù)據(jù)時(shí)為非實(shí)時(shí)方式,即發(fā)送端發(fā)出數(shù)據(jù),接收端收到后先暫存于芯片存儲(chǔ)器內(nèi),外面的MCU可以在需要時(shí)再到芯片中去取。nRF905一次的數(shù)據(jù)傳輸量最多為32B。

數(shù)據(jù)傳送的實(shí)現(xiàn)

  本設(shè)計(jì)中將單片機(jī)P89LPC916的SPI接口和nRF905的SPI接口相連,另外再選幾個(gè)I/O口連接nRF905的輸入輸出信號(hào),如圖2所示。

nRF905控制電路

  圖2 nRF905控制電路

  nRF905在正常工作前應(yīng)由P89LPC916先根據(jù)需要寫好配置寄存器,其后的工作主要是兩個(gè):發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。

  發(fā)送數(shù)據(jù)時(shí),P89LPC916先把nRF905置于待機(jī)模式(PWR_UP引腳為高、TRX_CE引腳為低),然后通過SPI總線把發(fā)送地址和待發(fā)送的數(shù)據(jù)都寫入相應(yīng)的寄存器中,之后把nRF905置于發(fā)送模式(PWR_UP、TRX_CE和TX_EN全置高),數(shù)據(jù)就會(huì)自動(dòng)通過天線發(fā)送出去。為了數(shù)據(jù)可靠地傳輸,將射頻配置寄存器中的自動(dòng)重發(fā)位(AUTO_RETRAN)設(shè)為有效,數(shù)據(jù)包重復(fù)不斷地一直向外發(fā),直到P89LPC916把TRX_CE拉低,退出發(fā)送模式為止。

接收數(shù)據(jù)時(shí),P89LPC916把nRF905的TRX_CE引腳置為高電平,TX_EN引腳拉為低電平后,就開始接收數(shù)據(jù)。本設(shè)計(jì)中P89LPC916設(shè)定的40s內(nèi)一直判斷nRF905的DR引腳是否變高,若為高,則證明接收到了有效數(shù)據(jù),可以退出接收模式,若一直沒有接收到,待時(shí)間到時(shí)也退出接收模式。退出后在待機(jī)模式,P89LPC916通過SPI總線把nRF905內(nèi)部的接收數(shù)據(jù)寄存器中的數(shù)據(jù)讀出,即接收到的有效數(shù)據(jù)。

軟件設(shè)計(jì)

  本系統(tǒng)設(shè)計(jì)的重點(diǎn)是控制nRF905的程序設(shè)計(jì),首先是對(duì)nRF905進(jìn)行初始配置,配置完成后按需要編寫用戶數(shù)據(jù)的發(fā)送或接收程序。

軟件系統(tǒng)的整體數(shù)據(jù)處理流程

  圖3 軟件系統(tǒng)的整體數(shù)據(jù)處理流程

初始化

初始化nRF905的射頻配置寄存器

  這些寄存器中有很多信息,必須根據(jù)實(shí)際情況進(jìn)行配置,本設(shè)計(jì)中nRF905外接16MHz晶體,XOF應(yīng)配置為0

11;PA_PWR為發(fā)射功率、RX_RED_PWR為接收靈敏度,可根據(jù)需要配置;另外還有發(fā)送地址、接收地址、發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的長(zhǎng)度(字節(jié)數(shù)),可根據(jù)實(shí)際應(yīng)用配置。注意這組寄存器中還有接收時(shí)的實(shí)際地址,而發(fā)送地址在其他單獨(dú)寄存器中。

配置nRF905的發(fā)送地址

  在實(shí)際工作中,nRF905可以自動(dòng)濾除地址不相同的數(shù)據(jù),只有地址匹配且校驗(yàn)正確的數(shù)據(jù)才會(huì)被接收,并存儲(chǔ)在接收數(shù)據(jù)寄存器中。本設(shè)計(jì)中配置最多4個(gè)字節(jié)(32位),發(fā)送端的發(fā)送地址應(yīng)與接收端設(shè)備的接收地址相同。

用戶程序

  根據(jù)系統(tǒng)的硬件設(shè)計(jì)方案,分為發(fā)送端和接收端兩個(gè)部分,軟件系統(tǒng)的整體數(shù)據(jù)處理流程如圖3所示。軟件系統(tǒng)分為5個(gè)模塊:溫濕度采集模塊、外部設(shè)備模塊、RF發(fā)送模塊、RF接收模塊、中央監(jiān)控系統(tǒng)報(bào)表統(tǒng)計(jì)分析模塊。

通信協(xié)議

  系統(tǒng)結(jié)構(gòu)為有多個(gè)發(fā)送端向1個(gè)接收端單向發(fā)送溫濕度數(shù)據(jù),同時(shí)要求接收端能夠根據(jù)接收的數(shù)據(jù)內(nèi)容判斷信號(hào)來自哪一個(gè)發(fā)送模塊;接收端根據(jù)溫濕度數(shù)據(jù)是否越界從而驅(qū)動(dòng)前端外部設(shè)備。為此,將系統(tǒng)通信協(xié)議設(shè)置為如下格式:

  Preamble為引導(dǎo)字節(jié),Add為接收機(jī)地址,Payload為有效加載數(shù)據(jù)(包括接收顯示單元識(shí)別碼Rid、源發(fā)送單元識(shí)別碼Sid及Data字――在接收時(shí)Data字高八位內(nèi)容即為溫度數(shù)據(jù),低八位內(nèi)容即為濕度數(shù)據(jù);發(fā)送控制命令即為外部設(shè)備控制字,長(zhǎng)度為2字節(jié)),CRC為校驗(yàn)碼。nRF905處于發(fā)射模式時(shí),Add和Payload由微控制器按順序送入射頻模塊nRF905,Preamble和CRC由nRF905自動(dòng)加載。接收時(shí),nRF905先接收一個(gè)數(shù)據(jù)包,分別驗(yàn)證Preamble、Add和CRC正確后,再將Payload數(shù)據(jù)送入微控制器處理;當(dāng)接收顯示單元微處理器判斷Payload中的Rid和本機(jī)識(shí)別碼一致時(shí),繼續(xù)處理后繼數(shù)據(jù),并通過Sid來判斷收到的數(shù)據(jù)來自哪一個(gè)監(jiān)測(cè)點(diǎn),保存至中央監(jiān)控系統(tǒng)數(shù)據(jù)庫(kù)供后期數(shù)據(jù)分析處理。

結(jié)語(yǔ)

  nRF905、濕度傳感器HS1101以及DS18B20智能溫度傳器設(shè)計(jì)的分布式多點(diǎn)測(cè)量系統(tǒng)能很好的滿足溫濕度監(jiān)測(cè)的要求。自2006年3月在中山市某應(yīng)急糧加工中心使用至今,系統(tǒng)穩(wěn)定可靠,簡(jiǎ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.毛哲、謝兆鴻等,糧情智能測(cè)控系統(tǒng)的研制,微計(jì)算機(jī)信息,2003.6:39-40



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉