廖建尚
(廣東交通職業技術學院計算機工程學院,廣東廣州 510650)
《“互聯網+”現代農業三年行動實施方案》[1]提到在農業物聯網區域試驗工程方面,要大力推進物聯網在農業生產中的應用,在國家現代農業示范區率先取得突破,建成一批大田種植、設施園藝、畜禽養殖、水產養殖物聯網示范基地。我國是一個農業大國,不同的應用領域,其物聯網實施特點不一致,導致了物聯網在農業生產中的應用發展較為緩慢。物聯網技術在農業生產中的應用研究引起了越來越多的學者關注,其中智能網關在農業物聯網系統中是一個較為關鍵的技術,承擔了數據的匯集、封裝和傳輸,目前對農業物聯網智能網關的研究還非常少,尤其多網絡融合的智能網關研究更少。
智能網關是指一種能夠匯集、分析、封裝、轉發數據與信息的裝備與技術。美國、日本在精準農業領域方面已經有了產業化應用,荷蘭有較好的農業高效生產體系[2],韓國建有農業科技服務體系,促進了農業物聯網技術的發展[3]。我國農業物聯網逐漸有了一定的發展,在環境監控、精準農業等方面有一定的應用[4-5],但關于智能網關的研究還比較少。智能網關在智能家居、熱力管網系統、水箱控制等領域有了一定的研究[6-9]。
有學者提出了農業物聯網系統的設計方法[10-11],但是都沒有提到智能網關的設計。趙小強等設計了1種基于ZigBee/3G的物聯網網管系統,用于水箱溫度的監控,但在應用方面有一定的局限性[12]。張海輝等提出1種基于WinCE系統的可配置無線傳感網絡WSN(wireless sensor network)網關體系結構ReGA(Re-configurable Gateway Architecture),能實現現場可視化設備和監測綜合管理,但其設計平臺并不適用在其他Linux等開源系統的應用[13]。
有一些學者對異構型網關進行了研究。王子卿等提出了適用于水產養殖環境監測系統的異構網關,實現了養殖水域采樣數據的查詢和處理,但僅僅只有一個傳感網絡,異構網關在應用層的無線傳輸網絡,不適用在復雜的農業環境的監控[14]。譚立志等提出1種基于ARM+FPGA的智能家居異構網關的設計,實現ZigBee網絡、Internet網絡、無線局域網絡(Wi-Fi)、家庭設備、家居環境傳感控制網絡等多種網絡的融合,但是缺乏對IPv的支持,也不適用與數據量大的農業環境[15]。陳美鎮等提出了基于Android系統的溫室異構網絡環境監測智能網關設計,初步實現了溫室環境監測,僅僅用于ZigBee、RS-485、Wi-Fi 3種網絡的環境數據監測,沒有設備的控制功能和IPv6的功能[16]。
還有一些學者對IPv6網關進行了研究。向敏等設計了1款應用于智能電網的IPv6多接入通信網關,但僅僅局限于電網領域[17]。姚崇高等提出了1種基于IPv6的家庭網關設計,但僅局限于家庭環境[18]。霍宏偉等提出將IPv6無線傳感器網絡以太網接入網關的設計,但缺乏異構網絡的構建[19]。
智能網關在農業物聯網的研究中有一定進展,但也存在不足,主要體現在農業物聯網涉及領域多,如大田種植、設施園藝、畜禽養殖、水產養殖等不同系統。不同的系統采用的信息監控的技術要求不一致,過去單一的IPv6系統和無線傳感網絡無法滿足日益發展的農業系統,難以實現農業物聯網的快速和廣泛應用。因此,本研究提出了1種基于IPv6和異構型無線傳感網絡農業物聯網智能網關設計方法,采用不同無線網絡滿足不同的農業系統需求。
農業物聯網系統需要實現2個方面的功能,一是農作物生長環境信息采集與監測,如空氣的溫濕度、光照度、土壤濕度、二氧化碳濃度、各種微量元素監測等等;二是農作物環境控制,如噴淋、灌溉、遮陽罩的控制等等。本研究提出了1種基于IPv6的智能網關農業物聯網架構的設計方法,詳細功能如圖1所示。農業物聯網系統需要實現數據的采集和轉發,其中節點的數據采集通過3種無線網絡實現。3種無線網絡分別是802.15.4、藍牙和Wi-Fi,并通過智能網關實現和應用層的通信。

