《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于S3C6410的遠(yuǎn)程無(wú)線環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
基于S3C6410的遠(yuǎn)程無(wú)線環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2014年第5期
陳榮軍1,2, 余祥云2, 譚洪舟2
(1. 中山大學(xué)南方學(xué)院, 廣東 廣州 510970;2. 中山大學(xué) 信息科學(xué)與技術(shù)學(xué)院, 廣東 廣
摘要: 從實(shí)際應(yīng)用出發(fā)并結(jié)合近年來(lái)環(huán)境監(jiān)測(cè)技術(shù)的發(fā)展趨勢(shì),設(shè)計(jì)了一套以S3C6410為主要硬件平臺(tái)、以嵌入式Linux為主要軟件平臺(tái)的遠(yuǎn)程環(huán)境監(jiān)測(cè)系統(tǒng)。該系統(tǒng)采用B/S架構(gòu),具有低成本、低功耗、高穩(wěn)定的特點(diǎn)。用戶通過(guò)Internet上的任何終端(如電腦、手機(jī)等)來(lái)訪問(wèn)該系統(tǒng),可非常方便地對(duì)監(jiān)測(cè)區(qū)域進(jìn)行實(shí)時(shí)的監(jiān)測(cè)。該系統(tǒng)支持多個(gè)用戶同時(shí)登陸,兼容多種瀏覽器,具有較高的安全性,在環(huán)保行業(yè)、制造行業(yè)、交通行業(yè)的環(huán)境監(jiān)測(cè)方面具有一定的推廣應(yīng)用價(jià)值。
中圖分類號(hào): TP311
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)05-0143-04
Design of remote wireless environmental monitoring system based on S3C6410
Chen Rongjun1,2, Yu Xiangyun2, Tan Hongzhou2
1. Nanfang College of Sun Yat-sen University, Guangzhou 510970,China;2. School of Information Science and Technology, Sun Yat-sen University, Guangzhou 510006, China
Abstract: Concerning about the issue of the practical application and combining with recent trends in environmental monitoring technology,this article gives a method to design a environmental monitoring system which is based on the main hardware platform of S3C6410 and the main software platform of Linux. This system uses B/S architecture with low cost, low power consumption, high stability characteristics and many other advantages. The users can use any terminal on the Internet(such as computers, cell phones, etc.) to access the system easily for real-time monitoring of the monitoring area. The system supports multiple users to simultaneously log in and compatible with multiple browsers with high security. In the environmental industry, manufacturing industry and transportation industry,this system has much application value on environmental monitoring.
Key words : environmental monitoring;S3C6410;B/S;Linux

    現(xiàn)代工業(yè)的飛速發(fā)展和人類的不合理活動(dòng)對(duì)環(huán)境造成了嚴(yán)重的破壞,使得全球生態(tài)環(huán)境惡化愈演愈烈。惡劣的環(huán)境容易引起人體的發(fā)病、動(dòng)植物的死亡等不良后果,環(huán)境異常還會(huì)引起火災(zāi)或其他災(zāi)害。而環(huán)境監(jiān)測(cè)則可以提供環(huán)境的狀況信息,保證生活和生產(chǎn)的正常進(jìn)行。環(huán)境監(jiān)測(cè)技術(shù)已廣泛地用于軍事、工農(nóng)業(yè)、通信等多個(gè)領(lǐng)域。
    目前,環(huán)境監(jiān)測(cè)尚存在一些不足。傳統(tǒng)的環(huán)境監(jiān)測(cè)以人工采樣和實(shí)驗(yàn)室分析為主,操作比較繁瑣;監(jiān)測(cè)系統(tǒng)監(jiān)測(cè)領(lǐng)域較窄,不能對(duì)環(huán)境進(jìn)行全面的評(píng)估;設(shè)備功能單一,不能滿足人們較高的環(huán)境監(jiān)測(cè)需求。
    本文從實(shí)際出發(fā),設(shè)計(jì)了一種基于嵌入式技術(shù)的遠(yuǎn)程無(wú)線環(huán)境監(jiān)測(cè)系統(tǒng)。該系統(tǒng)基于ARM11和嵌入式Linux,并與USB攝像頭、溫濕度傳感器模塊相結(jié)合,具有較為豐富的功能。使用該系統(tǒng)能夠?qū)崿F(xiàn)對(duì)監(jiān)測(cè)區(qū)域的實(shí)時(shí)視頻監(jiān)控和溫濕度數(shù)據(jù)監(jiān)測(cè),具有成本低、支持多臺(tái)客戶機(jī)同時(shí)訪問(wèn)、系統(tǒng)維護(hù)方便等特點(diǎn)。系統(tǒng)采用B/S模式結(jié)構(gòu)[1-2]設(shè)計(jì),用戶只需要通過(guò)瀏覽器即可訪問(wèn)監(jiān)測(cè)區(qū)域的環(huán)境情況,比傳統(tǒng)的實(shí)地觀察更加方便,具有較好的應(yīng)用前景。
