李峻屹
(1.陜西警官職業學院 信息技術系,陜西 西安 710043;2.陜西科技大學 陜西 西安 710021)
基于ARM9的嵌入式Web遠程實時溫度監控系統設計
李峻屹1,2
(1.陜西警官職業學院 信息技術系,陜西 西安 710043;2.陜西科技大學 陜西 西安 710021)
提出了一種基于ARM9的嵌入式Web遠程實時溫度監控系統的設計方法。在基于ARM9和Linux2.6內核的嵌入式系統平臺上控制溫度傳感器DS18B20采集數據,并配置實現了Boa服務器;利用CGI實現了客戶端瀏覽器和嵌入式Web服務器之間的交互,并采用Ajax技術實現了溫度采集數據在遠程客戶端的動態實時顯示。
ARM9;嵌入式Web服務器;BOA;Ajax
在現有的各種監控系統中,一部分采用傳統的51單片機或ARM7作為監控系統的微控制器,但這類芯片受到主頻等因素的制約,無法對復雜系統進行控制[1-2]。還有一部分系統采集數據的傳輸采用CAN,RS-485,RS-232等通信方式[3],只能在本地顯示和控制,客戶無法在遠端監控。隨著計算機技術、網絡技術的發展,在對遠程實時監控系統充分研究之后,結合當前最流行的嵌入式技術,提出一種便捷、真正能實現遠程實時的溫度監控系統。采用基于ARM9和linux2.6的嵌入式平臺來采集數據,并通過搭建Boa服務器,將數據通過Internet將數據發送給遠程客戶端,并采用Ajax技術實現客戶端網頁對服務器采集數據的局部動態實時更新,客戶端也可通過頁面按鈕實現對前端采集系統控制。
系統組成如圖1所示,主要由前端溫度采集服務器和客戶端兩部分構成,其中前端溫度采集服務器以三星公司的S3C2410 ARM9處理器為核心,并由溫度傳感器、LCD顯示、串口通信和以太網通信等部分構成;客戶端由兩部分組成,一種是前端溫度采集服務器通過internet的方式向本地客戶計算機發送采集到的數據,另一種是通過GSM模塊無線發送采集數據到用戶手機等移動設備上。

圖1 系統結構圖Fig.1 System structure diagram
系統軟件開發首先在前端溫度采集服務器上移植操作系統Linux2.6,在此平臺下開發相應硬件開發驅動程序,并將讀取到的溫度傳送給共享文件;在Linux2.6下配置Boa服務器;CGI程序主要實現遠程客戶端與服務器之間控制的數據交互,編寫CGI程序分別從共享文件中讀取實時更新的溫度數據并發送給遠程客戶的WEB瀏覽器以及實現遠程客戶端對服務器采集的控制;通過Ajax技術對實時的溫度數據進行實時的動態顯示;編寫程序實現GSM無線通信功能。
測溫顯示部分的硬件電路如圖2所示。本系統的溫度傳感器采用DALLAS公司的 DS18B20.該傳感器具有測溫范圍廣(-55~125 ℃)、精度高(分辨率為 0.062 5 ℃)的特點,而且使用簡單,無需其他電路,可直接輸出溫度值。由于本系統內嵌Linux2.6內核,因此在使用硬件時必須編寫驅動程序,應注要遵循嚴格的工作時序和通信協議。測溫時,首先對18B20進行初始化,然后調用驅動程序,再通過其內部的AD轉換器將模擬量轉換成16位的數字量,最后通過DQ引腳將溫度值送給2410的GPIO引腳。

圖2 測溫顯示硬件電路圖Fig.2 Temperature measurement and display circuit diagram of hardware
顯示部分采用移位寄存器74LS164和數碼管組成。將傳感器采集到的溫度轉換成十進制數輸出,通過移位寄存器將溫度值送給數碼管顯示。
DM9000是一款高性能和低功耗的自適應10/100M bps CMOS芯片,完全兼容 IEEE802.3u,支持 10/100 M bit/s單工和雙工模式的以太網傳輸,支持IEEE802.3x全雙工流控制,具備載波多路訪問和碰撞檢測(CSMA/CD)機制,具備4k雙字SRAM的接收緩沖區。支持與處理器之間的8 bit,16 bit,32 bit接口方式[4]。
S3C2410通過擴展一片DM9000來實現以太網通信,其連接電路如圖3所示。將S3C2410的數據線DATA0-DATA15連接DM9000的SD0-SD15,讀寫控制信號IOR和IOW對應連接連接S3C2410的nOE和nWE,CS片選信號由nGCS2給出。
目前在Linux下的WEB服務器主要有boa和httpd等。httpd是一個簡單的 web Server,對認證以及CGI都不支持;而boa較httpd更為完善,尤其Boa源碼開放且性能較高。本系統選擇Boa作為Web服務器,但是Linux內核中不包含Boa的源代碼,因此要想在本系統中實現Boa服務器,需要完成Boa源代碼的下載、修改和交叉編譯,之后再對boa.conf和mime.tyPes這兩個文件進行配置才能實現,其修改和配置過程如下:

