劉云莉
摘 要:針對(duì)傳統(tǒng)林業(yè)在監(jiān)測(cè)環(huán)境因子方面,體系不全面、力度和集成度不高等問(wèn)題,設(shè)計(jì)實(shí)現(xiàn)了一種基于A(yíng)RM和FPGA架構(gòu)的環(huán)境因子監(jiān)測(cè)系統(tǒng)終端,該終端采用Zynq-7000作為嵌入式處理器,并采用將多種功能的傳感器作為傳感器收集模塊,U-blox公司的NEO-6M作為GPS定位模塊,ME3760作為通信傳輸模塊,由終端把采集到的數(shù)據(jù)信息存儲(chǔ)與打包后經(jīng)過(guò)4G傳輸?shù)椒?wù)器端并保存至數(shù)據(jù)庫(kù)。從而實(shí)現(xiàn)了動(dòng)態(tài)、快捷、安全的監(jiān)測(cè)林業(yè)環(huán)境,并保存到數(shù)據(jù)庫(kù),這些數(shù)據(jù)對(duì)林業(yè)資源的評(píng)估具有重要的參考價(jià)值。
關(guān)鍵詞:智慧林業(yè);環(huán)境因子;監(jiān)測(cè);Zynq
中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2016)04-00-03
0 引 言
林業(yè)在環(huán)境方面的監(jiān)測(cè)一直面臨著很大的挑戰(zhàn),因?yàn)樗诳臻g分布上具有離散性和廣闊性的特點(diǎn),導(dǎo)致林業(yè)工作者一直面臨著動(dòng)態(tài)監(jiān)測(cè)困難、監(jiān)測(cè)周期長(zhǎng)、監(jiān)測(cè)數(shù)據(jù)精確度不高、監(jiān)測(cè)難度大等問(wèn)題?!爸腔哿謽I(yè)”的提出成為林業(yè)發(fā)展的新模式,它與傳統(tǒng)的“數(shù)字林業(yè)”技術(shù)和云計(jì)算、大數(shù)據(jù)等高新技術(shù)相結(jié)合[1,2],對(duì)林業(yè)環(huán)境資源進(jìn)行實(shí)時(shí)監(jiān)測(cè),及時(shí)準(zhǔn)確的掌握森林資源和環(huán)境的變化情況,已成為現(xiàn)代林業(yè)的發(fā)展方向。監(jiān)測(cè)終端使用的FPGA核心芯片是Xilinx公司生產(chǎn)的可擴(kuò)展處理平臺(tái)Zynq-7020,其內(nèi)部可嵌入Linux系統(tǒng)作為操作系統(tǒng),對(duì)多種傳感器(本設(shè)計(jì)以溫濕度傳感器為例)采集到的數(shù)據(jù)信息進(jìn)行處理與傳輸,達(dá)到對(duì)林業(yè)環(huán)境遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)的目的。
1 系統(tǒng)總體設(shè)計(jì)
面向智慧林業(yè)的環(huán)境因子監(jiān)測(cè)系統(tǒng)主要分為監(jiān)測(cè)終端與服務(wù)器端。服務(wù)器端包括信息查詢(xún)模塊和數(shù)據(jù)存儲(chǔ)模塊。監(jiān)測(cè)終端部分安置在被測(cè)林區(qū)內(nèi),其構(gòu)成分為數(shù)據(jù)采集、信息處理與數(shù)據(jù)傳輸三個(gè)模塊。從硬件層分析,采集數(shù)據(jù)模塊電路包括溫濕度等多種傳感器接入電路、高溫報(bào)警電路、GPS模塊接入電路;數(shù)據(jù)處理電路是終端處理與控制的中心板塊,其采用Zynq開(kāi)發(fā)板,置于開(kāi)發(fā)板的部件有FPGA模塊、DDR3緩存電路、時(shí)鐘電路、變壓電路等[3]。數(shù)據(jù)傳輸電路包含中興ME3760 4G模塊接入電路、以太網(wǎng)接入電路。當(dāng)林區(qū)終端上電工作后,采集模塊通過(guò)各種功能傳感器采集環(huán)境數(shù)據(jù),通過(guò)接口與轉(zhuǎn)接電路傳至開(kāi)發(fā)板上的FPGA處理器,當(dāng)溫度超過(guò)預(yù)設(shè)值終端時(shí)會(huì)有報(bào)警信號(hào)發(fā)送給FPGA處理器以實(shí)現(xiàn)溫度測(cè)控與報(bào)警,處理器調(diào)用驅(qū)動(dòng)程序與數(shù)據(jù)采集程序讀取并存儲(chǔ)數(shù)據(jù),同時(shí)調(diào)用傳輸協(xié)議將數(shù)據(jù)按照J(rèn)son協(xié)議打包成數(shù)據(jù)包,通過(guò)4G傳輸模塊傳輸?shù)椒?wù)器端顯示和存儲(chǔ)。系統(tǒng)總體功能框圖如圖1所示。
2 監(jiān)測(cè)終端硬件設(shè)計(jì)
2.1 數(shù)據(jù)處理模塊
該數(shù)據(jù)終端模塊選用Xilinx公司生產(chǎn)的ZC702開(kāi)發(fā)板,圖2(a)所示為開(kāi)發(fā)板的結(jié)構(gòu)圖,中間部位的Zynq-7000芯片由ARM(Processing System,PS)和FPGA(Processing Logic, PL)部分構(gòu)成。 Zynq-7000系列芯片每顆處理器都有雙核的CortexTM-A9處理器,都有完整的ARM處理子系統(tǒng),在芯片里集成了很多外設(shè)和內(nèi)核控制器,從而使得CortexTM-A9的內(nèi)核與可編程邏輯單元之間完全彼此獨(dú)立,ARM處理器的子系統(tǒng)可以獨(dú)立工作[4]。終端處理模塊除了主處理芯片外還有Flash芯片、DDR3芯片組、電源處理芯片、以太網(wǎng)接口、時(shí)鐘芯片等[5-7];圖2(b)所示為開(kāi)發(fā)板的實(shí)物圖。
2.2 數(shù)據(jù)采集模塊
終端使用SHT10監(jiān)測(cè)林業(yè)中的溫濕度環(huán)境因子,SHT10是一種數(shù)字傳感器,它內(nèi)部由四部分組成,分別是測(cè)濕元件、測(cè)溫元件、A/D轉(zhuǎn)換器和串行接口電路。在出廠(chǎng)前,每個(gè)SHT10都經(jīng)過(guò)精確度很高的濕度腔室校準(zhǔn),所以該類(lèi)傳感器響應(yīng)時(shí)間短、品質(zhì)卓越、抗干擾能力強(qiáng)、性?xún)r(jià)比高,廣泛應(yīng)用于工農(nóng)業(yè)溫濕度的測(cè)量[8]。它的DATA、SCK管腳與FPGA處理器GPIO接口相連。當(dāng)溫度超過(guò)預(yù)設(shè)溫度時(shí),便觸發(fā)主板上的報(bào)警信號(hào)。GPS模塊使用U-Blox公司的NEO-6M芯片定位,用UART(串口)與FPGA處理模塊的GPIO相連,最少可連接四根線(xiàn),信號(hào)線(xiàn)有RX、TX,分別接GPIO的TX、RX管腳,VCC接供電模塊的3.3 V~5.0 V電源接口,其具體連線(xiàn)如圖3所示。
2.3 傳輸模塊
ME3760 模塊由中興公司出產(chǎn),支持TD -LTE /TD –SCDMA,同時(shí)TD -LTE支持Band38,Band39,Band40, TD -SCDMA支持A,F(xiàn)頻段模式及GSMBand2,Band3,Band8。支持理論上下行數(shù)據(jù)最快傳輸速率為100 M/50 Mb/s [9]。同時(shí)模塊的接口符合國(guó)際接口標(biāo)準(zhǔn),所以終端選用這類(lèi)傳輸模塊。通信接口是 Mini-PCIE 接口,它的USB接口與開(kāi)發(fā)板的USBmini口相連,USIM/SIM與外接的SIM卡相連,天線(xiàn)外接于模塊上。模塊需要外部供電,并且該模塊對(duì)電壓要求較高,必須嚴(yán)格使用3.7 V穩(wěn)定電壓供電。傳輸模塊的具體連線(xiàn)方式如圖4所示。
3 監(jiān)測(cè)終端軟件設(shè)計(jì)
面向智慧森林的環(huán)境因子監(jiān)測(cè)系統(tǒng)的軟件部分按照功能可以劃分為制作與移植嵌入式Linux系統(tǒng)、數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)、驅(qū)動(dòng)模塊的編寫(xiě)與加載。
3.1 嵌入式Linux系統(tǒng)
移植與制作嵌入式Linux系統(tǒng)需要目標(biāo)機(jī)和宿主機(jī)[10]。設(shè)計(jì)中用的PC機(jī)就是宿主機(jī),而使用的開(kāi)發(fā)板則是目標(biāo)機(jī)。宿主機(jī)環(huán)境是:Windows 7操作系統(tǒng); Xilinx公司的ISE 14.4開(kāi)發(fā)套件;Ubuntu操作系統(tǒng);系統(tǒng)移植的主要操作是依據(jù)需求對(duì)Digilent官方網(wǎng)站提供的嵌入式系統(tǒng)bootloader、Linux 內(nèi)核裁剪與移植,主要增加傳感器驅(qū)動(dòng)、配置GPIO接口和I2C總線(xiàn)、裁剪不需要的功能,從而實(shí)現(xiàn)系統(tǒng)的最小化。
(1)在Ubuntu下安裝GNU交叉編譯工具包,修改環(huán)境變量;
(2)下載U-Boot源碼包,根據(jù)目標(biāo)機(jī)使用的CPU以及外設(shè)等對(duì)源碼配置,使用交叉編譯工具編譯,生成u-boot文件,手動(dòng)修改成u-boot.elf;
(3)下載Digilent官方網(wǎng)站上的Linux源碼內(nèi)核包,把多余的功能裁剪掉,并加入中興4G模塊驅(qū)動(dòng),溫濕度驅(qū)動(dòng),編譯生成內(nèi)核文件;
(4)增加溫濕度傳感器、GPS等設(shè)備的描述文件,編譯設(shè)備樹(shù);
(5)制作根文件系統(tǒng),下載并編譯BusyBox和Dropbea源碼,使用Code Sourcery工具鏈庫(kù)建立目錄文件;
(6)使用ISE開(kāi)發(fā)工具包,生成boot.bin文件和設(shè)備樹(shù)decivetree.dts源文件,使用寫(xiě)字板打開(kāi)設(shè)備樹(shù)源文件,設(shè)置IP地址為192.168.1.100,設(shè)置波特率為115 200,保存后進(jìn)入U(xiǎn)buntu下編譯;
(7)SD卡分成FAT格式的分區(qū),將上述生成的文件拷貝到SD卡中,插到開(kāi)發(fā)板卡槽處,啟動(dòng)開(kāi)發(fā)板;
(8)配置電腦為靜態(tài)IP且與開(kāi)發(fā)板在同一網(wǎng)端,啟動(dòng)終端,即可通過(guò)putty軟件查看啟動(dòng)信息。
3.2 數(shù)據(jù)采集系統(tǒng)
3.2.1 溫濕度數(shù)據(jù)采集
SHT10傳感器因?yàn)榻拥介_(kāi)發(fā)板上,需要自己寫(xiě)驅(qū)動(dòng)程序模擬GPIO來(lái)讀取SHT10的溫濕度數(shù)據(jù),驅(qū)動(dòng)程序分為打開(kāi)傳感器、復(fù)位、讀取數(shù)據(jù)、寫(xiě)入數(shù)據(jù)、關(guān)閉傳感器幾項(xiàng),在交叉編譯環(huán)工具下編譯通過(guò)生成一個(gè)后綴名為“.ko”的可執(zhí)行文件,當(dāng)目標(biāo)機(jī)首次運(yùn)行開(kāi)機(jī)程序時(shí),需要手動(dòng)加載SHT10驅(qū)動(dòng)模塊,命令為:insmod SHT10.ko,當(dāng)不需要該模塊時(shí),手動(dòng)卸載,命令為:rmmod SHT10.ko。當(dāng)程序加載了該驅(qū)動(dòng)模塊后,如想在宿主機(jī)通過(guò)串口工具讀取溫濕度,即可調(diào)用溫濕度讀取程序,得到溫濕度值。
3.2.2 GPS數(shù)據(jù)采集
NEO-6M GPS定位模塊直接連接開(kāi)發(fā)板的GPIO口,在Linux下,串口的設(shè)備文件是/dev/ttyS0或/dev/ttyS1等。因此要讀寫(xiě)串口,我們首先要打開(kāi)串口,然后根據(jù)GPS模塊的配置參數(shù)對(duì)串口的波特率、校驗(yàn)、流控制等進(jìn)行設(shè)置,這些參數(shù)設(shè)置均通過(guò)gpsconfig.c文件配置,串口程序還包括打開(kāi)串口、初始化串口、關(guān)閉串口部分。在GPS數(shù)據(jù)的處理上首先將窗口數(shù)據(jù)存入一個(gè)字符串,接著通過(guò)對(duì)字符串?dāng)?shù)據(jù)的判斷來(lái)提取數(shù)據(jù)內(nèi)容,判斷分為兩步,首先判斷是什么類(lèi)型的數(shù)據(jù),在本程序的設(shè)計(jì)中需要讀取$GPRMC和$GPGGA兩組數(shù)據(jù),因此首先判斷字符串GPS_BUF[5]是C還是A,由于數(shù)據(jù)是通過(guò)符號(hào)“,”進(jìn)行隔開(kāi),因此通過(guò)查找“,”來(lái)確定數(shù)據(jù)位置。
3.2.3 傳輸模塊驅(qū)動(dòng)加載
ME3760模塊的驅(qū)動(dòng)需要兩部分,一是添加USB驅(qū)動(dòng),再添加RNDIS驅(qū)動(dòng)。首先,配置內(nèi)核添加USB轉(zhuǎn)串口的驅(qū)動(dòng),在內(nèi)核文件中添加設(shè)備PID,防止RNDIS口被USB串口驅(qū)動(dòng)加載導(dǎo)致RNDIS驅(qū)動(dòng)無(wú)法順利完成加載。修改內(nèi)核驅(qū)動(dòng)文件drivers/net/option.c中的probe函數(shù),在其內(nèi)增加 blacklist 進(jìn)行過(guò)濾, 在 usb-serial.c中的usb_serial_probe函數(shù)中對(duì) RNIDS接口進(jìn)行過(guò)濾。RNDIS驅(qū)動(dòng)文件包括cdc_encap.c及 cdc_ether.c,把編譯生成的cdc_encap.ko、cdc_ether.ko、usbnet.ko 一同加載到Linux系統(tǒng)啟動(dòng)項(xiàng)中。傳輸模塊安裝成功后,還需要傳輸程序?qū)鞲衅鞑杉降臄?shù)據(jù)信息按照J(rèn)son格式打包,并由程序規(guī)定數(shù)據(jù)包的格式和向服務(wù)器發(fā)送的時(shí)間間隔。
4 結(jié) 語(yǔ)
系統(tǒng)的主控板上電啟動(dòng)后,在瀏覽器中輸入終端網(wǎng)址,登錄到終端采集網(wǎng)頁(yè)上,通過(guò)界面可以查看環(huán)境因子信息,本文使用了高性能處理芯片Zynq-7000,使得處理監(jiān)測(cè)數(shù)據(jù)的能力大大提升,而且終端整體性能比較穩(wěn)定。本設(shè)計(jì)相較于傳統(tǒng)的監(jiān)測(cè)技術(shù)提高了監(jiān)測(cè)質(zhì)量和效率,并使用軟硬件協(xié)同設(shè)計(jì)方法,大大降低了開(kāi)發(fā)風(fēng)險(xiǎn)和周期。
參考文獻(xiàn)
[1]劉慶新.從“數(shù)字林業(yè)”步入“智慧林業(yè)”[J].中國(guó)農(nóng)村科技,2013(10):62-63.
[2]劉亞秋,景維鵬,井云凌.高可靠云計(jì)算平臺(tái)及其在智慧林業(yè)中的應(yīng)用[J].世界林業(yè)研究,2011(5):18-24.
[3]陸佳華,江舟,馬岷,等.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)指南:基于Xilinx Zynq[M].北京:機(jī)械工業(yè)出版社,2013.
[4] Xilinx Inc.UG585,Zynq -7000 All Programmable SoCTechnical Reference Mannual[Z].2013.
[5] Xilinx Inc.UG873,Zynq -7000 All Programmable SoC:Concepts, Tools and Techniques[Z].2013:12-35,40-53.
[6] Xilinx Inc.UG926,Zynq-7000 ZC702 Evaluation Kit[Z].2012.
[7] Xilinx Inc.UG850,ZC702 Evaluation Board for the Zynq-7000 XC7Z020 Extensible Processing Platform User Guide[Z].2013.
[8]王麗芬,馬明濤.基于A(yíng)RM的農(nóng)業(yè)環(huán)境因子監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)的探析[J].中國(guó)農(nóng)機(jī)化學(xué)報(bào),2013,34(4):231-234.
[9]賀政,趙小龍.基于Linux系統(tǒng)的4G-WSN無(wú)線(xiàn)網(wǎng)關(guān)的設(shè)計(jì)[J].科技視界,2015(12):5-6.
[10]李海翔.公交車(chē)載感知終端無(wú)線(xiàn)網(wǎng)絡(luò)接入系統(tǒng)的研究與應(yīng)用[D].北京:北京工業(yè)大學(xué),2014.