三峽電力職業學院 張 強
農田中數據采集量很大,利用網絡可以比較方便地實現大量數據的遠距離傳輸;但如果在農田中鋪設有線網絡,一方面不便于農田的耕作,另一方面成本較高。近幾年發展起來的無線傳感網絡由于應用成本低、網絡結構靈活、數據傳輸距離遠,已經在很多領域得到了應用。并且,傳感器網絡所要求的無線技術不同于現在已有的一些無線網絡技術,這種網絡并不需要太高的傳輸速率,而是在成本和功耗方面有比較苛刻的要求。為了滿足類似于溫度、濕度傳感器這樣小型、低成本設備無線聯網的要求,ZigBee技術正是為適應這種需求而產生的。
CC2430芯片為Chipcon公司生產的2.4GHz射頻系統單芯片,是一顆真正的系統芯片(SoC)CMOS解決方案,這種解決方案能夠提高性能并滿足以ZigBee為基礎的2.4GHzISM波段應用對低成本、低功耗的要求。
CC2430 SoC家族包括3個產品:CC2430-F32、CC2430-F64和CC2430-F128。它們的區別在于內置閃存的容量不同,分別為32KB、64KB和128KB,并具有8K的RAM和其他強大的支持特性。CC2430基于Chipcon公司的SmartRF技術平臺,采用0.18μmCMOS工藝生產,尺寸是7mm×7mm,封裝為48PIN;在接收和發射模式下,電流損耗分別小于27mA或25mA。CC2430適用于那些要求電池壽命非常長的應用,CC2430具有休眠模式和可短時間轉換到主動模式的能力,使之成為解決問題的理想方案。這個配置可以被應用于所有ZigBeeTM的無線網絡節點,包括協調器、路由器、設備終端。
CC2430芯片的主要特點如下:高性能和低功耗的8051微控制器內核;集成符合IEEE802.15.4標準的2.4GHz的RF無線電收發機;優良的無線接收靈敏度和強大的抗干擾性;在休眠模式時僅0.9μA的流耗,外部的中斷或RTC能喚醒系統;在待機模式時少于0.6μA的流耗,外部的中斷能喚醒系統;硬件支持CSMA/CA功能;較寬的電壓范圍(2.O~3.6V);數字化的RSSI/LQI支持和強大的DMA功能;具有電池監測和溫度感測功能;集成了14位模數轉換的ADC;集成AES安全協處理器;帶有2個強大的支持幾組協議的USART,以及1個符合IEEE 802.15.4規范的MAC計時器,1個常規的16位計時器和2個8位計時器;強大和靈活的開發工具。
無線傳感器網絡的節點通常由傳感器模塊、處理器模塊、無線通信模塊和電源模塊構成。處理器模塊和無線通信模塊采用CC2430芯片,大大簡化了射頻電路的設計。傳感器模塊采用數字溫度傳感器DS18B20。電源模塊采用2節干電池。節點的硬件原理框圖如圖1。

圖1 節點硬件框圖Fig.1 Hardware diagram of the node
DS18B20是“單總線”數字溫度傳感器,其測量溫度范圍為-55℃~125℃,在-10℃~85℃范圍內,精度為0.5℃,可編程設定9~12位的分辨率,默認值為12位,轉換12位溫度信號所需時間為750ms(最大)。檢測溫度由2字節組成,高字節MSB的高5位S代表符號位,如果溫度為負則S為1,否則為0。低字節LSB的低4位是小數部分,中間7位是整數部分,如圖2所示。

圖2 DS18B20測溫字節Fig.2 Temperature measurement bytes of DS18B20
DS18B20與CC2430的通信電路如圖3所示,VDD引腳直接連接外部電源,CC2430的P0.0腳與18B20的數字輸入/輸出腳DQ相連,DS18B20在空閑時,其DQ腳由上拉電阻置為高電平。

圖3 18B20與CC2430連接電路圖Fig.3 The interface circuit between 18B20 and CC2430
軟件部分需要解決的問題包括:溫度信號采集、ZigBee協議棧(Z-Stack)、ZigBee通信等。
溫度信號的采集可由CC2430芯片內部的MCU完成,溫度傳感器DS18B20采用單總線方式和處理器通信,根據DS18B20的通訊協議,主機控制DS18B20完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對DS18B20進行復位,復位成功后發送一條ROM指令,最后發送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數據線下拉500微秒,然后釋放,DS18B20收到信號后等待16~60微秒左右,后發出60~240微秒的存在低脈沖,主CPU收到此信號表示復位成功。
ZigBee協議棧的體系結構如圖4所示。介質接入控制子層(Medium Access Control Layer,MAC)和物理層(Physical Layer,PHY)是由IEEE 802.15.4標準中定義的兩層。網絡層(Network Layer,NWK)是由ZigBee聯盟所定義,主要完成從應用層接受數據并向其發送數據;應用層(Application Layer APL)是ZigBee協議棧的最高層。應用層的框架包括了應用支持子層(APS)、ZigBee設備對象(ZDO)和由制造商制定的應用對象。應用層主要負責把不同的應用映射到ZigBee網絡上。

