摘 要:采用nRF24L01作為無(wú)線收發(fā)模塊實(shí)現(xiàn)無(wú)線數(shù)據(jù)傳輸,使用DS18B20溫度傳感器采集環(huán)境溫度,并用ATMEL公司的AT89C52作為主控芯片,協(xié)調(diào)系統(tǒng)的數(shù)據(jù)采集、處理、顯示及無(wú)線傳輸?shù)冗^(guò)程。溫度采集節(jié)點(diǎn)能夠利用溫度傳感器穩(wěn)定地采集周圍環(huán)境的溫度,并通過(guò)無(wú)線模塊將數(shù)據(jù)傳送到接收節(jié)點(diǎn),顯示到LCD上。該設(shè)計(jì)具有性能穩(wěn)定、成本低、低功耗等特點(diǎn),能夠廣泛應(yīng)用于各類對(duì)溫度要求較為特殊的環(huán)境下溫度數(shù)據(jù)的檢測(cè)。
關(guān)鍵詞:nRF24L01;DS18B20;無(wú)線通信;溫度傳感
中圖分類號(hào):TP391.44 文獻(xiàn)標(biāo)識(shí)碼:A
1 引言(Introduction)
采用無(wú)線數(shù)據(jù)傳輸技術(shù)設(shè)計(jì)的溫度采集系統(tǒng)[1],能有效的解決傳統(tǒng)有線技術(shù)帶來(lái)的各種問(wèn)題,其具有不用布線、故障排查簡(jiǎn)單、實(shí)時(shí)性高、可靈活布置、可實(shí)現(xiàn)多點(diǎn)采集,非常適用于各種現(xiàn)代工農(nóng)業(yè)溫度監(jiān)控系統(tǒng)[2]?;跓o(wú)線通信的數(shù)據(jù)采集系統(tǒng)可以靈活地為終端用戶提供實(shí)時(shí)而準(zhǔn)確的信息[3],無(wú)論是在系統(tǒng)性能,還是在系統(tǒng)成本上,相對(duì)于傳統(tǒng)技術(shù),無(wú)線數(shù)據(jù)采集系統(tǒng)都具有很強(qiáng)的吸引力[4],它將在各個(gè)領(lǐng)域的數(shù)據(jù)采集系統(tǒng)中發(fā)揮積極的作用[5]。傳統(tǒng)的溫度采集系統(tǒng)所采集的溫度通過(guò)RS485、CAN總線通信方式傳輸至上位機(jī),但這種方式維護(hù)較困難,不利于工業(yè)現(xiàn)場(chǎng)生產(chǎn)[6];因此可采用工業(yè)級(jí)內(nèi)置硬件鏈路層協(xié)議的低成本單芯片nRF24L01型無(wú)線收發(fā)器件實(shí)現(xiàn)系統(tǒng)間的無(wú)線通信[7],完成無(wú)線信號(hào)的接收、顯示及報(bào)警功能。
2 系統(tǒng)方案設(shè)計(jì)(System design)
系統(tǒng)硬件設(shè)計(jì)主要由采集發(fā)送和接收顯示、告警三部分組成,圖1為整體系統(tǒng)框圖,采用DS18B20作為溫度采集元件,配合低功耗單片機(jī)的使用就可以很好地彌補(bǔ)傳統(tǒng)上的不足。采用nRF24L01模塊對(duì)采集到的溫度數(shù)據(jù)進(jìn)行無(wú)線傳輸,打破了傳統(tǒng)操作中距離受限的問(wèn)題,使測(cè)溫操作更易實(shí)現(xiàn)。系統(tǒng)設(shè)計(jì)了四個(gè)溫度采集節(jié)點(diǎn)、一個(gè)數(shù)據(jù)接收節(jié)點(diǎn)。四個(gè)溫度采集節(jié)點(diǎn)可以實(shí)現(xiàn)系統(tǒng)對(duì)監(jiān)控區(qū)域內(nèi)的溫度進(jìn)行全方位的監(jiān)測(cè),保證監(jiān)測(cè)數(shù)據(jù)的準(zhǔn)確性和全面性。其中四個(gè)溫度采集節(jié)點(diǎn)的電路是一樣的,都是使用AT89S52作為核心處理器,控制其他各個(gè)功能器件有序工作。接收節(jié)點(diǎn)電路相對(duì)于發(fā)射節(jié)點(diǎn),多了一個(gè)LCD液晶顯示模塊,沒(méi)有溫度采集模塊。
圖1 整體系統(tǒng)框圖
Fig.1 Overall block diagram of the system
各節(jié)點(diǎn)中串口模塊主要有兩方面的作用,一個(gè)是用于程序的下載,方面系統(tǒng)在線調(diào)試;另一個(gè)是將采集到的溫度數(shù)據(jù)實(shí)時(shí)地傳輸?shù)缴衔粰C(jī)中,對(duì)數(shù)據(jù)進(jìn)行觀察和分析。節(jié)點(diǎn)中的RF模塊由于需要3.3V的電源供電,所以每個(gè)節(jié)點(diǎn)還設(shè)計(jì)了一個(gè)5V轉(zhuǎn)3.3V的穩(wěn)壓電路。
3 系統(tǒng)硬件及軟件設(shè)計(jì)(System hardware and
software design)
設(shè)計(jì)一套基于nRF24L01的無(wú)線數(shù)據(jù)采集系統(tǒng),能夠通過(guò)系統(tǒng)的多個(gè)溫度采集節(jié)點(diǎn),采集周圍的環(huán)境溫度數(shù)據(jù),并將數(shù)據(jù)通過(guò)無(wú)線射頻電路發(fā)送到接收端,在接收端顯示出各節(jié)點(diǎn)的溫度值。同時(shí),系統(tǒng)要求能過(guò)對(duì)溫度數(shù)據(jù)進(jìn)行分析和判斷,如出現(xiàn)異常,則發(fā)出警報(bào)。主要包括:
(1)溫度采集模塊,溫度傳感器的功能是實(shí)現(xiàn)環(huán)境溫度的采集。采用DS18B20數(shù)字型溫度傳感器作為系統(tǒng)的溫度采集器件,可以很好地滿足系統(tǒng)的設(shè)計(jì)需求。
(2)無(wú)線收發(fā)模塊,射頻收發(fā)芯片要求能夠穩(wěn)定地用于系統(tǒng)傳輸溫度數(shù)據(jù),實(shí)現(xiàn)系統(tǒng)無(wú)線通信。系統(tǒng)采用的nRF24L01型無(wú)線射頻收發(fā)芯片工作于2.4—2.5GHz頻段的射頻芯片,其具有6個(gè)可選通信通道,非常契合系統(tǒng)的設(shè)計(jì)需求。
(3)LCD顯示模塊,系統(tǒng)要求能夠在接收端將接收到的溫度數(shù)據(jù)實(shí)時(shí)顯示出來(lái),以便用戶觀察。12864型LCD顯示器能夠顯示多種圖形和文字,且尺寸小,驅(qū)動(dòng)相對(duì)簡(jiǎn)單,使用靈活性好,能夠滿足系統(tǒng)的設(shè)計(jì)需求。
(4)主控制模塊,基于對(duì)處理器的處理能力和開(kāi)發(fā)成本的考慮,系統(tǒng)決定采用AT89S52型單片作為系統(tǒng)的核心處理器。AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8k在系統(tǒng)可編程Flash存儲(chǔ)器,能很好地滿足系統(tǒng)的處理需求。
(5)報(bào)警模塊,系統(tǒng)的報(bào)警系統(tǒng)對(duì)器件的要求比較簡(jiǎn)單,它只需在溫度異常時(shí),起到提醒用戶的效果。系統(tǒng)采用了一種低成本、易控制的報(bào)警器——蜂鳴器,作為系統(tǒng)的報(bào)警器件,同時(shí)配置一個(gè)LED燈起輔助作用,達(dá)到聽(tīng)覺(jué)和視覺(jué)的雙重報(bào)警效果。
系統(tǒng)的程序開(kāi)發(fā)語(yǔ)言為C-51,開(kāi)發(fā)工具為Keil軟件。系統(tǒng)的程序設(shè)計(jì)包括數(shù)據(jù)采集節(jié)點(diǎn)和數(shù)據(jù)接收節(jié)點(diǎn)的程序設(shè)計(jì),其流程圖分別如圖2(a)和圖2(b)所示。
(a)發(fā)送節(jié)點(diǎn)程序流程圖 (b)接收節(jié)點(diǎn)程序流程圖
圖2 系統(tǒng)收、發(fā)節(jié)點(diǎn)的程序流程圖
Fig.2 Sending and receiving node program flow
chart of the system
系統(tǒng)主要涉及到溫度采集模塊、無(wú)線射頻模塊、LCD顯示模塊、串口數(shù)據(jù)傳輸模塊的編程,接下來(lái)將重點(diǎn)介紹這幾個(gè)模塊的軟件實(shí)現(xiàn)過(guò)程。
數(shù)據(jù)采集發(fā)送部分上電后首先配置nRF24L01的相關(guān)寄存器.使其工作在發(fā)射狀態(tài),然后復(fù)位DSl8B20,向DSl8B20發(fā)送溫度轉(zhuǎn)換命令,讀取已轉(zhuǎn)換的溫度值,然后由nRF24L01發(fā)送。主CPU需要用芯片特定的指令系統(tǒng)來(lái)訪問(wèn)芯片的寄存器,讀寫(xiě)寄存器時(shí),也要注意SPI總線的CSN時(shí)序,CSN是芯片的使能端口,當(dāng)CSN為低電平時(shí),主CPU才能有效地向芯片讀寫(xiě)數(shù)據(jù)。因此,向芯片讀寫(xiě)一個(gè)字節(jié)的指令或數(shù)據(jù)時(shí),必需先把CSN拉低,讀寫(xiě)完成后再釋放。實(shí)現(xiàn)程序如下:
uint SPI_RW_Reg(uchar reg, uchar value)
{uint status;
CSN=0; //拉低CSN,選通芯片
status=SPI_RW(reg); //選擇寄存器地址
SPI_RW(value); //并寫(xiě)入相應(yīng)的數(shù)據(jù)值
CSN=1; //釋放CSN,結(jié)束通信過(guò)程
return(status); //返回寄存器狀態(tài)值
}
nRF24L01在數(shù)據(jù)接收顯示中為接收狀態(tài)。當(dāng)nRF24L01模塊配置為接收模式后,當(dāng)接收到數(shù)據(jù)中斷時(shí),從接收FIFO讀取數(shù)據(jù)。然后將其存儲(chǔ)到接收緩沖區(qū)rX_bur中。12864液晶顯示屏分為左右半屏顯示,每個(gè)半屏有8頁(yè)64列,分別由使能端CS1、CS2來(lái)選通。由于左右半屏在同一位置像素點(diǎn)共用一個(gè)地址,因此,要單獨(dú)顯示左、右半屏?xí)r,只能選通其中一個(gè)使能端。液晶通過(guò)一個(gè)8位的并行I/O口來(lái)傳輸數(shù)據(jù),單片機(jī)對(duì)I/O口送入的數(shù)據(jù)之后,通過(guò)控制LCDEN端口產(chǎn)生一個(gè)下降沿來(lái)鎖存數(shù)據(jù)。函數(shù)首先開(kāi)通兩個(gè)使能端CS1、CS2,實(shí)現(xiàn)同時(shí)對(duì)兩個(gè)半屏清屏,然后設(shè)置起始頁(yè)碼和起始列,通過(guò)循環(huán)語(yǔ)句,不斷地寫(xiě)入數(shù)據(jù)0,實(shí)現(xiàn)對(duì)整個(gè)屏幕清零。當(dāng)要寫(xiě)入其他數(shù)據(jù)時(shí),同樣只需選通相應(yīng)半屏,設(shè)置起始頁(yè)碼和起始列地址,在通過(guò)尋址的方式寫(xiě)入所需的數(shù)據(jù)即可。
4 系統(tǒng)調(diào)試(System debugging)
系統(tǒng)的調(diào)試主要有硬件調(diào)試和軟件調(diào)試兩部分。由于系統(tǒng)的硬件電路板是自制的,從PCB畫(huà)圖到腐蝕、焊接,整個(gè)過(guò)程都是手工完成的,這就難免使電路板存在一些誤差和故障,所以,硬件調(diào)試的主要內(nèi)容就是在制作好電路板之后,檢測(cè)電路板的電氣連接是否正確,上電后各關(guān)鍵測(cè)試點(diǎn)的電壓是否正常等。在確保了硬件電路沒(méi)有問(wèn)題之后,才可以進(jìn)
入系統(tǒng)的軟件調(diào)試部分。系統(tǒng)軟件的作用就是控制系統(tǒng)主CPU協(xié)調(diào)系統(tǒng)其他各功能部件能夠正常有序地工作。本系統(tǒng)需要軟件控制的模塊主要是DS18B20溫度采集、射頻模塊、12864液晶顯示及蜂鳴器報(bào)警等。在軟件調(diào)試時(shí),應(yīng)該分模塊進(jìn)行,各個(gè)擊破,最后整體聯(lián)調(diào)。
根據(jù)最終調(diào)試運(yùn)行結(jié)果,系統(tǒng)可以實(shí)現(xiàn)4個(gè)節(jié)點(diǎn)的溫度的采集,并將數(shù)據(jù)通過(guò)無(wú)線射頻模塊發(fā)送到接收節(jié)點(diǎn);在接收節(jié)點(diǎn),4路溫度數(shù)據(jù)能夠穩(wěn)定地顯示在LCD屏上,并通過(guò)串口發(fā)送到PC機(jī)中。系統(tǒng)完成了本設(shè)計(jì)的要求,可應(yīng)用于工農(nóng)業(yè)生產(chǎn)、科學(xué)研究、環(huán)境衛(wèi)生及各種日常生活中,并將發(fā)揮積極的作用。
5 結(jié)論(Conclusion)
采用高度集成的nRF24L01器件,大大簡(jiǎn)化了系統(tǒng)硬件和軟件設(shè)計(jì),減小了體積,提高了系統(tǒng)工作的可靠性。降低了系統(tǒng)成本,縮短了開(kāi)發(fā)時(shí)間。實(shí)踐證明該系統(tǒng)設(shè)計(jì)簡(jiǎn)單、成本低廉、通信可靠、運(yùn)行穩(wěn)定、性能可靠,能夠廣泛應(yīng)用于各類對(duì)溫度要求較為特殊的環(huán)境下溫度數(shù)據(jù)的檢測(cè),具有較高的實(shí)用價(jià)值。
參考文獻(xiàn)(References)
[1] 宋曉偉,等.基于nRF24L01的無(wú)線溫度檢測(cè)系統(tǒng)[J].煤炭工程, 2010,(11):11-12.
[2] 時(shí)志云,等.新型高速無(wú)線射頻器件nRF24L01及其應(yīng)用[J].國(guó) 外電子元器件,2007,8:42-44.
[3] 劉志平,趙國(guó)良.基于nRF24L01的近距離無(wú)線數(shù)據(jù)傳輸[J].應(yīng) 用科技,2008,35(3):55-58.
[4] 曾勇,楊濤,馮月暉.基于nRF24L01的超低功耗無(wú)線傳感器 網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2008,7:45-48.
[5] 王學(xué)梅,金廣鋒.數(shù)字溫度傳感器DS18B20在糧倉(cāng)溫度智能控 制系統(tǒng)中的應(yīng)用[J].科技廣場(chǎng),2009,(5):217-218.
[6] 樊祥現(xiàn),袁平.nRF2401無(wú)線通信數(shù)據(jù)傳輸可靠性技術(shù)應(yīng)用[J]. 自動(dòng)化技術(shù)與應(yīng)用,2008,27(7):71-73.
[7] 時(shí)志云,等.新型高速無(wú)線射頻器件nRF24L01及其應(yīng)用[J].國(guó) 外電子元器件,2007,(8):42-44.
作者簡(jiǎn)介:
徐艷玲(1979-),女,碩士,講師.研究領(lǐng)域:計(jì)算機(jī)網(wǎng)絡(luò),數(shù)
據(jù)庫(kù)應(yīng)用.