引言
溫室監(jiān)控系統(tǒng)用于實(shí)時(shí)監(jiān)測(cè)室內(nèi)溫度、濕度、CO2濃度等環(huán)境參數(shù),以便做出相應(yīng)調(diào)整,使作物處于最佳環(huán)境中生長(zhǎng)。現(xiàn)有的無(wú)線溫室監(jiān)控系統(tǒng)大多在無(wú)線局域網(wǎng)絡(luò)覆蓋范圍內(nèi)進(jìn)行環(huán)境信息監(jiān)測(cè),傳輸范圍有限,且功耗和成本較高。
ZigBee是一種新興的近距離、低復(fù)雜度、低功耗、低成本的無(wú)線網(wǎng)絡(luò)技術(shù)。2節(jié)5號(hào)電池即可使ZigBee射頻芯片工作6~24個(gè)月。
本設(shè)計(jì)采用ZigBee技術(shù)組建無(wú)線局域網(wǎng),并通過(guò)網(wǎng)關(guān)接人到以太網(wǎng)。不但很好地解決了功耗和成本問(wèn)題,而且也有效擴(kuò)展了數(shù)據(jù)的傳輸范圍。
1 系統(tǒng)設(shè)計(jì)
溫室監(jiān)控系統(tǒng)的結(jié)構(gòu)示意圖如圖1所示。系統(tǒng)由無(wú)線傳感節(jié)點(diǎn)、嵌入式網(wǎng)關(guān)、人機(jī)交互界面3個(gè)部分組成。無(wú)線傳感節(jié)點(diǎn)通過(guò)連接傳感器來(lái)獲得相應(yīng)的環(huán)境參數(shù),并將數(shù)據(jù)發(fā)送至網(wǎng)關(guān)節(jié)點(diǎn)。嵌入式網(wǎng)關(guān)承擔(dān)網(wǎng)絡(luò)管理的功能,主要負(fù)責(zé)組建ZigBee無(wú)線網(wǎng)絡(luò)并將傳感節(jié)點(diǎn)傳回的數(shù)據(jù)上傳至以太網(wǎng)中。人機(jī)交互界面的作用是將這些數(shù)據(jù)實(shí)時(shí)地顯示在網(wǎng)頁(yè)上,也可以通過(guò)網(wǎng)頁(yè)進(jìn)行遠(yuǎn)程控制。
圖1 溫室監(jiān)控系統(tǒng)的結(jié)構(gòu)示意圖
無(wú)線局域網(wǎng)中的各傳感器節(jié)點(diǎn)采集溫度、濕度、C02濃度等環(huán)境信息,經(jīng)網(wǎng)關(guān)處理后,監(jiān)控終端計(jì)算機(jī)通過(guò)IE瀏覽器即可訪問(wèn)這些數(shù)據(jù),從而實(shí)現(xiàn)遠(yuǎn)程監(jiān)控環(huán)境信息。
2 硬件設(shè)計(jì)
整個(gè)系統(tǒng)涉及ZigBee網(wǎng)絡(luò)和以太網(wǎng),為了使2個(gè)網(wǎng)絡(luò)能相互通信,需要建立網(wǎng)關(guān)。本文用嵌入式BOA服務(wù)器作為2個(gè)網(wǎng)絡(luò)的信息中轉(zhuǎn)站,以實(shí)現(xiàn)網(wǎng)關(guān)的功能。BOA服務(wù)器是一個(gè)小巧高效的Web服務(wù)器,運(yùn)行于Unix或Linux系統(tǒng)下,支持CGI的、適合用于嵌入式系統(tǒng)的單任務(wù)的HTTP服務(wù)器。
2.1 網(wǎng)關(guān)硬件設(shè)計(jì)
嵌入式BOA服務(wù)器可以在嵌入式Linux操作系統(tǒng)的支持下進(jìn)行設(shè)計(jì)。網(wǎng)關(guān)硬件結(jié)構(gòu)如圖2所示。
圖2 網(wǎng)關(guān)硬件結(jié)構(gòu)
網(wǎng)關(guān)硬件包括如下部分:
①S3C2440A,Samsung公司的一款基于ARM920T內(nèi)核的32位RISC嵌入式微處理器,運(yùn)行頻率可達(dá)400 MHz。
②256MB Flash,存儲(chǔ)Bootloader和Linux操作系統(tǒng)以及文件系統(tǒng)。
③64MB SDRAM,作為系統(tǒng)運(yùn)行時(shí)的程序和數(shù)據(jù)存儲(chǔ)器。
?、蹹M9000A網(wǎng)絡(luò)控制器,提供以太網(wǎng)連接功能,以滿足用戶通過(guò)TCP/IP以太網(wǎng)進(jìn)行實(shí)時(shí)的數(shù)據(jù)交互。
?、軯TAG仿真調(diào)試接口,支持ADS等集成開(kāi)發(fā)環(huán)境利用JTAG調(diào)試接口對(duì)整個(gè)硬件電路進(jìn)行軟件開(kāi)發(fā)和調(diào)試。
?、轚ART接口,連接CC2430射頻芯片以實(shí)現(xiàn)ZigBee無(wú)線局域網(wǎng)絡(luò)與以太網(wǎng)的互聯(lián)。
2.2 ZigBee節(jié)點(diǎn)硬件設(shè)計(jì)
ZigBee節(jié)點(diǎn)硬件結(jié)構(gòu)如圖3所示,主要由CC2430射頻芯片和傳感器構(gòu)成。
圖3 ZigBee節(jié)點(diǎn)硬件結(jié)構(gòu)
CC2430芯片整合了高性能2.4 GHz DSSS(直接序列擴(kuò)頻)射頻收發(fā)器內(nèi)核和工業(yè)標(biāo)準(zhǔn)的增強(qiáng)型8051 MCU,還包括了8 KB的SDRAM、128 KB的Flash,是一種片上系統(tǒng)(SoC)解決方案。
將相應(yīng)的傳感器與CC2430的I/O引腳連接,可測(cè)得所需的溫室環(huán)境參數(shù),并通過(guò)ZjgBee無(wú)線網(wǎng)絡(luò)進(jìn)行傳輸。本系統(tǒng)在每個(gè)ZigBee節(jié)點(diǎn)上分別連接溫度傳感器、濕度傳感器和CO2傳感器來(lái)監(jiān)測(cè)不同節(jié)點(diǎn)處相應(yīng)的環(huán)境信息。
3 軟件設(shè)計(jì)
本設(shè)計(jì)基于嵌入式Linux操作系統(tǒng),通過(guò)編寫(xiě)DM9000A網(wǎng)卡驅(qū)動(dòng)和UART異步串口驅(qū)動(dòng)實(shí)現(xiàn)以太網(wǎng)與ZigBee網(wǎng)絡(luò)的互聯(lián)。
網(wǎng)關(guān)的分層結(jié)構(gòu)如圖4所示。在TCP/IP協(xié)議和ZigBee協(xié)議上分別開(kāi)發(fā)Web、CGI程序以及無(wú)線收發(fā)程序。Web、CGI程序用于人機(jī)交互界面,無(wú)線收發(fā)程序用來(lái)實(shí)現(xiàn)ZigBee網(wǎng)絡(luò)的通信。
圖4 網(wǎng)關(guān)的分層結(jié)構(gòu)圖
CGI(Common Gateway Interface)規(guī)定Web服務(wù)器調(diào)用其他程序的接口協(xié)議標(biāo)準(zhǔn),提供給Web服務(wù)器一個(gè)執(zhí)行外部程序的通道。這種服務(wù)端技術(shù)使得瀏覽器和服務(wù)器之間具有交互性。CGI程序?qū)儆谝粋€(gè)外部程序,編譯成可執(zhí)行文件后,可以在服務(wù)端運(yùn)行。通過(guò)調(diào)用CGI程序可實(shí)現(xiàn)Web服務(wù)器與Web瀏覽器的交互,CGI程序接收Web瀏覽器發(fā)送給Web服務(wù)器的控制命令,并進(jìn)行處理,再將響應(yīng)結(jié)果回送給Web服務(wù)器及Web瀏覽器。
由于BOA服務(wù)器搭建在Linux系統(tǒng)之上,因此需要將嵌入式Linux系統(tǒng)移植到S3C2440芯片上。
3.1 移植Bootloader
Bootloader是在操作系統(tǒng)內(nèi)核運(yùn)行之前執(zhí)行的一小段程序,通過(guò)這段程序初始化硬件設(shè)備。Bootloader可移植性強(qiáng),只要根據(jù)硬件資源修改少量代碼即可直接使用。
3.2 移植Linux內(nèi)核
Linux內(nèi)核是嵌入式操作系統(tǒng)的核心,內(nèi)核移植包括內(nèi)核配置、內(nèi)核編譯、內(nèi)核下載3個(gè)部分。嵌入式設(shè)備主要用NAND Flash作為存儲(chǔ)器,NAND Flash容量有限,因此在配置內(nèi)核時(shí)需要裁減一些不需要的功能以減小內(nèi)核的體積。由于要將編譯好的Linux內(nèi)核映像和文件系統(tǒng)映像燒寫(xiě)到NAND Flash中,因此設(shè)置NAND Flash分區(qū)。本項(xiàng)目采用256 MB的NAND Flash,將其分為3個(gè)區(qū):0區(qū)為Bootloader分區(qū),1區(qū)為內(nèi)核分區(qū),2區(qū)為根文件系統(tǒng)分區(qū)。內(nèi)核配置完成后執(zhí)行make zImage命令生成Linux內(nèi)核映像文件,然后將內(nèi)核映像文件下載至NAND Flash的內(nèi)核分區(qū)上。
3.3 移植根文件系統(tǒng)和BOA服務(wù)器
根文件系統(tǒng)是嵌入式Linux系統(tǒng)啟動(dòng)的重要組成部分,也是用戶應(yīng)用程序的載體。本方案采用busybox制作yaffs2文件系統(tǒng),并在文件系統(tǒng)中加入BOA服務(wù)器。BOA是一款單任務(wù)的HTTP服務(wù)器,當(dāng)有連接請(qǐng)求到來(lái)時(shí),通過(guò)建立HTTP請(qǐng)求列表來(lái)處理多路HTTP連接請(qǐng)求,同時(shí)它為CGI程序創(chuàng)建新的進(jìn)程。
移植好BOA服務(wù)器后,在文件系統(tǒng)中建立/var/www/cgi-bin文件夾,此文件夾用于存放靜態(tài)網(wǎng)頁(yè)和CGI程序。
3.4 網(wǎng)關(guān)軟件設(shè)計(jì)
網(wǎng)關(guān)軟件程序流程如圖5所示。S3C2440通過(guò)I/O端口觸發(fā)CC2430,使其無(wú)線發(fā)送相應(yīng)的指令,遠(yuǎn)程控制傳感器節(jié)點(diǎn)進(jìn)行數(shù)據(jù)采集。采集到的數(shù)據(jù)通過(guò)UART串口傳回S3C2440并上傳至嵌入式BOA服務(wù)器。用戶通過(guò)IE瀏覽器就可以實(shí)時(shí)采集到相應(yīng)的環(huán)境信息。
圖5 網(wǎng)關(guān)軟件程序流程圖
傳感節(jié)點(diǎn)采集到的數(shù)據(jù)最終將上傳至嵌入式BOA服務(wù)器上,用戶可通過(guò)IE瀏覽器訪問(wèn)服務(wù)器IP地址來(lái)監(jiān)測(cè)溫室的環(huán)境信息,監(jiān)測(cè)網(wǎng)頁(yè)如圖6所示。
圖6 監(jiān)測(cè)網(wǎng)頁(yè)
結(jié)語(yǔ)
本文基于S3C2440平臺(tái)和Linux操作系統(tǒng)提出了一種ZigBee網(wǎng)關(guān)的設(shè)計(jì)方法,并給出了硬件和軟件的實(shí)現(xiàn)方法,實(shí)現(xiàn)了ZigBee無(wú)線局域網(wǎng)絡(luò)與以太網(wǎng)的數(shù)據(jù)互通。該網(wǎng)關(guān)成功地用于溫室監(jiān)控系統(tǒng)中,具有穩(wěn)定性好、實(shí)時(shí)性強(qiáng)、可遠(yuǎn)距離監(jiān)控等特點(diǎn)。