1 系統(tǒng)總體設(shè)計(jì)
 系統(tǒng)以開源的Linux為操作系統(tǒng)平臺(tái),采用B/S模式結(jié)構(gòu),以S3C6410[3]控制器為嵌入式服務(wù)器。系統(tǒng)將從USB攝像頭采集到的視頻圖像進(jìn)行壓縮,然后基于TCP/IP協(xié)議[4]將壓縮后的視頻圖像發(fā)送到客戶端。同時(shí),系統(tǒng)間隔性地采集溫濕度數(shù)據(jù), 并將數(shù)據(jù)保存在SQLite數(shù)據(jù)庫(kù)[5]表中,以供用戶查詢??蛻魴C(jī)通過(guò)瀏覽器中的網(wǎng)頁(yè)即可接收從Web服務(wù)器發(fā)送過(guò)來(lái)的監(jiān)測(cè)區(qū)域的環(huán)境數(shù)據(jù)。當(dāng)監(jiān)測(cè)區(qū)域的環(huán)境情況發(fā)生異常時(shí),客戶端就會(huì)發(fā)出報(bào)警聲,同時(shí)系統(tǒng)會(huì)向用戶的郵箱發(fā)送郵件[6]。系統(tǒng)的總體實(shí)現(xiàn)方案如圖1所示。

    本系統(tǒng)主要有監(jiān)測(cè)前端和監(jiān)測(cè)終端兩部分。監(jiān)測(cè)前端主要由S3C6410處理器、USB攝像頭和溫濕度傳感器組成;監(jiān)測(cè)終端主要是PC、手機(jī)等。當(dāng)有用戶請(qǐng)求時(shí),客戶端網(wǎng)頁(yè)瀏覽器主動(dòng)與服務(wù)器建立網(wǎng)絡(luò)連接??蛻魴C(jī)與Web服務(wù)器之間利用Ajax技術(shù)[7]進(jìn)行異步通信,保證了安全可靠的Web應(yīng)用交互。用戶信息、每個(gè)用戶的登陸信息和溫濕度信息都保存在SQLite數(shù)據(jù)庫(kù)表中。當(dāng)有用戶登陸時(shí),后臺(tái)的CGI驗(yàn)證程序就會(huì)查詢存有用戶信息的數(shù)據(jù)庫(kù)表,如果驗(yàn)證成功就會(huì)返回登陸的主控頁(yè)面,否則返回帶錯(cuò)誤提示的登陸頁(yè)面。
2 系統(tǒng)硬件設(shè)計(jì)
    本系統(tǒng)的硬件總體結(jié)構(gòu)圖如圖2所示。

    主控平臺(tái)選用友善之臂的Tiny6410開發(fā)平臺(tái),主要包括S3C6410控制器、2 GB Nand Flash、256 MB SDRAM和外圍接口。在Nand Flash中保存有U-Boot、Linux內(nèi)核、UBIFS文件系統(tǒng)、驅(qū)動(dòng)程序、與Web服務(wù)相關(guān)的程序以及其他應(yīng)用程序。主控平臺(tái)的功能主要是控制采集視頻圖像、對(duì)采集的視頻圖像進(jìn)行壓縮、網(wǎng)絡(luò)傳輸視頻圖像、控制采集和保存溫濕度數(shù)據(jù)、為客戶機(jī)提供Web服務(wù)。
    USB攝像頭選用羅技的C270攝像頭,其主要功能是完成視頻監(jiān)控圖像的采集,為S3C6410提供原始視頻圖像。溫濕度傳感器選用含有己校準(zhǔn)數(shù)字信號(hào)輸出的DHT21[8],其功能為采集溫濕度數(shù)據(jù)。
