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