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