摘 要: 詳細闡述了ZigBee技術及其應用,提出了一種基于ZigBee技術的無線溫度采集系統的方案。針對所提方案設計了系統的硬件電路及相關軟件,并通過實驗證明了方案的可行性及正確性。
關鍵詞: ZigBee;DS18B20;CC2430;2.4 GHz
在人們日常的生產生活中,經常需要通過傳感器將一些物理量,如溫度、濕度、光照度等非電量轉變成電量,然后通過傳輸線傳輸到主機進行數據處理,再產生相應的控制信號。工業中的傳輸線通常采用的是現場總線,如CAN總線等。但是在一些場合采用這種有線介質作為傳輸線并不是最理想的方案。比如一個大型糧倉或蔬菜大棚要實現多點的溫度采集時,按照有線傳輸方案需要從各個傳感器節點連接很多且復雜的傳輸線到主機,蔬菜大棚需要保持一定的溫濕度,長期下來會對傳輸線造成腐蝕、損壞,從而影響整個系統的正常工作。此外,多點溫度采集系統所傳輸的數據量并不大,且對數據傳輸速率的要求也不高,所以在這種情況下采用無線方式進行信號的采集傳輸是十分理想的。
當前主要的無線技術有WiFi、Bluetooth、UWB、NFC以及紅外等。采用紅外技術應用于傳感器裝置上的缺陷是:要求傳輸雙方必須在可見范圍內而且是定向傳輸,中間不能有障礙物否則會影響數據傳輸質量。而其他無線技術的主要問題是開發成本過高,適用面較窄。
ZigBee是一種短距離、架構簡單、低功耗和低傳輸速率的無線通信技術,工作頻率為2.4 GHz免費頻段,其傳輸距離一般在幾十米范圍內,數據傳輸速率為250 Kb/s。ZigBee可以基于協議棧組成網絡實現各個節點的數據傳輸,并采用了碰撞避免機制,信息在整個ZigBee網絡中通過自動路由的方式進行傳輸,保證了信息的安全性。Zigee技術既解決了傳輸的可靠性問題,又因為其傳輸功耗低,傳輸采用免費頻段等因素,使其降低了成本[1]。
1 系統方案
當系統組成1個ZigBee網絡時,根據實際情況來確定網絡拓撲結構。網絡拓撲結構關系到網絡成本、網絡維護的難易、網絡可靠性以及網絡穩定性。ZigBee基本的網絡拓撲結構有如下幾種:星型網絡、樹型網絡以及網型網絡[1-3]。網絡拓撲結構如圖1所示。
網絡中存在3種類型的節點:子節點(RFD)、路由節點(FFD)、主節點(COORDINATOR)。子節點與傳感器連接,散布在現場中,主要作用是采集信號并傳輸;路由節點的作用是擴展網絡深度與廣度,星型網絡中若對網絡深度廣度要求不高,可以省略路由節點;主節點與上位監控PC機連接,主要作用是建立網絡,處理各個子節點及路由節點發送的信息,相當于有線網絡中的服務器[2-3]。
本文采用了星型拓撲結構設計了一種基于無線ZigBee技術的溫度系統,系統總體方案框圖如圖2所示。
系統的工作過程為:主節點先建立網絡,等待各自節點的加入;子節點加入網絡后,把溫度傳感器采集到的溫度數據打包并攜帶自己的地址通過無線形式傳輸給主節點;主節點接收到數據包后進行數據處理,并將溫度信息以及子節點地址等有效信息存儲并顯示在監控界面上。
2 硬件設計
系統采用Chipcon公司的CC2430芯片,CC2430是一款片上系統芯片,內部帶有豐富的系統資源,只需要很少的外圍部件就能實現接收或發送信號功能[2,4]。系統的傳感器采用DS18B20型溫度傳感器。DS18B20數字溫度傳感器是DALLAS公司生產的1-Wire,即單總線器件,具有線路簡單,體積小的特點[5]。系統的硬件電路圖如圖3、圖4所示。
圖3所示是由CC2430芯片及一些外圍器件組成的ZigBee節點的典型電路,子節點與主節點均采用了這種電路結構。主節點是由CC2430電路和1個MAX3232接口電路組成,MAX3232接口電路是為了實現主節點與上位監控PC機之間的通信;子節點是由CC2430電路和DS18B20溫度傳感器組成,實現各點溫度的采集;由于本采集系統工作的范圍不大,所以沒有設計路由節點。ZigBee節點的實物圖如圖5所示,中間為CC2430,前端為一個PCB天線。
3 軟件設計
系統中的主節點和子節點在硬件結構上差異并不大,主要是通過程序的編寫實現主子節點各自不同的功能。程序主要分為主節點程序和子節點程序。主節點首先形成網絡等待各個子節點的加入,網絡形成后接收來自各子節點的數據并加以處理,再與上位PC機進行通信;子節點上電后尋找可加入的網絡,成功加入后開始采集溫度,并將溫度信息以及自身網絡地址打包并通過無線形式傳給主節點,實現星型無線網絡的功能。部分重要程序段如下,并對無線網絡的形成及數據傳輸等功能實現加以解釋說明。
# ifdef COORDINATOR //若節點定義為COORDINATOR
aplFormNetwork(); //格式化1個新網絡
while(apsBusy()){apsFSM();} //延時等待
conPrintROMString(“Network formed,waiting for RX\n”);
Print(“Network formed!”); //顯示網絡形成
Print(“ZigBee COORDINATOR”);
Print(“Waiting for nodes”)
# else //若不是COORDINATOR則認為是RFD節點
do
{aplJoinNEtwork(); //加入網絡函數
While(apsBusy()) {apsFSM();} //等待加入網絡
if(aplGetStatus()==STATUS_SUCCESS)
{
conPrintROMString(“Network Join succeeded!/n”);
conPrintROMString(“My ShortAddress is:”);
conPrintUINT16(aplGetMyShortAddress());
//串口輸出網絡地址
conPrintLADDR(aplGetParentLongAddress());
//串口輸出物理地址
}
else
{
conPrintROMString(“Network Join Failed!Waiting, then try again”);
}
# endif
# ifdef RFD //子節點函數
{
dstADDR.saddr=0;
//RFD發送數據的目的地址為網絡主節點
aplSendMSG(APS_DSTMODE_SHORT,
&dstADDR, //目的地址
&payload[0], //數據存儲區
apsGenTSN(),
FALSE); //無需APS層應答
}
#endif
通過比較ZigBee以及其他幾種無線傳輸方式的優缺點,本文提出了基于ZigBee技術的無線溫度采集系統的整體方案,并設計實現了系統的硬件電路及相應程序。系統運行穩定,數據傳輸準確性高,能夠達到預期所設想的目標。
參考文獻
[1] IEEE 802.15.4 standard specification, standards. IEEE. org/getieee802/.
[2] 李文仲,段朝玉.ZigBee無線網絡技入門與實踐[M].北京:北京航空航天出版社,2007.
[3] 夏蕓.CC1010芯片在無線傳感器網絡節點設計中的應用[J].計算機與自動化技術,2005,31(5).
[4] Chipcon Products from Texas Instruments. CC2430 Datasheet.
[5] DS18B20 Programmable Resolution Wire Digital Termometer. www. dalsemi. com.