許海燕
(淮陰師范學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇淮安 223300)
基于Zigbee的分布式溫度采集系統(tǒng)的設(shè)計(jì)
許海燕
(淮陰師范學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇淮安 223300)
無線數(shù)據(jù)采集是Zigbee的重要應(yīng)用領(lǐng)域,但對(duì)節(jié)點(diǎn)的地址管理和重組,以及電源管理一直比較敏感.設(shè)計(jì)了一種基于芯片CC2430和Z-Stack協(xié)議棧的多點(diǎn)溫度采集系統(tǒng),可對(duì)節(jié)點(diǎn)進(jìn)行動(dòng)態(tài)管理,新設(shè)計(jì)的電源管理方案延長了電池的使用壽命.本方案的特點(diǎn)在于組網(wǎng)方便,重組能力強(qiáng),節(jié)點(diǎn)電池壽命長.
Zigbee;溫度采集;CC2430;嵌入式系統(tǒng)
2004 年Zigbee聯(lián)盟發(fā)布了基于802.15.4協(xié)議的Zigbee協(xié)議,其優(yōu)點(diǎn)是功耗低,容量大,廣泛應(yīng)用于自動(dòng)控制、數(shù)據(jù)采集等領(lǐng)域.由Zigbee組網(wǎng)的無線傳感器,多個(gè)傳感器之間可相互協(xié)調(diào)實(shí)現(xiàn)通信,以接力的方式通過無線電波將數(shù)據(jù)從一個(gè)傳感器傳到另一個(gè)傳感器,通信效率非常高.
在實(shí)際生產(chǎn)中,常需要對(duì)溫度進(jìn)行多點(diǎn)測(cè)控,溫度測(cè)控需要傳輸?shù)臄?shù)據(jù)量相對(duì)較小,實(shí)時(shí)性要求較低,但一些傳統(tǒng)方法如采用485總線布網(wǎng)[1],或采用wifi無線組網(wǎng)[2]等方式,存在布點(diǎn)不方便,局限性大,不經(jīng)濟(jì)和對(duì)電池要求過高等缺點(diǎn).本文采用了TI公司的片上系統(tǒng)CC2430作為主控芯片,組網(wǎng)采用了Zigbee樹形網(wǎng)絡(luò),使用分布式地址分配方案和動(dòng)態(tài)電源管理,實(shí)現(xiàn)了溫度數(shù)據(jù)的分布式采集,實(shí)踐效果良好.
1.1 測(cè)溫基本原理
CC2430自身帶有溫度傳感器,測(cè)量范圍可達(dá)-40℃~120℃,設(shè)置片內(nèi)14 bits的ADC轉(zhuǎn)換器的數(shù)據(jù)源為溫度傳感器就可以測(cè)量芯片溫度,但由于不能直接測(cè)量環(huán)境溫度,應(yīng)用受到了限制[3].本案采用了外接溫度傳感器的方法.溫度傳感器使用了DS18B20[4],該傳感器使用1-Wire總線,測(cè)量溫度范圍是-55℃~125℃,可在一根總線上并聯(lián)多個(gè)傳感器,采用多點(diǎn)測(cè)溫取平均方法測(cè)得的溫度更準(zhǔn)確.DS18B20采用外接供電方式,擴(kuò)展原理見圖1所示.
圖1中CC2430擴(kuò)展了P2-0,沒有接上拉電阻,因?yàn)镃C2430的 I/O口可以通過特殊功能寄存器P2INP設(shè)置為上拉方式,設(shè)置P2-0引腳需要設(shè)置兩個(gè)比特位,分別是PDUP2和MDP2-0.PDUP2是P2的上拉/下拉選擇,0表示上拉,1表示下拉;MDP2-0是P2-0的I/O的輸入模式,0表示上拉/下拉,1表示三態(tài).
1.2 中心節(jié)點(diǎn)與上位機(jī)的通信設(shè)計(jì)
溫度采集網(wǎng)中的中心節(jié)點(diǎn)擔(dān)負(fù)著網(wǎng)關(guān)的任務(wù),是數(shù)據(jù)的匯聚節(jié)點(diǎn),CC2430自帶UART口,通過簡(jiǎn)單的電平轉(zhuǎn)換就可以和PC通信,但現(xiàn)在生產(chǎn)的筆記本大多不帶RS232串口,因此需要外擴(kuò)一個(gè)UART和USB的轉(zhuǎn)換芯片,本設(shè)計(jì)使用了CP2102芯片,擴(kuò)展原理圖[5]如圖2所示.
圖2 CC2430擴(kuò)展USB接口
圖1 CC2430擴(kuò)展DS18B20原理圖
當(dāng)CP2102通過USB接到電腦里,需要安裝USB→COM驅(qū)動(dòng)程序,將USB口虛擬成COM串口,通過對(duì)COM口的操作可實(shí)現(xiàn)與CC2430的通信.上位機(jī)程序采用Visual Studio 2008 VB.NET編寫,設(shè)計(jì)了COM串口讀寫類,它封裝了.NET組件System.IO.Ports.SerialPort,可以非常方便對(duì)COM串口進(jìn)行讀寫,實(shí)現(xiàn)對(duì)Zigbee節(jié)點(diǎn)的控制.
Zigbee網(wǎng)絡(luò)中共有3種節(jié)點(diǎn):Zigbee協(xié)調(diào)器、Zigbee路由節(jié)點(diǎn)和Zigbee終端設(shè)備.PAN協(xié)調(diào)器一般網(wǎng)絡(luò)的中心節(jié)點(diǎn),起著網(wǎng)絡(luò)控制和網(wǎng)關(guān)的作用,為減少網(wǎng)絡(luò)時(shí)延,一般不執(zhí)行溫度采集功能.路由節(jié)點(diǎn),負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā)和路由發(fā)現(xiàn)的任務(wù),一般它也執(zhí)行溫度采集功能.終端節(jié)點(diǎn)沒有路由功能,負(fù)責(zé)溫度數(shù)據(jù)的采集.3種節(jié)點(diǎn)的功能CC2430都可以擔(dān)任,只是在編譯時(shí)選擇不同的編譯選項(xiàng)就可以生成相應(yīng)的下載軟件.
2.1 Zigbee地址分配
TI公司在其網(wǎng)站上免費(fèi)提供了實(shí)現(xiàn)zigbee的Z-STACK協(xié)議棧,各層都是通API函數(shù)提供的,用戶可以根據(jù)需要裁剪,開發(fā)出自己的產(chǎn)品.本系統(tǒng)也采用了Z-STACK作為zigbee協(xié)議棧,網(wǎng)絡(luò)拓?fù)洳捎么貥浣Y(jié)構(gòu),地址自動(dòng)分配.網(wǎng)絡(luò)的建立過程[6]如下:
1)PAN協(xié)調(diào)器啟動(dòng)后選擇一個(gè)新的PAN,然后向鄰近設(shè)備廣播信標(biāo)幀.
2)鄰近的設(shè)備收到信標(biāo)幀后便申請(qǐng)加入該個(gè)域網(wǎng),PAN協(xié)調(diào)器進(jìn)入應(yīng)答和必要的驗(yàn)證,同時(shí)把該設(shè)備作為子設(shè)備.新入網(wǎng)的路由器開始廣播信標(biāo),遇到終端節(jié)點(diǎn).
3)新加入的設(shè)備將其父節(jié)點(diǎn)加到自己鄰居列表中,并且發(fā)送周期性信標(biāo)幀,以增加新網(wǎng)絡(luò)節(jié)點(diǎn).
4)NWK采用分布式地址分配方案,此時(shí)Z-stack的NIB屬性nwkUseTreeAlloc的值為true,整個(gè)網(wǎng)絡(luò)地址是唯一的,除網(wǎng)絡(luò)協(xié)調(diào)
器節(jié)點(diǎn)外,其它節(jié)點(diǎn)的地址都由父設(shè)備分配.一個(gè)設(shè)備的所有子設(shè)備,最多可以有nwkMaxRouters個(gè)具有路由器功能的設(shè)備,其余預(yù)留給Zigbee終端設(shè)備.每個(gè)設(shè)備發(fā)送數(shù)據(jù)時(shí)可以設(shè)置最少的跳數(shù),即深度.Zigbee協(xié)調(diào)器自身的深度為0,其子設(shè)備深度是1,依次類推.設(shè) d為父節(jié)點(diǎn)的深度,每個(gè)父設(shè)備具有路由器功能的子設(shè)備分配的地址數(shù)[6]為:
圖3 Zigbee網(wǎng)絡(luò)拓?fù)浜偷刂贩峙?/p>
其中:cm表示父設(shè)備最多允許的子設(shè)備數(shù),lm表示網(wǎng)絡(luò)最大深度,Rm表示父設(shè)備的子設(shè)備中最多允許的路由節(jié)點(diǎn)數(shù).
父節(jié)點(diǎn)分配給首個(gè)路由子節(jié)點(diǎn)的地址為父節(jié)點(diǎn)地址加1,分配給第二個(gè)路由器子節(jié)點(diǎn)的地址為首個(gè)路由節(jié)點(diǎn)的地址+Cskip(d),依次類推.父節(jié)點(diǎn)為子節(jié)點(diǎn)終端設(shè)備分配的地址是連續(xù)的,父節(jié)點(diǎn)的第n個(gè)終端子節(jié)點(diǎn)的地址為:
其中:1≤n≤(Cm-Rm).
Zigbee網(wǎng)絡(luò)地址分配實(shí)例如圖3所示.圖3中 Cm為nwkMaxChildren=6;Rm為nwkMaxRouters=4;Lm為nwkMaxDepth=4.
2.2 節(jié)點(diǎn)的動(dòng)態(tài)入網(wǎng)和離網(wǎng)管理
Zigbee設(shè)備可以動(dòng)態(tài)加入網(wǎng)絡(luò),Zigbee網(wǎng)絡(luò)中的節(jié)點(diǎn)因?yàn)槟撤N原因暫時(shí)離開網(wǎng)絡(luò),成為孤立節(jié)點(diǎn).例如為節(jié)點(diǎn)更換電池,節(jié)點(diǎn)物理環(huán)境的改變等,都可能導(dǎo)致節(jié)點(diǎn)成為孤立節(jié)點(diǎn).
孤立節(jié)點(diǎn)加入網(wǎng)絡(luò)可以采用兩種方式加入網(wǎng)絡(luò),一種是主動(dòng)加入,如果它的近鄰表中存有原父節(jié)點(diǎn)的信息,可以直接向原父節(jié)點(diǎn)發(fā)送加入網(wǎng)絡(luò)的請(qǐng)求信息.如果父節(jié)點(diǎn)地址資源沒有用完,鏈路質(zhì)量符合通信要求,可以分配其地址同意入網(wǎng).如果原來的父節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)已經(jīng)用完,原來的父節(jié)點(diǎn)不可能再批準(zhǔn)它加入,這時(shí)孤立節(jié)點(diǎn)將嘗試以新節(jié)點(diǎn)身份加入網(wǎng)絡(luò).
新入網(wǎng)的節(jié)點(diǎn)首先掃描周圍找到的網(wǎng)絡(luò),查找有節(jié)點(diǎn)數(shù)沒有用完的節(jié)點(diǎn),并把它們存入自己的近鄰表中,保存的信息包括網(wǎng)絡(luò)號(hào),Zigbee版本和可加入的信息等.然后在近鄰表的選擇一個(gè)深度最小的節(jié)點(diǎn),向其發(fā)送請(qǐng)求加入的信息.如果近鄰表中找不到一個(gè)合適的節(jié)點(diǎn)能作為父節(jié)點(diǎn)時(shí),則表示入網(wǎng)失敗.發(fā)出的邀請(qǐng)如果失敗,新節(jié)點(diǎn)繼續(xù)查找近鄰表的下一個(gè)可選父節(jié)點(diǎn),直到遍歷完所有可能的待選父節(jié)點(diǎn),則表示加入失敗.如果發(fā)出的請(qǐng)求被同意,父節(jié)點(diǎn)會(huì)分配一個(gè)16位的網(wǎng)絡(luò)短地址,新的子節(jié)點(diǎn)可以通信了.
一個(gè)終端子節(jié)點(diǎn)可以請(qǐng)求自己離開網(wǎng)絡(luò),協(xié)調(diào)器或路由節(jié)點(diǎn)還可以向其子節(jié)點(diǎn)發(fā)送請(qǐng)求,請(qǐng)求其離開網(wǎng)絡(luò).在本案中的可視化環(huán)境中,設(shè)計(jì)了強(qiáng)迫節(jié)點(diǎn)退出網(wǎng)絡(luò)的命令,方便了采集點(diǎn)的管理.刪除節(jié)點(diǎn)時(shí),要把相關(guān)節(jié)點(diǎn)的近鄰表中的近鄰表項(xiàng)一并刪除,還可以要求被刪除的子節(jié)點(diǎn)一并刪除其子設(shè)備.刪除節(jié)點(diǎn)可能會(huì)導(dǎo)致孤立節(jié)點(diǎn)的產(chǎn)生或者節(jié)點(diǎn)重新入網(wǎng)的現(xiàn)象出現(xiàn).
無線傳感器一般應(yīng)用于特殊場(chǎng)合,電池更換往往比較麻煩,因此系統(tǒng)功耗設(shè)計(jì)和管理顯得更為重要.無線節(jié)點(diǎn)的功耗取決于多方面的因素,如數(shù)據(jù)采集量、距離、可靠性要求和系統(tǒng)的規(guī)模等.在上述因素不可改變的情況,設(shè)計(jì)合理的采集方式、挖掘芯片的節(jié)能特性顯得更為重要.
3.1 CC2430電源管理設(shè)計(jì)
CC2430有4種電源管理模式,分別是PM0、PM1、PM2、PM3,其中 PM0是全功能模式,PM3是最省電的模式.
PM0是全功能電源模式,電壓調(diào)節(jié)器處于工作狀態(tài),高速RC振蕩器HS-RCOSC或者32M外接振蕩器處于工作狀態(tài).當(dāng)芯片復(fù)位、睡眠定時(shí)器到或者外部有中斷申請(qǐng)喚醒系統(tǒng)時(shí),芯片都進(jìn)入PM0模式.PM 1模式下,上述兩個(gè)振蕩器都處于關(guān)閉狀態(tài),32.768 K的片內(nèi)RC振蕩器或者外置晶振被打開.PM 2模式下,芯片的數(shù)字工作核被關(guān)閉,系統(tǒng)只能32.768 K的時(shí)鐘下工作.PM 3模式下,芯片數(shù)字核也處于關(guān)閉態(tài),所有振蕩器都停止工作,此時(shí)只有復(fù)位或者有外部中斷申請(qǐng),芯片才進(jìn)入PM0電源模式.由于芯片處于無線工作狀態(tài),往往不太可能借助外部中斷使系統(tǒng)進(jìn)入全功能PM0模式.本案中設(shè)計(jì)了定時(shí)工作模式.系統(tǒng)進(jìn)行一次數(shù)據(jù)采集并上傳后,進(jìn)入節(jié)電模式PM 2,定時(shí)到后自動(dòng)喚醒再次進(jìn)行數(shù)據(jù)采集.這個(gè)工作模式可節(jié)省大量電力,對(duì)使用電池的采集點(diǎn)比較適合.如果需要實(shí)時(shí)遠(yuǎn)程控制,這個(gè)模式需要改進(jìn),因?yàn)樵谛菝咂陂g,芯片不會(huì)接收來自父節(jié)點(diǎn)的數(shù)據(jù).
CC2430芯片RF輸出功率是可編程的,通過 TXCTRLL寄存器可以設(shè)置發(fā)射功率大小,范圍是-25.2 dBm~0.6 dBm,工作電流相差1.8倍.如果能根據(jù)節(jié)點(diǎn)距離的遠(yuǎn)近和環(huán)境的不同,選取適當(dāng)?shù)墓β瘦敵?可以節(jié)省大量電能,對(duì)電池敏感的節(jié)點(diǎn)意義重大.本系統(tǒng)能夠根據(jù)節(jié)點(diǎn)的實(shí)際工作環(huán)境靈活改變輸出功率,延長了電池的使用時(shí)間,下面敘述其工作原理.
CC2430有一個(gè)內(nèi)置的接收信號(hào)強(qiáng)度指示器(RSSI),其數(shù)字值為8位有符號(hào)的二進(jìn)制補(bǔ)碼,可以從寄存器位RSSIL.RSSI-VAI讀出.RSSI值總是通過8個(gè)符號(hào)周期內(nèi)(128μs)取平均值得到.RSSI寄存器值RSSI.RSSI-VAI可以反映射頻接收引腳上收到信號(hào)能量的大小,設(shè)為P,其值可以下式表示:
式中:RSSI-OFFSET是一個(gè)誤差修正值,近似值為-45,該修正值的大小和天線的配置有關(guān),在一個(gè)系統(tǒng)中,這個(gè)值一般相同的.例如,從 RSSI寄存器中讀到的值是-20,那么 RF的輸入功率大約是-65 dBm.
接受信號(hào)強(qiáng)度會(huì)隨著距離的增加按正式遞減:
式中,n是信號(hào)傳播系數(shù),它和使用環(huán)境密切相關(guān),其值范圍一般在1.0~8.0之間;d是與發(fā)送者的距離,容量測(cè)出;A是距發(fā)送者1米時(shí)的信號(hào)強(qiáng)度,和天線配置有關(guān),一般可取和RSSI-OFFSET一樣的值.通過讀取接收信號(hào)的RSSI值,可以推出信號(hào)發(fā)送節(jié)點(diǎn)的發(fā)射功率大小,系統(tǒng)設(shè)置TXCTRLL為相近的值作為信號(hào)發(fā)送功率,節(jié)省了節(jié)點(diǎn)的入網(wǎng)時(shí)間.
3.2 電池監(jiān)控設(shè)計(jì)
對(duì)于使用電池的無線節(jié)點(diǎn),應(yīng)該能實(shí)時(shí)采集電池電量,提醒用戶更換電量不足的電池.利用CC2430內(nèi)置的A/D轉(zhuǎn)換器可以很方便地進(jìn)行電池電量的遠(yuǎn)程采集,便于電源管理.
檢測(cè)電池電壓時(shí),A/D轉(zhuǎn)換的參考電壓取自芯片內(nèi)部提供的標(biāo)準(zhǔn)電壓1.25 V,采樣電源引腳AVDD-SOC的1/3,得到數(shù)字量的3倍即是電池電壓.相關(guān)的寄存器有4個(gè):ADCCON1、ADCCON2、ADCH和ADCL.ADCH和ADCL用于保存轉(zhuǎn)換結(jié)果.本方案ADCCON2設(shè)置為0x3F,ADCCON1設(shè)置為0x73.ADCCON2的高兩位SREF[1:0]用于設(shè)置參考電壓源,4、5兩位SDIV[1:0]用于設(shè)置A/D轉(zhuǎn)換的精度,00表示8位分辯率,01表示10位分辯率,10表示12位分辯率,11表示14位分辯率.ADCCON2的低4位SCH[3:0]用于選擇采樣源,全1時(shí)表示選擇VDD/3.ADC控制寄存器ADCCON1的EOC位為高表示一次ADC轉(zhuǎn)換結(jié)束并且ADCH值被讀取.ADCCON1.ST位用來表示啟動(dòng)一次ADC轉(zhuǎn)換.當(dāng)該位被置位,并且ADCCON1.STSEL“?",且當(dāng)前ADC轉(zhuǎn)換器空閑,將啟動(dòng)一次新的ADC轉(zhuǎn)換.轉(zhuǎn)換結(jié)束后,該位自動(dòng)復(fù)位為0.ADCCON1.STSEL用于設(shè)置ADC轉(zhuǎn)換的啟動(dòng)方式,“11"表示啟動(dòng)條件為:ADCCON1.ST=“?".CC2430工作電壓最低可達(dá)2.0V,根據(jù)檢查結(jié)果可判斷電池是否要更換.
本文介紹了CC2430的測(cè)溫原理,片上資源的擴(kuò)展方案和分布式組網(wǎng)的節(jié)點(diǎn)功能和地址分配方案,提出了一種動(dòng)態(tài)節(jié)省電池電力的方法.采用休眠的方法來節(jié)省電力是一個(gè)經(jīng)濟(jì)的省電方法,但需要較強(qiáng)的實(shí)時(shí)控制時(shí)會(huì)有危險(xiǎn)性.當(dāng)數(shù)據(jù)采集后需要對(duì)節(jié)點(diǎn)進(jìn)行控制時(shí),如果恰好節(jié)點(diǎn)處于休眠態(tài),將影響控制效果.本方案改進(jìn)為:數(shù)據(jù)采集后上位機(jī)回復(fù)采集點(diǎn)是否需要控制,如果需要,節(jié)點(diǎn)進(jìn)入預(yù)警模式,節(jié)點(diǎn)將不進(jìn)入休眠,隨時(shí)偵聽來自上位機(jī)的控制命令.實(shí)際測(cè)試表明,基于CC2430和Zigbee協(xié)議的分布式溫度采集系統(tǒng)具有組網(wǎng)簡(jiǎn)便,節(jié)點(diǎn)重組能力強(qiáng),工作時(shí)間長等特點(diǎn).
[1] 宋曉偉,解大,舒曉瓊,等.基于新型485總線的分布式數(shù)據(jù)采集控制系統(tǒng) [J].機(jī)電一體化,2008(10):67-68.
[2] 曾歡,劉毅.嵌入式WiFi技術(shù)在溫室環(huán)境監(jiān)測(cè)系統(tǒng)中的應(yīng)用[J].林業(yè)機(jī)械與木工設(shè)備,2008,36(2):49-51.
[3] 蔡文晶,秦會(huì)斌,程春榮.基于CC2430片內(nèi)溫度傳感器的溫度監(jiān)測(cè)系統(tǒng)電子器件 [J].2010(6):295-297.
[4] 徐國榮,金濤.DSl8820構(gòu)成的單線多點(diǎn)滑油溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì) [J].裝備制造技術(shù),2008(12):187-189.
[5] 孫少偉,戴義保,章高琴.基于DSl8820組網(wǎng)測(cè)溫的研究[J].自動(dòng)化儀表,2006,27(10):1022-1024.
[6] 瞿雷,劉盛德,胡咸斌.Zigbee技術(shù)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007.
Abstract:Wireless data collection could be themain application domain while it is very susceptible to network address,topology reorganization and power.The design is described based on the chip of CC2430 and Z-Stack,which can collect distributed data.Network nodes can be managed dynamically.A novel management scheme of Zigbee RF power is put forth to prolong cell’s lifetimel,too.Experimental results show that the design can implement the remote data acquisition of temperatures,with merits of easy installation,better reorganization and low power.
Key words:zigbee;temperature collection;CC2430;DS18B20
[責(zé)任編輯:蔣海龍]
Design of Distributed Temperature Collection System Based on Zigbee
XU Hai-yan
(School of Computer Science and Technology,Huaiyin Normal University,Huaian Jiangsu 223300,China)
TP393
A
1671-6876(2010)06-0484-05
2010-09-15
許海燕(1970-),男,江蘇淮安人,講師,碩士,研究方向?yàn)榍度胧较到y(tǒng).