基于ARM9的嵌入式Web遠程實時溫度監(jiān)控系統(tǒng)設(shè)計
摘要:提出了一種基于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)實時顯示。
關(guān)鍵詞:ARM9;嵌入式Web服務(wù)器;BOA;Ajax
在現(xiàn)有的各種監(jiān)控系統(tǒng)中,一部分采用傳統(tǒng)的51單片機或ARM7作為監(jiān)控系統(tǒng)的微控制器,但這類芯片受到主頻等因素的制約,無法對復(fù)雜系統(tǒng)進行控制。還有一部分系統(tǒng)采集數(shù)據(jù)的傳輸采用CAN,RS-485,RS-232等通信方式,只能在本地顯示和控制,客戶無法在遠端監(jiān)控。隨著計算機技術(shù)、網(wǎng)絡(luò)技術(shù)的發(fā)展,在對遠程實時監(jiān)控系統(tǒng)充分研究之后,結(jié)合當(dāng)前最流行的嵌入式技術(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)控制。
1 系統(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è)備上。
系統(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)硬件設(shè)計
2.1 測溫顯示部分設(shè)計
測溫顯示部分的硬件電路如圖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ù)字量,最后通過DO引腳將溫度值送給2410的GPIO引腳。
顯示部分采用移位寄存器74LS164和數(shù)碼管組成。將傳感器采集到的溫度轉(zhuǎn)換成十進制數(shù)輸出,通過移位寄存器將溫度值送給數(shù)碼管顯示。
2.2 以太網(wǎng)通信設(shè)計
DM9000是一款高性能和低功耗的自適應(yīng)10/100M bpsCMOS芯片,完全兼容IEEE802.3u,支持10/100 M bit/s單工和雙工模式的以太網(wǎng)傳輸,支持IEEE802.3x全雙工流控制,具備載波多路訪問和碰撞檢測(CSMA/CD)機制,具備4k雙字SRAM的接收緩沖區(qū)。支持與處理器之間的8 bit,16 bit,32 bit接口方式。
S3C2410通過擴展一片DM9000來實現(xiàn)以太網(wǎng)通信,其連接電路如圖3所示。將S3C2410的數(shù)據(jù)線DATA0-DATA15連接DM9000的SD0-SD15,讀寫控制信號IOR和IOW對應(yīng)連接連接S3C2410的nOE和nWE,CS片選信號由nGCS2給出。
3 系統(tǒng)軟件設(shè)計
3.1 Boa服務(wù)器在Linux下的移植及配置
目前在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),其修改和配置過程如下:
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程序庫所在路徑,即Directory Idexindex.html以及ScriptAlias/cgi-bin/root/www/cgi-bin/
配置完成后進行交叉編譯,將編譯后得到的可執(zhí)行文件復(fù)制進Linux服務(wù)器的文件系統(tǒng)中,最后運行Boa服務(wù)器./Boa。
3.2 CGI編程
CGI(Common Gateway Interfac)中文解釋為通用網(wǎng)關(guān)接口,通過這種接口可以使Web服務(wù)器執(zhí)行外部請求再將結(jié)果轉(zhuǎn)回給應(yīng)用程序,這種從用戶處接受和返回的方法實現(xiàn)了客戶端和Web服務(wù)器之間交互。CGI程序的語法格式要求很嚴格,原因是CGI主要通過HTTP協(xié)議實現(xiàn)的客戶端與服務(wù)端之間的通信,每次當(dāng)用戶從客戶端向服務(wù)端發(fā)送請求消息時,該消息會處理用輸入的CGI擴展程序的URL地址的真實值,當(dāng)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地址,MET HOD屬性值用來指定請求方式為GET或POST。
CGI程序可以用任何程序設(shè)計語言編寫,而且C語言的平臺無關(guān)性很好,因此本系統(tǒng)選擇擇用C來編寫CGI程序。另外,本系統(tǒng)將溫度數(shù)據(jù)保存到文件wendu.txt中,CGI是通過讀取文件來獲取數(shù)據(jù)。
3.3 客戶端AJAX控件開發(fā)
AJAXl~f即“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ā)空間。
首先打開連接,讀取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ù)組。
4 結(jié)論
經(jīng)測試,本地客戶可通過一臺上網(wǎng)的計算機,即可以靈活方便實現(xiàn)對遠程溫濕度的采集與監(jiān)控,還可以配置GSM模塊實現(xiàn)無線監(jiān)控。此系統(tǒng)工作穩(wěn)定,擴展性強,配置靈活,功能豐富,具有良好的移植性、通用性并在測量與控制領(lǐng)域有廣闊的應(yīng)用前景。
評論