圖3 S3C2410與DM9000連接電路圖Fig.3 S3C2410 and DM9000 connection diagram
1)創建目錄
即在root目錄下通過mkdir創建服務器目錄。
2)配置Web服務器的根目錄路徑(SERVER_ROOT)
可通過使用命令行boa-c/root/&,的方式來指定服務器根目錄。或者還可以在boa/src/目錄下,修改define.h頭文件中的#define SERVERROOT“/root”語句來指定。
3)配置 boa.conf文件。
4)最后將boa.conf文件和mime.types文件復制到 web服務器的根目錄
定義默認首頁路徑以及CGI程序庫所在路徑,即DirectoryIdexindex.html以及 ScriptAlias/cgi-bin/root/www/cgi-bin/
配置完成后進行交叉編譯,將編譯后得到的可執行文件復制進Linux服務器的文件系統中,最后運行Boa服務器./Boa&。
CGI(Common Gateway Interface)中文解釋為通用網關接口,通過這種接口可以使Web服務器執行外部請求再將結果轉回給應用程序,這種從用戶處接受和返回的方法實現了客戶端和Web服務器之間交互[5-6]。CGI程序的語法格式要求很嚴格,原因是CGI主要通過HTTP協議實現的客戶端與服務端之間的通信,每次當用戶從客戶端向服務端發送請求消息時,該消息會處理用輸入的CGI擴展程序的URL地址的真實值,當CGI擴展程序在處理結束之后才將HTTP響應消息返回給客戶端。因此,CGI程序的輸出數據得語法格式必須和相應消息的語法格式一致,才能保證正確處理。
CGI程序的調用方法有2種:1)直接輸入地址方式。用戶在瀏覽器地址中直接輸入正確的URL地址,經Web服務器解析完URL后調用正確的CGI程序。2)在CGI程序中使用FROM表單樣式實現調用。CGI程序使用HTTP協議完成的,在HTTP表單元素中ACTION屬性值用來指定URL地址,METHOD屬性值用來指定請求方式為GET或POST。
CGI程序可以用任何程序設計語言編寫,而且C語言的平臺無關性很好,因此本系統選擇擇用C來編寫CGI程序。另外,本系統將溫度數據保存到文件wendu.txt中,CGI是通過讀取文件來獲取數據。
AJAX[7]即“Asynchronous Java Script and XML”(異步 Java Script和XML),AJAX并非縮寫詞,而是由Jesse James Gaiiett創造的名詞,是指一種創建交互式網頁應用的網頁開發技術AJAX的核心理念在于使用XMLHttpRequest對象發送異步請求。
在傳統的 JavaScript編程中,如果要從服務器上的文件或數據庫中得到任何的信息,或者向服務器發送信息的話,就必須利用一個 HTML表單向服務器GET或 POST數據,同時用戶還需要單擊“提交”按鈕來發送/獲取信息,等待服務器的響應,然后一張新的頁面會加載結果,這樣就使得傳統的web應用程序變得運行緩慢,且越來越不友好。而通過AJAX,可以用XMLHttpRequest對象來直接與服務器進行通信,即可以在不重載頁面的情況與 Web服務器交換數據。客戶端可以停留在同一個頁面,用戶不會注意到腳本在后臺請求過頁面,或向服務器發送過數據。本系統需要用戶在客戶端看到采集溫度的實時動態變化折線圖,因此選擇AJAX技術開發空間。

圖4 客戶端運行折線圖Fig.4 The client runs a line chart
首先打開連接,讀取wendu.txt中的字符串,用split函數截取溫度數據存入字符數組中。
其代碼如下:


然后編寫繪制溫度時間折線圖函數,將保存溫度的字符數組作為參數傳入函數中來繪制圖像。頁面每秒刷新一次,即可實現實時繪制圖像。運行結果如圖4所示。
1)在頁面引入畫圖需要的Javascript文件。
2)在 HTML 頁面 onload 方法中調用 function(x,y),x 是時間數組,y是溫度數組。

經測試,本地客戶可通過一臺上網的計算機,即可以靈活方便實現對遠程溫濕度的采集與監控,還可以配置GSM模塊實現無線監控[8-10]。此系統工作穩定,擴展性強,配置靈活,功能豐富,具有良好的移植性、通用性并在測量與控制領域有廣闊的應用前景。
[1]焦哲勇,程友聯.基于ARM的農業溫室多點溫度采集系統的設計[J].農業開發與裝備,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]張光南,佘乾順,劉鵬輝,等.便攜式溫濕度無線監控系統的設計[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的溫度監測系統的設計[J].儀器儀表與分析監測,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服務的數據監測系統設計[J].中北大學學報:自然科學版,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的實現[J].華東交通大學學報,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程序實現動態Web的方法[J].科學技術與工程,2009(3):26-37.
LI Lei.Method of realizing dynamic Web using CGI program[J].Science Technology and Engineering,2009(3):26-37.
[7]楊斌,張衛東,張利欣,等.基于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的嵌入式數據采集系統的研究與實現[D].大連:大連理工大學,2007.
[9]蘇再燾.智能樓宇網絡系統的研究與實現[D].大連:大連理工大學,2006.
[10]劉國梅,鄭安平.uClinux下動態Web技術的實現方法[J].單片機與嵌入式系統應用,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
陜西省科學研究發展計劃項目資助(2009K09-22)
李峻屹(1981—),男,陜西戶縣人,碩士,講師。研究方向:計算機應用。