摘要:針對我國溫室大棚大型化和規模化的趨勢,為了實現對多點溫度數據的采集,采用嵌入式ARM技術和ZigBee技術,設計了無線多點溫度采集系統。系統以ARM9微處理器S3C2440為控制核心,以嵌入式Linux為實時操作系統,通過溫度傳感器DS18B20采集各處的溫度值,經由無線收發模塊CC2430完成數據的傳輸,最終將采集到的數據信息顯示在LCD上。測試表明,多點溫度采集系統實時性好,可靠性高,并且易于擴展,具有廣闊的應用價值。
關鍵詞:溫室大棚;溫度采集;ARM-Linux操作系統;ZigBee無線收發模塊;LCD信息顯示
中圖分類號: S625.5+1;TP274+.2 文獻標志碼: A 文章編號:1002-1302(2014)07-0416-04
收稿日期:2013-10-08
作者簡介:胡衡(1988—),男,河南信陽人,碩士研究生,主要從事智能控制與嵌入式應用研究。E-mail:843392514@qq.com。作為新的農作物種植技術,溫室大棚早已突破了傳統農作物種植受地域、自然環境和氣候等諸多因素的限制,對農業生產具有重大意義[1]。溫室溫度是影響溫室內種植的農作物產量的重要因素之一,如何進行溫室內溫度的實時監測,以及如何降低運行成本、提高效率、實現環境的精確控制成為目前研究的關鍵問題[2]。
面對溫室環境中較大面積的作物,大量的布線在設備的安裝和維護方面會造成很多困難。因此無線溫室采集系統的應用可以極大提高溫室系統的可靠性、實時性,并且系統的開發價格較低廉,性價比高,組裝維護方便[3-5]。溫室大棚的大型化、集約化和規模化發展,使得傳統的基于單片機技術的溫度采集系統的局限性愈加顯現。隨著嵌入式ARM技術的不斷發展和完善,其在實時批處理數據和網路功能方面的優勢日益突出[6-7]。然而,目前基于ARM9體系結構的溫度采集研究大多針對單點溫度,對于多點溫度,尤其是采用無線分布式的多點溫度采集的研究卻非常少,制約了嵌入式技術在溫室大棚中的應用。為此,本研究設計了一種結合嵌入式技術和無線傳感技術的多點溫度采集系統,該系統具有高性能、低功耗、快速處理數據的特點。
1系統總體設計
無線多點溫度采集系統主要由ARM控制核心、ZigBee無線通訊網路、終端采集單元3部分組成,其整體示意圖如圖1所示。
在無線多點溫度采集系統中,終端檢測單元部分通過分布在各處的溫度傳感器完成溫度的實時采集,將溫度參數進行檢測和變送;ZigBee網關與從節點構成星型拓撲結構[8],網關匯總各從節點采集得到的溫度數據,并且定時將其發送給ARM控制平臺;最終所得到的溫度數據實時同步顯示在ARM控制平臺的LCD觸摸屏上。
2系統硬件設計
本系統的硬件電路框圖如圖2所示,主要由ARM9中央控制模塊、ZigBee無線收發模塊、溫度采集模塊、LCD顯示模塊、電源及復位模塊等構成。
2.1ARM9中央控制模塊
ARM9中央控制模塊由ARM9處理器、FLASH、SDRAM、電源及復位模塊、LCD觸摸屏及相關外圍電路組成。ARM9處理器是整個系統的核心部分,用來對ZigBee通訊模塊進行相應的配置并接受和處理來自ZigBee終端節點的數據。綜合性能、功耗、成本方面的考慮,本系統采用Samsung公司的32位ARM9處理器S3C2440作為主控制器,該處理器集成了LCD控制器、USBHost、NAND控制器、中斷控制、功率控制、存儲控制、UART、SPI和GPIO等豐富的外圍資源,通過外擴存儲器、串口、USB接口和JTAG調試接口等構成硬件平臺[9]。系統采用64M的NAND型FLASH K29F2808來存放系統啟動代碼、內核代碼及根文件系統;SDRAM選用2片HY57V561620CTP-H構成容量為64MB的高速動態隨機存儲器。由于主控芯片S3C2440沒有實現ZigBee協議的功能,為了能與ZigBee設備進行通訊,需要通過串口UART與ZigBee協調器相連。
2.2ZigBee無線收發模塊
ZigBee是一種新興的短距離、低功耗、低數據速率、低成本、高靈敏度、具有出眾的抗噪聲及抗干擾能力的雙向無線通信技術[10]。為了滿足多點溫度采集系統簡潔、方便的要求,系統采用ZigBee無線通信技術組建無線網絡。
ZigBee無線收發模塊采用TI公司的基于IEEE802.15.4協議的CC2430芯片,通過Z-Stack協議棧實現帶有網絡自啟動功能的星型ZigBee無線網絡。星型網絡配置由一個協調器節點和1個或多個終端節點組成,協調器節點是該網絡的控制中心,負責創建維護網絡,是無線網絡與外界通信的出入口,終端節點負責采集信息發送至協調器,或接收控制命令完成相關功能。系統中所有的終端節點由協調器節點分配不同的網絡地址,只與協調器節點進行無線通信,而協調器節點通過串口UART0與ARM9處理器S3C2440進行通信,S3C2440對接收到的ZigBee信息進行解析后,根據不同的網絡地址判斷信息來自哪個ZigBee終端節點。ZigBee網絡中的所有節點都可以使用同一個電路,在ZigBee無線網絡中的協調器功能和終端功能是由軟件來區分的。CC2430使用SFD、FIFO、FIFOP和CCA 4個引腳表示收發數據狀態:SFD引腳高電平表示處于接受狀態,FIFO和FIFOP引腳表示接受FIFO緩沖區的狀態,CCA引腳在信道有信號時輸出高電平,只在接收狀態下有效。CC2430是1個半雙工芯片,在同一時刻只處于一種工作狀態,有15個固定地址的命令寄存器,并且接收緩沖和發送緩沖是分開的。
2.3溫度采集模塊
溫度采集模塊的主要任務是負責溫度采集,由溫度傳感器和CC2430終端節點構成,在溫室大棚中均勻分布若干個終端從節點用于采集各處的溫度數據。
溫度傳感器選用Dallas半導體公司生產的應用可組網的單線式數字溫度傳感器DSl8B20,測量溫度范圍為-55 ℃至125 ℃,精度為0.5 ℃,用9bit數字量表示溫度,每次將溫度轉換成數字量需200 ms。采用直接數字化輸出,內部傳感元件及轉換電路集成在形如1只三極管的集成電路內,3個端口分別是地線(G N D)、數據線(DQ)、電源(VDD),從芯片CC2430的I/O 口上接入溫度傳感器DS18B20的DQ端。
3系統軟件設計
本系統在RedHat9.0下創建嵌入式系統的Linux開發環境,使用arm-linux-gcc3.4.5作為交叉編譯器,并采用yaffs類型的根文件系統和Linux2.6.29版本的內核來構建嵌入式系統。linux2.6.29內核具有強大的進程、中斷和設備管理,支持各種文件系統。本系統軟件設計部分主要包括:Linux操作系統移植、底層設備驅動程序設計和系統應用主程序設計三大部分。
3.1Linux操作系統移植
嵌入式Linux操作系統移植包括:移植U-boot、移植Linux內核以及制作根文件系統[11]。
3.1.1移植U-bootU-boot是在嵌入式操作系統運行前執行的一段Bootloader程序,其作用在于初始化硬件設備、建立內存空間的映射關系,將系統的軟硬件環境帶到一個合適的狀態,為最終調試操作系統內核準備好正確的環境。他的源代碼是免費公開的,可從網站上直接下載獲得,本系統所用版本為U-boot1.1.4。在U-boot目錄下進行相關配置并執行#make CROSS_COMPILE=arm-linux編譯成功后,可將其燒入到FLASH中運行。
3.1.2移植Linux內核首先從網站上下載免費開源的Linux2.6.29內核源代碼,在編譯前進入根目錄,修改其目錄下的Makefile文件,設置目標平臺和交叉編譯器。然后運行#make menuconfig進入配置菜單,選擇需要配置的選項后保存退出,再執行內核編譯命令#make uImage,編譯成功后會得到編譯好的內核鏡像文件zImage。
3.1.3制作根文件系統首先編譯安裝Busybox,然后根據需要建立相應的根目錄,并編輯好系統運行所需的配置文件,最后采用制作yaffs文件系統的軟件來制作出文件系統鏡像。最終用U-boot通過tftp服務器下載內核鏡像和根文件系統鏡像到NAND FLASH中,如果系統啟動正常,則成功移植了Linux操作系統。
3.2底層設備驅動程序設計
底層設備驅動程序是操作系統和設備進行通信的特殊程序,一般集成在操作系統內核中,有直接編譯到內核(靜態編譯)和模塊(動態編譯)2種方式,前者是將驅動作為內核的一部分,直接編譯到內核中;后者則為動態鏈接:單獨作為1個模塊進行編譯,按需加載到內核中[12],本設計使用動態編輯方式。本系統的底層設備驅動主要是DS18B20驅動和 ZigBee 無線收發模塊驅動;另外LCD觸摸屏、串口等的驅動已經按需編譯到Linux內核中。
3.2.1DS18B20驅動程序設計DS18B20是在1根總線上讀寫數據的,因此對讀寫的數據位有著嚴格的時序要求,同一時刻單總線上只能有1個控制信號或數據,必須有嚴格的通信協議來保證各位數據的正確性和完整性。為保證數據可靠地傳送,進行數據通信時一定要符合單總線協議[13]。為了讀出所有DS18B20的溫度值,利用DS18B20的相關ROM命令并結合相關子函數完成該驅動的設計,其流程如圖3所示。
3.2.2ZigBee無線收發模塊驅動設計本系統采用的是星形網絡拓撲結構,網絡中存在協調器和終端兩種設備。上電后,協調器首先完成應用層初始化,然后初始化I/O端口并打開全局中斷,接著協調器搜索選擇合適的信道并組建一個ZigBee網絡;溫度采集節點上電后,初始化后先掃描信道并尋找協調器,與之建立連接,連接成功后,終端節點每隔一定時間采集1次溫室內的溫度信息,然后傳輸給協調器,協調器接受各個節點的溫度值,最終將其傳輸給ARM9處理器。ZigBee協調器和終端節點程序流程圖分別如圖4和圖5所示。
3.3系統應用主程序設計
本系統通過創建打開DS18B20、ZigBee模塊的驅動進程,使得系統在操作系統打開后通過進程調度對驅動進行操作[14-15],從而實現無線多點溫度采集的目的。系統應用主程序流程圖見圖6所示。
4結論與討論
本研究介紹了一種基于ARM與ZigBee技術的溫室大棚多點溫度采集系統,并給出了詳細的系統架構方案,從軟硬件方面闡述了設計思路和實現方法。測試表明,將低成本、低功耗的無線ZigBee技術應用于多點分布式溫度采集系統,不但能夠實現對溫室大棚內多處溫度的自動實時采集,而且提高了系統的可靠性和靈活性,同時也減少了現場布線帶來的各種問題。此外,ARM-Linux具有較強的批量數據處理能力和網絡功能,因此本系統在大規模、大面積、監測節點數較多的溫室大棚中具有極大的推廣應用價值。以后的研究可以進一步深入:軟件擴展升級可以在操作系統中進行,使其具有更好的通用性以便于不同的用戶通過簡單的修改就可以成功添加不同種類和個數的傳感器,甚至利用網絡功能實現遠程數據采集和監測;硬件擴展升級可以添加新的終端節點來采集其他環境參數如光照、濕度、CO2濃度等;此外還可以增加網絡接口模塊來實現遠程數據傳輸。
參考文獻:
[1]黃偉鋒,葉祥. 溫室環境多點數據嵌入式智能監測系統[J]. 農機化研究,2010,32(6):133-136.
[2]蔣錄全. 信息生態與社會可持續發展[M]. 北京:北京圖書館出版社,2003:238-242.
[3]宋蟄存,陳寧,李迪飛. ZigBee無線傳感技術在森林火災監測中的應用[J]. 自動化儀表,2011,32(4):50-52.
[4]侯艷波,秦會斌,胡建人,等. 基于嵌入式和ZigBee技術的節能系統的設計與實現[J]. 電子器件,2012,35(6):670-673.
[5]楊瑋,呂科,張棟,等. 基于ZigBee技術的溫室無線智能控制終端開發[J]. 農業工程學報,2010,26(3):198-202.
[6]焦哲勇,程友聯. 基于ARM的農業溫室多點溫度采集系統的設計[J]. 農業開發與裝備,2007(5):19-21.
[7]張麗蓮. 基于S3C2440的溫室大棚多點溫度監測系統的研究[J]. 安徽農業科學,2010,38(20):10923-10924.
[8]Adams J. Designed with 802.15.4 and Zig-Bee:ZigBee Alliance[EB/OL]. (2009-04-05)[2013-10-01]. http://www.zigbee.org.
[9]韋東山. 嵌入式Linux應用開發完全手冊[M]. 北京:人民郵電出版社,2008.
[10]李新春,趙雙華. 基于ARM與GPRS的家庭智能控制系統的設計與實現[J]. 計算機系統應用,2010,19(5):227-229.
[11]程昌南,方強. ARM Linux入門與實踐[M]. 北京:北京航空航天大學出版社,2008.
[12]閆林生,肖伸平,鄧鵬,等. 基于物聯網的室內環境監控系統的設計[J]. 計算技術與自動化,2012,31(4):47-50.
[13]關學忠,姜南,王一群,等. 基于ZigBee技術的多點溫度監測系統的設計[J]. 自動化技術與應用,2011,30(10):41-44.
[14]白復東. 嵌入式Linux驅動程序的開發[J]. 信息技術,2009(9):185-186,189.
[15]朱珍民,隋雪青,段斌. 嵌入式實時操作系統及其應用開發[M]. 北京:北京郵電大學出版社,2006.