圖4 ZigBee體系結構Fig.4 ZigBee system structure diagram
ZigBee協議棧運行在一個OSAL(操作系統抽象層)操作系統上。該操作系統基于任務調度機制,通過對任務的事件觸發來實現任務調度。每個任務都包含若干個事件,每個事件都對應一個事件號。當一個事件產生時,對應任務的事件就被設置為相應的事件號,這樣,事件調度就會調用相應的任務處理程序。OSAL中的任務可以通過任務API將其添加到系統中,這樣就可以實現多任務機制。OSAL任務調度流程如圖5所示。NextActiveTask( )是一個任務事件查詢函數,返回任務的事件狀態ActiveTask。軟件設計時,可通過ActiveTask的值來決定是否需執行對應的任務函數ActiveTask( )。

圖5 OSAL任務調度機制Fig.5 OSAL task scheduling mechanism
本小節以兩個節點之間的通信為例,介紹了點對點通信的過程和實現方法。完成一次數據傳送的程序流程圖如圖6。系統初始化主要是將系統的工作頻率設為32MHz的晶振頻率,這樣RF才能正常工作。RF初始化時,先設置通信頻率,再通過設置RFPWR.RREG_RADIO_PD位為1給RF供電。RF初始化的過程還包括執行下面的代碼來開啟Rx,清空Rx、Tx的FiFo緩沖區以及校準Radio。

圖6 數據發送程序流程圖Fig.6 The flow chart of Data distribution procedures
DMA的初始化階段要為Tx分配1個空閑的DMA通道。首先要為通道0和通道1~4分別設置好通道描述數據結構的存放地址,并將首地址分別寫入DMA0CFGH:DMA0CFGL和DMA1CFGH:DMA1CFGL。再為這個分配好的DMA通道設置其描述數據結構。
當設置為Tx準備的DMA通道時,需將數據的源地址SRCADDRH:SRCADDRL設為所要發送數據的起始地址,目標地址DESTADDRH:DESTADDRL設為寄存器RFD的地址0xDFD9。然后,在LENH:LENL中設置所要發送數據的長度,并將VLEN設為0。將WORDSIZE位設為0,表示DMA數據按字節進行傳輸(設為1表示按字傳輸)。DMA的數據傳送模式按照一次觸發傳輸的數據量可分成四種,由TMODE設置選擇。本例中采用Block模式,即一次DMA觸發可進行一個完整數據塊的傳輸。CC2430定義的DMA觸發信號有31種之多,由TRIG位設置。將TRIG設置為0,表示采用無觸發模式,這樣DMA在每次接收到DMAREQ信號后才啟動一次數據傳輸。SRCINC和DESTINC分別用于設置數據源地址和目標地址的變化方式,可設為不變、增1、增2或減1。由于采用按字節的Block模式向Radio發送數據,因此數據源地址選擇增1變化,而數據目標地址則一直為寄存器RFD的地址0xDFD9,故設為不變。IRQMASK位用于設置是否在DMA數據傳輸完后發中斷信號。本例中設為0,即禁止DMA中斷。M8是按字節傳輸時的數據寬度,設為0表示8位傳輸,為1時表示只傳輸字節的低7位。本例中設為0。PRIORITY用于優先級設置,本例中設為2,即中等優先級。
DMA描述設置好后,通過設置寄存器DMAARM和RMREQ的位來準備相應的DMA通道以及啟動這個通道上數據塊的傳輸。在啟動DMA數據傳輸之前,將當前數據幀的長度、目標節點地址、源節點地址、標志字節通過直接寫寄存器RFD的方式寫入TXFIFO。這樣在啟動DMA傳輸后,完整的數據幀將被傳輸至TXFIFO。通過給CSP發送指令ISTXONCCA啟動TX傳輸。這就完成了一幀數據的發送。
數據接收的過程同樣需要設置系統工作頻率為32MHz,且應確保Rx工作在Tx相同的頻道上,并設置DMA通道。其中DMA的數據源為寄存器RFD,并將DMA觸發信號設為RADIO,即Radio接收到數據時觸發DMA。數據接收的程序流程如圖7所示。

圖7 數據接收程序流程圖Fig.7 The flow chart of Data reception
通過利用CC2430芯片對測溫系統的設計,我體會到ZigBee無線溫度傳感網絡的優越性及其廣闊的應用前景,CC2430芯片是真正意義上的SOC芯片,使得我們開發ZigBee無線傳感網絡會更加方便,產品開發周期會大大縮短。
[1] 李文仲,段朝玉.ZigBee無線網絡技術入門與實戰[M].北京:北京航空航天大學出版社,2007.
[2] 李文仲,段朝玉.ZigBee2006無線網絡與無線定位實戰[M].北京:北京航空航天大學出版社,2007.
[3] 馬永強,李靜強,馮立營.基于ZigBee技術的射頻芯片CC2430[J].單片機與嵌入式系統,2006(3):45-47.
[4] 王瑋,樊則賓.基于CC2430的無線溫度檢測終端的設計[J].電子工程師,2007(8):78-79.
[5] 夏恒星,馬維華.基于CC2430的無線傳感器網絡節點設計[J].集成電路應用,2007(5):47-48.