文獻標識碼: A
文章編號: 0258-7998(2014)05-0143-04
現(xiàn)代工業(yè)的飛速發(fā)展和人類的不合理活動對環(huán)境造成了嚴重的破壞,,使得全球生態(tài)環(huán)境惡化愈演愈烈,。惡劣的環(huán)境容易引起人體的發(fā)病、動植物的死亡等不良后果,,環(huán)境異常還會引起火災(zāi)或其他災(zāi)害,。而環(huán)境監(jiān)測則可以提供環(huán)境的狀況信息,保證生活和生產(chǎn)的正常進行,。環(huán)境監(jiān)測技術(shù)已廣泛地用于軍事,、工農(nóng)業(yè)、通信等多個領(lǐng)域,。
目前,,環(huán)境監(jiān)測尚存在一些不足。傳統(tǒng)的環(huán)境監(jiān)測以人工采樣和實驗室分析為主,,操作比較繁瑣,;監(jiān)測系統(tǒng)監(jiān)測領(lǐng)域較窄,不能對環(huán)境進行全面的評估,;設(shè)備功能單一,,不能滿足人們較高的環(huán)境監(jiān)測需求。
本文從實際出發(fā),,設(shè)計了一種基于嵌入式技術(shù)的遠程無線環(huán)境監(jiān)測系統(tǒng),。該系統(tǒng)基于ARM11和嵌入式Linux,并與USB攝像頭,、溫濕度傳感器模塊相結(jié)合,,具有較為豐富的功能。使用該系統(tǒng)能夠?qū)崿F(xiàn)對監(jiān)測區(qū)域的實時視頻監(jiān)控和溫濕度數(shù)據(jù)監(jiān)測,,具有成本低,、支持多臺客戶機同時訪問、系統(tǒng)維護方便等特點,。系統(tǒng)采用B/S模式結(jié)構(gòu)[1-2]設(shè)計,用戶只需要通過瀏覽器即可訪問監(jiān)測區(qū)域的環(huán)境情況,比傳統(tǒng)的實地觀察更加方便,,具有較好的應(yīng)用前景。
1 系統(tǒng)總體設(shè)計
系統(tǒng)以開源的Linux為操作系統(tǒng)平臺,,采用B/S模式結(jié)構(gòu),,以S3C6410[3]控制器為嵌入式服務(wù)器。系統(tǒng)將從USB攝像頭采集到的視頻圖像進行壓縮,,然后基于TCP/IP協(xié)議[4]將壓縮后的視頻圖像發(fā)送到客戶端,。同時,系統(tǒng)間隔性地采集溫濕度數(shù)據(jù), 并將數(shù)據(jù)保存在SQLite數(shù)據(jù)庫[5]表中,以供用戶查詢,??蛻魴C通過瀏覽器中的網(wǎng)頁即可接收從Web服務(wù)器發(fā)送過來的監(jiān)測區(qū)域的環(huán)境數(shù)據(jù)。當監(jiān)測區(qū)域的環(huán)境情況發(fā)生異常時,,客戶端就會發(fā)出報警聲,,同時系統(tǒng)會向用戶的郵箱發(fā)送郵件[6]。系統(tǒng)的總體實現(xiàn)方案如圖1所示,。
本系統(tǒng)主要有監(jiān)測前端和監(jiān)測終端兩部分,。監(jiān)測前端主要由S3C6410處理器、USB攝像頭和溫濕度傳感器組成,;監(jiān)測終端主要是PC,、手機等。當有用戶請求時,,客戶端網(wǎng)頁瀏覽器主動與服務(wù)器建立網(wǎng)絡(luò)連接,。客戶機與Web服務(wù)器之間利用Ajax技術(shù)[7]進行異步通信,,保證了安全可靠的Web應(yīng)用交互,。用戶信息、每個用戶的登陸信息和溫濕度信息都保存在SQLite數(shù)據(jù)庫表中,。當有用戶登陸時,,后臺的CGI驗證程序就會查詢存有用戶信息的數(shù)據(jù)庫表,如果驗證成功就會返回登陸的主控頁面,,否則返回帶錯誤提示的登陸頁面,。
2 系統(tǒng)硬件設(shè)計
本系統(tǒng)的硬件總體結(jié)構(gòu)圖如圖2所示。
主控平臺選用友善之臂的Tiny6410開發(fā)平臺,,主要包括S3C6410控制器,、2 GB Nand Flash、256 MB SDRAM和外圍接口,。在Nand Flash中保存有U-Boot,、Linux內(nèi)核、UBIFS文件系統(tǒng),、驅(qū)動程序,、與Web服務(wù)相關(guān)的程序以及其他應(yīng)用程序。主控平臺的功能主要是控制采集視頻圖像,、對采集的視頻圖像進行壓縮,、網(wǎng)絡(luò)傳輸視頻圖像、控制采集和保存溫濕度數(shù)據(jù),、為客戶機提供Web服務(wù),。
USB攝像頭選用羅技的C270攝像頭,,其主要功能是完成視頻監(jiān)控圖像的采集,為S3C6410提供原始視頻圖像,。溫濕度傳感器選用含有己校準數(shù)字信號輸出的DHT21[8],,其功能為采集溫濕度數(shù)據(jù)。
3 系統(tǒng)軟件設(shè)計
從功能上來說,,整個系統(tǒng)需要完成溫濕度傳感器和攝像頭的驅(qū)動,溫濕度數(shù)據(jù)的采集、存儲和傳輸,視頻圖像的采集與傳輸,。
如圖3所示,,整個系統(tǒng)的軟件分為底層和應(yīng)用層。底層主要包括U-Boot,、Linux內(nèi)核,、UBIFS文件系統(tǒng)和驅(qū)動程序;應(yīng)用層則包括視頻圖像采集和發(fā)送程序,、溫濕度采集程序,、Web服務(wù)器、后臺CGI程序以及Web服務(wù)器上的網(wǎng)頁相關(guān)腳本程序,。應(yīng)用程序通過驅(qū)動程序提供的接口來調(diào)用內(nèi)核空間的數(shù)據(jù),。
在底層,需要完成溫濕度傳感器驅(qū)動,;在應(yīng)用層,,需要調(diào)用溫濕度傳感器驅(qū)動來完成溫濕度采集,利用攝像頭驅(qū)動完成視頻圖像的采集,并通過TCP/IP協(xié)議將采集到的視頻圖像和溫濕度數(shù)據(jù)發(fā)送到客戶端,。此外,,還要完成對用戶輸入的用戶名和密碼的驗證和溫濕度報警功能。
3.1 溫濕度采集程序設(shè)計
溫濕度傳感器驅(qū)動模塊加載成功后,,編寫溫濕度采集程序時就可以利用驅(qū)動程序中提供的接口把“/dev/dht21”作為一個文件來訪問,。除了要從DHT21獲取溫濕度數(shù)據(jù)之外,溫濕度采集程序還要將溫濕度數(shù)據(jù)保存到SQLite數(shù)據(jù)庫表/home/boa/www/temandhum.db中,,同時還要將當前采集到的溫濕度數(shù)據(jù)寫入到/home/boa/www/xml/temandhum.xml文件的<livedata>節(jié)點中,,以方便運行在客戶端的JavaScript讀取實時的溫濕度數(shù)據(jù)。另外,,溫濕度采集程序還要檢測溫濕度是否異常,。若溫濕度超過預設(shè)范圍,則調(diào)用sendemail函數(shù)向用戶發(fā)送郵件,。溫濕度采集程序的流程圖如圖4所示,。
3.2 視頻圖像采集程序設(shè)計
使用V4L2標準進行視頻采集的流程如圖5所示。
(1)打開視頻設(shè)備,。將USB攝像頭插到Tiny6410開發(fā)板的USB接口上后,,就會在/dev目錄下看到多出一個“video0”的設(shè)備文件,只需要使用fd = open("/dev/video0", O_RDWR, 0);語句來打開該設(shè)備文件,即可像訪問文件一樣來訪問該設(shè)備,。open函數(shù)中的“O_RDWR”表示阻塞模式,它也可以換成“O_RDWR | O_NONBLOCK”,,表示非阻塞模式。以非阻塞模式打開視頻設(shè)備時,,不管設(shè)備打開成功與否,,驅(qū)動都會把緩存中的數(shù)據(jù)返回給應(yīng)用程序。
(2)獲取視頻設(shè)備的參數(shù)信息,。成功打開視頻設(shè)備后,,可以使用語句ioctl(fd, VIDIOC_QUERYCAP, &capability)來獲取視頻設(shè)備的參數(shù)信息,設(shè)備參數(shù)信息就保存在結(jié)構(gòu)體capability中的各成員變量中,。
(3)初始化視頻設(shè)備配置,。例如設(shè)置視頻捕獲格式主要是通過設(shè)置v4l2_format數(shù)據(jù)結(jié)構(gòu)中的成員變量來實現(xiàn)。一般設(shè)置的圖像大小為640×480或320×240兩種,。
(4)采集視頻圖像,。獲取采集到的視頻圖像的方式有兩種:(1)使用read( )函數(shù)直接讀取設(shè)備; (2)使用mmap( )函數(shù)共享內(nèi)存,。
在Linux操作系統(tǒng)中,,內(nèi)存空間被分為用戶空間和內(nèi)核空間。進程不能直接讀寫內(nèi)核空間,,通過read( )函數(shù)來讀取設(shè)備比較慢,,但安全度較高;通過使用mmap方式后能將同一文件映射到進程的虛擬地址空間,,從而達到直接讀取該內(nèi)存空間的目的,,讀取速度很快,但相應(yīng)地安全度較低,。此處采用mmap的方式來采集視頻,。使用“framebuf[1].length = buf.length;”設(shè)置framebuf的大小,然后使用“framebuf[1].start=(char *) mmap(0, buf.length,PROT_READ|PROT_WRITE,MAP_SHARED, fd,buf.m.offset);”進行內(nèi)存映射,,這樣就可以用“ret = ioctl(fd , VIDIOC_QBUF, &buf);”獲取視頻圖像,。判斷視頻圖像是否采集完畢需要使用“ioctl(fd,VIDIOCSYNC, &buf);”,。
(5)關(guān)閉視頻設(shè)備,。使用“close(fd);”實現(xiàn)。
3.3 視頻圖像傳輸程序設(shè)計
本視頻圖像傳輸程序主要通過線程組來實現(xiàn),,涉及的線程主要有:cap_video,、send_video和client_connect。cap_video 負責采集視頻圖像,;client_connect線程用來等待客戶端的連接請求,,當有新的用戶連接請求時,,它就會采用GET方法獲取用戶的請求信息,然后再判斷是否建立連接,,若請求信息有效則給該用戶開通一個新的連接用來發(fā)送連續(xù)的視頻流,,client_connect線程還要負責將無效的socket連接斷開,以保證系統(tǒng)的高效運行,;send_video則是服務(wù)于已連接好的用戶,,主要用來將公共緩沖區(qū)中的視頻圖像通過socket發(fā)送出去,send_video線程每發(fā)送一幀圖像后就會將公共緩沖區(qū)清空并進行上鎖,,直到公共緩沖區(qū)被寫入的數(shù)據(jù)大于或等于所設(shè)閾值時才執(zhí)行下一次發(fā)送任務(wù),。線程之間通過pthread_cond_
wait、pthread_mutex_lock,、pthread_mutex_unlock等函數(shù)來防止競爭。視頻圖像傳輸程序流程如圖6所示,。
3.4 溫濕度實時曲線描繪程序設(shè)計
本程序能夠?qū)貪穸葦?shù)據(jù)通過JavaScript代碼描繪成曲線圖,,用戶能夠直觀地感受到溫濕度數(shù)據(jù)實時的變化。本程序使用開源的jqPlot庫進行圖像描繪,。
jqPlot繪圖功能主要通過調(diào)用$.jqplot函數(shù)對所繪制的圖像進行初始化設(shè)置來實現(xiàn),。jqPlot的配置格式為:
$.jqplot('target', data, options);
其中target表示在HTML中的位置;data為顯示的數(shù)據(jù),;options為與圖像顯示相關(guān)的配置,。
本文中用到的主要options的對象有title和axes。axesDefaults中的配置參數(shù)與axes中的一樣,,axesDefaults中的參數(shù)是默認配置,,而axes中的參數(shù)是非默認配置。
4 系統(tǒng)調(diào)試
通過串口線和網(wǎng)線,,將開發(fā)板與PC連接好,,然后啟動開發(fā)板。打開瀏覽器后,,在PC瀏覽器的地址欄中輸入開發(fā)板上所設(shè)Web服務(wù)器的IP地址即可看到登陸頁面,,輸入用戶名和密碼,驗證成功后即可進入遠程監(jiān)測的主控頁面,默認加載頁面為視頻監(jiān)控頁面,。用戶還可以通過點擊主控頁面中左邊樹形菜單中的“溫濕度監(jiān)測”加載溫濕度的實時曲線,。
本文設(shè)計了一種基于S3C6410嵌入式技術(shù)、B/S網(wǎng)絡(luò)模式的遠程無線環(huán)境監(jiān)測系統(tǒng),,經(jīng)過測試,,該系統(tǒng)運行穩(wěn)定,能夠進行實時的溫濕度數(shù)據(jù)監(jiān)測和視頻監(jiān)控,。該系統(tǒng)具有支持多路同時訪問,、系統(tǒng)負荷能力強,、界面友好等特點,在環(huán)保行業(yè),、制造行業(yè),、交通行業(yè)的環(huán)境監(jiān)測方面具有一定的推廣應(yīng)用價值。
參考文獻
[1] He Hujun, Yan Yumei,Li Wanling, et al. Design and implementation of mine-map management information system based on B/S model[J].Applied Mechanics and Materials,2012,241-244(12):2616-2619.
[2] 張國軍, 鄭麗媛, 張俊.基于物聯(lián)網(wǎng)的瓦斯監(jiān)控系統(tǒng)[J]. 傳感器與微系統(tǒng),2013,32(1):125-127,130.
[3] 陳建明,沈東方.基于S3C6410的智能泵組控制器設(shè)計[J].電子技術(shù)應(yīng)用,2012,38(12):14-16.
[4] 楊嬌娟.淺談TCP/IP協(xié)議[J].數(shù)字技術(shù)與應(yīng)用,2012(3):220.
[5] 韓善鋒,曹鳳海,易昌華. SQLite數(shù)據(jù)庫在嵌入式程序開發(fā)中的應(yīng)用[J].物探裝備, 2011,21(3):170-173,178.
[6] 毛云貴.支持SMTP認證的E-MAIL發(fā)送程序的設(shè)計[J].南京工程學院學報(自然科學版),2006,4(1):66-72.
[7] 呂弘, 黃偉納. 基于AJAX技術(shù)的圖書館統(tǒng)計平臺的設(shè)計[J].中國科技信息,2012(1):75-76.
[8] 胡敏,施云波,修德斌,等.氯氣檢測報警器的設(shè)計[J].儀表技術(shù)與傳感器,2010(12):66-67,70.