摘 要: 針對農業生產的自動化管理需求,介紹了ARM與ZigBee技術相結合設計農田環境監測系統的方法。硬件部分采用ZigBee外接傳感器設計環境數據采集節點,采用S3C2440處理器和CC2530設計協調器網關,其中CC2530與ARM之間采用SPI口進行數據通信。軟件部分基于IAR平臺結合Z-Stack協議棧構建ZigBee無線監測網絡,用于采集并傳輸影響農作物生長的現場環境信息,數據在基于ARM與ZigBee技術相結合而開發的網關節點處實現匯聚,最終通過串口發送到基于VC++6.0與數據庫技術開發的上位機監測系統。經測試,網關節點能實時接收傳感器節點的數據,并通過串口成功上傳到上位機監測系統,實現實時數據監測、動態分析、歷史查詢和異常報警功能,系統具有較好的穩定性和實用性。
關鍵詞: ZigBee;ARM;SPI通信;串口通信;遠程監測
0 引言
隨著傳統農業向現代化農業的轉變,農業生產中降低成本、提高質量和產量、發展優質高效農業的要求以及資源高效利用、農業可持續發展等方面的要求,迫切需求社會效益、經濟效益、環境保護和科學技術相結合的新型農業的出現。現代化農業基于精細農業理念,20世紀80年代美國提出精細農業構想,采用精細農業可以在保護環境、降低成本的前提下實時監測農田環境多元信息,及時進行科學分析與預測,根據農田環境信息變化來確定最合適的管理決策,幫助農民科學種植。
目前,關于基于嵌入式技術農業應用監測系統的研究還較少,大多采用單片機和便攜式設備實現環境信息采集[1-2]。針對現代農業自動化管理的需求,本文采用S3C2440處理器結合ZigBee技術設計了一個農田環境監測系統[3]。ZigBee這種低功耗、低成本、近距離、低復雜度的雙向無線傳感網絡技術是進行大面積農田環境信息采集與傳輸的最佳選擇。以PC為上位機,采用VC++開發工具與數據庫技術[4]開發上位機監測軟件,采用串口通信技術連接協調器網關,構成分布式信息采集系統。該系統實現了對空氣溫度、空氣濕度、光照強度、土壤水分等環境信息的實時數據采集、傳輸、存儲、查詢及分析處理,并且具有異常預警功能,有利于降低農業作業的成本,提高效率,同時也為農業工作者科學種植、防治病蟲災害提供可靠、充分的科學依據。
1 系統總體設計
農田環境監測系統,主要包括數據采集終端、數據通信鏈路和數據監測中心三部分。其中數據采集終端包括采集農作物生長環境的各種傳感器,如空氣溫濕度傳感器、光照強度傳感器、土壤水分傳感器;數據通信鏈路包括ZigBee近距離無線通信網絡、ZigBee與ARM間的SPI數據通信和ARM與PC間的串口通信;數據監測中心包括安裝了單機版監測軟件的PC及PC內部運行的MySQL數據庫。系統結構框圖如圖1所示。
ZigBee終端節點傳感器能夠采集空氣溫度、空氣濕度、光照強度、土壤水分等環境因素,然后經過ZigBee無線網絡將數據發送到ZigBee協調器節點,協調器節點數據由SPI總線傳輸到ARM處理器,數據在ARM處理器中經過分析處理之后通過串口最終發送到PC數據庫服務器中存儲[5-6]。系統可對影響農作物生長的環境信息進行實時遠程監測、動態分析和歷史查詢,并且對超出標準值的環境參數提供報警功能。
2 系統硬件設計
2.1 傳感器節點
傳感器節點由ZigBee無線通信模塊(包括8051處理器)、傳感器模塊和電源模塊組成。傳感器模塊采集和轉換監測區域內的環境信息;無線通信模塊用于控制傳感器節點的數據采集、存儲、轉換和處理、收發數據及與其他傳感器節點間交換信息等;電源模塊負責為傳感器節點運行提供所需的能量。傳感器節點結構框圖如圖2所示。傳感器模塊包括空氣溫濕度傳感器DHT11、光照強度傳感器MAX44009和土壤水分傳感器TDR-3。ZigBee無線通信模塊節點選用WeBee的CC2530+CC2591(PA)模塊。CC2530是一個低成本、低功耗的無線微控制器,芯片上集成了CC2591射頻前端放大芯片、增強型8051內核、Flash存儲器、8 KB RAM和許多其他增大功能。CC2530+CC2591(PA)模塊具有以下功能特點:
(1)可靠傳輸距離400 m,自動重連距離高達360 m;
(2)工作在2.4 GHz頻段,無線速率達250 kb/s;
(3)具有16個通信信道,可根據環境切換可靠通信信道。
2.2 協調器網關
考慮到協調器節點需要處理傳感器節點上傳的大量數據,并能夠將數據通過串口有序地上傳到上位機,要求協調器節點具有較快運行速度和較強的數據處理能力,為此選用S3C2440A開發板和ZigBee CC2530無線收發模塊設計協調器網關節點。ZigBee模塊數據處理程序工作在協調器模式下,與處理器S3C2440之間通過SPI口進行數據通信。協調器網關硬件框圖如圖3所示。基于ARM920T內核的S3C2440A具有MMU單元和豐富的外部接口,主要片上功能特點如下:
(1)主頻(FCLK):400 MHz;
(2)存儲器:2 MB NOR Flash,256 MB NAND Flash,64 MB SDRAM;
(3)外部存儲控制器:可擴展8組128 MB的存儲空間,總容量達1 GB;
(4)具有2路SPI口,3路URAT口;
(5)CMOS攝像頭接口。
3 系統軟件設計
3.1 協調器節點程序
采用IAR Embedded Workbench(7.60A)編程環境和TI的ZStack-CC2430-2.3.0-1.4.0(ZigBee 2007)協議棧設計ZigBee CC2530無線傳感網絡程序[7-9]。協調器節點負責啟動和配置網絡,同時可以與網絡以外的設備進行通信,起到網關的作用。根據設計目標,調用ZigBee協議棧中的API接口函數來實現無線傳感網絡程序設計。協調器的程序設計流程圖如圖4所示。程序設計方法如下:
(1)初始化硬件、網絡層、任務、堆棧等。編寫init_spi()函數用來初始化SPI口,協調器組網程序初始化通過調用協議棧中的初始化函數來實現,其中osal_init_system()函數用來初始化操作系統,osalInitTasks()函數用來初始化任務。
(2)信道掃描,根據掃描結果選擇一個編號在11~26間合適的信道,并設置網絡PAN ID(0x0000-0x3FFF),協調器采用的網絡PAN ID默認為0x0000。接著啟動協調器,等待其他設備加入網絡。
(3)在有傳感器節點加入網絡之后,調用接收函數。當協調器收到從傳感器節點傳來的數據后,將數據發送到S3C2440處理器。
3.2 傳感器節點程序
傳感器節點負責采集環境參數,并將其傳送到協調節點。傳感器節點分為終端節點和路由節點兩種,終端節點僅用于采集傳感器數據并發送給附近的路由器或協調器;路由器節點同時負責數據采集和數據信息的轉發。本文設計的路由節點程序和終端節點的程序除了有些配置參數不同,其他部分基本一致。傳感器節點在上電后,Z-Stack調用ZDO_StartDevice()函數來啟動設備進行初始化,接著會讀取非易失性存儲器中的一系列配置參數,如設備類型參數ZCD_NV_LOGICAL_TYPE,默認的掃描信道參數ZCD_NV_CHANLIST等。其中設備的類型參數值決定著此設備的邏輯類型。本文傳感器節點程序中終端設備的類型參數值為ZG_DEVICETYPE_ENDDEVICE,路由器的類型參數值為ZG_DEVICETYPE_ROUTER。
傳感器節點的程序設計流程圖如圖5所示。以DHT11數字溫濕度傳感器為例,傳感器節點程序設計主要步驟如下:
(1)設計DHT11的裸機驅動程序,使CC2530可以驅動DHT11傳感器。包括配置傳感器IO口方向、接收緩存定義、延時、溫濕度寫入、傳感啟動、設置采集周期等。
(2)將DHT11的裸機程序文件復制到協議棧Source文件夾下,在協議棧的APP目錄下點擊右鍵——Add——添加復制文件,這樣DHT11的裸機驅動程序被添加到Z-stack協議棧代碼中。在協議棧代碼中初始化傳感器引腳P0.6,通過周期性廣播函數每2 s讀取溫度傳感器1次。
(3)調用API函數初始化硬件、網絡層、堆棧等,在發送函數中將數據打包并按指定方式發送給指定設備。
3.3 ARM與ZigBee間SPI驅動程序設計
在ARM上移植Linux操作系統,要在Linux系統用戶空間使用SPI設備,首先應在內核空間移植相應的設備驅動程序,接著在用戶空間編寫ARM端數據收發程序。在Linux環境下,設備被當做文件進行處理,對設備的操作都是通過操作文件系統來實現的[10]。ARM與CC2530間的SPI通信程序主要組成部分如下:
(1)在內核中注冊SPI設備,初始化驅動設備,使相關寄存器映射到虛擬內存地址。設備注冊、建立設備文件、映射GPIO與SPI寄存器、注冊中斷均由spi_init()函數實現。
(2)修改file_operations文件結構。file_operations文件結構用來對系統內部I/O設備存取入口點向系統進行說明。這樣應用程序中通過read、write等關鍵字即可調用驅動程序相應的函數。
(3)SPI調用spi_open()打開設備,調用spi2440_write()發送數據,調用spi2440_read()接收數據,調用spi_close()函數關閉設備。
(4)設備IO控制。spi_ioctl()函數負責接收應用程序參數,并對CC2530片選或復位操作。
(5)interrup_irq()中斷函數實現。
4 系統測試
在實驗室使用4個CC2530開發板,1個作為協調器,1個作為路由器,2個作為終端節點對系統可行性及穩定性進行了測試。分別選擇CoordinatroEB-Pro、RouterEB-Pro、EndDeviceEB-Pro模式下載程序到這三類節點開發板。系統ZigBee終端和路由節點安裝了DHT11數字型空氣溫濕度傳感器,設置采集時間間隔為20 min,上位機監測系統實時環境數據測試如圖6所示。設置動態分析時間間隔為10 min,通過上位機監測系統可查看各傳感器上傳的環境信息動態分析圖如圖7所示。
5 結論
本文分析了農業環境發展現狀與應用需求,針對當前農田環境監測存在的不足,采用ARM結合ZigBee無線傳感技術設計了農田環境監測系統。該系統同時具備了ZigBee技術的成本低、功耗小、網絡結構簡單、自組織傳輸和ARM嵌入式技術對海量數據信息的高速處理的特點。系統可實現對農田環境信息有效采集、融合、傳輸、存儲、查詢與分析處理的一體化管理。
參考文獻
[1] 張帆,劉剛.基于.NET的農業生產環境信息監測系統[J].計算機工程與設計,2013,34(2):696-701.
[2] 薛文英,傅平,張馨,等.基于組態平臺的日光溫室群監控系統軟件設計與應用[J].北方園藝,2011(9):53-56.
[3] 于海業,羅瀚,任順,等.ZigBee技術在精準農業上的應用進展與展望[J].農機化研究,2012,8(8):66-68.
[4] 張永梅.MySQL數據庫技術在公民健康信息管理系統中的應用[D].西安:西安電子科技大學,2010.
[5] 王正強.VC中應用MSComm控件實現串口通信[J].電子測試,2010,5(5):73-76.
[6] FORTA B. MySQL必知必會[M].劉曉霞,鐘鳴,譯.北京:人民郵電出版社,2009.
[7] ZigBee Alliance. ZigBee Specification Version 1.0[M]. ZigBee Standards Organization, 2004.
[8] Zhang Jie, Li Aicheng, Li Jianlong, et al. Research of real-time image acquisition system based on ARM 7 for agricultural environmental monitoring[J]. IEEE Transactions on PE, 2011:6216-6220.
[9] Yang Shuhui, Dai Fei, CARDEI M, et al. On connected multiple point coverage in wireless sensor networks[J]. International Journal of Wireless Information Networks, 2006,13(4):289-301.
[10] 王舒憬,黃河,黨彥博,等.基于ARM的無線ZigBee收發器驅動設計[J].儀表技術,2008(2):35-37.