農業物聯網系統需要在感知層實現農業環境信息采集與監測農業環境控制,感知層實現的環境采集和控制需要通過智能網關和應用層通信。本研究設計了1種IPv6智能網關,集成了3種無線傳感網絡,用于農業物聯網中的多種系統的信息采集和監控。
IPv6智能網關集成了3種不同的無線網絡節點模塊,每種無線網絡節點模塊獨立與網關進行通信。802.15.4模塊通過串口連接與網關通信,藍牙模塊通過USB連接保證藍牙無線網絡與網關進行通信,Wi-Fi模塊通過USB連接保證Wi-Fi無線網絡與網關進行通信。為了實現多無線網絡融合通信,IPv6網關將3種不同的通信渠道統一中轉到TUN虛擬網絡設備[20]處理,從而實現3種無線網絡同時在IPv6網關上正常通信,整體設計如圖2所示。

802.15.4模塊通過串口驅動發送感知層數據包到TUN服務,通過TUN服務轉換成IPv6數據包,并轉發到TUN虛擬網絡設備進行統一處理并發送出去;藍牙模塊和Wi-Fi模塊通過分別通過藍牙驅動、Wi-Fi驅動發送感知層數據包到指定的服務程序,該服務通過指定端口將感知層數據包轉發給TUN服務,TUN服務將根據端口號生成Socket處理,將發送過來的感知層數據包轉換成IPv6數據包,轉發到TUN虛擬網絡設備進行統一中轉。
為了實現IPv6異構無線傳感網絡,智能網關采用了虛擬網絡設備TUN。TUN提供與硬件的網絡設備完全相同的功能,模擬網絡層設備,處理相應數據包如IP數據封包,并向操作系統的網絡層發送數據包,從而接收外部數據,同時還實現了字符設備驅動,用于連接應用層和內核層,應用層可以通過TUN設備向用戶空間發送數據[20]。為了更好地與各種無線節點通信,本研究設計1種TUN服務程序、Wi-Fi網關服務程序和藍牙網關服務程序,完成和無線模塊間的通信,其中TUN服務程序和設計如圖3所示。

2.2.1 802.15.4邊界路由器與網關通信設計 邊界路由器要收集其他節點的數據,需要先創建1個被稱為DODAG的根節點,邊界路由器通過感知層通信協議(Perception layer communication protocol,PLCP)獲取網絡地址后,為自身配置1個IPv6的地址,然后再創建1個新的根節點,其他感知層的節點加入到這個根節點中,實現和節點的無線數據通信。
邊界路由器需要將收集的數據發送給網關,設計過程如下:首先802.15.4邊界路由器將收集的無線節點數據通過串口驅動把感知層數據包發送給TUN服務,然后TUN服務將其轉換為IPv6數據包后轉發給TUN虛擬設備,接著由TUN虛擬設備將IPv6數據包上報到Linux內核的IPv6層,最后經過TCP協議發送給APP;反之,應用層APP將IPv6數據包請求發送到智能網關的TUN虛擬設備,TUN服務將TUN虛擬設備發過來的IPv6數據包轉換成感知層數據包后通過串口發送給802.15.4邊界路由器,最后通過802.15.4無線模塊將感知層數據包轉發給節點網絡的802.15.4模塊,從而實現對節點的控制。
2.2.2 Wi-Fi模塊與網關通信設計 Wi-Fi無線網絡可以工作在AP(access point)模式和Sta(station)模式下,智能網關的Wi-Fi設置為AP模式下,無線節點是設置為Sta模式,智能網關的Wi-Fi模塊將多個無線節點組成一個網絡。
Wi-Fi模塊需要實現與網關通信,設計了1個Wi-Fi服務程序完成Wi-Fi無線模塊和TUN之間通信,應用層APP將IPv6數據包發送給TUN虛擬設備,TUN服務將TUN虛擬設備發過來的IPv6數據包轉換成感知層數據包,TUN服務與Wi-Fi網關服務程序建立網絡連接后,通過端口將感知層數據包轉發給Wi-Fi網關服務程序,Wi-Fi網關服務程序將感知層數據包轉發給網關底層的Wi-Fi驅動,最后通過Wi-Fi模塊將感知層數據包轉發給網絡上其他的Wi-Fi模塊節點。Wi-Fi網關服務程序如圖4所示。
2.2.3 藍牙模塊與網關通信設計 藍牙模塊與網關通信,設計了1個藍牙服務程序實現藍牙無線模塊和TUN之間的通信,APP應用端將IPv6數據包請求發送給TUN虛擬設備,TUN服務將TUN虛擬設備發過來的IPv6數據包轉換成感知層數據包,TUN服務與藍牙網關服務程序建立TCP連接后,通過指定端口轉發給藍牙網關服務程序,藍牙網關服務程序通過該端口將感知層數據包轉發給網關底層的藍牙驅動,繼而通過藍牙模塊將感知層數據包轉發給網絡上其他的藍牙模塊節點,其中藍牙服務程序過程與Wi-Fi類似。藍牙網關服務程序流程如圖5所示。
2.2.4 TUN服務程序軟件設計 TUN服務程序實現的功能有:(1)讀取串口、Wi-Fi網關服務程序和藍牙網關服務程序的感知層數據包,并轉發到TUN虛擬網絡設備;(2)讀取TUN網絡設備的感知層數據包,并轉發到串口、Wi-Fi網關服務程序和藍牙網關服務程序;(3)將發送過來的感知層數據包轉換成IPv6數據包。
TUN服務實現了讀串口、Wi-Fi網關服務程序和藍牙網關服務程序的感知層數據并轉發到TUN虛擬設備,同時實現了讀取TUN虛擬設備數據并轉發到串口、Wi-Fi網關服務程序和藍牙網關服務程序,詳細設計如圖6所示。
感知層的3類無線節點接收到傳感器模塊采集的數據之后,將數據通過串口發送到節點處理器的IPv6層,然后將IPv6層的數據包封裝成感知層數據包,再通過串口發送給節點的無線模塊,無線模塊將感知層數據包傳輸給網關無線模塊;同時,節點無線模塊接收智能網關無線模塊發過來的感知層數據包,并通過串口發送給STM32處理器[21]的IPv6層處理,從而實現異構無線網絡對農業環境數據采集和設備控制。其設計如圖7所示。




