陳 舵,王永強
(唐山學院 計算機科學與技術系,河北 唐山 063000)
隨著物聯網的迅速發展,遠程數據采集系統在工農業生產和日常經濟生活中的應用日益廣泛。嵌入式Web服務器(Embedded Web Server,EWS),是在現場測試和控制設備中嵌入的Web服務器[1],是一類基于嵌入式設備的、低資源消耗的、小型或微型的Web服務器。EWS通常采用Browse/Server的工作方式,即在嵌入式設備上運行支持腳本或通用網關接口(Common Gateway Interface,CGI)功能的Web服務器,能夠生成動態頁面,遠端用戶通過Ineternet瀏覽器可以對嵌入式設備進行管理和監控,使用非常方便,逐步成為嵌入式設備的主流管理與交互方式。ZigBee網絡作為無線傳感器網絡中最具發展潛力和研究價值的網絡之一,獲得軍界、工業界和學術屆的高度關注[2]。綜合應用傳統的嵌入式Web服務技術和近來迅速發展的ZigBee無線傳感器網絡技術,完成遠程數據采集和傳送,是一種可靠和簡潔的系統實現方案,也正是本文的研究內容。
基于嵌入式Web服務器和ZigBee的遠程數據采集系統結構圖如圖1所示。系統主要由遠端客戶端、嵌入式Web服務器、ZigBee傳感器網絡3個部分組成。本系統使用開源的GoAheadWeb服務器,基于三星Exynos4412處理器搭建嵌入式Web服務器;ZigBee傳感器網絡拓撲結構采用星型結構,這是一種較為簡單的網絡結構,只需要協調器和端節點,不需要路由器。其中,協調器負責發起和建立網絡,并通過串行總線與現場嵌入式Web服務器建立聯接,其他所有端節點為終端設備,終端設備中配置有相應的傳感器,進行現場數據的采集,這些數據通過端節點直接上傳給協調器,若端節點之間需要通信,也必須通過協調器進行轉發。

圖1 系統整體結構圖
本文選擇采用ARM Cortex-A9內核的處理器Samsung Exynos4412微處理器為主控芯片,處理器Exynos4412內部集成了Mali-400 MP高性能圖形引擎,支持3D圖形流暢運行,并可播放1080P大尺寸高清視頻,運行主頻高達1.5 GHz。提供UART,I2C,I2S,USB,SPI,SDIO等總線接口,配置1 GB的DDR3內存、4 GB的FLASH存儲器。Cortex-A9處理器利用動態長度、八級超標量結構、多事件管道及推斷性亂序執行機制,能在頻率超過1 GHz設備的每個循環中執行多達4條指令,運行效率得到很大提高,并與其他Cortex系列處理器以及廣受歡迎的ARM MPCore技術兼容,支持通用的包括操作系統、實時操作系統、中間件以及相關應用程序在內的豐富軟件資源,完全滿足本系統的需求。
2.2.1 EWS的選擇
常見的EWS有Httpd,Apache,Boa和GoAhead等[1]。其中,Httpd是一種輕量級Web服務器,提供HTTP支持;Apache是重量級服務器,成熟穩定,但體積較大,適合復雜的嵌入式應用,但在高負載的情況下,沒有單進程的服務器性能高[1];Boa支持HTTP和CGI,具有較高的請求速度及效率,最多可以同時響應50個請求;GoAhead是一款面向嵌入式系統的Web服務器,主要用于解決嵌入式系統開發的相關問題,僅管它的體積非常小巧,但提供了常見的服務特性,支持HTTP,ASP,嵌入式JavaScript,CGI以及靜態頁面HTML格式。因此,本文選擇GoAhead作為嵌入式Linux操作系統下的Web服務器。
2.2.2 EWS的移植
本系統采用的LINUX版本為2.6.32,交叉編譯器為gcc version 4.5.1,移植步驟如下:
①下載服務器源碼,webs218.tar.gz,下載地址:http://www.goahead.com。
②解壓源碼工程:tar-xzvf webs218.tar.gz。
③修改Makefile文件:進入源碼目錄,修改LINUX目錄下的Makefile文件,
cd ws031202/LINUX/
vim Makefile
添加編譯器宏定義,加入變量CC和AR的定義:
CC=arm-linux-gcc
AR=arm-linux-ar
④交叉編譯:
make
編譯成功后,即可生成Web服務器鏡像,將其燒寫到目標機后,進行相關配置并運行,即可啟動嵌入式Web服務。
2.2.3 EWS服務程序設計
嵌入式Web服務器涉及的主要技術是超文本傳輸協議HTTP和CGI,EWS工作過程示意圖如圖2所示。

圖2 EWS工作過程示意圖
在嵌入式Web服務器的工作過程中,通過CGI實現了動態網頁服務,CGI接口標準包括標準輸入、環境變量、標準輸出三部分,規定了嵌入式Web服務器調用其他程序的接口協議標準,Web服務器通過調用CGI程序實現和Web瀏覽器的交互,CGI程序接受Web瀏覽器發送給Web服務器的信息,進行處理,將響應結果再回送給Web服務器及Web瀏覽器,完成Web網頁中表單數據的處理、數據庫查詢和實現以及與傳統應用系統的集成等工作。
常用的CGI編程語言有shell script,C,visual basic,perl等,其中C語言簡潔緊湊、靈活方便、運算豐富,并允許直接訪問物理地址,支持直接對硬件進行操作,執行效率高,且可移植性好,是一種廣泛使用的結構化程序設計語言。本文選擇C語言進行CGI程序的開發,嵌入式Web服務器算法流程圖如圖3所示。