3 系統(tǒng)軟件設(shè)計(jì)
 從功能上來(lái)說(shuō),整個(gè)系統(tǒng)需要完成溫濕度傳感器和攝像頭的驅(qū)動(dòng),溫濕度數(shù)據(jù)的采集、存儲(chǔ)和傳輸,視頻圖像的采集與傳輸。
    如圖3所示,整個(gè)系統(tǒng)的軟件分為底層和應(yīng)用層。底層主要包括U-Boot、Linux內(nèi)核、UBIFS文件系統(tǒng)和驅(qū)動(dòng)程序;應(yīng)用層則包括視頻圖像采集和發(fā)送程序、溫濕度采集程序、Web服務(wù)器、后臺(tái)CGI程序以及Web服務(wù)器上的網(wǎng)頁(yè)相關(guān)腳本程序。應(yīng)用程序通過(guò)驅(qū)動(dòng)程序提供的接口來(lái)調(diào)用內(nèi)核空間的數(shù)據(jù)。

    在底層,需要完成溫濕度傳感器驅(qū)動(dòng);在應(yīng)用層,需要調(diào)用溫濕度傳感器驅(qū)動(dòng)來(lái)完成溫濕度采集,利用攝像頭驅(qū)動(dòng)完成視頻圖像的采集,并通過(guò)TCP/IP協(xié)議將采集到的視頻圖像和溫濕度數(shù)據(jù)發(fā)送到客戶端。此外,還要完成對(duì)用戶輸入的用戶名和密碼的驗(yàn)證和溫濕度報(bào)警功能。
3.1 溫濕度采集程序設(shè)計(jì)
    溫濕度傳感器驅(qū)動(dòng)模塊加載成功后,編寫溫濕度采集程序時(shí)就可以利用驅(qū)動(dòng)程序中提供的接口把&ldquo;/dev/dht21&rdquo;作為一個(gè)文件來(lái)訪問(wèn)。除了要從DHT21獲取溫濕度數(shù)據(jù)之外,溫濕度采集程序還要將溫濕度數(shù)據(jù)保存到SQLite數(shù)據(jù)庫(kù)表/home/boa/www/temandhum.db中,同時(shí)還要將當(dāng)前采集到的溫濕度數(shù)據(jù)寫入到/home/boa/www/xml/temandhum.xml文件的<livedata>節(jié)點(diǎn)中,以方便運(yùn)行在客戶端的JavaScript讀取實(shí)時(shí)的溫濕度數(shù)據(jù)。另外,溫濕度采集程序還要檢測(cè)溫濕度是否異常。若溫濕度超過(guò)預(yù)設(shè)范圍,則調(diào)用sendemail函數(shù)向用戶發(fā)送郵件。溫濕度采集程序的流程圖如圖4所示。

 

 

