劉 寅,李 曉,徐龍飛,趙瑩瑩
(中北大學(xué) 信息與通信工程學(xué)院,山西 太原 030051)
現(xiàn)有的有線溫濕度系統(tǒng)使用時(shí)安裝非常復(fù)雜,接線容易混亂[1],因此,本文開發(fā)了基于C8051F340的溫濕度監(jiān)測系統(tǒng)。該系統(tǒng)使用無線射頻收發(fā)模塊nRF24L01P來代替?zhèn)鹘y(tǒng)線纜,使整個(gè)系統(tǒng)簡單且便于安裝;使用數(shù)字式AM2302傳感器,省去A/D轉(zhuǎn)換過程,能夠同時(shí)直接獲得溫度和濕度的數(shù)字信號(hào),調(diào)試方便;使用C8051F340單片機(jī)為主控芯片來控制整個(gè)系統(tǒng)。
本系統(tǒng)由兩部分組成,上位機(jī)部分和下位機(jī)部分。在下位機(jī)部分,由AM2302傳感器實(shí)時(shí)監(jiān)測溫度和濕度的數(shù)字信號(hào),通過I/O口將數(shù)字信號(hào)發(fā)送給主芯片C8051F340,在單片機(jī)的控制下溫、濕度數(shù)據(jù)再通過nRF24L01P模塊以無線射頻方式發(fā)送到另一個(gè)nRF24L01P模塊中,從而將溫、濕度數(shù)據(jù)傳到上位機(jī)部分,同時(shí),主芯片將溫、濕度數(shù)據(jù)顯示在下位機(jī)的液晶屏上。在上位機(jī)部分,C8051F340主部件會(huì)將從無線模塊接收到的溫、濕度數(shù)據(jù)做兩種處理:一種是將數(shù)據(jù)通過液晶模塊顯示出來;另一種是通過串口UART0進(jìn)行通信將數(shù)據(jù)傳給PC機(jī),通過PC機(jī)的軟件開發(fā)可以對溫度和濕度數(shù)據(jù)進(jìn)行顯示、處理和繪圖。溫、濕度監(jiān)測系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
AM2302是一款4引腳的具有高可靠性和穩(wěn)定性的數(shù)字式傳感器。其具有響應(yīng)速度快、抗干擾性強(qiáng)、性價(jià)比高、體積微小和超低功耗等優(yōu)點(diǎn)。數(shù)據(jù)傳送只占用一個(gè)I/O接口使用起來非常方便。只需要將DATA引腳與C8051F340的一個(gè)I/O端口引腳連接,由于連接線短于18m,DATA引腳接5kΩ上拉電阻,另外再連接VDD引腳和GND引腳即可。
圖1 溫、濕度監(jiān)測系統(tǒng)結(jié)構(gòu)框圖
nRF24L01P是一款8引腳的工作頻率為2.4GHz~2.5GHz的無線收發(fā)模塊,其數(shù)據(jù)傳送通過單片機(jī)上的SPI總線接口實(shí)現(xiàn),具有非常低的電功率損耗,在其傳輸狀態(tài)下最低電損耗可達(dá)到11mA[2]。無線模塊的連接方式是將nRF24L01P的CSN、SCK、MISO、MOSI這4個(gè)引腳分別與單片機(jī)的4個(gè)I/O口引腳連接;nRF24L01P的CE引腳是芯片使能端,直接連接電源VDD;CSN是片選端;SCK是輸入SPI時(shí)鐘端;MISO是主機(jī)輸入從機(jī)輸出端;MOSI是主機(jī)輸出從機(jī)輸入端。無線模塊和溫濕度傳感器與單片機(jī)的連接如圖2所示。
單次采集時(shí),AM2302通過單總線接口給單片機(jī)傳送40bit溫、濕度數(shù)據(jù)??偩€在上拉電阻作用下在被釋放時(shí)一直被拉高,首先C8051F340通過拉低總線1ms~10ms然后釋放總線20μs~40μs的方式對AM2302進(jìn)行初始化。隨后C8051F340隨時(shí)檢測AM2302是否返回80μs的低電平回饋信號(hào)來表示已準(zhǔn)備好發(fā)送數(shù)據(jù)了。若未收到回饋信號(hào)則結(jié)束;若收到,隨后AM2302會(huì)拉高總線80μs,接下來就會(huì)給單片機(jī)發(fā)送40bit數(shù)據(jù);若AM2302未拉高總線則結(jié)束。
圖2 無線模塊和溫濕度傳感器與單片機(jī)的連接圖
被傳送的數(shù)據(jù)是0還是1是這樣分辨的,50μs的低電平隨后70μs的高電平表示1,而50μs的低電平隨后26μs~28μs的高電平表示0。溫、濕度數(shù)據(jù)采集流程如圖3所示。
圖3 溫、濕度數(shù)據(jù)采集流程圖
C8051F340拉低nRF24L01P的引腳CE使其運(yùn)行在待機(jī)狀態(tài),并對其控制寄存器進(jìn)行狀態(tài)寫入以準(zhǔn)備接受單片機(jī)傳來的數(shù)據(jù)。C8051F340通過地址TX_ADDR的辨識(shí),將數(shù)據(jù)TX_PLD利用SPI總線接口傳送給nRF24L01P。C8051F340將PRIM_RX拉低,然后再拉高CE超過12μs,將nRF24L01P置于發(fā)送狀態(tài),隨后nRF24L01P上電向外傳送數(shù)據(jù)。若數(shù)據(jù)成功傳送,nRF24L01P就會(huì)收到回饋信號(hào),然后寄存器狀態(tài)位TX_DS會(huì)被置于高狀態(tài)從而TX_FIFO中的數(shù)據(jù)被刪除;若沒有收到應(yīng)有的回饋信息,則返回重新開始,數(shù)據(jù)將被重新傳送。單次數(shù)據(jù)發(fā)送流程如圖4所示。
圖4 nRF24L01P單次數(shù)據(jù)無線發(fā)送流程圖
液晶顯示模塊使用前需要先對其進(jìn)行初始化,然后按照所需的功能進(jìn)行程序指令的調(diào)用即可。首先用區(qū)域填涂指令LCDDrawDollop將屏幕平鋪為紅色,然后用font指令設(shè)置溫濕度數(shù)據(jù)的文字大小、顏色和背景顏色,再用字符串顯示指令GUI_DisplayStr顯示溫、濕度數(shù)據(jù)。
經(jīng)過實(shí)地測試,本文設(shè)計(jì)的溫濕度監(jiān)測系統(tǒng)運(yùn)行穩(wěn)定可靠,其無線傳輸距離在無障礙的情況下達(dá)到了80m,具有一定的實(shí)際應(yīng)用價(jià)值。
[1] 朱玉穎,蔡占輝.基于nRF24L01的遠(yuǎn)程溫度檢測系統(tǒng)設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用,2010(5):56-58.
[2] 莢慶,王代華,張志杰.基于nRF24L01的無線數(shù)據(jù)傳輸系統(tǒng)[J].現(xiàn)代電子技術(shù),2008(7):68-71.