1 引言
溫度采集系統所采集的溫度通常通過(guò)RS485、CAN總線(xiàn)通信方式傳輸至上位機,但這種方式維護較困難,不利于工業(yè)現場(chǎng)生產(chǎn);而無(wú)線(xiàn)通信GPRS技術(shù)傳輸距離長(cháng),通信可靠穩定,但設計復雜、成本昂貴。這里采用工業(yè)級內置硬件鏈路層協(xié)議的低成本單芯片nRF24L01型無(wú)線(xiàn)收發(fā)器件實(shí)現系統間的無(wú)線(xiàn)通信,完成無(wú)線(xiàn)信號的接收、顯示及報警功能。
2 nRF24L01簡(jiǎn)介
nRF24L01是一款工業(yè)級內置硬件鏈路層協(xié)議的低成本無(wú)線(xiàn)收發(fā)器。該器件工作于2.4 GHz全球開(kāi)放ISM頻段,內置頻率合成器、功率放大器、晶體振蕩器、調制器等功能模塊,并融合增強型ShockBurst技術(shù),其輸出功率和通信頻道可通過(guò)程序配置。擁有ShockBurst和Enhanced ShockBurst兩種數據傳輸模式?芍苯优c單片機I/O連接,外接元件數目少。nRF24L01功耗低,以-6 dBm的功率發(fā)射時(shí),工作電流僅9 mA;接收時(shí),工作電流僅12.3 mA,多種低功率工作模式(掉電和空閑模式)更利于節能設計。
3 系統硬件設計
系統硬件設計主要由采集發(fā)送和接收顯示兩部分組成。圖1為采集發(fā)送電路原理圖,該電路主要由溫度傳感器DS18B20、單片機STC12LE5408和nRF24L01組成。

STC12LE5408是增強型8051單片機,速度快,集成度高,電壓范圍寬(2.2~3.8 V),和MCS-51系列單片機指令系統完全兼容。其內部還有8 KB Flash程序存儲器,512字節RAM、2 KB EEPROM、4路PWM以及硬件看門(mén)狗(WDT)等資源.性?xún)r(jià)比高。
DSl8B20是DALLAS公司生產(chǎn)的單總線(xiàn)數字1-Wire溫度傳感器,可把溫度信號直接轉換成串行數字信號供單片機處理,采用1-Wire接口。DSl8B20的數據端DQ可通過(guò)4.7 kΩ的上拉電阻接STC12LE5408。nRF24L01的CE,CSN,SCK,MOSI,MISO,IRQ引腳則可接STC12LE5408的任意端口,但需在編程時(shí)注意,這里接至P1端口。由于nRF24L01具有接收數據功能,所以接收顯示電路由單片機STC12LE5408、nRF24L01和顯示電路組成。所采集的數據也通過(guò)串口發(fā)送至PC機進(jìn)行處理。
4 系統軟件設計
4.1 nRF24L01的軟件設置
由于STC12LE5408無(wú)標準的SPI總線(xiàn)接口,需采用軟件模擬實(shí)現SPI總線(xiàn)。因此應嚴格按照SPI的時(shí)序要求編寫(xiě),否則導致對nRF24L01的操作失敗。nRF24L01的各種命令字都只有一個(gè)字節,分為讀寄存器、寫(xiě)寄存器、讀數據接收緩沖區、寫(xiě)發(fā)送數據緩沖區等。在輸入任意命令字的同時(shí),MISO輸出STATUS寄存器的內容。對RF24L01的讀寫(xiě)程序代碼如下:

nRF24L01的ShockBurst和Enhanced ShockBurst兩種數據模式的區別是:后者比前者多一個(gè)確認數據傳輸的信號,保證數據傳輸的可靠性。按Enhanced ShockBurst模式初始化,重新發(fā)送等待時(shí)間為250μs,重新發(fā)送次數為10次,地址是RX_ADR_WIDTH,輸出功率為0 dBm,速度為1 Mb/s。nRF24L01處于POWER_UP狀態(tài)。函數中WRITE_REG為寫(xiě)命令基地址0x20。其相關(guān)程序如下:

在接收端將nRF24L01配置為接收模式,地址是RX_AW,負載數據寬度是TX_PL_W,使能接收完數據中斷,CRC校驗位為2字節,nRF24L01處于POWER_UP狀態(tài),其相關(guān)程序代碼如下:


4.2 數據采集發(fā)送子程序
數據采集發(fā)送部分上電后首先配置nRF24L01的相關(guān)寄存器.使其工作在發(fā)射狀態(tài),然后復位DSl8B20,向DSl8B20發(fā)送溫度轉換命令,讀取已轉換的溫度值,然后由nRF24L01發(fā)送.其流程如圖2所示。

這里需注意DS18B20是單總線(xiàn)器件.其硬件接口比較簡(jiǎn)單,這是以相對復雜的軟件編程為代價(jià)的。DS18B20與單片機的接口協(xié)議也是通過(guò)嚴格的時(shí)序來(lái)實(shí)現的。雖然增加軟件開(kāi)銷(xiāo),但由于STC12LE5408運行速度快,可以滿(mǎn)足系統要求。另外,對DS18B20操作的程序必須按照初始化,ROM操作命令,存儲器操作命令,執行/數據的先后順序進(jìn)行。如果總線(xiàn)上只掛1個(gè)DS18B20,初始化后可執行跳過(guò)ROM命令,再發(fā)送溫度轉換命令。溫度轉換完成后,將溫度值暫存在發(fā)送緩沖區tx_buf中,然后通過(guò)nRF24L01發(fā)送,其相關(guān)程序代碼如下:

4.3 數據接收顯示子程序
nRF24L01在數據接收顯示中為接收狀態(tài)。當nRF24L01模塊配置為接收模式后,當接收到數據中斷時(shí),從接收FIFO讀取數據。然后將其存儲到接收緩沖區rX_bur中。其相關(guān)程序代碼如下:

5 結束語(yǔ)
本文介紹了nRF24L01和STC12LE5408組成的無(wú)線(xiàn)溫度采集系統。采用高度集成的nRF24L01器件。大大簡(jiǎn)化了系統硬件和軟件設計,減小了體積,提高了系統工作的可靠性。采用新一代增強型8051單片機STC12LE5408降低了系統成本,縮短了開(kāi)發(fā)時(shí)間。實(shí)踐證明該系統設計簡(jiǎn)單,成本低廉,通信可靠,運行穩定,性能可靠,具有較高的實(shí)用價(jià)值。 |