3.2 視頻圖像采集程序設(shè)計(jì)
    使用V4L2標(biāo)準(zhǔn)進(jìn)行視頻采集的流程如圖5所示。
 (1)打開視頻設(shè)備。將USB攝像頭插到Tiny6410開發(fā)板的USB接口上后,就會(huì)在/dev目錄下看到多出一個(gè)&ldquo;video0&rdquo;的設(shè)備文件,只需要使用fd = open("/dev/video0", O_RDWR, 0);語(yǔ)句來(lái)打開該設(shè)備文件,即可像訪問(wèn)文件一樣來(lái)訪問(wèn)該設(shè)備。open函數(shù)中的&ldquo;O_RDWR&rdquo;表示阻塞模式,它也可以換成&ldquo;O_RDWR | O_NONBLOCK&rdquo;,表示非阻塞模式。以非阻塞模式打開視頻設(shè)備時(shí),不管設(shè)備打開成功與否,驅(qū)動(dòng)都會(huì)把緩存中的數(shù)據(jù)返回給應(yīng)用程序。
    (2)獲取視頻設(shè)備的參數(shù)信息。成功打開視頻設(shè)備后,可以使用語(yǔ)句ioctl(fd, VIDIOC_QUERYCAP, &capability)來(lái)獲取視頻設(shè)備的參數(shù)信息,設(shè)備參數(shù)信息就保存在結(jié)構(gòu)體capability中的各成員變量中。
    (3)初始化視頻設(shè)備配置。例如設(shè)置視頻捕獲格式主要是通過(guò)設(shè)置v4l2_format數(shù)據(jù)結(jié)構(gòu)中的成員變量來(lái)實(shí)現(xiàn)。一般設(shè)置的圖像大小為640&times;480或320&times;240兩種。
    (4)采集視頻圖像。獲取采集到的視頻圖像的方式有兩種:(1)使用read( )函數(shù)直接讀取設(shè)備; (2)使用mmap( )函數(shù)共享內(nèi)存。
    在Linux操作系統(tǒng)中,內(nèi)存空間被分為用戶空間和內(nèi)核空間。進(jìn)程不能直接讀寫內(nèi)核空間,通過(guò)read( )函數(shù)來(lái)讀取設(shè)備比較慢,但安全度較高;通過(guò)使用mmap方式后能將同一文件映射到進(jìn)程的虛擬地址空間,從而達(dá)到直接讀取該內(nèi)存空間的目的,讀取速度很快,但相應(yīng)地安全度較低。此處采用mmap的方式來(lái)采集視頻。使用&ldquo;framebuf[1].length = buf.length;&rdquo;設(shè)置framebuf的大小,然后使用&ldquo;framebuf[1].start=(char *) mmap(0, buf.length,PROT_READ|PROT_WRITE,MAP_SHARED, fd,buf.m.offset);&rdquo;進(jìn)行內(nèi)存映射,這樣就可以用&ldquo;ret = ioctl(fd , VIDIOC_QBUF, &buf);&rdquo;獲取視頻圖像。判斷視頻圖像是否采集完畢需要使用&ldquo;ioctl(fd,VIDIOCSYNC, &buf);&rdquo;。
    (5)關(guān)閉視頻設(shè)備。使用&ldquo;close(fd);&rdquo;實(shí)現(xiàn)。
3.3 視頻圖像傳輸程序設(shè)計(jì)
    本視頻圖像傳輸程序主要通過(guò)線程組來(lái)實(shí)現(xiàn),涉及的線程主要有:cap_video、send_video和client_connect。cap_video 負(fù)責(zé)采集視頻圖像;client_connect線程用來(lái)等待客戶端的連接請(qǐng)求,當(dāng)有新的用戶連接請(qǐng)求時(shí),它就會(huì)采用GET方法獲取用戶的請(qǐng)求信息,然后再判斷是否建立連接,若請(qǐng)求信息有效則給該用戶開通一個(gè)新的連接用來(lái)發(fā)送連續(xù)的視頻流,client_connect線程還要負(fù)責(zé)將無(wú)效的socket連接斷開,以保證系統(tǒng)的高效運(yùn)行;send_video則是服務(wù)于已連接好的用戶,主要用來(lái)將公共緩沖區(qū)中的視頻圖像通過(guò)socket發(fā)送出去,send_video線程每發(fā)送一幀圖像后就會(huì)將公共緩沖區(qū)清空并進(jìn)行上鎖,直到公共緩沖區(qū)被寫入的數(shù)據(jù)大于或等于所設(shè)閾值時(shí)才執(zhí)行下一次發(fā)送任務(wù)。線程之間通過(guò)pthread_cond_
