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