陳侃松+劉洪波+熊攀
摘 要:隨著無(wú)線(xiàn)傳感網(wǎng)絡(luò)的迅猛發(fā)展,將嵌入式系統(tǒng)接入互聯(lián)網(wǎng)已成為無(wú)線(xiàn)傳感網(wǎng)絡(luò)研究中的熱點(diǎn),其中通過(guò)訪(fǎng)問(wèn)嵌入式服務(wù)器網(wǎng)頁(yè)實(shí)現(xiàn)采集數(shù)據(jù)的動(dòng)態(tài)顯示是一個(gè)技術(shù)難點(diǎn)。文中采用DS18B20溫度傳感器采集溫度,在嵌入式網(wǎng)關(guān)搭建ARM-Linux開(kāi)發(fā)平臺(tái);然后移植BOA服務(wù)器;同時(shí)利用CGI程序、Ajax技術(shù)及HTML語(yǔ)言,在上位機(jī)通過(guò)訪(fǎng)問(wèn)嵌入式網(wǎng)關(guān),從而實(shí)現(xiàn)了對(duì)傳感器節(jié)點(diǎn)采集的溫度數(shù)據(jù)在網(wǎng)頁(yè)中的動(dòng)態(tài)顯示。實(shí)際應(yīng)用表明,該系統(tǒng)消耗CPU資源少,可減輕服務(wù)器負(fù)擔(dān),而且無(wú)需刷新頁(yè)面更新數(shù)據(jù),因而可減少用戶(hù)實(shí)際等待的時(shí)間。
關(guān)鍵詞:嵌入式服務(wù)器;ARM-Linux;CGI;Ajax;動(dòng)態(tài)顯示
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2014)03-0018-02
0 引 言
當(dāng)今,以互聯(lián)網(wǎng)為標(biāo)志的嵌入式系統(tǒng)正處于一個(gè)飛速發(fā)展的階段。嵌入式系統(tǒng)接入Internet后,相當(dāng)于一個(gè)功能齊全的小型Web服務(wù)器,用戶(hù)在上位機(jī)打開(kāi)瀏覽器,通過(guò)Internet即可獲取該Web服務(wù)器上的數(shù)據(jù)信息,從而實(shí)現(xiàn)了對(duì)現(xiàn)場(chǎng)信息的遠(yuǎn)程監(jiān)控,而且這種基于HTML語(yǔ)言標(biāo)準(zhǔn)化的Web用戶(hù)界面降低了系統(tǒng)開(kāi)發(fā)、維護(hù)以及人員培訓(xùn)的費(fèi)用[1]。
對(duì)于無(wú)線(xiàn)傳感網(wǎng)絡(luò)來(lái)說(shuō),可將嵌入式網(wǎng)關(guān)作為Web服務(wù)器,用戶(hù)在上位機(jī)通過(guò)Internet訪(fǎng)問(wèn)網(wǎng)頁(yè)的方式獲取下位機(jī)傳感器節(jié)點(diǎn)采集的數(shù)據(jù)?;诖?,本系統(tǒng)采用DS18B20溫度傳感器和ZigBee[2]無(wú)線(xiàn)通信模塊構(gòu)成無(wú)線(xiàn)傳感網(wǎng)絡(luò),以ARM9作為核心處理器搭建嵌入式Web服務(wù)器Boa和嵌入式數(shù)據(jù)庫(kù)SQLite,采用C語(yǔ)言、HTML語(yǔ)言、JavaScript程序、CGI程序、Ajax技術(shù),實(shí)現(xiàn)了對(duì)遠(yuǎn)端傳感器節(jié)點(diǎn)采集信息的處理、存儲(chǔ)及在網(wǎng)頁(yè)上的動(dòng)態(tài)顯示。
1 系統(tǒng)硬件整體設(shè)計(jì)
本系統(tǒng)的硬件主要由3部分組成:上位機(jī)PC端、嵌入式網(wǎng)關(guān)(ARM9)和ZigBee無(wú)線(xiàn)網(wǎng)絡(luò),系統(tǒng)的整體設(shè)計(jì)框圖如圖1所示。
ZigBee無(wú)線(xiàn)網(wǎng)絡(luò)由傳感器節(jié)點(diǎn)和協(xié)調(diào)器構(gòu)成,傳感器節(jié)點(diǎn)將采集的信息經(jīng)協(xié)調(diào)器發(fā)送至網(wǎng)關(guān),同時(shí)協(xié)調(diào)器也可接收網(wǎng)關(guān)發(fā)送的指令進(jìn)而控制節(jié)點(diǎn)的打開(kāi)與關(guān)閉。嵌入式網(wǎng)關(guān)介于上位機(jī)和傳感器節(jié)點(diǎn)之間,它既要支持TCP/IP協(xié)議,允許用戶(hù)通過(guò)Internet訪(fǎng)問(wèn),又要實(shí)現(xiàn)無(wú)線(xiàn)網(wǎng)絡(luò)和Internet之間的地址映射、協(xié)議轉(zhuǎn)換和路由功能,類(lèi)似于Internet網(wǎng)關(guān)[3]。由于嵌入式網(wǎng)關(guān)CPU串口引腳不是標(biāo)準(zhǔn)RS232電平,在ZigBee與網(wǎng)關(guān)之間需加入電平轉(zhuǎn)換電路[4]。PC端即上位機(jī)客戶(hù)端,用戶(hù)在上位機(jī)通過(guò)瀏覽器輸入嵌入式網(wǎng)關(guān)的IP地址可進(jìn)入系統(tǒng)登錄界面,登錄后用戶(hù)經(jīng)管理系統(tǒng)獲取傳感器節(jié)點(diǎn)采集的數(shù)據(jù),以訪(fǎng)問(wèn)網(wǎng)頁(yè)的方式實(shí)時(shí)顯示數(shù)據(jù)信息,并可輸入指令實(shí)現(xiàn)對(duì)下位機(jī)傳感器節(jié)點(diǎn)的控制。本文重點(diǎn)介紹嵌入式網(wǎng)關(guān)Web服務(wù)器的設(shè)計(jì),實(shí)現(xiàn)溫度數(shù)據(jù)在上位機(jī)的動(dòng)態(tài)顯示。
圖1 系統(tǒng)整體框圖
2 嵌入式Web服務(wù)器的搭建
硬件電路采用ARM9微處理器及外圍電路,開(kāi)發(fā)環(huán)境:MINI2440,Linux_2.6.32.2內(nèi)核,虛擬機(jī)Redhat5,交叉編譯版本ARM-Linux-gcc-4.3.2。主要工作包括Linux內(nèi)核移植、根文件系統(tǒng)制作、交叉編譯工具安裝、Web服務(wù)器源碼分析等。
2.1 交叉編譯工具安裝
交叉編譯即在一個(gè)平臺(tái)上編譯生成可在另一平臺(tái)運(yùn)行的代碼[5]。本設(shè)計(jì)包括安裝Linux系統(tǒng)的宿主機(jī)和基于ARM MINI2440的目標(biāo)板,由于二者處理器體系結(jié)構(gòu)不同,因此需借助交叉編譯工具在宿主機(jī)編譯生成目標(biāo)板上可運(yùn)行的機(jī)器代碼。本系統(tǒng)使用交叉編譯工具版本為ARM-Linux-gcc-4.3.2,將其拷貝到宿主機(jī)系統(tǒng),把編譯器路徑加入環(huán)境變量保存,重啟系統(tǒng)后在終端輸入arm-linux-gcc –v出現(xiàn)交叉編譯工具版本信息,表示交叉編譯器安裝成功。
2.2 BOA源碼分析及安裝
Web服務(wù)器采用BOA文件生成,它能按照順序完成用戶(hù)請(qǐng)求,支持認(rèn)證、CGI程序,其可執(zhí)行代碼約60 KB。BOA服務(wù)器的編譯與移植如下[7]:進(jìn)入boa-0.94-13文件夾的src目錄,運(yùn)行configure配置安裝文件,根據(jù)Makefile.in 生成Makefile文件進(jìn)行修改,再執(zhí)行make,生成可執(zhí)行程序boa后修改/etc/boa.conf,對(duì)boa進(jìn)行配置編譯,與虛擬機(jī)etc目錄下mine.types一起拷貝到目標(biāo)板var目錄,執(zhí)行./boa,Web服務(wù)器在目標(biāo)板上即可運(yùn)行。
3 數(shù)據(jù)動(dòng)態(tài)顯示的實(shí)現(xiàn)
通過(guò)上位機(jī)實(shí)時(shí)顯示傳感器節(jié)點(diǎn)發(fā)送給網(wǎng)關(guān)的數(shù)據(jù)是一個(gè)難點(diǎn),一般采用手動(dòng)或自動(dòng)刷新來(lái)實(shí)現(xiàn)數(shù)據(jù)更新,但都無(wú)法實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)動(dòng)態(tài)顯示。本設(shè)計(jì)以采集溫度數(shù)據(jù)為例,在網(wǎng)頁(yè)中嵌入JavaScript,采用Ajax技術(shù)實(shí)現(xiàn)溫度信息的動(dòng)態(tài)實(shí)時(shí)顯示,節(jié)約了CPU資源。
3.1 軟件流程
在嵌入式網(wǎng)關(guān)中,通過(guò)串口采集溫度信號(hào),每個(gè)溫度數(shù)據(jù)前面帶有設(shè)備號(hào)字符,將不同傳感器節(jié)點(diǎn)采集的溫度信息分別存儲(chǔ)在txt文檔中,上位機(jī)通過(guò)Internet訪(fǎng)問(wèn)嵌入式網(wǎng)關(guān)讀取txt文檔信息,并在網(wǎng)頁(yè)上動(dòng)態(tài)顯示。采用txt文檔存儲(chǔ)數(shù)據(jù),一方面有利于在現(xiàn)場(chǎng)直接從網(wǎng)關(guān)SD卡中讀取信息;另一方面有利于上位機(jī)編程讀取數(shù)據(jù)。其溫度動(dòng)態(tài)顯示軟件流程圖如圖2所示。
圖2 溫度動(dòng)態(tài)顯示流程圖
3.2 溫度信息處理
協(xié)調(diào)器將傳感器節(jié)點(diǎn)采集的溫度值通過(guò)串口傳送到嵌入式網(wǎng)關(guān),需定義傳感器節(jié)點(diǎn)的設(shè)備號(hào),以實(shí)現(xiàn)不同節(jié)點(diǎn)采集的溫度值在txt文檔中存儲(chǔ),數(shù)據(jù)格式如表1所列。
把編寫(xiě)好的串口C程序在宿主機(jī)編譯后生成的temper文件,并將temper、CGI程序和js程序拷貝到ARM板服務(wù)器WWW目錄下,執(zhí)行temper,在服務(wù)器WWW目錄下生成3個(gè)txt文檔,實(shí)現(xiàn)了溫度數(shù)據(jù)的存儲(chǔ)。
表1 數(shù)據(jù)傳送格設(shè)備號(hào) 溫度值(℃) 電壓值(V)
設(shè)備1 溫度值1 電壓值1
設(shè)備2 溫度值2 電壓值2
設(shè)備3 溫度值3 電壓值3
3.3 數(shù)據(jù)的讀取及顯示
為了實(shí)現(xiàn)溫度的動(dòng)態(tài)顯示,在溫度顯示網(wǎng)頁(yè)(temper.html)中采用javaScript(js)程序[8],通過(guò)加入定時(shí)器每隔一段時(shí)間調(diào)用CGI程序以獲取txt文檔的溫度值。由于采樣數(shù)據(jù)不斷存儲(chǔ)到txt文檔,CGI程序采用倒序方法首先讀取txt文檔最后一行獲取最新數(shù)據(jù),從而在網(wǎng)頁(yè)上動(dòng)態(tài)顯示溫度。
4 結(jié)果分析
在IE瀏覽器中輸入目標(biāo)機(jī)的IP地址,登錄系統(tǒng)進(jìn)入到溫度顯示頁(yè)面(temper.html),如圖3所示,點(diǎn)擊獲取按鈕,溫度值將顯示在頁(yè)面上,設(shè)置溫度數(shù)據(jù)5秒更新一次,當(dāng)改變溫度傳感器采集的溫度時(shí),網(wǎng)頁(yè)顯示數(shù)據(jù)也同時(shí)更新,溫度顯示頁(yè)面如圖3所示,從圖3可以看出,當(dāng)采集溫度數(shù)據(jù)發(fā)生變化時(shí),頁(yè)面顯示溫度值也隨之改變,實(shí)現(xiàn)了傳感器節(jié)點(diǎn)采樣數(shù)據(jù)的動(dòng)態(tài)顯示。
圖3 溫度數(shù)據(jù)顯示頁(yè)面
5 結(jié) 語(yǔ)
本文通過(guò)構(gòu)建ARM-Linux嵌入式網(wǎng)關(guān),利用BOA服務(wù)器、運(yùn)用JavaScript、CGI、Ajax技術(shù)及HTML語(yǔ)言實(shí)現(xiàn)了傳感器節(jié)點(diǎn)采集的溫度在上位機(jī)網(wǎng)頁(yè)的動(dòng)態(tài)顯示,與傳統(tǒng)的手動(dòng)或自動(dòng)刷新網(wǎng)頁(yè)相比,該系統(tǒng)占用服務(wù)器CPU資源少,縮短了用戶(hù)等待時(shí)間,實(shí)現(xiàn)了下位機(jī)采集的現(xiàn)場(chǎng)數(shù)據(jù)在上位機(jī)實(shí)時(shí)動(dòng)態(tài)顯示。
參 考 文 獻(xiàn)
[1]張喜民,張建國(guó),周利華.微嵌入式系統(tǒng)Web服務(wù)器技術(shù)[J].西安電子科技大學(xué)學(xué)報(bào):自然科學(xué)版,2005,32 (2):116-121.
[2]高守瑋,吳燦陽(yáng).ZigBee技術(shù)實(shí)踐教程[M].北京:北京航空航天大學(xué)出版社,2009.
[3]馮承金.基于ZigBee和ARM9的智能家居系統(tǒng)的研究與設(shè)計(jì)[D].武漢:武漢理工大學(xué),2010.
[4]毛漢華,孫先松.基于ARM+ZigBee的通用網(wǎng)絡(luò)測(cè)控系統(tǒng)硬件設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010,33(23):136-137.
[5]李善平, 劉文峰.Linux與嵌入式系統(tǒng)[M].北京:清華大學(xué)出版社,2006.
[6]張軍.基于ARM的嵌入式手姿態(tài)跟蹤設(shè)備控制系統(tǒng)研究[D].青島:青島科技大學(xué),2009.
[7]梁華軍.基于ARM9與ZigBee無(wú)線(xiàn)監(jiān)測(cè)系統(tǒng)的開(kāi)發(fā)研究[D].廣州:華南理工大學(xué),2012.
[8] Hbhuangang. 嵌入式Linux之我行——C+CGI+Ajax在S3C2440中的應(yīng)用[EB/OL].[2012-5-18].http://blog.chinaunix.net/uid-20620288-id-3204338.html.
Implementation of dynamic displaying data of embedded Web server based on ARM9
CHEN Kan-song1, LIU Hong-bo2, XIONG Pan1
(1. School of Computer and Information Engineering, Hubei University, Wuhan 430062, China;
2. Department of Physics and Electronic Information Science, Hengyang Normal University, Hengyang 421002, China)
Abstract: With the rapidly development of wireless sensor network, it has become a hot spot in the research of wireless sensor network to access embedded system into internet, and one of the technical difficulties is to realize the dynamic display of the collected data through accessing the Web in the embedded operating system. Using temperature sensor DS18B20 to collect the temperature data, and then ARM-Linux is constructed in the embedded gateway. BOA server is migrated while the CGI program, Ajax technique and Html language are used to realize real-time displaying the data in the Web page. The actual application shows that the system consumes less CPU resources, which can reduce the burden of the server, and need not to update the data, thus the waiting time for users in practical application is reduced.
Keywords: embedded Web server; ARM-Linux; CGI; Ajax; dynamic display