wait、pthread_mutex_lock、pthread_mutex_unlock等函數(shù)來(lái)防止競(jìng)爭(zhēng)。視頻圖像傳輸程序流程如圖6所示。

3.4 溫濕度實(shí)時(shí)曲線描繪程序設(shè)計(jì)
    本程序能夠?qū)貪穸葦?shù)據(jù)通過(guò)JavaScript代碼描繪成曲線圖,用戶能夠直觀地感受到溫濕度數(shù)據(jù)實(shí)時(shí)的變化。本程序使用開源的jqPlot庫(kù)進(jìn)行圖像描繪。
 jqPlot繪圖功能主要通過(guò)調(diào)用$.jqplot函數(shù)對(duì)所繪制的圖像進(jìn)行初始化設(shè)置來(lái)實(shí)現(xiàn)。jqPlot的配置格式為:
    $.jqplot('target', data, options);
    其中target表示在HTML中的位置;data為顯示的數(shù)據(jù);options為與圖像顯示相關(guān)的配置。
  本文中用到的主要options的對(duì)象有title和axes。axesDefaults中的配置參數(shù)與axes中的一樣,axesDefaults中的參數(shù)是默認(rèn)配置,而axes中的參數(shù)是非默認(rèn)配置。
4 系統(tǒng)調(diào)試
    通過(guò)串口線和網(wǎng)線,將開發(fā)板與PC連接好,然后啟動(dòng)開發(fā)板。打開瀏覽器后,在PC瀏覽器的地址欄中輸入開發(fā)板上所設(shè)Web服務(wù)器的IP地址即可看到登陸頁(yè)面,輸入用戶名和密碼,驗(yàn)證成功后即可進(jìn)入遠(yuǎn)程監(jiān)測(cè)的主控頁(yè)面,默認(rèn)加載頁(yè)面為視頻監(jiān)控頁(yè)面。用戶還可以通過(guò)點(diǎn)擊主控頁(yè)面中左邊樹形菜單中的&ldquo;溫濕度監(jiān)測(cè)&rdquo;加載溫濕度的實(shí)時(shí)曲線。
    本文設(shè)計(jì)了一種基于S3C6410嵌入式技術(shù)、B/S網(wǎng)絡(luò)模式的遠(yuǎn)程無(wú)線環(huán)境監(jiān)測(cè)系統(tǒng),經(jīng)過(guò)測(cè)試,該系統(tǒng)運(yùn)行穩(wěn)定,能夠進(jìn)行實(shí)時(shí)的溫濕度數(shù)據(jù)監(jiān)測(cè)和視頻監(jiān)控。該系統(tǒng)具有支持多路同時(shí)訪問(wèn)、系統(tǒng)負(fù)荷能力強(qiáng)、界面友好等特點(diǎn),在環(huán)保行業(yè)、制造行業(yè)、交通行業(yè)的環(huán)境監(jiān)測(cè)方面具有一定的推廣應(yīng)用價(jià)值。
參考文獻(xiàn)
[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] 張國(guó)軍, 鄭麗媛, 張俊.基于物聯(lián)網(wǎng)的瓦斯監(jiān)控系統(tǒng)[J]. 傳感器與微系統(tǒng),2013,32(1):125-127,130.
[3] 陳建明,沈東方.基于S3C6410的智能泵組控制器設(shè)計(jì)[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ù)庫(kù)在嵌入式程序開發(fā)中的應(yīng)用[J].物探裝備, 2011,21(3):170-173,178.
[6] 毛云貴.支持SMTP認(rèn)證的E-MAIL發(fā)送程序的設(shè)計(jì)[J].南京工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2006,4(1):66-72.
[7] 呂弘, 黃偉納. 基于AJAX技術(shù)的圖書館統(tǒng)計(jì)平臺(tái)的設(shè)計(jì)[J].中國(guó)科技信息,2012(1):75-76.
[8] 胡敏,施云波,修德斌,等.氯氣檢測(cè)報(bào)警器的設(shè)計(jì)[J].儀表技術(shù)與傳感器,2010(12):66-67,70.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。