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