目前,我國絕大多數(shù)的溫度監(jiān)測系統(tǒng)都是傳統(tǒng)方式,主要有就地進(jìn)行數(shù)據(jù)采集的方式和有線通信的實(shí)時(shí)溫度監(jiān)測系統(tǒng),前者測量方法單一,測量數(shù)據(jù)不連續(xù)且時(shí)效性差,后者缺少靈活性且適用環(huán)境有限。隨著信息通信與電子技術(shù)的迅猛發(fā)展,使得傳統(tǒng)的數(shù)據(jù)采集方式已不能滿足需求,嚴(yán)重地制約了現(xiàn)代化監(jiān)測系統(tǒng)發(fā)展的進(jìn)程。例如在監(jiān)測區(qū)域環(huán)境復(fù)雜,且監(jiān)測點(diǎn)的位置分布較分散的情況下,布線復(fù)雜而且慢,人力物力成本較大,不適合與控制中心進(jìn)行有線通信。無線監(jiān)測系統(tǒng)是無線技術(shù)發(fā)展至今最重要的應(yīng)用之一,采用無線網(wǎng)絡(luò)可增強(qiáng)監(jiān)測系統(tǒng)的靈活性和可擴(kuò)充性,省去網(wǎng)絡(luò)布線的麻煩。
因此,本文嘗試研究一種無線溫度監(jiān)測系統(tǒng),此系統(tǒng)將無線收發(fā)模塊與單片機(jī)相結(jié)合,采用抗干擾能力強(qiáng)的射頻發(fā)射模塊及接收模塊實(shí)現(xiàn)無線通信,提高系統(tǒng)的可靠性。該監(jiān)測系統(tǒng)具有結(jié)構(gòu)簡單、使用方便、成本低、工作穩(wěn)定可靠等優(yōu)點(diǎn)。
1無線傳感器節(jié)點(diǎn)硬件設(shè)計(jì)
1.1單片機(jī)選擇方案
無線傳感器節(jié)點(diǎn)要實(shí)現(xiàn)對溫度信息的采集、處理和無線傳輸。無線傳感器節(jié)點(diǎn)內(nèi)的單片機(jī)對節(jié)點(diǎn)起管理、控制作用,并進(jìn)行信號(hào)處理。在選擇單片機(jī)時(shí),主要參考以下標(biāo)準(zhǔn):首先,要求單片機(jī)的功耗要很小,由于它消耗的是節(jié)點(diǎn)中電池的電量,并且長期處在工作狀態(tài),所以必須具有功耗低的特點(diǎn)。其次,要求單片機(jī)的價(jià)格適中,不能使成本太高。此外單片機(jī)的運(yùn)行速度和程序存儲(chǔ)空間大小,對以后節(jié)點(diǎn)功能的擴(kuò)展很重要。本無線傳感器節(jié)點(diǎn)采用STC12C5A60S2單片機(jī)去控制nRF24L01射頻芯片和DS18B20溫度傳感器,其硬件結(jié)構(gòu)與功能模塊的對應(yīng)關(guān)系如圖1所示。
圖1無線傳感器節(jié)點(diǎn)新一代STC12C5A60S2與傳統(tǒng)的MCS-51系列單片機(jī)指令完全兼容,具有高速、低功耗及抗干擾性能強(qiáng)等優(yōu)點(diǎn)。該單片機(jī)擁有60K的程序存儲(chǔ)器和1280字節(jié)RAM,完全能滿足單片機(jī)系統(tǒng)的軟件設(shè)計(jì)要求;且該單片機(jī)是新一代單時(shí)鐘/機(jī)器周期(1T),其處理速度是傳統(tǒng)51單片機(jī)的8到12倍,便于以后進(jìn)行功能擴(kuò)展,例如:可以快速處理其所在節(jié)點(diǎn)的路由算法。故STC12C5A60S2單片機(jī)是構(gòu)建本監(jiān)測節(jié)點(diǎn)理想的選擇
1.2無線收發(fā)模塊
nRF24L01是一款工業(yè)級(jí)內(nèi)置硬件鏈路層協(xié)議的低成本無線收發(fā)器。該器件工作于2.4 GHz全球開放ISM頻段,內(nèi)置頻率合成器、功率放大器、晶體振蕩器、調(diào)制器等功能模塊,可直接與單片機(jī)I/O連接.nRF24L01功耗低,以-6 dBm的功率發(fā)射時(shí),工作電流僅9 mA;接收時(shí),工作電流僅12.3 mA,多種低功率工作模式(掉電和空閑模式)更利于節(jié)能設(shè)計(jì)[3]。與nRF24L01的SPI接口連接時(shí),可以利用單片機(jī)硬件的SPI口,也可以用單片機(jī)I/O口進(jìn)行模擬。該收發(fā)模塊內(nèi)部有FIFO可以與各種高低速微處理器接口,便于使用低成本單片機(jī)。
1.3溫度采集芯片
DS18B20結(jié)構(gòu)簡單,采用一根I/O數(shù)據(jù)線既可供電又可傳輸數(shù)據(jù)。在現(xiàn)場采集溫度數(shù)據(jù)時(shí),將數(shù)據(jù)直接轉(zhuǎn)換成數(shù)字量輸出。測量溫度范圍為-55~125℃,在-10~85℃時(shí)精度為±0.5℃;可編程的分辨率為9~12位,對應(yīng)的可分辨溫度分別為0.5、0.25、0.125、0.062 5℃,可實(shí)現(xiàn)高精度測溫;在9位分辨率時(shí)最多在93.75 ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750 ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度很快;測量結(jié)果直接輸出數(shù)字溫度信號(hào),以“一線總線”串行傳送給處理器,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力。
2硬件原理圖
單片機(jī)的SPI接口有兩種操作模式:主模式和從模式。在主模式中支持高達(dá)3Mbit/s的速率,從模式時(shí)速度低些.nRF24L01提供的SPI接口數(shù)據(jù)傳輸率取決于單片機(jī)本身接口速度。單片機(jī)通過SPI對nRF24L01進(jìn)行狀態(tài)配置,系統(tǒng)設(shè)為發(fā)送模式,單片機(jī)就把數(shù)據(jù)輸入到nRF24L01,當(dāng)P0.2(CE)信號(hào)從1變?yōu)?時(shí),nRF24L01就把從單片機(jī)收到的數(shù)據(jù)以2Mbit/s的速率發(fā)射出去,并通過IRQ信號(hào)通知單片機(jī)發(fā)送完成。若系統(tǒng)設(shè)為接收模式,nRF24L01就一直在監(jiān)測天線接收的信號(hào),若有同頻的信號(hào),就收下并打開信息包讀取地址,地址與自己的相同就取出信息包里的有用數(shù)據(jù),并通過IRQ信號(hào)通知單片機(jī)取走。節(jié)點(diǎn)原理圖如圖2所示。
3系統(tǒng)工作流程
無線傳感器節(jié)點(diǎn)在啟動(dòng)后,首先配置nRF24L01的相關(guān)寄存器,使其工作在發(fā)送狀態(tài)。節(jié)點(diǎn)在發(fā)送模式下,首先復(fù)位DS18B20,單片機(jī)向DS18B20發(fā)送溫度轉(zhuǎn)換命令,讀取已轉(zhuǎn)換的溫度值,然后交由nRF24L01發(fā)送。上位機(jī)的接收模塊在接收模式下,首先讀取無線模塊的狀態(tài)寄存器,并判斷是否接收到數(shù)據(jù),若沒有,則一直檢測等待數(shù)據(jù)的到來;若有,則接收數(shù)據(jù)并送至接收模塊的RS232串口處,上位機(jī)監(jiān)測軟件從串口處讀取數(shù)據(jù)并顯示。其工作流程如圖3、4所示。
4系統(tǒng)實(shí)現(xiàn)
4.1 STC12C5A60S2控制溫度傳感器DS18B20
從DS18B20讀1字節(jié)數(shù)據(jù)圖2節(jié)點(diǎn)電路原理圖
?。鹵char i=0,dat;
for(i=0;i《8;i++)
?。鸇Q=1;//先拉高
delay_1us();//稍作延時(shí)
DQ=0;//啟動(dòng)讀時(shí)序
delay_1us();//稍作延時(shí)
DQ=1;//釋放總線
delay_us(6);//延時(shí)約7μs,主機(jī)采樣
dat》》=1;//先右移一位,使最高位為0
if(DQ==1)
dat|=0x80;//與10000000或,dat=10000000
else
dat|=0x00;//取值為0
delay_us(50);
}
eturn(dat);}
向DS18B20寫1字節(jié)數(shù)據(jù)
void DS18B20_WriteByte(uchar x)
?。鹵char i;
for(i=0;i《8;i++)
?。鸇Q=1;
delay_1us();//稍作延時(shí)
DQ=0;//啟動(dòng)寫時(shí)序
DQ=x&0x01;//向數(shù)據(jù)線傳送最低位
delay_us(40);//延時(shí)約50μs,供18b20采樣數(shù)據(jù)
DQ=1;//釋放總線
delay_1us()
;x》》=1;//右移一位
?。?/p>
delay_us(2);//寫完一個(gè)指令稍作延時(shí)}
4.2 STC12C5A60S2控制無線模塊nRF24L01
函數(shù):SPI_RW()。描述:根據(jù)SPI協(xié)議,寫一字節(jié)數(shù)據(jù)到nRF24L01,同時(shí)從nRF24L01讀出一字節(jié)
uchar SPI_RW(uchar byte)
?。鹵char i;
for(i=0;i《8;i++)//循環(huán)8次
{MOSI=(byte&0x80);//byte最高位輸出到MOSI
byte《《=1;//低一位移位到最高位
SCK=1;//拉高SCK,nRF24L01從MOSI讀入1位數(shù)據(jù),同時(shí)從MISO輸出1位數(shù)據(jù)
byte|=MISO;//讀MISO到byte最低位
SCK=0;//SCK置低}return(byte);//返回讀出的一字節(jié)
}
函數(shù):SPI_Read_Buf()。描述:從reg寄存器讀出bytes個(gè)字節(jié),通常用來讀取接收通道數(shù)據(jù)或接收/發(fā)送地址
uchar SPI_Read_Buf(uchar reg,uchar*pBuf,uchar bytes)
?。鹵char status,i;
CSN=0;//CSN置低,開始傳輸數(shù)據(jù)
status=SPI_RW(reg);//選擇寄存器,同時(shí)返回狀態(tài)字
for(=0;i《bytes;i++)
pBuf [i] = SPI_RW 0);//逐個(gè)字節(jié)從nRF24101讀出
CSN = 1; //CSN拉高,結(jié)束數(shù)據(jù)傳輸
return ftatus); /1返回狀態(tài)寄存器
函數(shù):SPI_W rite_Buf 0.描述:把pBuf 緩存中的數(shù)據(jù)寫入到nRF24101,通常用來寫入發(fā)射通道數(shù)據(jù)或接收1發(fā)送地址
SPI_ W rite_ Buf Guchar reg.uchar ucharpBuf.w har bytes )
{uchar status.i ;
CSN = 0; 11CSN 置低。開始傳輸數(shù)據(jù)
status = SPI_RW feg); 11選擇寄存器,同時(shí)返回狀態(tài)字
for i=0;i《bytes;i++)
SPI_ RW (pBuf [i]);//逐個(gè)字節(jié)寫入nRF24L01
CSN = 1; //CSN拉高,結(jié)束數(shù)據(jù)傳輸
return Status); 11返回狀態(tài)寄存器
4.3上位機(jī)接受數(shù)據(jù)的實(shí)驗(yàn)結(jié)果
上位機(jī)實(shí)時(shí)顯示溫度變化如圖5所示。
5.結(jié)語
單片機(jī)采用新一代增強(qiáng)型8051STC12C5A60S2 與高度集成的nRF24L01器件結(jié)合,大大簡化了系統(tǒng)硬件和軟件設(shè)計(jì),減小了體積,提高了系統(tǒng)工作的可靠性,且系統(tǒng)的運(yùn)行速度得到很大提高。實(shí)踐證明該系統(tǒng)設(shè)計(jì)簡單成本低廉,運(yùn)行速度快。通信可靠。運(yùn)行穩(wěn)定。具有較高的實(shí)用價(jià)值。由于STCI2C5A60S2 的程序存儲(chǔ)器空間比傳統(tǒng)的51單片機(jī)大了10倍之多,且運(yùn)行速度也提高了8-12倍,這有利于以后進(jìn)行節(jié)點(diǎn)路由功能的擴(kuò)展.
評(píng)論
查看更多