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