圖3 EWS算法流程圖
ZigBee是一種基于IEEE802.15.4標準的短距離、低復雜度、低功耗、低數據速率、低成本的無線網絡技術。綜合應用了ZigBee和傳感器技術的ZigBee無線傳感器網絡,具備簡單、方便、穩定和低成本等特點,應用非常廣泛。
目前ZigBee的實現方案主要有三種:MCU和RF收發器分離的雙芯片方案、集成RF和MCU的單芯片SOC方案以及ZigBee協處理器和MCU的雙芯片方案。在主要的ZigBee芯片提供商中,德州儀器的ZigBee產品覆蓋了以上三種方案,飛思卡爾,ST,Ember,Jennic可以提供單芯片方案,Atmel,Microchip等其他廠商大都提供MCU和RF收發器分離的雙芯片方案。
CC2530是用于2.4 GHz IEEE 802.15.4,ZigBee和RF4CE應用的一個片上系統解決方案,結合高性DSSS射頻收發器和工業級8051控制器,這種解決方案能夠提高性能,并滿足以ZigBee為基礎的2.4 GHz ISM波段應用,具備低成本、低功耗等特點,所以本文選擇這種硬件方案。
Z-Stack是由美國德州儀器開發,符合IEEE 802.15.4標準的免費和半開源ZigBee協議棧,它可以運行在CC2530以及TI別的硬件體系上,支持ZigBee2007及ZigBee2007Pro協議。本文的軟件設計是基于ZigBee2007協議的。
ZigBee協調器是啟動和配置網絡的一種設備,負責啟動整個網絡,先選擇信道和網絡ID(也稱之為PAN ID,即Personal Area Network ID),隨后啟動整個網絡。ZigBee2007協議棧規范使用了IEEE 802.15.4定義的物理層(PHY)和介質訪問層(MAC),并進一步定義了網絡層(NWK)和應用層(APL),開發人員需要在此協議棧的基礎之上增添自己的定義來滿足具體設計需求。本文采用ZigBee協調器與子節點形成星型網絡的網絡架構,ZigBee協調器主要功能是創建網絡并進行通信。本文采用定長通信協議,一幀固定為25字節,協議的定義如下:
u8 DataHead[2]:包頭0xEE,0xCC
u8 NodeAddress[4]:節點網絡地址
u8 FamilyAddress[4]:根節點網絡地址
u8 NodeState:節點狀態
u8 NodeChannel:物理信道
u8 ConnectPort:節點ID
u8 SensorType:傳感器類型
u8 SensorID:相同類型傳感器ID
u8 SensorCMD:節點命令
u8 Sensordata[8]:節點傳感器數據
u8 DataEnd:包尾0xFF
其中,符號“u8”表示單字節無符號整數數據類型。
ZigBee端節點既可以是全功能設備,也可以是簡化功能設備,但通常只需要一個簡功能設備作為端節點。在基于ZigBee的無線傳感網絡中,端節點的主要作用是采集傳感器數據,開發人員需要在應用層中加入傳感器驅動程序,實現對傳感器的數據讀取。
本文以溫度、濕度和壓力為數據采集實例,實現基于嵌入式Web服務器和ZigBee的遠程數據采集。選用的溫濕度傳感器型號為DHT95,壓力傳感器型號為FSR400。其中,DHT95是一款含有已校準數字信號輸出的溫濕度復合傳感器,IIC數據總線工作方式屬于數字傳感器,測量范圍分別為:溫度-20~128 ℃和濕度0~100% RH。FSR400是一款超薄型電阻式壓力傳感器,測量范圍為0~10 kg,屬于模擬傳感器。遠程客戶端軟件平臺為:Windows7及以上操作系統、IE8.0及以上Web瀏覽器。URL測試地址為:http://192.168.1.6/:8000。瀏覽器主界面如圖4所示。

圖4 瀏覽器主界面
輸入要獲取的物品編號和數據類型,0代表溫度,1代表濕度,2代表壓力。點擊頁面中的“獲取”按鈕,則服務器程序接受請求,并傳回用戶請求的數據。例如,用戶獲取“物品1”的“溫度”數據,如圖5所示。

圖5 獲取溫度數據界面
用戶獲取濕度和壓力數據等操作,與獲取溫度數據的操作相似,不再贅述。
本文提出了一種綜合應用嵌入式Web服務技術和ZigBee技術的遠程數據采集系統的設計方案,并給出了系統硬件和軟件的一種可行的實現方法。ZigBee傳感器網絡實時采集現場數據,通過嵌入式Web服務器實現數據上傳,遠端用戶通過Ineternet瀏覽器訪問嵌入式Web服務器,獲取遠程實時數據。本文以溫度、濕度和壓力為數據采集實例,進行了系統硬件和軟件測試,結果表明本文提出的設計方案是可行的。今后的研究工作會進一步提高系統可靠性和可維護性,優化人機交互界面。
參考文獻:
[1] 朱錦,雷娟娟,陳福才.基于CGI的嵌入式Web服務器的設計與實現[J].電子設計工程,2016,24(19):191-193.
[2] 宋璐,汪貴華,華斯亮.基于ZigBee技術的局域通訊系統設計[J].電子設計工程,2017,25(20):97-100.