文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)06-0035-03
中文引用格式:盧興森,陳蘇婷,施佳馳.基于北斗和ZigBee的農(nóng)田數(shù)據(jù)采集與傳輸[J].電子技術(shù)應(yīng)用,2015,41(06):35-37+41.
0 引言
2010年底,,我國(guó)人均耕地面積已不足0.1公頃[1],,農(nóng)田又由于各種原因不便于人員進(jìn)行直接管理。而北斗和無(wú)線傳感網(wǎng)是轉(zhuǎn)變農(nóng)業(yè)生產(chǎn)方式的重要載體[2],。從2003年開(kāi)始, 中國(guó)已經(jīng)開(kāi)始研發(fā)基于北斗衛(wèi)星的綜合信息服務(wù)平臺(tái)[3],,用現(xiàn)代化理念引領(lǐng)農(nóng)業(yè)系統(tǒng)[4]。目前北斗已具備定位,、授時(shí),、報(bào)文等功能[5]。因此,,在基于北斗導(dǎo)航系統(tǒng)短報(bào)文通信和ZigBee網(wǎng)絡(luò)的基礎(chǔ)上設(shè)計(jì)的北斗實(shí)時(shí)農(nóng)田采集與傳輸系統(tǒng)可以很好地解決以上問(wèn)題,,節(jié)約人力資源的同時(shí),又提高了農(nóng)田生產(chǎn)效率,。另外由于北斗單次通信量為78.5 B,,本系統(tǒng)采用多種壓縮算法融合實(shí)現(xiàn)數(shù)據(jù)高效無(wú)損傳輸。
1 系統(tǒng)總體構(gòu)架設(shè)計(jì)
基于北斗和ZigBee的農(nóng)田數(shù)據(jù)采集與傳輸系統(tǒng)由ZigBee傳感終端節(jié)點(diǎn),、ZigBee協(xié)調(diào)模塊,、北斗模塊、嵌入式Linux顯示上位機(jī)四部分組成,。ZigBee傳感終端節(jié)點(diǎn)采集來(lái)自傳感器的數(shù)據(jù),,并將數(shù)據(jù)通過(guò)ZigBee星型網(wǎng)絡(luò)傳至ZigBee協(xié)調(diào)模塊,ZigBee協(xié)調(diào)模塊對(duì)數(shù)據(jù)進(jìn)行壓縮打包添加北斗頭協(xié)議后通過(guò)北斗模塊將數(shù)據(jù)傳至上位機(jī)實(shí)時(shí)顯示,。圖1是基于北斗和ZigBee的農(nóng)田數(shù)據(jù)采集與傳輸系統(tǒng)的總體架構(gòu),。
其中北斗模塊包含北斗指揮機(jī)和北斗用戶(hù)機(jī),,北斗指揮機(jī)與上位機(jī)相連,接收來(lái)自下屬用戶(hù)機(jī)傳來(lái)的數(shù)據(jù),;用戶(hù)機(jī)與ZigBee協(xié)調(diào)模塊相連,,接收來(lái)自ZigBee協(xié)調(diào)模塊傳來(lái)的數(shù)據(jù)。用戶(hù)機(jī)可有多個(gè),,分布在跨度較大的農(nóng)田區(qū)塊,,方便實(shí)現(xiàn)一臺(tái)上位機(jī)實(shí)時(shí)采集顯示多塊農(nóng)田數(shù)據(jù),以追星者CDT-442型用戶(hù)機(jī)為例,,一臺(tái)指揮機(jī)最多可控制下屬99臺(tái)用戶(hù)機(jī),。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 ZigBee傳感終端節(jié)點(diǎn)的硬件設(shè)計(jì)
ZigBee終端節(jié)點(diǎn)擔(dān)負(fù)著與傳感器設(shè)備連接、接收傳感器的模擬信號(hào)并把其轉(zhuǎn)換為數(shù)字信號(hào)和發(fā)射數(shù)據(jù)信號(hào)至ZigBee協(xié)調(diào)節(jié)點(diǎn)的任務(wù),。為了完成數(shù)模轉(zhuǎn)換的任務(wù)(部分傳感器輸出數(shù)字信號(hào),,可直接接入I/O口或UART口),使用了AD7810芯片,,為該芯片接的電壓與CC2530同為3.3 V,,VREF也接上3.3 V電壓,則其最大轉(zhuǎn)換電壓也為3.3 V,,DOUT腳為完成模數(shù)轉(zhuǎn)換后的串行數(shù)據(jù)輸出口,,SCLK腳為輸入時(shí)鐘腳,VIN+和VIN-為傳感器接線口,,本系統(tǒng)所用傳感器輸出電流一般為4~25 mA,,所以傳感器接入時(shí)需接上一個(gè)150 ?贅左右的電阻。由于一個(gè)節(jié)點(diǎn)需接多個(gè)傳感器(該節(jié)點(diǎn)只需3個(gè)),,為了工程易于擴(kuò)展,,預(yù)留接口,所以使用了一個(gè)74LS151芯片來(lái)進(jìn)行選擇性定時(shí),,每15 s輪轉(zhuǎn)選擇一個(gè)采集數(shù)據(jù)來(lái)源選通,。由于本電路只需要3選1,所以接口C拉低,,默認(rèn)高4位輸入不接通,若工程有監(jiān)測(cè)種類(lèi)擴(kuò)展需要,,可作適時(shí)更改。需要注意的是AD7810的腳CONVERT為轉(zhuǎn)換啟動(dòng)輸入信號(hào),,配合74LS151的輪轉(zhuǎn)選通功能,,可啟動(dòng)自動(dòng)低功耗模式開(kāi)啟間斷休眠來(lái)實(shí)現(xiàn)節(jié)能。另外CC2530使用16 MHz和32 MHz晶振模式,,其中16 MHz晶振除自身使用外還可供給AD7810輸入時(shí)鐘使用,,32 MHz在自身向協(xié)調(diào)器發(fā)射RF信號(hào)時(shí)使用。圖2為ZigBee傳感終端節(jié)點(diǎn)的硬件設(shè)計(jì)圖,。
2.2 ZigBee協(xié)調(diào)模塊的硬件設(shè)計(jì)
ZigBee協(xié)調(diào)模塊是ZigBee中的協(xié)調(diào)節(jié)點(diǎn),,除了擔(dān)負(fù)著組建網(wǎng)絡(luò),、允許其他節(jié)點(diǎn)加入與退出、分配ID等基本任務(wù)外,,還要將接收到的數(shù)據(jù)進(jìn)行預(yù)處理后打包壓縮,,添加北斗頭協(xié)議后發(fā)送到北斗模塊。由于北斗通信的最小通信間隔為1 min,,單次發(fā)送數(shù)據(jù)量相對(duì)也不大,,所以CC2531芯片完全可以滿(mǎn)足要求,不必采用其他處理芯片,。其硬件框圖如圖3所示。
2.3 嵌入式Linux顯示上位機(jī)的硬件設(shè)計(jì)
上位機(jī)由UART串口連接至北斗指揮機(jī),,上位機(jī)芯片采用三星公司的S3C2440,,附帶7英寸觸摸屏。
3 系統(tǒng)軟件設(shè)計(jì)
整個(gè)系統(tǒng)的軟件由ZigBee傳感終端節(jié)點(diǎn)的軟件,、ZigBee協(xié)調(diào)模塊的軟件和嵌入式Linux顯示上位機(jī)的軟件三部分組成,。ZigBee相關(guān)模塊需植入TI公司的Z-STACK協(xié)議,PHY層,、MAC層,、應(yīng)用層等相關(guān)層程序需修改重寫(xiě),以實(shí)現(xiàn)硬件支持與功能實(shí)現(xiàn),。另外,,由于北斗短報(bào)文通信的傳輸量有限,所以要在ZigBee協(xié)調(diào)模塊和嵌入式顯示上位機(jī)分別實(shí)現(xiàn)數(shù)據(jù)的壓縮與解壓,??紤]到采集到的1幀數(shù)據(jù)的重復(fù)性較大,這里用到了BWT算法,、改進(jìn)型RLE算法和靜態(tài)Huffman算法相結(jié)合對(duì)數(shù)據(jù)進(jìn)行壓縮,。
3.1 相關(guān)壓縮算法
傳輸數(shù)據(jù)的壓縮流程如圖4所示,具體流程為:
(1)將經(jīng)過(guò)數(shù)據(jù)預(yù)處理的一幀數(shù)據(jù)T在末端插入#,,并進(jìn)行每次移位1次的循環(huán)右移,,得到一個(gè)矩陣T#,再按T#矩陣每行的首字母字典排序得到M矩陣,。在這里可以定義M矩陣的第一列為F,,最后一列為L(zhǎng)。則L為經(jīng)過(guò)BWT變換的字符串,。最后這里需要建立一個(gè)L-M Mapping(LF)的輔助公式如下:
這里D[L[i]]指的是D代表的字符出現(xiàn)在L列最后出現(xiàn)的位置i,,Di指的是D代表的字符在L[1,i]中出現(xiàn)的次數(shù),。
(2)上述的字符串經(jīng)過(guò)BWT變換后,,重復(fù)數(shù)據(jù)會(huì)聚集再一起,,將上述字符串再通過(guò)改進(jìn)型RLE編碼壓縮,由于采集的一幀數(shù)據(jù)有限,,字符重復(fù)個(gè)數(shù)不可能超過(guò)0xFF,,所以單個(gè)重復(fù)數(shù)據(jù)編碼為2個(gè)字符,高字節(jié)不采用傳統(tǒng)的2個(gè)字符,,而只采用1個(gè)字符,,連續(xù)不重復(fù)字符共用一個(gè)高字節(jié)C1。
(3)根據(jù)自設(shè)的靜態(tài)Huffman編碼對(duì)數(shù)據(jù)進(jìn)行變長(zhǎng)編碼,。最后,,整理數(shù)據(jù)并添加北斗協(xié)議,通過(guò)北斗用戶(hù)機(jī)短報(bào)文通信將數(shù)據(jù)發(fā)出去,。傳輸數(shù)據(jù)的壓縮流程圖如圖4所示,。
傳輸數(shù)據(jù)的解壓過(guò)程為:
(1)將接收數(shù)據(jù)去掉北斗頭協(xié)議后,根據(jù)對(duì)應(yīng)的Huffman碼表通過(guò)Huffman解碼將數(shù)據(jù)解碼出來(lái),。
(2)根據(jù)RLE編碼的原理,,去掉數(shù)據(jù)中的高字節(jié)C1,根據(jù)C1數(shù)值的大小,,逐個(gè)恢復(fù)出各個(gè)重復(fù)數(shù)據(jù),,直至恢復(fù)出來(lái)原始數(shù)據(jù)串的長(zhǎng)度,恢復(fù)出來(lái)的數(shù)據(jù)串即是上述壓縮流程中的L,。
(3)目標(biāo)是通過(guò)BWT反變換恢復(fù)出原數(shù)據(jù)T,,恢復(fù)T的算法為:
其中s=u-1,…,,1,。這里u為T(mén)加#后的長(zhǎng)度,T[s]為L(zhǎng)[i](即L中的第i個(gè)字符)在T中的位置s,,需恢復(fù)所有T[s],,而T即為最終的原始數(shù)據(jù)串。
3.2 ZigBee傳感終端節(jié)點(diǎn)的軟件設(shè)計(jì)
終端傳感節(jié)點(diǎn)的主要任務(wù)是數(shù)據(jù)采集,、網(wǎng)絡(luò)連接等,。傳感數(shù)據(jù)的發(fā)送采用周期性的數(shù)據(jù)發(fā)送,各節(jié)點(diǎn)采集周期都略小于1 min,。并采用循環(huán)掃描的方式讀取每一個(gè)節(jié)點(diǎn)的每個(gè)傳感器信息,。需要注意的是由于是周期性地采集數(shù)據(jù),軟件上可以實(shí)現(xiàn)間歇性使ZigBee傳感節(jié)點(diǎn)處于休眠狀態(tài),,減小功耗,。
3.3 ZigBee協(xié)調(diào)模塊的軟件設(shè)計(jì)
ZigBee協(xié)調(diào)模塊是本系統(tǒng)的核心模塊,其作為整個(gè)星型組網(wǎng)的協(xié)調(diào)器,,擔(dān)負(fù)著網(wǎng)絡(luò)建立與網(wǎng)絡(luò)管理以及數(shù)據(jù)處理的作用,。首先進(jìn)行系統(tǒng)初始化,,包括對(duì)協(xié)議棧的物理層、MAC層和I/O端,、串口等進(jìn)行初始化,,接著協(xié)調(diào)器建立網(wǎng)絡(luò)并等待節(jié)點(diǎn)加入。當(dāng)收到節(jié)點(diǎn)加入請(qǐng)求后,,對(duì)節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)登記,。接著判斷是否收到數(shù)據(jù),收到數(shù)據(jù)后即可對(duì)數(shù)據(jù)進(jìn)行壓縮,、添加北斗通信協(xié)議處理,,最后通過(guò)北斗用戶(hù)機(jī)發(fā)送出去。整個(gè)軟件的實(shí)現(xiàn)流程如圖5所示,。
3.4 嵌入式Linux顯示上位機(jī)的軟件設(shè)計(jì)
嵌入式顯示上位機(jī)是本系統(tǒng)的終端數(shù)據(jù)顯示模塊,,其功能主要是實(shí)現(xiàn)數(shù)據(jù)的解壓縮去頭協(xié)議后恢復(fù)數(shù)據(jù)并實(shí)時(shí)顯示與數(shù)據(jù)儲(chǔ)存和查詢(xún)。為了便于攜帶性和實(shí)現(xiàn)更好的人機(jī)交互,,顯控終端使用ARM處理器,所用芯片型號(hào)為S3C2440,,運(yùn)行嵌入式Linux系統(tǒng),,軟件界面采用QT4.85開(kāi)發(fā)。為了方便歷史數(shù)據(jù)的查詢(xún),,應(yīng)用程序使用mysql數(shù)據(jù)庫(kù),,數(shù)據(jù)庫(kù)與QWT相結(jié)合,支持對(duì)數(shù)據(jù)進(jìn)行圖表查詢(xún),。上位機(jī)查詢(xún)界面如圖6所示,。
4 系統(tǒng)測(cè)試結(jié)果與分析
為了驗(yàn)證數(shù)據(jù)的傳輸性能,人為對(duì)傳感器進(jìn)行了溫度,、濕度,、風(fēng)力等參數(shù)進(jìn)行了的變化,上位機(jī)在延時(shí)約1 min左右以后可以靈敏地反應(yīng)出變化,。
另外,,為了對(duì)本系統(tǒng)的北斗傳輸數(shù)據(jù)壓縮效率進(jìn)行驗(yàn)證,進(jìn)行了多次驗(yàn)證實(shí)驗(yàn),,隨機(jī)挑選了幾組典型數(shù)據(jù)驗(yàn)證實(shí)驗(yàn)結(jié)果,,如表1所示。從實(shí)驗(yàn)結(jié)果上來(lái)看,,算法實(shí)現(xiàn)了數(shù)據(jù)的高效無(wú)損壓縮,,數(shù)據(jù)量都?jí)嚎s到了78.5 B以下,可以實(shí)現(xiàn)北斗模塊一次一幀發(fā)送,,顯著提高發(fā)送效率,。
參考文獻(xiàn)
[1] 顏玉華.耕地紅線是我國(guó)糧食安全的生命線[J].調(diào)研世界,,2011(4):29-33.
[2] 孫玉文.基于無(wú)線傳感器網(wǎng)絡(luò)的農(nóng)田環(huán)境監(jiān)測(cè)系統(tǒng)研究與實(shí)現(xiàn)[D].南京:南京農(nóng)業(yè)大學(xué),2013.
[3] 王莉,,王澤民.北斗系統(tǒng)在農(nóng)田墑情和珠峰登頂測(cè)量中的應(yīng)用[J].衛(wèi)星與網(wǎng)絡(luò),,2006(3):54-57.
[4] 儲(chǔ)成祥,戴嘯濤,,楊曉冬.我國(guó)農(nóng)業(yè)信息化中的物聯(lián)網(wǎng)技術(shù)應(yīng)用需求評(píng)價(jià)與對(duì)策研究[J].南京郵電大學(xué)學(xué)報(bào)(社會(huì)科學(xué)版),,2011,13(3):25-41.
[5] 鐘堅(jiān).中國(guó)5年內(nèi)建成本土GPS—北斗[J].鳳凰周刊,,2010,,354(5):50-51.