李峻屹
(1.陜西警官職業(yè)學(xué)院 信息技術(shù)系,陜西 西安 710043;2.陜西科技大學(xué) 陜西 西安 710021)
基于ARM9的嵌入式Web遠程實時溫度監(jiān)控系統(tǒng)設(shè)計
李峻屹1,2
(1.陜西警官職業(yè)學(xué)院 信息技術(shù)系,陜西 西安 710043;2.陜西科技大學(xué) 陜西 西安 710021)
提出了一種基于ARM9的嵌入式Web遠程實時溫度監(jiān)控系統(tǒng)的設(shè)計方法。在基于ARM9和Linux2.6內(nèi)核的嵌入式系統(tǒng)平臺上控制溫度傳感器DS18B20采集數(shù)據(jù),并配置實現(xiàn)了Boa服務(wù)器;利用CGI實現(xiàn)了客戶端瀏覽器和嵌入式Web服務(wù)器之間的交互,并采用Ajax技術(shù)實現(xiàn)了溫度采集數(shù)據(jù)在遠程客戶端的動態(tài)實時顯示。
ARM9;嵌入式Web服務(wù)器;BOA;Ajax
在現(xiàn)有的各種監(jiān)控系統(tǒng)中,一部分采用傳統(tǒng)的51單片機或ARM7作為監(jiān)控系統(tǒng)的微控制器,但這類芯片受到主頻等因素的制約,無法對復(fù)雜系統(tǒng)進行控制[1-2]。還有一部分系統(tǒng)采集數(shù)據(jù)的傳輸采用CAN,RS-485,RS-232等通信方式[3],只能在本地顯示和控制,客戶無法在遠端監(jiān)控。隨著計算機技術(shù)、網(wǎng)絡(luò)技術(shù)的發(fā)展,在對遠程實時監(jiān)控系統(tǒng)充分研究之后,結(jié)合當前最流行的嵌入式技術(shù),提出一種便捷、真正能實現(xiàn)遠程實時的溫度監(jiān)控系統(tǒng)。采用基于ARM9和linux2.6的嵌入式平臺來采集數(shù)據(jù),并通過搭建Boa服務(wù)器,將數(shù)據(jù)通過Internet將數(shù)據(jù)發(fā)送給遠程客戶端,并采用Ajax技術(shù)實現(xiàn)客戶端網(wǎng)頁對服務(wù)器采集數(shù)據(jù)的局部動態(tài)實時更新,客戶端也可通過頁面按鈕實現(xiàn)對前端采集系統(tǒng)控制。
系統(tǒng)組成如圖1所示,主要由前端溫度采集服務(wù)器和客戶端兩部分構(gòu)成,其中前端溫度采集服務(wù)器以三星公司的S3C2410 ARM9處理器為核心,并由溫度傳感器、LCD顯示、串口通信和以太網(wǎng)通信等部分構(gòu)成;客戶端由兩部分組成,一種是前端溫度采集服務(wù)器通過internet的方式向本地客戶計算機發(fā)送采集到的數(shù)據(jù),另一種是通過GSM模塊無線發(fā)送采集數(shù)據(jù)到用戶手機等移動設(shè)備上。
圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 System structure diagram
系統(tǒng)軟件開發(fā)首先在前端溫度采集服務(wù)器上移植操作系統(tǒng)Linux2.6,在此平臺下開發(fā)相應(yīng)硬件開發(fā)驅(qū)動程序,并將讀取到的溫度傳送給共享文件;在Linux2.6下配置Boa服務(wù)器;CGI程序主要實現(xiàn)遠程客戶端與服務(wù)器之間控制的數(shù)據(jù)交互,編寫CGI程序分別從共享文件中讀取實時更新的溫度數(shù)據(jù)并發(fā)送給遠程客戶的WEB瀏覽器以及實現(xiàn)遠程客戶端對服務(wù)器采集的控制;通過Ajax技術(shù)對實時的溫度數(shù)據(jù)進行實時的動態(tài)顯示;編寫程序?qū)崿F(xiàn)GSM無線通信功能。
測溫顯示部分的硬件電路如圖2所示。本系統(tǒng)的溫度傳感器采用DALLAS公司的 DS18B20.該傳感器具有測溫范圍廣(-55~125 ℃)、精度高(分辨率為 0.062 5 ℃)的特點,而且使用簡單,無需其他電路,可直接輸出溫度值。由于本系統(tǒng)內(nèi)嵌Linux2.6內(nèi)核,因此在使用硬件時必須編寫驅(qū)動程序,應(yīng)注要遵循嚴格的工作時序和通信協(xié)議。測溫時,首先對18B20進行初始化,然后調(diào)用驅(qū)動程序,再通過其內(nèi)部的AD轉(zhuǎn)換器將模擬量轉(zhuǎn)換成16位的數(shù)字量,最后通過DQ引腳將溫度值送給2410的GPIO引腳。
圖2 測溫顯示硬件電路圖Fig.2 Temperature measurement and display circuit diagram of hardware
顯示部分采用移位寄存器74LS164和數(shù)碼管組成。將傳感器采集到的溫度轉(zhuǎn)換成十進制數(shù)輸出,通過移位寄存器將溫度值送給數(shù)碼管顯示。
DM9000是一款高性能和低功耗的自適應(yīng)10/100M bps CMOS芯片,完全兼容 IEEE802.3u,支持 10/100 M bit/s單工和雙工模式的以太網(wǎng)傳輸,支持IEEE802.3x全雙工流控制,具備載波多路訪問和碰撞檢測(CSMA/CD)機制,具備4k雙字SRAM的接收緩沖區(qū)。支持與處理器之間的8 bit,16 bit,32 bit接口方式[4]。
S3C2410通過擴展一片DM9000來實現(xiàn)以太網(wǎng)通信,其連接電路如圖3所示。將S3C2410的數(shù)據(jù)線DATA0-DATA15連接DM9000的SD0-SD15,讀寫控制信號IOR和IOW對應(yīng)連接連接S3C2410的nOE和nWE,CS片選信號由nGCS2給出。
目前在Linux下的WEB服務(wù)器主要有boa和httpd等。httpd是一個簡單的 web Server,對認證以及CGI都不支持;而boa較httpd更為完善,尤其Boa源碼開放且性能較高。本系統(tǒng)選擇Boa作為Web服務(wù)器,但是Linux內(nèi)核中不包含Boa的源代碼,因此要想在本系統(tǒng)中實現(xiàn)Boa服務(wù)器,需要完成Boa源代碼的下載、修改和交叉編譯,之后再對boa.conf和mime.tyPes這兩個文件進行配置才能實現(xiàn),其修改和配置過程如下:
圖3 S3C2410與DM9000連接電路圖Fig.3 S3C2410 and DM9000 connection diagram
1)創(chuàng)建目錄
即在root目錄下通過mkdir創(chuàng)建服務(wù)器目錄。
2)配置Web服務(wù)器的根目錄路徑(SERVER_ROOT)
可通過使用命令行boa-c/root/&,的方式來指定服務(wù)器根目錄?;蛘哌€可以在boa/src/目錄下,修改define.h頭文件中的#define SERVERROOT“/root”語句來指定。
3)配置 boa.conf文件。
4)最后將boa.conf文件和mime.types文件復(fù)制到 web服務(wù)器的根目錄
定義默認首頁路徑以及CGI程序庫所在路徑,即DirectoryIdexindex.html以及 ScriptAlias/cgi-bin/root/www/cgi-bin/
配置完成后進行交叉編譯,將編譯后得到的可執(zhí)行文件復(fù)制進Linux服務(wù)器的文件系統(tǒng)中,最后運行Boa服務(wù)器./Boa&。
CGI(Common Gateway Interface)中文解釋為通用網(wǎng)關(guān)接口,通過這種接口可以使Web服務(wù)器執(zhí)行外部請求再將結(jié)果轉(zhuǎn)回給應(yīng)用程序,這種從用戶處接受和返回的方法實現(xiàn)了客戶端和Web服務(wù)器之間交互[5-6]。CGI程序的語法格式要求很嚴格,原因是CGI主要通過HTTP協(xié)議實現(xiàn)的客戶端與服務(wù)端之間的通信,每次當用戶從客戶端向服務(wù)端發(fā)送請求消息時,該消息會處理用輸入的CGI擴展程序的URL地址的真實值,當CGI擴展程序在處理結(jié)束之后才將HTTP響應(yīng)消息返回給客戶端。因此,CGI程序的輸出數(shù)據(jù)得語法格式必須和相應(yīng)消息的語法格式一致,才能保證正確處理。
CGI程序的調(diào)用方法有2種:1)直接輸入地址方式。用戶在瀏覽器地址中直接輸入正確的URL地址,經(jīng)Web服務(wù)器解析完URL后調(diào)用正確的CGI程序。2)在CGI程序中使用FROM表單樣式實現(xiàn)調(diào)用。CGI程序使用HTTP協(xié)議完成的,在HTTP表單元素中ACTION屬性值用來指定URL地址,METHOD屬性值用來指定請求方式為GET或POST。
CGI程序可以用任何程序設(shè)計語言編寫,而且C語言的平臺無關(guān)性很好,因此本系統(tǒng)選擇擇用C來編寫CGI程序。另外,本系統(tǒng)將溫度數(shù)據(jù)保存到文件wendu.txt中,CGI是通過讀取文件來獲取數(shù)據(jù)。
AJAX[7]即“Asynchronous Java Script and XML”(異步 Java Script和XML),AJAX并非縮寫詞,而是由Jesse James Gaiiett創(chuàng)造的名詞,是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)AJAX的核心理念在于使用XMLHttpRequest對象發(fā)送異步請求。
在傳統(tǒng)的 JavaScript編程中,如果要從服務(wù)器上的文件或數(shù)據(jù)庫中得到任何的信息,或者向服務(wù)器發(fā)送信息的話,就必須利用一個 HTML表單向服務(wù)器GET或 POST數(shù)據(jù),同時用戶還需要單擊“提交”按鈕來發(fā)送/獲取信息,等待服務(wù)器的響應(yīng),然后一張新的頁面會加載結(jié)果,這樣就使得傳統(tǒng)的web應(yīng)用程序變得運行緩慢,且越來越不友好。而通過AJAX,可以用XMLHttpRequest對象來直接與服務(wù)器進行通信,即可以在不重載頁面的情況與 Web服務(wù)器交換數(shù)據(jù)??蛻舳丝梢酝A粼谕粋€頁面,用戶不會注意到腳本在后臺請求過頁面,或向服務(wù)器發(fā)送過數(shù)據(jù)。本系統(tǒng)需要用戶在客戶端看到采集溫度的實時動態(tài)變化折線圖,因此選擇AJAX技術(shù)開發(fā)空間。
圖4 客戶端運行折線圖Fig.4 The client runs a line chart
首先打開連接,讀取wendu.txt中的字符串,用split函數(shù)截取溫度數(shù)據(jù)存入字符數(shù)組中。
其代碼如下:
然后編寫繪制溫度時間折線圖函數(shù),將保存溫度的字符數(shù)組作為參數(shù)傳入函數(shù)中來繪制圖像。頁面每秒刷新一次,即可實現(xiàn)實時繪制圖像。運行結(jié)果如圖4所示。
1)在頁面引入畫圖需要的Javascript文件。
2)在 HTML 頁面 onload 方法中調(diào)用 function(x,y),x 是時間數(shù)組,y是溫度數(shù)組。
經(jīng)測試,本地客戶可通過一臺上網(wǎng)的計算機,即可以靈活方便實現(xiàn)對遠程溫濕度的采集與監(jiān)控,還可以配置GSM模塊實現(xiàn)無線監(jiān)控[8-10]。此系統(tǒng)工作穩(wěn)定,擴展性強,配置靈活,功能豐富,具有良好的移植性、通用性并在測量與控制領(lǐng)域有廣闊的應(yīng)用前景。
[1]焦哲勇,程友聯(lián).基于ARM的農(nóng)業(yè)溫室多點溫度采集系統(tǒng)的設(shè)計[J].農(nóng)業(yè)開發(fā)與裝備,2007(5):19-21.
JIAO Zhe-yong,CHENG You-lian.Design of greenhouse’s multi-pointtemperature gathering based on ARM[J].Agriculture Development and Equipments,2007(5):19-21.
[2]張光南,佘乾順,劉鵬輝,等.便攜式溫濕度無線監(jiān)控系統(tǒng)的設(shè)計[J].激光與紅外,2008(12):1229-1232.
ZHANG Guang-nan,SHE Qian-shun,LIU Peng-hui,et al.Design ofThe portable wirelessmonitoring system of temperature and humidity[J].Laser and Infrared,2008(12):1229-1232.
[3]王勇,耿輝,韓麗娟,等.基于ARM的溫度監(jiān)測系統(tǒng)的設(shè)計[J].儀器儀表與分析監(jiān)測,2008(3):8-10.
WANG Yong,GENG Hui,HAN Li-juan,et la.ARM-based temperature monitoring system design[J].Instrumentation Analysis and Monitoring,2008(3):8-10.
[4]舒劍.基于ARM和Web服務(wù)的數(shù)據(jù)監(jiān)測系統(tǒng)設(shè)計[J].中北大學(xué)學(xué)報:自然科學(xué)版,2010(3):300-305.
SHU Jian.Design of data monitoring system based on the ARM and Web services[J].Journal of North University of China:Natural Science Edition,2010(3):300-305.
[5]楊豐萍,邢劍,馬書研.基于Linux的嵌入式安全Web Server的實現(xiàn)[J].華東交通大學(xué)學(xué)報,2007(2):110-112.
YANG Feng-ping,XING Jian,MA Shu-yan.Linux-based embedded security Web server platform[J].Journal of East China Jiaotong University,2007(2):110-112.
[6]李磊.利用CGI程序?qū)崿F(xiàn)動態(tài)Web的方法[J].科學(xué)技術(shù)與工程,2009(3):26-37.
LI Lei.Method of realizing dynamic Web using CGI program[J].Science Technology and Engineering,2009(3):26-37.
[7]楊斌,張衛(wèi)東,張利欣,等.基于Ajax的Observer模式客戶端研究[J].計算機工程,2010,36(24):4-6.
YANG Bin,ZHANG Wei-dong,ZHANG Li-xin,et la.Research on observer pattern client based on ajax[J].Journal of Computer Engineering,2010(24):4-6.
[8]高磊.基于uClinux的嵌入式數(shù)據(jù)采集系統(tǒng)的研究與實現(xiàn)[D].大連:大連理工大學(xué),2007.
[9]蘇再燾.智能樓宇網(wǎng)絡(luò)系統(tǒng)的研究與實現(xiàn)[D].大連:大連理工大學(xué),2006.
[10]劉國梅,鄭安平.uClinux下動態(tài)Web技術(shù)的實現(xiàn)方法[J].單片機與嵌入式系統(tǒng)應(yīng)用,2004(2):67-69.
LIU Guo-mei,ZHENG An-ping.UClinux and dynamic Web technologyrealization[J].Microcontroller&EmbeddedSystems,2004(2):67-69.
Design of embedded Web remote real-time temperature monitoring system based on ARM9
LI Jun-yi1,2
(1.Department of IT, Shaanxi Police Vocational College, Xi’an 710043, China;2.Shaanxi University of Science and Technology, Xi’an 710021, China)
A kind of design method of an embedded web remote real-time temperature monitoring system based on arm9 is proposed.Making use of embedded system based on ARM9 and linux2.6 to control temperature sensor DS18B20 collecting data, configuring and realizing the Boa server; using CGI to realize the interaction between Client browser and embedded web server,selecting Ajax to realize the dynamic real time displaying of temperature collecting data on the client.
ARM9; Embedded web server; BOA; Ajax
TP393;TP274.2
A
1674-6236(2013)07-0131-03
2012-12-16稿件編號201212122
陜西省科學(xué)研究發(fā)展計劃項目資助(2009K09-22)
李峻屹(1981—),男,陜西戶縣人,碩士,講師。研究方向:計算機應(yīng)用。