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