楊東霞,巨永鋒
(長(zhǎng)安大學(xué) 電子與控制工程學(xué)院,陜西 西安710064)
近來(lái)環(huán)境監(jiān)測(cè)開(kāi)始得到社會(huì)的重視。 環(huán)境監(jiān)測(cè)發(fā)展的主要方向是遠(yuǎn)程監(jiān)測(cè)系統(tǒng),其中極為重要的是環(huán)境溫度監(jiān)測(cè)。 無(wú)線網(wǎng)絡(luò)化、智能化、微型化、集成化是環(huán)境監(jiān)測(cè)系統(tǒng)的發(fā)展趨勢(shì),于是隨著半導(dǎo)體、無(wú)線通信技術(shù)、微電子機(jī)械系統(tǒng)等學(xué)科的飛速發(fā)展而產(chǎn)生的無(wú)線傳感器網(wǎng)絡(luò) (Wireless Sensor Network,WSN)就成為環(huán)境監(jiān)測(cè)領(lǐng)域研究的熱點(diǎn)。
無(wú)線傳感器網(wǎng)絡(luò)由大量靜止或移動(dòng)的節(jié)點(diǎn)以自組織和多跳的方式構(gòu)成,集傳感與驅(qū)動(dòng)控制、計(jì)算、通信能力于一身,協(xié)作地實(shí)時(shí)監(jiān)測(cè)、感知、采集、處理和傳輸網(wǎng)絡(luò)覆蓋區(qū)域內(nèi)感知對(duì)象的監(jiān)測(cè)信息并報(bào)告給用戶(hù)[1-6]。
基于無(wú)線傳感器網(wǎng)絡(luò)的溫度監(jiān)測(cè)系統(tǒng)包括溫度采集系統(tǒng)和溫度管理系統(tǒng),如圖1 所示。 溫度采集系統(tǒng)由若干傳感器節(jié)點(diǎn)構(gòu)成,每一個(gè)節(jié)點(diǎn)由微功耗微處理器、短距離射頻收發(fā)器和溫度傳感器組成。溫度管理系統(tǒng)由網(wǎng)絡(luò)控制節(jié)點(diǎn)及一臺(tái)計(jì)算機(jī)構(gòu)成。
圖1 無(wú)線網(wǎng)絡(luò)傳感器系統(tǒng)結(jié)構(gòu)圖Fig. 1 Wireless sensor network system structure
在本文,無(wú)線傳感器網(wǎng)絡(luò)主要由一個(gè)主控制節(jié)點(diǎn)和若干個(gè)從節(jié)點(diǎn)組成,各個(gè)從節(jié)點(diǎn)負(fù)責(zé)采集信息,然后通過(guò)射頻接收器發(fā)送到主節(jié)點(diǎn),再由主節(jié)點(diǎn)連接至PC 處理顯示。
終端節(jié)點(diǎn)主要由溫度傳感器模塊、微處理器模塊和RF 射頻收發(fā)模塊構(gòu)成, 如圖2 所示。 硬件平臺(tái)采用超低功耗的ATmega128+CC2420 來(lái)實(shí)現(xiàn)。ATmega128+CC2420 平臺(tái)在功耗方面有很大的優(yōu)勢(shì)。另外,據(jù)測(cè)量范圍、精度、可靠性、穩(wěn)定性和低功耗等要求,選取數(shù)字溫度傳感器DS18B20。
圖2 終端節(jié)點(diǎn)結(jié)構(gòu)圖Fig. 2 The terminal node structure
2.1.1 溫度采集模塊
DS18B20 作為溫度傳感器其主要特性:外部電源供電方式下適應(yīng)電壓范圍更寬(3.0~5.5 V),在寄生電源方式下可由數(shù)據(jù)線供電;單線接口方式,僅需一條線即可實(shí)現(xiàn)與微處理器的雙向通信; DS18B20 支持多點(diǎn)組網(wǎng)功能, 實(shí)現(xiàn)多點(diǎn)測(cè)溫;DS18B20 在使用中不需要外圍元件,內(nèi)部附帶AD 轉(zhuǎn)換;測(cè)溫范圍-55~+125 ℃;可編程的分辨率為9~12 位,最高可分辨溫度為0.062 5℃,可實(shí)現(xiàn)高精度測(cè)溫;12 位分辨率時(shí)在750 ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字; 測(cè)量結(jié)果以數(shù)字信號(hào)直接輸出并串行傳送給CPU,同時(shí)可傳送CRC 校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力。
DS18B20 的外部電源供電方式如圖3 所示。 在外部電源供電方式下,DS18B20 工作電源由外接供電電源輸入端VDD引腳接入(在寄生電源接線方式時(shí)接地GND),此時(shí)數(shù)字信號(hào)輸入/輸出端I/O 線不用強(qiáng)上拉, 不會(huì)有電源電流不足的問(wèn)題,能保證轉(zhuǎn)換精度[7]。
圖3 外部電源供電圖Fig. 3 External power supply
2.1.2 無(wú)線通信模塊
CC2420 是Chipcon 公司開(kāi)發(fā)的首款符合Zigbee 標(biāo)準(zhǔn)的2.4 G Hz 射頻芯片, 可快速應(yīng)用到Zigbee 產(chǎn)品。 CC2420只需很少的外圍器件就能工作在2.4 GHz 頻段, 數(shù)據(jù)傳輸率達(dá)250 kbp/s, 傳輸距離最大為200 m, 包含硬件MAC 和CRC 自動(dòng)校驗(yàn)處理,具有高達(dá)-94 dBm 的接收靈敏度。 該器件性能穩(wěn)定且功耗極低, 可確保短距離通信的有效性和可靠性。 CC2420 芯片采用低電壓供電(2.1~3.6 V),采用休眠模式,且從休眠模式被激活的時(shí)延短, 處于休眠狀態(tài)時(shí)芯片的能耗極低,從而大大減少了能耗。
CC2420 工作過(guò)程:CC2420 從天線接收到射頻信號(hào),先經(jīng)過(guò)低噪聲放大器, 然后正交下變頻到2 MHz 的中頻上,形成中頻信號(hào)的同向分量和正交分量。 兩路信號(hào)經(jīng)過(guò)濾波和放大后,直接通過(guò)模數(shù)轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字信號(hào)。之后都以數(shù)字信號(hào)的形式處理。 CC2420 發(fā)送數(shù)據(jù)時(shí),直接正交上變頻,基帶信號(hào)的同相分量和正交量直接被數(shù)模轉(zhuǎn)換器轉(zhuǎn)換為模擬信號(hào),通過(guò)低通濾波器后,直接變頻到設(shè)定的頻道上。
CC2420 和單片機(jī)的接口電路如圖4 所示。
圖4 接口電路Fig. 4 The interface circuit diagram
2.1.3 微處理器模塊
ATmega128 是一款采用低功耗CMOS 工藝生產(chǎn)的基于AVRRISC 結(jié)構(gòu)的功能最強(qiáng)、性能最好的8 位單片機(jī)。 芯片內(nèi)部集成了較大容量的存儲(chǔ)器和豐富強(qiáng)大的硬件接口電路。 兩路可編程串行UART 接口;53 個(gè)通用I/O 口,128K 字節(jié)在線可重復(fù)編程Flash ROM;4K 字節(jié)的EEPROM;4K 字節(jié)內(nèi)部SRAM,帶有128KB Flash 在線可編程8 位微控制器;在線可編程主/從SPI 串行接口; 可以對(duì)單片機(jī)的Flash 程序存儲(chǔ)器和EZPROM 數(shù)據(jù)存儲(chǔ)器進(jìn)行編程,具有在線編程(ISP)的特點(diǎn)。 ATmega128 的結(jié)構(gòu)適宜采用高級(jí)語(yǔ)言來(lái)編寫(xiě)嵌入式系統(tǒng)的系統(tǒng)程序。 具有先進(jìn)的RISC 精簡(jiǎn)指令集結(jié)構(gòu);外部和內(nèi)部中斷源;5 種睡眠模式;運(yùn)算速度快,速度等級(jí)是0~16 MHz。
2.1.4 JTAG 的接口設(shè)計(jì)
通過(guò)4 線JTAG 接口燒寫(xiě)和調(diào)試程序,JTAG 接口電路如圖5 所示。
圖5 JTAG 的接口設(shè)計(jì)圖Fig. 5 The interface design of the JTAG
主節(jié)點(diǎn)由CC2420 和ATmega128 連接, 然后通過(guò)串口線連接至PC,再設(shè)計(jì)串口調(diào)試軟件助手,將監(jiān)測(cè)溫度實(shí)時(shí)的在PC 上顯示出來(lái),如圖6 所示。 數(shù)據(jù)由微處理器通過(guò)串口傳輸至PC,通過(guò)串口調(diào)試軟件界面顯示。
圖6 主節(jié)點(diǎn)系統(tǒng)結(jié)構(gòu)圖圖Fig. 6 The master node system structure
1)DSl8B20 工作過(guò)程
①初始化
通過(guò)總線的所有執(zhí)行操作都從一個(gè)初始化序列開(kāi)始,初始化序列包括一個(gè)由總線控制器發(fā)出的復(fù)位脈沖和其后由從機(jī)發(fā)出的存在脈沖,存在脈沖讓總線控制器知道DS18B20 在總線上已準(zhǔn)備好操作。
②ROM 功能命令
總線主機(jī)檢測(cè)到DSl820 的存在, 便可以發(fā)出ROM 操作命令之一:指令讀ROM [33H];指令匹配ROM [55H];跳過(guò)ROM[CCH];指令搜索ROM[F0H];指令報(bào)警搜索[ECH]。
③DS18B20 存儲(chǔ)控制命令
在總線控制器發(fā)給欲連接的DS18B20 一條ROM 指令后,發(fā)送一條DS18B20 存儲(chǔ)控制命令。這些指令允許總線控制器讀寫(xiě)DS18B20 的暫存器,發(fā)起溫度轉(zhuǎn)換和識(shí)別電源模式。比較常見(jiàn)的幾個(gè)DS18B20 功能指令:溫度轉(zhuǎn)換指令44H;寫(xiě)暫存器指令4EH;讀暫存器指令BEH;讀電源模式指令B4H。
④處理數(shù)據(jù)
DS18B20 單總線通信功能是分時(shí)完成的, 它有嚴(yán)格的時(shí)隙概念。 主機(jī)使用時(shí)間隙來(lái)讀寫(xiě)DSl8B20 的數(shù)據(jù)位和寫(xiě)命令字位。
2)DS18B20 測(cè)溫程序流程圖
流程圖如圖7 所示。
圖7 DS18B20 程序流程圖Fig. 7 The program flow chart of DS18B20
CC2420 有用于訪問(wèn)發(fā)送FIFO 緩存器, 稱(chēng)為T(mén)XFIFO 寄存器,還有用來(lái)訪問(wèn)接受FIFO 緩存區(qū),稱(chēng)為RXFIFO 寄存器。訪問(wèn)這兩個(gè)寄存器時(shí),CC2420 傳輸?shù)臄?shù)據(jù)是8 位,同時(shí)自動(dòng)更新FIFO 緩存區(qū)的讀寫(xiě)指針。
處理器需要CC2420 發(fā)送數(shù)據(jù)時(shí),首先通過(guò)寫(xiě)TXFIFO 寄存器把需要發(fā)送的數(shù)據(jù)包按字節(jié)依次寫(xiě)入到發(fā)送緩存區(qū)TXFIFO 中,然后寫(xiě)命令選通寄存器STXON,等待信道空閑時(shí)從無(wú)線信道發(fā)送,即:
①把數(shù)據(jù)流按順序存入TXFIFO, 依次為數(shù)據(jù)幀的幀長(zhǎng)度、幀控制字、序列號(hào)、PAN 標(biāo)識(shí)符、目標(biāo)地址、源地址、有效載荷和幀校驗(yàn)序列。
②檢查CCA 信號(hào)并等待信道空閑。
③執(zhí)行STXON 命令選通寄存器,打開(kāi)TX 發(fā)送模式。
④在任何新數(shù)據(jù)寫(xiě)入TXFIFO 前請(qǐng)確認(rèn)SFD 變高后再變低,并且已等待了至少60 個(gè)時(shí)鐘周期。
當(dāng)CC2420 接收到數(shù)包時(shí), 會(huì)把數(shù)據(jù)存入到接收緩存區(qū)RXFIFO,并改變FIFO 和FIFOP 引腳的狀態(tài),處理器通過(guò)FIFOP的引腳中斷讀RXFIFO 寄存器,依次讀取整個(gè)數(shù)據(jù)包,即:
①檢查FIFO 和FIFOP 信號(hào),確認(rèn)是否有新數(shù)據(jù)到來(lái)。
②如果有新數(shù)據(jù)到來(lái),當(dāng)數(shù)據(jù)包的數(shù)目超過(guò)設(shè)置的FIFOP的閾值時(shí),F(xiàn)IFOP 變?yōu)楦唠娖剑?從而觸發(fā)處理器的外部中斷,通過(guò)中斷接收數(shù)據(jù)。
③任何時(shí)候RXFIFO 只要發(fā)生溢出,立即清除RXFIFO。
通訊程序的設(shè)計(jì)流程圖如圖8 所示。
圖8 CC2420 程序流程圖Fig. 8 The program flow chart of CC2420
CC2420 在接收到數(shù)據(jù)包后,SFD 首先由低電平變成高電平,從而觸發(fā)IRQ 中斷,在中斷服務(wù)程序中調(diào)用MACISR( )進(jìn)行接收數(shù)據(jù)的處理, 中斷服務(wù)程序中首先確定當(dāng)前不是由于RXFFIO 緩沖區(qū)溢出產(chǎn)生的中斷,經(jīng)過(guò)接收處理后,系統(tǒng)將數(shù)據(jù)交由ZigBee 協(xié)議棧的MAC 層進(jìn)行處理。 數(shù)據(jù)的發(fā)送處理主要是將數(shù)據(jù)進(jìn)行IEEE802.15.4 協(xié)議數(shù)據(jù)幀的封裝處理,然后利用SPI 總線驅(qū)動(dòng)進(jìn)行數(shù)據(jù)的發(fā)送。
本文提出了一種基于ZigBee 協(xié)議的用于測(cè)量溫度的無(wú)線傳感器方案,并設(shè)計(jì)出相應(yīng)的無(wú)線傳感器網(wǎng)絡(luò)。 由一個(gè)主節(jié)點(diǎn)和多個(gè)終端節(jié)點(diǎn)組成。 主節(jié)點(diǎn)負(fù)責(zé)向終端節(jié)點(diǎn)查詢(xún)溫度信息,終端節(jié)點(diǎn)負(fù)責(zé)將溫度傳感器所采集到的信息反饋給主節(jié)點(diǎn),從而達(dá)到對(duì)一塊區(qū)域進(jìn)行溫度監(jiān)控的目的。 文中使用ATmega128 微控制芯片和CC2420 無(wú)線芯片搭建了一個(gè)基于ZigBee 技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)。 設(shè)計(jì)了適用于ZigBee 協(xié)議的2.4 Ghz 的無(wú)線數(shù)據(jù)傳輸模塊、無(wú)線傳感器節(jié)點(diǎn)溫度測(cè)量模塊,進(jìn)行了測(cè)溫軟件開(kāi)發(fā)與調(diào)試。
[1] 孫利民,李建中,等. 無(wú)線傳感器網(wǎng)絡(luò)[M] .北京:清華大學(xué)出版社,2005.
[2] 徐勇軍,安竹林,蔣文豐,等.無(wú)線傳感器網(wǎng)絡(luò)實(shí)驗(yàn)教程[M].北京:北京理工大學(xué)出版社,2007.
[3] 于海斌,曾鵬. 智能無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)[M]. 北京:科學(xué)出版社,2006.
[4] 寧波中科集成電路設(shè)計(jì)中心, 中國(guó)科學(xué)院計(jì)算技術(shù)研究所信息網(wǎng)絡(luò)室.GAINZ節(jié)點(diǎn)產(chǎn)品白皮書(shū)[R].2005.
[5] 原羿,蘇鴻根.基于Zigbee技術(shù)的無(wú)線網(wǎng)絡(luò)應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用與軟件,2004,21(6):89-91.YUAN Yi,SU Hong-gen.The study of wireless network applications based on Zigbee technology [J].Journal of Computer Applications and Software,2004,21(6):89-91.
[6] Akyildiz I F, Su W, Sankarasubramaniam Y. Wireles sensor network: A survey[J].Computer Networks,2003,38(4):393-422.
[7] 程德福,王君,凌振寶等.傳感器原理及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2009.