為實現感知層和智能網關通信,本研究設計了1套感知層通信協議PLCP,用于點對點的串行通信,定義了在串行線路上將數據包封裝成幀,PLCP定義了起始符和結束符:S和E,中間包含若干個數據包。表1是PLCP的數據幀格式,處理器通過串口給無線模塊發送數據時,需遵循PLCP協議。

表1 PLCP的幀格式
無線模塊無線接收到數據之后,也將數據按照PLCP協議封裝數據,通過串口發送給STM32。無線模塊的作用是將數據進行收、發。無線模塊可以理解成STM32的無線網卡。STM32與無線模塊通過串口進行通信。為了方便無線模塊設置網絡參數、接收和發送數據,本研究定義了1套無線模塊的節點通信協議實現節點對無線模塊的通信與控制。表2是節點通信協議的詳細功能表。
STM32向無線模塊只能發送?M、!P、!C和!S 4個指令,無線模塊向STM32可以發送!M、!P、!C和!R 4個指令。發送指令時,同樣需要遵循PLCP的通信協議,如用?M指令可以查詢無線模塊MAC地址,其格式如表3所示。

表2 PLCP節點通信協議

表3 ?M指令發送幀格式
為了實現感知層設計,本研究在STM32處理器上引入Contiki操作系統[22-23],利用Contiki系統的多任務機制,實現無線傳感器網絡中的數據采集和設備控制。Contiki實現了1種輕量級的名為protothread的線程模型,該模型類似于線程概念,多個線程共享同一個任務,并提供1種可選的任務搶占機制、基于事件和消息傳遞的進程間通信機制。
Contiki系統任務需要進行一系列初始化,包括硬件初始化和進程初始化,根據網絡需要選擇Wi-Fi、藍牙或者802.15.4 3種無線網絡中的其中1種并進行初始化,設置MAC地址和初始化PLCP以及IPv6數據隊列緩沖區初始化,接著啟動TCP/IP網絡進程,初始化RPL[24],加入無線網路,最后啟動自定義進程。本研究設計了1套事件機制,定時產生1個事件,通過輪詢進入到特定的進程,并對事件進行處理,實現數據采集和設備控制。節點核心設計的流程如圖8所示。
采集類傳感器主要包括光敏傳感器、溫濕度傳感器、二氧化碳傳感器等,這類傳感器主要是用于采集大棚環境信息。以光敏傳感器為例,對采集類傳感器進行軟件設計,在初始化傳感器后,用定時器設定采集的時間,然后等待事件的到來,不斷輪詢傳感器事件,有選擇地采集和上傳數據,并接受應用層通過智能網關發送來的數據進行解析,采集數據和上傳至網關,具體設計如圖9所示。


控制類傳感器主要包括繼電器傳感器、電機傳感器、排氣扇傳感器和水泵傳感器等,這類傳感器主要用于控制設備的狀態。控制類傳感器實現對農業設備的控制和工作狀態的采集,初始化傳感器后,用定時器設定采集的時間,然后等待事件的到來,不斷輪詢傳感器事件,有選擇地進行設備控制和狀態采集,另外也可以接收應用層通過智能網關發來的控制命令,先進行解析,然后進行設備控制和狀態采集,具體設計如圖10所示。
以廣東省廣州市南沙區某地農業園區為例說明具體應用。將660 m2的大棚作為實際部署環境,把每個大棚按約 22 m×10 m的大小分割成3個區域。整個園區配置1臺服務器、若干臺路由器和交換機,每個大棚的3個區域分別配置802.15.4無線網絡、Wi-Fi無線網絡、藍牙無線網絡,另外節點的配置包括每個區域配置2個溫濕度傳感器節點、2個光敏傳感器節點、2個土壤溫濕度傳感器節點、2個大棚側窗開啟節點、2個灌溉模塊節點、2個排氣模塊節點,對系統進行智能網關測試和應用驗證。

