文獻標識碼: A
文章編號: 0258-7998(2015)06-0035-03
中文引用格式:盧興森,陳蘇婷,施佳馳.基于北斗和ZigBee的農(nóng)田數(shù)據(jù)采集與傳輸[J].電子技術(shù)應用,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)代化理念引領(lǐng)農(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)總體構(gòu)架設計
基于北斗和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)的總體架構(gòu)。
其中北斗模塊包含北斗指揮機和北斗用戶機,北斗指揮機與上位機相連,接收來自下屬用戶機傳來的數(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相關(guān)模塊需植入TI公司的Z-STACK協(xié)議,PHY層、MAC層、應用層等相關(guān)層程序需修改重寫,以實現(xiàn)硬件支持與功能實現(xiàn)。另外,由于北斗短報文通信的傳輸量有限,所以要在ZigBee協(xié)調(diào)模塊和嵌入式顯示上位機分別實現(xiàn)數(shù)據(jù)的壓縮與解壓??紤]到采集到的1幀數(shù)據(jù)的重復性較大,這里用到了BWT算法、改進型RLE算法和靜態(tài)Huffman算法相結(jié)合對數(shù)據(jù)進行壓縮。
3.1 相關(guān)壓縮算法
傳輸數(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相結(jié)合,支持對數(shù)據(jù)進行圖表查詢。上位機查詢界面如圖6所示。
4 系統(tǒng)測試結(jié)果與分析
為了驗證數(shù)據(jù)的傳輸性能,人為對傳感器進行了溫度、濕度、風力等參數(shù)進行了的變化,上位機在延時約1 min左右以后可以靈敏地反應出變化。
另外,為了對本系統(tǒng)的北斗傳輸數(shù)據(jù)壓縮效率進行驗證,進行了多次驗證實驗,隨機挑選了幾組典型數(shù)據(jù)驗證實驗結(jié)果,如表1所示。從實驗結(jié)果上來看,算法實現(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)技術(shù)應用需求評價與對策研究[J].南京郵電大學學報(社會科學版),2011,13(3):25-41.
[5] 鐘堅.中國5年內(nèi)建成本土GPS—北斗[J].鳳凰周刊,2010,354(5):50-51.