陳 舵,王永強(qiáng)
(唐山學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系,河北 唐山 063000)
隨著物聯(lián)網(wǎng)的迅速發(fā)展,遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)在工農(nóng)業(yè)生產(chǎn)和日常經(jīng)濟(jì)生活中的應(yīng)用日益廣泛。嵌入式Web服務(wù)器(Embedded Web Server,EWS),是在現(xiàn)場(chǎng)測(cè)試和控制設(shè)備中嵌入的Web服務(wù)器[1],是一類(lèi)基于嵌入式設(shè)備的、低資源消耗的、小型或微型的Web服務(wù)器。EWS通常采用Browse/Server的工作方式,即在嵌入式設(shè)備上運(yùn)行支持腳本或通用網(wǎng)關(guān)接口(Common Gateway Interface,CGI)功能的Web服務(wù)器,能夠生成動(dòng)態(tài)頁(yè)面,遠(yuǎn)端用戶(hù)通過(guò)Ineternet瀏覽器可以對(duì)嵌入式設(shè)備進(jìn)行管理和監(jiān)控,使用非常方便,逐步成為嵌入式設(shè)備的主流管理與交互方式。ZigBee網(wǎng)絡(luò)作為無(wú)線傳感器網(wǎng)絡(luò)中最具發(fā)展?jié)摿脱芯績(jī)r(jià)值的網(wǎng)絡(luò)之一,獲得軍界、工業(yè)界和學(xué)術(shù)屆的高度關(guān)注[2]。綜合應(yīng)用傳統(tǒng)的嵌入式Web服務(wù)技術(shù)和近來(lái)迅速發(fā)展的ZigBee無(wú)線傳感器網(wǎng)絡(luò)技術(shù),完成遠(yuǎn)程數(shù)據(jù)采集和傳送,是一種可靠和簡(jiǎn)潔的系統(tǒng)實(shí)現(xiàn)方案,也正是本文的研究?jī)?nèi)容。
基于嵌入式Web服務(wù)器和ZigBee的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)圖如圖1所示。系統(tǒng)主要由遠(yuǎn)端客戶(hù)端、嵌入式Web服務(wù)器、ZigBee傳感器網(wǎng)絡(luò)3個(gè)部分組成。本系統(tǒng)使用開(kāi)源的GoAheadWeb服務(wù)器,基于三星Exynos4412處理器搭建嵌入式Web服務(wù)器;ZigBee傳感器網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用星型結(jié)構(gòu),這是一種較為簡(jiǎn)單的網(wǎng)絡(luò)結(jié)構(gòu),只需要協(xié)調(diào)器和端節(jié)點(diǎn),不需要路由器。其中,協(xié)調(diào)器負(fù)責(zé)發(fā)起和建立網(wǎng)絡(luò),并通過(guò)串行總線與現(xiàn)場(chǎng)嵌入式Web服務(wù)器建立聯(lián)接,其他所有端節(jié)點(diǎn)為終端設(shè)備,終端設(shè)備中配置有相應(yīng)的傳感器,進(jìn)行現(xiàn)場(chǎng)數(shù)據(jù)的采集,這些數(shù)據(jù)通過(guò)端節(jié)點(diǎn)直接上傳給協(xié)調(diào)器,若端節(jié)點(diǎn)之間需要通信,也必須通過(guò)協(xié)調(diào)器進(jìn)行轉(zhuǎn)發(fā)。
圖1 系統(tǒng)整體結(jié)構(gòu)圖
本文選擇采用ARM Cortex-A9內(nèi)核的處理器Samsung Exynos4412微處理器為主控芯片,處理器Exynos4412內(nèi)部集成了Mali-400 MP高性能圖形引擎,支持3D圖形流暢運(yùn)行,并可播放1080P大尺寸高清視頻,運(yùn)行主頻高達(dá)1.5 GHz。提供UART,I2C,I2S,USB,SPI,SDIO等總線接口,配置1 GB的DDR3內(nèi)存、4 GB的FLASH存儲(chǔ)器。Cortex-A9處理器利用動(dòng)態(tài)長(zhǎng)度、八級(jí)超標(biāo)量結(jié)構(gòu)、多事件管道及推斷性亂序執(zhí)行機(jī)制,能在頻率超過(guò)1 GHz設(shè)備的每個(gè)循環(huán)中執(zhí)行多達(dá)4條指令,運(yùn)行效率得到很大提高,并與其他Cortex系列處理器以及廣受歡迎的ARM MPCore技術(shù)兼容,支持通用的包括操作系統(tǒng)、實(shí)時(shí)操作系統(tǒng)、中間件以及相關(guān)應(yīng)用程序在內(nèi)的豐富軟件資源,完全滿(mǎn)足本系統(tǒng)的需求。
2.2.1 EWS的選擇
常見(jiàn)的EWS有Httpd,Apache,Boa和GoAhead等[1]。其中,Httpd是一種輕量級(jí)Web服務(wù)器,提供HTTP支持;Apache是重量級(jí)服務(wù)器,成熟穩(wěn)定,但體積較大,適合復(fù)雜的嵌入式應(yīng)用,但在高負(fù)載的情況下,沒(méi)有單進(jìn)程的服務(wù)器性能高[1];Boa支持HTTP和CGI,具有較高的請(qǐng)求速度及效率,最多可以同時(shí)響應(yīng)50個(gè)請(qǐng)求;GoAhead是一款面向嵌入式系統(tǒng)的Web服務(wù)器,主要用于解決嵌入式系統(tǒng)開(kāi)發(fā)的相關(guān)問(wèn)題,僅管它的體積非常小巧,但提供了常見(jiàn)的服務(wù)特性,支持HTTP,ASP,嵌入式JavaScript,CGI以及靜態(tài)頁(yè)面HTML格式。因此,本文選擇GoAhead作為嵌入式Linux操作系統(tǒng)下的Web服務(wù)器。
2.2.2 EWS的移植
本系統(tǒng)采用的LINUX版本為2.6.32,交叉編譯器為gcc version 4.5.1,移植步驟如下:
①下載服務(wù)器源碼,webs218.tar.gz,下載地址:http://www.goahead.com。
②解壓源碼工程:tar-xzvf webs218.tar.gz。
③修改Makefile文件:進(jìn)入源碼目錄,修改LINUX目錄下的Makefile文件,
cd ws031202/LINUX/
vim Makefile
添加編譯器宏定義,加入變量CC和AR的定義:
CC=arm-linux-gcc
AR=arm-linux-ar
④交叉編譯:
make
編譯成功后,即可生成Web服務(wù)器鏡像,將其燒寫(xiě)到目標(biāo)機(jī)后,進(jìn)行相關(guān)配置并運(yùn)行,即可啟動(dòng)嵌入式Web服務(wù)。
2.2.3 EWS服務(wù)程序設(shè)計(jì)
嵌入式Web服務(wù)器涉及的主要技術(shù)是超文本傳輸協(xié)議HTTP和CGI,EWS工作過(guò)程示意圖如圖2所示。
圖2 EWS工作過(guò)程示意圖
在嵌入式Web服務(wù)器的工作過(guò)程中,通過(guò)CGI實(shí)現(xiàn)了動(dòng)態(tài)網(wǎng)頁(yè)服務(wù),CGI接口標(biāo)準(zhǔn)包括標(biāo)準(zhǔn)輸入、環(huán)境變量、標(biāo)準(zhǔn)輸出三部分,規(guī)定了嵌入式Web服務(wù)器調(diào)用其他程序的接口協(xié)議標(biāo)準(zhǔn),Web服務(wù)器通過(guò)調(diào)用CGI程序?qū)崿F(xiàn)和Web瀏覽器的交互,CGI程序接受Web瀏覽器發(fā)送給Web服務(wù)器的信息,進(jìn)行處理,將響應(yīng)結(jié)果再回送給Web服務(wù)器及Web瀏覽器,完成Web網(wǎng)頁(yè)中表單數(shù)據(jù)的處理、數(shù)據(jù)庫(kù)查詢(xún)和實(shí)現(xiàn)以及與傳統(tǒng)應(yīng)用系統(tǒng)的集成等工作。
常用的CGI編程語(yǔ)言有shell script,C,visual basic,perl等,其中C語(yǔ)言簡(jiǎn)潔緊湊、靈活方便、運(yùn)算豐富,并允許直接訪問(wèn)物理地址,支持直接對(duì)硬件進(jìn)行操作,執(zhí)行效率高,且可移植性好,是一種廣泛使用的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言。本文選擇C語(yǔ)言進(jìn)行CGI程序的開(kāi)發(fā),嵌入式Web服務(wù)器算法流程圖如圖3所示。
圖3 EWS算法流程圖
ZigBee是一種基于IEEE802.15.4標(biāo)準(zhǔn)的短距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率、低成本的無(wú)線網(wǎng)絡(luò)技術(shù)。綜合應(yīng)用了ZigBee和傳感器技術(shù)的ZigBee無(wú)線傳感器網(wǎng)絡(luò),具備簡(jiǎn)單、方便、穩(wěn)定和低成本等特點(diǎn),應(yīng)用非常廣泛。
目前ZigBee的實(shí)現(xiàn)方案主要有三種:MCU和RF收發(fā)器分離的雙芯片方案、集成RF和MCU的單芯片SOC方案以及ZigBee協(xié)處理器和MCU的雙芯片方案。在主要的ZigBee芯片提供商中,德州儀器的ZigBee產(chǎn)品覆蓋了以上三種方案,飛思卡爾,ST,Ember,Jennic可以提供單芯片方案,Atmel,Microchip等其他廠商大都提供MCU和RF收發(fā)器分離的雙芯片方案。
CC2530是用于2.4 GHz IEEE 802.15.4,ZigBee和RF4CE應(yīng)用的一個(gè)片上系統(tǒng)解決方案,結(jié)合高性DSSS射頻收發(fā)器和工業(yè)級(jí)8051控制器,這種解決方案能夠提高性能,并滿(mǎn)足以ZigBee為基礎(chǔ)的2.4 GHz ISM波段應(yīng)用,具備低成本、低功耗等特點(diǎn),所以本文選擇這種硬件方案。
Z-Stack是由美國(guó)德州儀器開(kāi)發(fā),符合IEEE 802.15.4標(biāo)準(zhǔn)的免費(fèi)和半開(kāi)源ZigBee協(xié)議棧,它可以運(yùn)行在CC2530以及TI別的硬件體系上,支持ZigBee2007及ZigBee2007Pro協(xié)議。本文的軟件設(shè)計(jì)是基于ZigBee2007協(xié)議的。
ZigBee協(xié)調(diào)器是啟動(dòng)和配置網(wǎng)絡(luò)的一種設(shè)備,負(fù)責(zé)啟動(dòng)整個(gè)網(wǎng)絡(luò),先選擇信道和網(wǎng)絡(luò)ID(也稱(chēng)之為PAN ID,即Personal Area Network ID),隨后啟動(dòng)整個(gè)網(wǎng)絡(luò)。ZigBee2007協(xié)議棧規(guī)范使用了IEEE 802.15.4定義的物理層(PHY)和介質(zhì)訪問(wèn)層(MAC),并進(jìn)一步定義了網(wǎng)絡(luò)層(NWK)和應(yīng)用層(APL),開(kāi)發(fā)人員需要在此協(xié)議棧的基礎(chǔ)之上增添自己的定義來(lái)滿(mǎn)足具體設(shè)計(jì)需求。本文采用ZigBee協(xié)調(diào)器與子節(jié)點(diǎn)形成星型網(wǎng)絡(luò)的網(wǎng)絡(luò)架構(gòu),ZigBee協(xié)調(diào)器主要功能是創(chuàng)建網(wǎng)絡(luò)并進(jìn)行通信。本文采用定長(zhǎng)通信協(xié)議,一幀固定為25字節(jié),協(xié)議的定義如下:
u8 DataHead[2]:包頭0xEE,0xCC
u8 NodeAddress[4]:節(jié)點(diǎn)網(wǎng)絡(luò)地址
u8 FamilyAddress[4]:根節(jié)點(diǎn)網(wǎng)絡(luò)地址
u8 NodeState:節(jié)點(diǎn)狀態(tài)
u8 NodeChannel:物理信道
u8 ConnectPort:節(jié)點(diǎn)ID
u8 SensorType:傳感器類(lèi)型
u8 SensorID:相同類(lèi)型傳感器ID
u8 SensorCMD:節(jié)點(diǎn)命令
u8 Sensordata[8]:節(jié)點(diǎn)傳感器數(shù)據(jù)
u8 DataEnd:包尾0xFF
其中,符號(hào)“u8”表示單字節(jié)無(wú)符號(hào)整數(shù)數(shù)據(jù)類(lèi)型。
ZigBee端節(jié)點(diǎn)既可以是全功能設(shè)備,也可以是簡(jiǎn)化功能設(shè)備,但通常只需要一個(gè)簡(jiǎn)功能設(shè)備作為端節(jié)點(diǎn)。在基于ZigBee的無(wú)線傳感網(wǎng)絡(luò)中,端節(jié)點(diǎn)的主要作用是采集傳感器數(shù)據(jù),開(kāi)發(fā)人員需要在應(yīng)用層中加入傳感器驅(qū)動(dòng)程序,實(shí)現(xiàn)對(duì)傳感器的數(shù)據(jù)讀取。
本文以溫度、濕度和壓力為數(shù)據(jù)采集實(shí)例,實(shí)現(xiàn)基于嵌入式Web服務(wù)器和ZigBee的遠(yuǎn)程數(shù)據(jù)采集。選用的溫濕度傳感器型號(hào)為DHT95,壓力傳感器型號(hào)為FSR400。其中,DHT95是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器,IIC數(shù)據(jù)總線工作方式屬于數(shù)字傳感器,測(cè)量范圍分別為:溫度-20~128 ℃和濕度0~100% RH。FSR400是一款超薄型電阻式壓力傳感器,測(cè)量范圍為0~10 kg,屬于模擬傳感器。遠(yuǎn)程客戶(hù)端軟件平臺(tái)為:Windows7及以上操作系統(tǒng)、IE8.0及以上Web瀏覽器。URL測(cè)試地址為:http://192.168.1.6/:8000。瀏覽器主界面如圖4所示。
圖4 瀏覽器主界面
輸入要獲取的物品編號(hào)和數(shù)據(jù)類(lèi)型,0代表溫度,1代表濕度,2代表壓力。點(diǎn)擊頁(yè)面中的“獲取”按鈕,則服務(wù)器程序接受請(qǐng)求,并傳回用戶(hù)請(qǐng)求的數(shù)據(jù)。例如,用戶(hù)獲取“物品1”的“溫度”數(shù)據(jù),如圖5所示。
圖5 獲取溫度數(shù)據(jù)界面
用戶(hù)獲取濕度和壓力數(shù)據(jù)等操作,與獲取溫度數(shù)據(jù)的操作相似,不再贅述。
本文提出了一種綜合應(yīng)用嵌入式Web服務(wù)技術(shù)和ZigBee技術(shù)的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方案,并給出了系統(tǒng)硬件和軟件的一種可行的實(shí)現(xiàn)方法。ZigBee傳感器網(wǎng)絡(luò)實(shí)時(shí)采集現(xiàn)場(chǎng)數(shù)據(jù),通過(guò)嵌入式Web服務(wù)器實(shí)現(xiàn)數(shù)據(jù)上傳,遠(yuǎn)端用戶(hù)通過(guò)Ineternet瀏覽器訪問(wèn)嵌入式Web服務(wù)器,獲取遠(yuǎn)程實(shí)時(shí)數(shù)據(jù)。本文以溫度、濕度和壓力為數(shù)據(jù)采集實(shí)例,進(jìn)行了系統(tǒng)硬件和軟件測(cè)試,結(jié)果表明本文提出的設(shè)計(jì)方案是可行的。今后的研究工作會(huì)進(jìn)一步提高系統(tǒng)可靠性和可維護(hù)性,優(yōu)化人機(jī)交互界面。
參考文獻(xiàn):
[1] 朱錦,雷娟娟,陳福才.基于CGI的嵌入式Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2016,24(19):191-193.
[2] 宋璐,汪貴華,華斯亮.基于ZigBee技術(shù)的局域通訊系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2017,25(20):97-100.