任英杰,黃建清,李亞軍,王立輝
(海南大學熱帶農林學院,海南儋州571737)
溫度對人們的生產生活中起著生死攸關的作用,溫度可以得到準確的測量對人類社會的發展也有相當大的意義。溫度-顧名思義就是用來表征物體冷熱程度的一種無量綱的物理量,從原子角度來說是表現分子因受熱而運動的劇烈程度。以往的溫度測量方法一般是采用溫度計直接或間接和被測物體相接觸,因而讀出溫度計上所顯示出的信息來快速測得物體表面的溫度是多少。例如可以用來測量水溫、體溫以及氣溫等等。近幾年以來,隨著科技技術水平的日益增強,溫度的測量技術早已達到數字化、智能化的水平。一種最為常用的測溫的方法就是用一些感溫材料(如電阻應變片等)做成的溫度傳感器來測量被測量的溫度,這種測量溫度的方法在人們的生產生活中一直被廣泛地應用著,因為它不僅測量準確方便,而且使用靈活多樣。
但是,目前絕大多數的測溫傳感器還是僅能實現簡單的溫度測量,并不可以將所測量到的溫度值通過無線通信傳遞給第三(接收)方,針對此現象,此次設計特地提出了一種基于nRF905的無線溫度測試測與通信系統,此系統的突出優點就是能夠準確實現溫度的異地、同步、實時檢測和傳輸,而且測量精度非常高,可以精確到小數點后一位。本次設計的無線溫度檢測和傳輸系統將會在生產生活中有著非常廣泛的應用,尤其是在某些農業生產的領域,例如水池溫度實時檢測與控制、溫室蔬菜大棚溫度實時檢測與控制和土壤溫度、濕度檢測與控制等重要的農業生產領域。此設計基于該測溫控制系統,以實時高精度檢測水池溫度為例,在實例剖析的原理和基礎上對此測量、控制系統作進一步的說明和解釋。
本設計所提出的一種基于nRF905的無線溫度檢測與控制系統快速、有效地填充了傳統方法的空白,而且還具有測量更加準確、操作步驟簡便易懂、造價低廉等一系列優點,非常適合投入到池塘水池測溫等場合,且適宜批量化生產,來彌補傳統測量溫度方法的不足和缺陷[2]。
此次設計的系統硬件主要包括傳感器DS18B20模塊、處理器STC89C52模塊、電源轉換模塊、無線通信nRF905模塊、顯示LCD1602模塊、報警模塊以及人機交互模塊,其中的傳感器模塊是只分配給從機,人機交互模塊、報警模塊是只分配給主機。
硬件基本框圖如圖1所示。

圖1 硬件基本框圖
本次硬件系統所采用的中央處理器是STC公司生產的具有高性能、低功耗、抗干擾強等一系列特點的STC89C52單片機,此單片機具有可同時運用C/C++語言和匯編語言在線可調試編程的功能,處理指令的速度相對于傳統的80C51單片機而言提高了8~10倍[3]。其作為此系統的中心處理器,STC89C52單片機主要功能是用來實現將獲得的數據快速準確處理、配置兼容無線模塊的工作模式、啟動傳感器模塊和顯示模塊等功能。
此設計的無線通信模塊選用了NORDIC公司生產的無線可控制芯片nRF905,此芯片具有體積小、性能強、功耗極低、正常工作功率可調等一系列突出優點。通過控制STC89C52單片機對nRF905芯片引腳的PWR_UP、TX_EN和TRX_CE位置位或者復位來選擇不同的無線通信模式,nRF905無線通信芯片的正常工作模式一共可以分為四種。nRF905芯片與微控制器(STC89C52單片機)的數據傳遞可以通過其SPI接口來高效、快速的進行,而且傳輸的速率可由處理器進行實時設定[4]。
如圖圖2所示,AM、DR和CD是nRF905芯片狀態接口。芯片的模式接口用于實現nRF905的發射和接收等4種工作模式的配置。nRF905與STC89C52的接線圖如圖2所示。

