基于ARM9的嵌入式Web遠(yuǎn)程實(shí)時(shí)溫度監(jiān)控系統(tǒng)設(shè)計(jì)
摘要:提出了一種基于ARM9的嵌入式Web遠(yuǎn)程實(shí)時(shí)溫度監(jiān)控系統(tǒng)的設(shè)計(jì)方法。在基于ARM9和Linux2.6內(nèi)核的嵌入式系統(tǒng)平臺(tái)上控制溫度傳感器DS18B20采集數(shù)據(jù),并配置實(shí)現(xiàn)了Boa服務(wù)器;利用CGI實(shí)現(xiàn)了客戶(hù)端瀏覽器和嵌入式Web服務(wù)器之間的交互,并采用Ajax技術(shù)實(shí)現(xiàn)了溫度采集數(shù)據(jù)在遠(yuǎn)程客戶(hù)端的動(dòng)態(tài)實(shí)時(shí)顯示。
關(guān)鍵詞:ARM9;嵌入式Web服務(wù)器;BOA;Ajax
在現(xiàn)有的各種監(jiān)控系統(tǒng)中,一部分采用傳統(tǒng)的51單片機(jī)或ARM7作為監(jiān)控系統(tǒng)的微控制器,但這類(lèi)芯片受到主頻等因素的制約,無(wú)法對(duì)復(fù)雜系統(tǒng)進(jìn)行控制。還有一部分系統(tǒng)采集數(shù)據(jù)的傳輸采用CAN,RS-485,RS-232等通信方式,只能在本地顯示和控制,客戶(hù)無(wú)法在遠(yuǎn)端監(jiān)控。隨著計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)的發(fā)展,在對(duì)遠(yuǎn)程實(shí)時(shí)監(jiān)控系統(tǒng)充分研究之后,結(jié)合當(dāng)前最流行的嵌入式技術(shù),提出一種便捷、真正能實(shí)現(xiàn)遠(yuǎn)程實(shí)時(shí)的溫度監(jiān)控系統(tǒng)。采用基于ARM9和linux2.6的嵌入式平臺(tái)來(lái)采集數(shù)據(jù),并通過(guò)搭建Boa服務(wù)器,將數(shù)據(jù)通過(guò)Internet將數(shù)據(jù)發(fā)送給遠(yuǎn)程客戶(hù)端,并采用Ajax技術(shù)實(shí)現(xiàn)客戶(hù)端網(wǎng)頁(yè)對(duì)服務(wù)器采集數(shù)據(jù)的局部動(dòng)態(tài)實(shí)時(shí)更新,客戶(hù)端也可通過(guò)頁(yè)面按鈕實(shí)現(xiàn)對(duì)前端采集系統(tǒng)控制。
1 系統(tǒng)組成
系統(tǒng)組成如圖1所示,主要由前端溫度采集服務(wù)器和客戶(hù)端兩部分構(gòu)成,其中前端溫度采集服務(wù)器以三星公司的S3C2410 ARM9處理器為核心,并由溫度傳感器、LCD顯示、串口通信和以太網(wǎng)通信等部分構(gòu)成;客戶(hù)端由兩部分組成,一種是前端溫度采集服務(wù)器通過(guò)internet的方式向本地客戶(hù)計(jì)算機(jī)發(fā)送采集到的數(shù)據(jù),另一種是通過(guò)GSM模塊無(wú)線(xiàn)發(fā)送采集數(shù)據(jù)到用戶(hù)手機(jī)等移動(dòng)設(shè)備上。
系統(tǒng)軟件開(kāi)發(fā)首先在前端溫度采集服務(wù)器上移植操作系統(tǒng)Linux2.6,在此平臺(tái)下開(kāi)發(fā)相應(yīng)硬件開(kāi)發(fā)驅(qū)動(dòng)程序,并將讀取到的溫度傳送給共享文件;在Linux2.6下配置Boa服務(wù)器;CGI程序主要實(shí)現(xiàn)遠(yuǎn)程客戶(hù)端與服務(wù)器之間控制的數(shù)據(jù)交互,編寫(xiě)CGI程序分別從共享文件中讀取實(shí)時(shí)更新的溫度數(shù)據(jù)并發(fā)送給遠(yuǎn)程客戶(hù)的WEB瀏覽器以及實(shí)現(xiàn)遠(yuǎn)程客戶(hù)端對(duì)服務(wù)器采集的控制;通過(guò)Ajax技術(shù)對(duì)實(shí)時(shí)的溫度數(shù)據(jù)進(jìn)行實(shí)時(shí)的動(dòng)態(tài)顯示;編寫(xiě)程序?qū)崿F(xiàn)GSM無(wú)線(xiàn)通信功能。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 測(cè)溫顯示部分設(shè)計(jì)
測(cè)溫顯示部分的硬件電路如圖2所示。本系統(tǒng)的溫度傳感器采用DALLAS公司的DS18B20該傳感器具有測(cè)溫范圍廣(-55~125℃)、精度高(分辨率為0.062 5℃)的特點(diǎn),而且使用簡(jiǎn)單,無(wú)需其他電路,可直接輸出溫度值。由于本系統(tǒng)內(nèi)嵌Linux2.6內(nèi)核,因此在使用硬件時(shí)必須編寫(xiě)驅(qū)動(dòng)程序,應(yīng)注要遵循嚴(yán)格的工作時(shí)序和通信協(xié)議。測(cè)溫時(shí),首先對(duì)18B20進(jìn)行初始化,然后調(diào)用驅(qū)動(dòng)程序,再通過(guò)其內(nèi)部的AD轉(zhuǎn)換器將模擬量轉(zhuǎn)換成16位的數(shù)字量,最后通過(guò)DO引腳將溫度值送給2410的GPIO引腳。
顯示部分采用移位寄存器74LS164和數(shù)碼管組成。將傳感器采集到的溫度轉(zhuǎn)換成十進(jìn)制數(shù)輸出,通過(guò)移位寄存器將溫度值送給數(shù)碼管顯示。
2.2 以太網(wǎng)通信設(shè)計(jì)
DM9000是一款高性能和低功耗的自適應(yīng)10/100M bpsCMOS芯片,完全兼容IEEE802.3u,支持10/100 M bit/s單工和雙工模式的以太網(wǎng)傳輸,支持IEEE802.3x全雙工流控制,具備載波多路訪(fǎng)問(wèn)和碰撞檢測(cè)(CSMA/CD)機(jī)制,具備4k雙字SRAM的接收緩沖區(qū)。支持與處理器之間的8 bit,16 bit,32 bit接口方式。
S3C2410通過(guò)擴(kuò)展一片DM9000來(lái)實(shí)現(xiàn)以太網(wǎng)通信,其連接電路如圖3所示。將S3C2410的數(shù)據(jù)線(xiàn)DATA0-DATA15連接DM9000的SD0-SD15,讀寫(xiě)控制信號(hào)IOR和IOW對(duì)應(yīng)連接連接S3C2410的nOE和nWE,CS片選信號(hào)由nGCS2給出。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 Boa服務(wù)器在Linux下的移植及配置
目前在Linux下的WEB服務(wù)器主要有boa和httpd等。httpd是一個(gè)簡(jiǎn)單的web Server,對(duì)認(rèn)證以及CGI都不支持;而boa較httpd更為完善,尤其Boa源碼開(kāi)放且性能較高。本系統(tǒng)選擇Boa作為Web服務(wù)器,但是Linux內(nèi)核中不包含Boa的源代碼,因此要想存本系統(tǒng)中實(shí)現(xiàn)Boa服務(wù)器,需要完成Boa源代碼的下載、修改和交叉編譯。之后再對(duì)boa.conf和mime.tyPes這兩個(gè)文件進(jìn)行配置才能實(shí)現(xiàn),其修改和配置過(guò)程如下:
1)創(chuàng)建目錄
即在root目錄下通過(guò)mkdir創(chuàng)建服務(wù)器目錄。
2)配置Web服務(wù)器的根目錄路徑(SERVER_ROOT)
可通過(guò)使用命令行boa-c/root/,的方式來(lái)指定服務(wù)器根目錄?;蛘哌€可以在boa/src/目錄下,修改define.h頭文件中的#define SERVERROOT“/root”語(yǔ)句來(lái)指定。
3)配置boa.conf文件。
4)最后將boa.conf文件和mime.types文件復(fù)制到web服務(wù)器的根目錄
定義默認(rèn)首頁(yè)路徑以及CGI程序庫(kù)所在路徑,即Directory Idexindex.html以及ScriptAlias/cgi-bin/root/www/cgi-bin/
配置完成后進(jìn)行交叉編譯,將編譯后得到的可執(zhí)行文件復(fù)制進(jìn)Linux服務(wù)器的文件系統(tǒng)中,最后運(yùn)行Boa服務(wù)器./Boa。
3.2 CGI編程
CGI(Common Gateway Interfac)中文解釋為通用網(wǎng)關(guān)接口,通過(guò)這種接口可以使Web服務(wù)器執(zhí)行外部請(qǐng)求再將結(jié)果轉(zhuǎn)回給應(yīng)用程序,這種從用戶(hù)處接受和返回的方法實(shí)現(xiàn)了客戶(hù)端和Web服務(wù)器之間交互。CGI程序的語(yǔ)法格式要求很?chē)?yán)格,原因是CGI主要通過(guò)HTTP協(xié)議實(shí)現(xiàn)的客戶(hù)端與服務(wù)端之間的通信,每次當(dāng)用戶(hù)從客戶(hù)端向服務(wù)端發(fā)送請(qǐng)求消息時(shí),該消息會(huì)處理用輸入的CGI擴(kuò)展程序的URL地址的真實(shí)值,當(dāng)CGI擴(kuò)展程序在處理結(jié)束之后才將HTTP響應(yīng)消息返回給客戶(hù)端。因此,CGI程序的輸出數(shù)據(jù)得語(yǔ)法格式必須和相應(yīng)消息的語(yǔ)法格式一致,才能保證正確處理。
CGI程序的調(diào)用方法有2種:1)直接輸入地址方式。用戶(hù)在瀏覽器地址中直接輸入正確的URL地址,經(jīng)Web服務(wù)器解析完URL后調(diào)用正確的CGI程序。2)在CGI程序中使用FROM表單樣式實(shí)現(xiàn)調(diào)用。CGI程序使用HTTP協(xié)議完成的,在HTTP表單元素中ACTION屬性值用來(lái)指定URL地址,MET HOD屬性值用來(lái)指定請(qǐng)求方式為GET或POST。
CGI程序可以用任何程序設(shè)計(jì)語(yǔ)言編寫(xiě),而且C語(yǔ)言的平臺(tái)無(wú)關(guān)性很好,因此本系統(tǒng)選擇擇用C來(lái)編寫(xiě)CGI程序。另外,本系統(tǒng)將溫度數(shù)據(jù)保存到文件wendu.txt中,CGI是通過(guò)讀取文件來(lái)獲取數(shù)據(jù)。
3.3 客戶(hù)端AJAX控件開(kāi)發(fā)
AJAXl~f即“Asynchronous Java Script and XML”(異步Java Script和XML),AJAX并非縮寫(xiě)詞,而是由Jesse James Gaiiett創(chuàng)造的名詞,是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)AJAX的核心理念在于使用XMLHttpRequest對(duì)象發(fā)送異步請(qǐng)求。
在傳統(tǒng)的JavaScript編程中,如果要從服務(wù)器上的文件或數(shù)據(jù)庫(kù)中得到任何的信息,或者向服務(wù)器發(fā)送信息的話(huà),就必須利用一個(gè)HTML表單向服務(wù)器GET或POST數(shù)據(jù),同時(shí)用戶(hù)還需要單擊“提交”按鈕來(lái)發(fā)送/獲取信息,等待服務(wù)器的響應(yīng),然后一張新的頁(yè)面會(huì)加載結(jié)果,這樣就使得傳統(tǒng)的web應(yīng)用程序變得運(yùn)行緩慢,且越來(lái)越不友好。而通過(guò)AJAX,可以用XMLHttpRequest對(duì)象來(lái)直接與服務(wù)器進(jìn)行通信,即可以在不重載頁(yè)面的情況與Web服務(wù)器交換數(shù)據(jù)??蛻?hù)端可以停留在同一個(gè)頁(yè)面,用戶(hù)不會(huì)注意到腳本在后臺(tái)請(qǐng)求過(guò)頁(yè)面,或向服務(wù)器發(fā)送過(guò)數(shù)據(jù)。本系統(tǒng)需要用戶(hù)在客戶(hù)端看到采集溫度的實(shí)時(shí)動(dòng)態(tài)變化折線(xiàn)圖,因此選擇AJAX技術(shù)開(kāi)發(fā)空間。
首先打開(kāi)連接,讀取wendu.txt中的字符串,用split函數(shù)截取溫度數(shù)據(jù)存入字符數(shù)組中。
其代碼如下:
然后編寫(xiě)繪制溫度時(shí)間折線(xiàn)圖函數(shù),將保存溫度的字符數(shù)組作為參數(shù)傳入函數(shù)中來(lái)繪制圖像。頁(yè)面每秒刷新一次,即可實(shí)現(xiàn)實(shí)時(shí)繪制圖像。運(yùn)行結(jié)果如圖4所示。
1)在頁(yè)面引入畫(huà)圖需要的Javascript文件。
2)在HTML頁(yè)面onload方法中調(diào)用function(x,y),x是時(shí)間數(shù)組,y是溫度數(shù)組。
4 結(jié)論
經(jīng)測(cè)試,本地客戶(hù)可通過(guò)一臺(tái)上網(wǎng)的計(jì)算機(jī),即可以靈活方便實(shí)現(xiàn)對(duì)遠(yuǎn)程溫濕度的采集與監(jiān)控,還可以配置GSM模塊實(shí)現(xiàn)無(wú)線(xiàn)監(jiān)控。此系統(tǒng)工作穩(wěn)定,擴(kuò)展性強(qiáng),配置靈活,功能豐富,具有良好的移植性、通用性并在測(cè)量與控制領(lǐng)域有廣闊的應(yīng)用前景。
評(píng)論