智能網關組網測試,選擇9個不同的傳感器,分成3組,分別組成802.15.4無線網絡、Wi-Fi無線網絡、藍牙無線網絡,組網情況如圖11所示。從圖11可以看出,智能網關分別和3個不同的子智能網關實現組網,3個子智能網關也能成功組建無線網絡,驗證了智能網關的正確性。
通過Android設計的移動終端和PC終端軟件,從應用層采集農業環境的數據和設備控制,實現對全部節點信息的數據采集和設備控制,設置采集節點的采集周期為30 s,系統測試溫室大棚環境數據。
對大棚溫度、濕度、光照度的采集,圖12是數據采集的效果圖,圖中是2017年3月7日09:31獲取的數據,其中大棚溫度21 ℃,濕度是61%,光照度為14 660 lx。圖13-A、圖13-B、圖13-C分別為大棚溫度、濕度和光照度在2017年2月14日至2017年3月5日的歷史記錄情況。每天當中,白天光照度和溫度較高,且溫度和光照度逐漸上升,濕度會逐漸下降,下午到晚上溫度和光照度逐漸下降,濕度逐漸增加,符合當地時節的情況。

由測試結果可知,農業大棚環境信息的數據采集傳感器可以正確獲取數據,并根據強度大小來決定是否啟動環境控制設備,尤其是光照控制、溫濕度控制、灌溉控制的效果明顯,從而實現了智能農業環境的平衡控制,驗證了IPv6和異構型無線網絡型智能網關的有效性和正確性。

本研究設計了1種基于IPv6和異構型無線網絡智能網關型的農業物聯網系統設計,結合TUN服務實現了3種無線網絡(802.15.4無線網絡、Wi-Fi無線網絡和藍牙無線網絡)與網關的通信設計,并對無線模塊通信進行異構無線網絡融合設計,為了更好地采集數據和控制設備,定義了感知層通信協議并完成了感知層的核心層設計、采集類節點軟件設計以及控制類節點軟件設計。經過測試驗證,基于IPv6和異構型無線網絡農業物聯網智能網關可以實時采集農業大棚的空氣溫度、空氣濕度、土壤濕度等環境信息,并根據閾值的實時控制來調節大棚環境,使大棚農作物生長在一個最好的環境中,促進作物健康生長,達到良好的效果。本研究有如下特點:(1)基于IPv6的農業物聯網智能網關,為每個節點部署了IPv6地址,滿足日益壯大的環境采集要求,更有效地采集數據和設備控制,有利于農業物聯網的廣泛應用;(2)智能網關實現了多種異構無線傳感網絡,可以應用在農業的多個領域,為農業應用提供更有效的服務,也為進一步農業物聯網技術集成平臺建設提供技術支持。
智能網關適應各種行業領域的應用和增加農作物的生長智能分析是本課題今后的研究重點。

[16]陳美鎮,王紀章,李萍萍,等. 基于Android系統的溫室異構網絡環境監測智能網關開發[J]. 農業工程學報,2015,31(5):218-223,225.
[17]向 敏,黃盛剛,田 力,等. 基于IPv6的多接入智能電網網關設計[J]. 中國電力,2016,49(5):123-128.
[18]姚崇高,王佳丹,彭亞雄. 基于IPv6的家庭網關設計[J]. 計算機技術與發展,2007,17(3):207-209,213.
[19]霍宏偉,牛延超,郜 帥,等. 一種IPv6無線傳感器網絡以太網接入網關的設計[J]. 傳感技術學報,2007,20(2):398-403.
[20]龍湘君,邵 棟,榮國平. 基于TUN/TAP與UDP打洞技術的虛擬局域網[J]. 計算機應用與軟件,2011,28(7):224-226.
[21]Zhao X,Zhou B,Fan Z,et al. Research on image acquisition and wireless transmission based on STM32[C]// International Conference on Information Science and Technology. IEEE,2015:334-338.
[22]董 坤,陳 波,趙中全. 基于Contiki和有源RFID的設備管理系統的實現[J]. 電子技術應用,2016,42(3):57-60.
[23]Dunkels A,Gronvall B,Voigt T. Contiki-a lightweight and flexible operating system for tiny networked sensors[C]//IEEE International Conference on Local Computer Networks,2004:455-462.
[24]Thubert P,Winter T,Brandt A,et al. RPL:IPv6 routing protocol for low power and lossy networks[J]. Internet Requests for Comment,2012,6550(5):853-861.