孫中懿,王方歡,畢宗杰,崔子浩,付石友,田兆碩
(哈爾濱工業(yè)大學(xué)(威海)船海光電裝備研究所,山東 威海 264209)
傳統(tǒng)光譜檢測系統(tǒng)一般由光譜采集系統(tǒng)和基于PC平臺的光譜數(shù)據(jù)處理軟件兩部分組成,由于系統(tǒng)需要計算機進行處理顯示,給戶外使用帶來了不便[1-3]。適應(yīng)各種工況的便攜式微型光譜儀有效彌補這一缺點,是光譜儀市場的一個重要發(fā)展方向。微電子技術(shù)的發(fā)展使得光譜儀器微型化研究成為可能,在光譜采集和實時處理相結(jié)合的基礎(chǔ)上,形成集成化、微型化以及智能化的光譜儀已經(jīng)成為微型光譜檢測設(shè)備領(lǐng)域的研究熱點[4]。智能手機結(jié)合光譜儀的使用方法是光譜檢測技術(shù)的新手段,是實現(xiàn)光譜儀器實時性及智能化的有效途徑。
一般情況下,微型光譜儀與智能手機進行連接的方式有兩種,一種為USB連接,另一種為無線連接。USB連接方式需光譜儀通過數(shù)據(jù)線連接到智能手機,對設(shè)備底層驅(qū)動的要求高,由于存在連接線,設(shè)備較為繁瑣不利于遠距離的數(shù)據(jù)傳輸。而無線連接方式一般采用較為成熟的藍牙或WiFi,但藍牙協(xié)議較為繁瑣,其傳輸速率和穩(wěn)定性易受影響[5],因此基于藍牙方式傳輸?shù)奈⑿凸庾V儀在數(shù)據(jù)傳輸速率、傳輸距離、檢測速度以及連接穩(wěn)定性等方面的存在不足之處,不利于高速便攜式光譜檢測設(shè)備的發(fā)展。采用WiFi連接需要光譜儀開啟自身WiFi,可能被其他移動設(shè)備連接,容易造成信息泄露安全性差[6],且手機端開啟WiFi后無法使用移動網(wǎng)絡(luò)連接到外部網(wǎng)絡(luò),因此不方便采用此連接方式。
由于移動熱點網(wǎng)絡(luò)能夠有效地提高無線資源的利用率、能夠在戶外或者沒有網(wǎng)絡(luò)的地方上網(wǎng)并實現(xiàn)惡劣無線環(huán)境下的通信,所以在近幾年受到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注[7]。目前大部分智能手機自帶開啟WiFi熱點功能,這給光譜儀數(shù)據(jù)無線傳輸提供了新的思路。
本文利用手機熱點進行微型光譜儀與手機間通信,光譜儀無線模塊可以自動連接設(shè)置好的手機熱點。結(jié)合Open WRT系統(tǒng)及集成開發(fā)環(huán)境Android Studio完成了系統(tǒng)數(shù)據(jù)傳輸處理及顯示的功能,該系統(tǒng)能夠有效彌補傳統(tǒng)光譜檢測系統(tǒng)攜帶不便的不足,通過無線熱點傳輸方式保證了數(shù)據(jù)傳輸?shù)乃俾屎涂煽啃?避免了有線連接帶來的不便,能夠?qū)崟r處理顯示光譜儀采集的光譜數(shù)據(jù),這對于后期研發(fā)便攜式、微型化及智能化一體的光譜檢測系統(tǒng)具有一定的意義。
基于手機熱點傳輸?shù)奈⑿凸庾V儀主要由進行光譜數(shù)據(jù)采集的微型光譜儀硬件和進行光譜顯示的手機端組成,二者通過手機熱點方式進行數(shù)據(jù)傳輸和控制,系統(tǒng)整體結(jié)構(gòu)如圖1所示。
被測物體發(fā)出的信號光通過光譜儀外殼的SMA標準接口進入分光系統(tǒng),再經(jīng)凸透鏡將光信號聚集到CCD進行數(shù)據(jù)采集成像,CCD將采集到的圖像通過Open WRT無線模塊發(fā)送到手機端,手機端可以對光譜采集進行啟??刂撇⑦M行光譜數(shù)據(jù)處理和圖像化顯示。
整個光譜儀通過充電電池給Open WRT無線模塊和CCD進行供電,并有相應(yīng)指示燈進行電量指示,也可以通過USB對充電電池進行充電和系統(tǒng)供電。
圖1 微型光譜儀系統(tǒng)結(jié)構(gòu)圖
微型光譜儀主要進行光譜信息采集,并通過Open WRT無線模塊將光譜圖像發(fā)送到手機端。
Open WRT無線模塊是基于Atheros AR9331處理芯片設(shè)計的WiFi核心模塊,支持Open WRT操作系統(tǒng),主要技術(shù)參數(shù)如表1所示,核心模塊還引出USB、UART和WiFi天線等接口方便外設(shè)接入。
表1 WiFi核心模塊主要技術(shù)參數(shù)
手機端和Open WRT無線模塊連接分為WiFi和熱點兩種,隨著云存儲及大數(shù)據(jù)的發(fā)展,光譜數(shù)據(jù)上傳到云端數(shù)據(jù)庫成為未來發(fā)展的趨勢。二者使用WiFi連接時手機端不能夠使用移動數(shù)據(jù)連接到外部網(wǎng)絡(luò),而二者采用熱點連接方式時手機端可以使用移動數(shù)據(jù)訪問外部網(wǎng),因此我們手機端和光譜儀采用手機熱點連接方式,必要時可以將光譜數(shù)據(jù)傳入云端數(shù)據(jù)庫。
設(shè)置時首先打開手機端移動熱點,設(shè)置熱點的網(wǎng)絡(luò)名稱和密碼,然后登錄Open WRT系統(tǒng)搜索附近的無線網(wǎng),找到手機端熱點網(wǎng)絡(luò)并加入。設(shè)置完成之后,Open WRT系統(tǒng)啟動后會自動識別并連接這個移動端的熱點。此時手機端不僅能夠通過局域網(wǎng)的IP訪問Open WRT無線模塊,還可以使用移動數(shù)據(jù)訪問互聯(lián)網(wǎng)。
光譜圖像的獲取選擇的是CCD成像模塊,其支持Windows和Linux操作系統(tǒng),免驅(qū)適用于Open WRT系統(tǒng),圖像分辨率為1280×720。CCD成像模塊與Open WRT無線模塊使用USB的連接方式進行連接,成像模塊將光譜數(shù)據(jù)通過MJPG圖像格式傳輸?shù)綗o線模塊。Open WRT識別光譜圖像主要是通過mjpg-streamer軟件包進行實現(xiàn),mjpg-streamer軟件包工作流程如圖2所示。獲取的光譜圖像通過TCP協(xié)議以JPEG數(shù)據(jù)流形式傳到手機端,進而達到傳輸圖像數(shù)據(jù)的目的。
圖2 mjpg-streamer軟件包工作流程圖
Android設(shè)備處理能力強,數(shù)據(jù)傳輸接口完善,便攜性強,應(yīng)用廣泛[1,8],因此整個系統(tǒng)采用Android手機作為數(shù)據(jù)處理與顯示部分。手機端和光譜儀通過手機的熱點網(wǎng)絡(luò)進行交互,接收光譜儀采集的光譜數(shù)據(jù)并將光譜數(shù)據(jù)進行圖形化顯示。
打開熱點的手機相當(dāng)于路由器,光譜儀無線模塊作為客戶端,獲取熱點手機的IP建立Socket連接,雙方進行通信。由于手機端和光譜儀距離影響和網(wǎng)絡(luò)狀態(tài)的不穩(wěn)定導(dǎo)致與Open WRT無線模塊在建立Socket連接時的時間不是固定值,對數(shù)據(jù)傳輸和控制造成了一定的影響。經(jīng)過測試,二者正常的連接時間為30 ms左右,但是也會出現(xiàn)連接時間為1400 ms左右的情況。為了解決連接時間不固定的問題,在進行連接時,設(shè)定每次連接時間最高為80 ms,如果超過該時間則重新進行連接。由于連接超時是個別情況出現(xiàn),所以最多連接三次就能建立連接,因此手機端和無線模塊的最多連接時間為240 ms左右。整個Socket連接流程如圖3所示。
圖3 Socket連接流程圖
因為光譜圖像采用的是網(wǎng)絡(luò)傳輸,因此首先要在Android Manifest.xml聲明WiFi開發(fā)權(quán)限,使用Wifi Manager獲取當(dāng)前網(wǎng)絡(luò)的地址,判定當(dāng)前網(wǎng)絡(luò)狀態(tài)是否已經(jīng)和無線模塊相連接。
Android SDK對HTTP提供了支持,提供了HttpURL Connection的標準Java接口。HttpURL Connection實現(xiàn)簡單的基于URL請求的相應(yīng)功能。通過訪問對應(yīng)的URL地址獲取到光譜圖像的輸入流數(shù)據(jù),再將輸入流數(shù)據(jù)轉(zhuǎn)化為Android端可處理的位圖信息。
Android移動端使用getPixels方法提取Bitmap位圖數(shù)據(jù)中的各像素值,并將像素點的信息依次保存在數(shù)組中。然后分別提取數(shù)組中每個像素點的RGB分量,根據(jù)公式(1)進行移位運算可以將每個像素點的RGB值轉(zhuǎn)化為灰度值[9]。
gray=(R·38+G·75+B·14)?7
(1)
其中,gray為像素點的灰度值;R,G,B分別為該像素點紅、綠、藍分量的值。
最后將轉(zhuǎn)化的灰度值信息保存在長度為像素點數(shù)的數(shù)組之中,按照上述過程取得三幀光譜圖像的灰度值信息,并按照疊加平均法將三組灰度值取平均得到降噪之后的灰度值。并將疊加平均降噪之后的灰度值信息保存,以便后期處理。
本系統(tǒng)最終將接收處理后的光譜數(shù)據(jù)以圖形化形式直觀表示,方便進行觀察和數(shù)據(jù)分析。本系統(tǒng)最終使用折線圖形式表示光譜數(shù)據(jù)的規(guī)律,因此選用AChart Engine繪制工具庫,其結(jié)構(gòu)如圖4所示。AChart Engine支持繪制折線圖、餅圖、散點圖、柱狀圖等,繪制的圖表支持水平和垂直兩種展示方式并且可以自定義很多其他功能。此外AChart Engine支持建立一個view對象,或者建立一個用于啟動Activity的Intent。
圖4 AChart Engine結(jié)構(gòu)圖
折線圖構(gòu)成需要五項重要元素,XY Multiple Series Renderer用于整體折線圖設(shè)置,包括設(shè)置坐標軸外邊距、X軸和Y軸最大值、坐標軸內(nèi)部及外部顏色、顯示形式和縮放比例等;XY Series Render用于設(shè)置光譜曲線,包括曲線顏色、點的形狀、是否顯示數(shù)值等;XY Multiple Series Dataset用于所有數(shù)據(jù)的存放并通過XY Series對象來提供繪制折線點集合數(shù)據(jù)。XY Multiple Series Renderer和XY Multiple Series Dataset傳入Chart Factory后,調(diào)用get Line Chart View(Context context,XY Multiple Renderer,XY Multiple Series Dataset)方法來進行折線圖的顯示。最終顯示的是以像素點為橫坐標,相對強度為縱坐標的折線圖表示的光譜曲線。
為了測試整個系統(tǒng)的可行性和可靠性,選擇日光燈和He-Ne激光及背景作為測試項目,測試系統(tǒng)可行性并對傳輸距離和傳輸速度進行了測試,測試用Android手機為魅藍Note6。
首先測試的是日光燈,測試實驗圖如圖5所示,顯示曲線如圖6所示,可以看出測試結(jié)果有三個明顯的特征峰。
圖5 日光燈測試實驗圖
圖6 手機顯示日光燈像素點-相對強度曲線
He-Ne激光及背景測試如圖7所示,實驗結(jié)果如圖8所示,可以看出有一個明顯的特征峰。
為了測試本系統(tǒng)的處理性能,在光譜圖像顯示部分通過對接收的每幀圖像定義起止位標識來實時計算數(shù)據(jù)傳輸?shù)膸l,通過多次試驗可知,實際測量處理速度為8 f/s。在室內(nèi)室外多處進行連接距離的測試傳輸控制距離,最遠傳輸控制距離均可達13 m以上。
圖7 He-Ne激光及背景測試圖
圖8 手機顯示He-Ne激光及背景像素點-相對強度曲線
針對目前微型光譜儀的發(fā)展趨勢,基于Open WRT系統(tǒng)和Android系統(tǒng)設(shè)計了一種手機熱點傳輸?shù)奈⑿凸庾V儀系統(tǒng)。該系統(tǒng)能夠應(yīng)用到目前主流的安卓手機上,具有良好的兼容性,通過手機熱點形式實現(xiàn)了光譜儀與手機端的數(shù)據(jù)傳輸。光譜圖像傳輸速率為8 f/s,滿足傳輸條件的距離最遠可達13 m以上,光譜曲線圖形化顯示經(jīng)測試基本滿足條件。整個系統(tǒng)具有傳輸速率快、成本低、處理能力強、易于攜帶等優(yōu)點,適合室內(nèi)外實時測量,有一定的實際應(yīng)用價值。