圖2 nRF905與STC89C52的接線圖
1)LCD1602顯示器
本系統選用的顯示器是LCD1602屏幕,用來顯示測量到的溫度數據。LCD1602模塊可以實現多種字符的顯示功能,并且可以同時準確方便顯示16(個)x2(行)即32個有效字符,其具有功耗極低、體積小巧、易控制等獨有的特點。在此系統中,主機和從機分別安裝了一個LCD1602顯示器,當且僅當兩個顯示器所顯示的溫度值相同的時候,才可以說明此次數據無線傳輸的過程是準確無誤的。
1)蜂鳴器報警
此次設計中,僅有主機配置了一個蜂鳴器,其作用是當出現異常的溫度值時,即當溫度超過用戶設定的上限值或低于用戶設定下限值時,通訊主機的STC89C52單片機(P3.7口)控制蜂鳴器從而產生陣陣的蜂鳴聲作為報警的信號狀態。在檢測池塘中水的溫度時,報警信號可以及時提醒池塘所有者(用戶)水池內部的溫度出現異常,可以快速的采取一系列的對應措施來應對。
2)人機交互模塊
人機交互模塊主要是針對通訊主機而言的,人機交互模塊的功能是可以通過3個獨立的按鍵,根據用戶的不同需求設定溫度的上限值和下限值。溫度的上下限值作為主機(STC89C52單片機)判斷當前的溫度是否位異常的根據,此措施對于監察池塘水池的溫度有突破性的進展,此外本系統還會針對不同處境和水質的池塘水池,可以靈活的來設定不同的溫度上下限值,因此本系統可以運用在各種各樣的池塘中來檢測溫度,說明此系統具有通用性。
由于池塘的分布比較分散隨意、布線供電也是相當的麻煩、成本較高而且及其危險。綜合考慮后,此系統的供電方式采用可充電電池進行不間斷供電。通過利用兩節18650電池作為總的電源,利用ASM1117-3.3和LT1129-5分別把輸出電壓轉換成位。3 V和5 V電壓,5 V用于給主機和從機的STC89C52單片機、顯示器(LCD1602)模塊和溫度傳感器(DS18B20)模塊供電,3.3 V用于給無線傳輸(nRF905)模塊供電。
主機和從機的系統電源框圖如圖3所示。

圖3 從機系統電源框圖
此系統的軟件部分主要時用來完成對數據的采集、處理以及顯示等基本功能,此外,該部分還負責設置對應的外設端口,如溫度傳感器(DS18B20)模塊、顯示器(LCD1602)模塊和無線通訊(nRF905)模塊等等。
系統的在線可調試編程是以keil uVision 4軟件為主要編譯下載平臺,運用更加面向硬件操作的C語言編程指令。
采集溫度的主要流程如圖4所示。

圖4 溫度采集流程
啟動溫度轉換的運行主要是STC89C52單片機先給DS18B20芯片發送啟動指令,讀取溫度是單片機從溫度寄存器中讀出并簡單處理所讀數據。
主要代碼指令如下:


發送數據流程如圖5所示。

圖5 發送數據流程
當nRF905發送數據時,從機STC89C52單片機首先把TRX_CE置為低電平,即復位、PWR_UP置為高電平(置位),即把nRF905芯片配置成Standby模式,再把待發送的溫度數據寫入nRF905的數據寄存器中去,把接收端的地址寫入地址寄存器中,當DR自動置高時,表示數據發送完成。
數據發送程序主要代碼如下:

接收數據流程如圖6所示。

圖6 接收數據流程
數據接收程序的主要代碼如下:


仔細檢查電路后進行接電觀察,然后接入輸入量進行觀察,即動態調試。在上面的指標和電路都沒有錯誤的情況下進行記錄數據等一系列措施來評價此次設計的誤差等因素是否在可控的范圍內。在“實戰”中,一定要做到認真、仔細,對輸入-輸出量的關系正確把握。
測量系統的流程框圖如圖7所示。

圖7 系統流程圖
本次作品的實物的測試結果如圖8所示。

圖8 實物(主機)測試結果
經過模擬池塘溫度的場景,在室內進行標準的溫度校正來分析此系統的可靠性和準確性,其中下表中的理論值是指更加精確的測量儀器所測得的數據。來進行比對進而得出誤差的大小和系統的應用溫度場合。

表1 測試結果比對

圖9 比較圖
誤差總結:從上圖可以看出,相對誤差均隨著溫度值值的增大而有減小的趨勢,可以得出此測量系統適用于溫度相對適中(常溫)的場合。
此次設計提出了一種基于nRF905無線傳輸、控制溫度的檢測系統的設計。本文以實踐池塘水池測量溫度為例,緊密結合實際分析了該系統的實用和經濟價值,并且順帶簡要分析了系統的工作原理。此次的設計顯著地減輕了池塘勞動者的勞動強度,對提高水田養殖業的生產效率有著不同凡響的重要意義和歷史性突破[8]。