張丙旭 ,徐文濤 ,連 鵬 ,張廣斌
(1.南京航空航天大學(xué)自動(dòng)化學(xué)院,江蘇南京211106;2.南京航空航天大學(xué)理學(xué)院,江蘇南京211106;3.南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇南京211106)
在工科高校教學(xué)中,大學(xué)物理實(shí)驗(yàn)作為基礎(chǔ)學(xué)科,其創(chuàng)新教育功能和載體作用早已為人們所共識(shí),在培養(yǎng)學(xué)生各方面能力的作用和地位是顯而易見(jiàn)的。光學(xué)實(shí)驗(yàn)作為其中不可或缺的一個(gè)環(huán)節(jié),仍舊具有諸多缺點(diǎn)。目前光學(xué)實(shí)驗(yàn)主要依靠顯微鏡和分光計(jì)來(lái)觀察實(shí)驗(yàn)現(xiàn)象,由于目鏡觀察視野小,在實(shí)驗(yàn)過(guò)程中老師難以對(duì)學(xué)生進(jìn)行實(shí)時(shí)指導(dǎo)。隨著嵌入式技術(shù)和互聯(lián)網(wǎng)的發(fā)展,嵌入式處理器的成本逐漸降低,我們采用開(kāi)源操作系統(tǒng)Android技術(shù)[1-5]和嵌入式處理器[6-9],針對(duì)大學(xué)物理光學(xué)實(shí)驗(yàn)實(shí)現(xiàn)了軟硬件的高級(jí)定制,設(shè)計(jì)并開(kāi)發(fā)了光學(xué)實(shí)驗(yàn)操作評(píng)測(cè)系統(tǒng),該系統(tǒng)可以將光學(xué)儀器觀察到的實(shí)驗(yàn)圖像實(shí)時(shí)上傳到教師端,實(shí)現(xiàn)老師對(duì)學(xué)生的實(shí)時(shí)監(jiān)控和糾正指導(dǎo),依靠云服務(wù)器對(duì)學(xué)生的實(shí)驗(yàn)數(shù)據(jù)和觀察結(jié)果進(jìn)行成績(jī)?cè)u(píng)定。
本文所設(shè)計(jì)的光學(xué)實(shí)驗(yàn)實(shí)操評(píng)測(cè)系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)如圖1所示,系統(tǒng)由教師監(jiān)控平臺(tái)、學(xué)生實(shí)操平臺(tái)和服務(wù)器構(gòu)成。教師監(jiān)控平臺(tái)由web網(wǎng)頁(yè)實(shí)現(xiàn),可監(jiān)控學(xué)生的實(shí)時(shí)操作狀態(tài)、獲取學(xué)生的實(shí)驗(yàn)結(jié)果和測(cè)量數(shù)據(jù)。學(xué)生實(shí)操平臺(tái)由嵌入式設(shè)備實(shí)現(xiàn),可通過(guò)攝像頭獲取目鏡中的實(shí)時(shí)圖像并向服務(wù)器提交實(shí)驗(yàn)數(shù)據(jù)和觀察結(jié)果。服務(wù)器作為教師監(jiān)控平臺(tái)和學(xué)生實(shí)操平臺(tái)鏈接的橋梁,集成了實(shí)驗(yàn)數(shù)據(jù)結(jié)果自動(dòng)評(píng)判算法,用于實(shí)驗(yàn)數(shù)據(jù)的存儲(chǔ)和學(xué)生成績(jī)?cè)u(píng)定。
圖1 系統(tǒng)總體架構(gòu)
學(xué)生實(shí)操平臺(tái)為經(jīng)過(guò)軟硬件定制的嵌入式設(shè)備,其硬件結(jié)構(gòu)如圖2所示,其由觸摸顯示屏、電源輔助電路、ARM核心板、USB接口和UVC協(xié)議攝像頭[10-12]組成。
圖2 學(xué)生實(shí)操平臺(tái)硬件結(jié)構(gòu)
實(shí)操平臺(tái)以ARM處理器為核心,硬件電路主要針對(duì)外圍拓展模塊的接口電路設(shè)計(jì)。為了完成系統(tǒng)特定功能,在以ARM為核心的嵌入式平臺(tái)上擴(kuò)展了存儲(chǔ)模塊、WiFi模塊、常用工業(yè)接口通信模塊、觸摸屏模塊等[13-16]。
對(duì)于嵌入式ARM處理器[17],我們選用cortex-A53八核S5P6818芯片,它是三星公司生產(chǎn)的一種RISC結(jié)構(gòu)微處理器芯片,具有先進(jìn)的內(nèi)核,可提供一套通用的外設(shè)接口,無(wú)需再額外擴(kuò)充外圍器件,其功耗低,簡(jiǎn)單,方便,且全靜態(tài)設(shè)計(jì),特別適合于要求穩(wěn)定性高、功耗低的嵌入式工業(yè)控制系統(tǒng)。S5P6818還提供豐富的片上資源,集成LCD專用DMA的LCD 控制器,3路UART,2路SPI,IIC總線接口,4 路擁有外部請(qǐng)求引腳的DMA控制器。依靠核心芯片可以方便地在外圍添加人機(jī)接口模塊,USB通信模塊,完全可以滿足本系統(tǒng)的需求。
我們采用7寸高清屏作為與學(xué)生進(jìn)行交互的人機(jī)界面載體,并通過(guò)WiFi模塊將數(shù)據(jù)上傳至系統(tǒng)Web服務(wù)器的相關(guān)數(shù)據(jù)庫(kù)中。
目前物理實(shí)驗(yàn)常用的光學(xué)觀察工具主要為光學(xué)顯微鏡和分光計(jì),為了將觀察圖像上傳給教師監(jiān)控平臺(tái),本系統(tǒng)采用基于CMOS傳感器的數(shù)字?jǐn)z像頭作為圖像獲取設(shè)備,選取USB接口作為傳感器和ARM嵌入式系統(tǒng)通訊方式,提高了系統(tǒng)的通用性、擴(kuò)展性和可維護(hù)性。
評(píng)測(cè)系統(tǒng)云端服務(wù)器基于WEB服務(wù)器技術(shù)開(kāi)發(fā),其主要功能有響應(yīng)來(lái)自學(xué)生端實(shí)驗(yàn)數(shù)據(jù)上傳和圖像上傳請(qǐng)求,存儲(chǔ)學(xué)生實(shí)驗(yàn)數(shù)據(jù),評(píng)判學(xué)生實(shí)驗(yàn)結(jié)果,響應(yīng)教師端查詢學(xué)生實(shí)驗(yàn)數(shù)據(jù)請(qǐng)求等功能。系統(tǒng)采用開(kāi)源數(shù)據(jù)庫(kù)MySQL開(kāi)發(fā),數(shù)據(jù)庫(kù)中主要建立了學(xué)生信息,實(shí)驗(yàn)數(shù)據(jù),實(shí)驗(yàn)成績(jī)等信息表,實(shí)現(xiàn)對(duì)學(xué)生實(shí)驗(yàn)信息的統(tǒng)一管理,數(shù)據(jù)庫(kù)概念設(shè)計(jì)ER模型如圖3所示。
圖3 數(shù)據(jù)庫(kù)概念設(shè)計(jì)ER模型
在服務(wù)器層,我們采用PHP語(yǔ)言開(kāi)發(fā)程序響應(yīng)來(lái)自教師監(jiān)控平臺(tái)和學(xué)生實(shí)操平臺(tái)的數(shù)據(jù)請(qǐng)求,并實(shí)現(xiàn)成績(jī)?cè)u(píng)定等相應(yīng)功能。
3.2.1 嵌入式操作系統(tǒng)定制
本系統(tǒng)擬基于嵌入式Android系統(tǒng)完成學(xué)生實(shí)操平臺(tái)的軟件實(shí)現(xiàn)。軟件開(kāi)發(fā)主要分為操作系統(tǒng)定制和應(yīng)用軟件開(kāi)發(fā)。由于本系統(tǒng)需要使用USB攝像頭作為圖像獲取設(shè)備,因此在操作系統(tǒng)層需要集成可支持UVC協(xié)議的USB攝像頭的驅(qū)動(dòng)程序。原生Android系統(tǒng)中并未集成該驅(qū)動(dòng)程序的調(diào)用接口,因而需要使用NDK工具鏈將linux內(nèi)核中UVC驅(qū)動(dòng)通過(guò)封裝,生成JNI層接口以供Android應(yīng)用層調(diào)用。
Android是一個(gè)開(kāi)源的嵌入式平臺(tái)操作系統(tǒng),該系統(tǒng)向所有開(kāi)發(fā)者開(kāi)放原始代碼,開(kāi)發(fā)者可以根據(jù)谷歌公司提供的軟件開(kāi)發(fā)工具包開(kāi)發(fā)各種應(yīng)用軟件。Android系統(tǒng)是基于Linux內(nèi)核的操作系統(tǒng),由內(nèi)核、運(yùn)行庫(kù)、用來(lái)運(yùn)行代碼的類似虛擬機(jī)組成。和標(biāo)準(zhǔn)的Linux嵌入式系統(tǒng)開(kāi)發(fā)流程幾乎一樣,Android嵌入式軟件系統(tǒng)的開(kāi)發(fā)包括Bootloader引導(dǎo)程序設(shè)計(jì),Linux操作系統(tǒng)移植,根文件系統(tǒng)創(chuàng)建以及應(yīng)用程序開(kāi)發(fā)等環(huán)節(jié)。具體開(kāi)發(fā)流程如下:
1)建立嵌入式Linux系統(tǒng)的交叉開(kāi)發(fā)環(huán)境
交叉編譯就是在計(jì)算機(jī)主機(jī)上編譯源程序,在目標(biāo)板上運(yùn)行可執(zhí)行程序。通常通過(guò)串口或者以太網(wǎng)接口傳輸Linux內(nèi)核文件到目標(biāo)板,這樣的交叉開(kāi)發(fā)環(huán)境可以非常方便地進(jìn)行嵌入式Linux開(kāi)發(fā)、調(diào)試。
2)移植引導(dǎo)程序Bootloader
嵌入式Linux內(nèi)核通常需要目標(biāo)板上的固件引導(dǎo)。這些引導(dǎo)程序就是Bootloader,在目標(biāo)板上電的時(shí)候,完成板級(jí)初始化和內(nèi)核引導(dǎo)的任務(wù)。本系統(tǒng)通過(guò)u-boot來(lái)引導(dǎo)。
3)移植Linux內(nèi)核
移植Linux系統(tǒng)內(nèi)核是嵌入式Linux移植的關(guān)鍵部分,需根據(jù)具體的硬件平臺(tái)添加或修改系統(tǒng)的選項(xiàng),對(duì)Linux系統(tǒng)進(jìn)行裁剪以適合特定的應(yīng)用場(chǎng)合。
4)開(kāi)發(fā)Linux文件系統(tǒng)
把Linux內(nèi)核文件和文件系統(tǒng)燒寫(xiě)到存儲(chǔ)設(shè)備中,使開(kāi)發(fā)板上Linux系統(tǒng)能夠獨(dú)立啟動(dòng)并運(yùn)行,本系統(tǒng)選擇nfs格式的文件系統(tǒng)。
5)編譯android源碼,定制系統(tǒng)
本項(xiàng)目不希望用戶刪除我們的應(yīng)用,所以需要將應(yīng)用程序編譯進(jìn)入系統(tǒng)作為不可刪除的系統(tǒng)應(yīng)用。我們?cè)赨buntu 14.04系統(tǒng)下進(jìn)行源碼的編譯工作,使用OpenJDK 8作為我們的編譯工具,編譯過(guò)程如下:1)初始化編譯環(huán)境,谷歌已經(jīng)為編譯工作做好了初始化環(huán)境變量工具,命令為source build/envsetup.sh。2)選擇目標(biāo)平臺(tái),這一步可以將Android編譯成適合某具體運(yùn)行硬件平臺(tái),命令為lunch。3)編譯,命令為make–j8,參數(shù)j8表示用戶希望系統(tǒng)設(shè)置8個(gè)線程進(jìn)行編譯工作,這樣可以提高編譯速度。
6)Android系統(tǒng)移植和應(yīng)用程序開(kāi)發(fā)
基于谷歌提供的Android studio開(kāi)發(fā)工具創(chuàng)建項(xiàng)目,設(shè)計(jì)軟件界面,并進(jìn)行調(diào)試和運(yùn)行程序。
3.2.2 應(yīng)用軟件設(shè)計(jì)
由于本項(xiàng)目需要使用USB攝像頭,而原生Android系統(tǒng)并沒(méi)有集成對(duì)此設(shè)備的驅(qū)動(dòng)支持,我們?cè)趹?yīng)用軟件的開(kāi)發(fā)過(guò)程中需要考慮對(duì)攝像頭的驅(qū)動(dòng)設(shè)計(jì),USB攝像頭是遵循UVC協(xié)議的圖像捕捉設(shè)備,我們僅需要在Linux內(nèi)核中移植UVC設(shè)備的驅(qū)動(dòng)程序,并通過(guò)谷歌官方提供的Android NDK工具包在HAL層將驅(qū)動(dòng)功能封裝成應(yīng)用層接口,通過(guò)Java在應(yīng)用層調(diào)用上述接口,實(shí)現(xiàn)對(duì)USB攝像頭的使用。
學(xué)生實(shí)操平臺(tái)的應(yīng)用軟件需要實(shí)現(xiàn)以下功能:
1)對(duì)攝像頭進(jìn)行光學(xué)參數(shù)設(shè)定。主要設(shè)置采集圖像的分辨率和攝像頭幀頻等參數(shù)。
2)獲取視頻流并在學(xué)生實(shí)操平臺(tái)的觸摸屏上進(jìn)行顯示。
3)對(duì)采集到的圖像進(jìn)行格式轉(zhuǎn)換及保存。
4)通過(guò)http協(xié)議將實(shí)驗(yàn)數(shù)據(jù)和采集到的圖像上傳至服務(wù)器。
5)為用戶提供人機(jī)交互界面,實(shí)現(xiàn)一定的用戶操作邏輯。
以上開(kāi)發(fā)過(guò)程主要使用的類方法如下:
1)打開(kāi)攝像頭
2)開(kāi)始預(yù)覽
3)調(diào)節(jié)亮度
4)切換分辨率
5)捕捉圖像
6)關(guān)閉攝像頭
應(yīng)用軟件算法流程如圖4所示。
圖4 應(yīng)用軟件算法流程圖
軟件運(yùn)行后,首先對(duì)攝像頭進(jìn)行參數(shù)設(shè)定,用戶可自行選擇合適的分辨率,調(diào)整亮度和對(duì)比度。其次從內(nèi)存中讀取視頻流信息,并對(duì)其進(jìn)行顯示,此時(shí)用戶便可以在交互界面上預(yù)覽實(shí)時(shí)的圖像。當(dāng)用戶發(fā)出上傳圖片指令時(shí),軟件對(duì)此時(shí)的圖像進(jìn)行格式轉(zhuǎn)換和保存操作,然后通過(guò)http協(xié)議發(fā)送到服務(wù)器。
教師監(jiān)控平臺(tái)主要實(shí)現(xiàn)的功能有查詢學(xué)生實(shí)驗(yàn)數(shù)據(jù)和查詢學(xué)生采集的實(shí)驗(yàn)現(xiàn)象圖片。其采用BS架構(gòu)設(shè)計(jì),用戶界面基于html+css+JavaScript技術(shù)進(jìn)行實(shí)現(xiàn),采用JavaScript腳本設(shè)定一定頻率通過(guò)http協(xié)議向web服務(wù)器進(jìn)行數(shù)據(jù)請(qǐng)求,以實(shí)現(xiàn)用戶端數(shù)據(jù)實(shí)時(shí)更新的目的。
我們使用大學(xué)物理實(shí)驗(yàn)中的必修光學(xué)實(shí)驗(yàn)-牛頓環(huán)的觀察對(duì)本系統(tǒng)進(jìn)行功能測(cè)試,本系統(tǒng)在開(kāi)發(fā)完成之后經(jīng)過(guò)一系列的精確測(cè)試,測(cè)試效果圖如圖5、圖6所示。
在測(cè)試中,攝像頭獲取的視頻流在640*480的分辨率下,平均幀率達(dá)到35幀以上。學(xué)生實(shí)操平臺(tái)提交數(shù)據(jù)后3~5秒內(nèi)即可在教師監(jiān)控平臺(tái)上收到數(shù)據(jù)信息,學(xué)生實(shí)操平臺(tái)亦可在3秒內(nèi)接收到老師的反饋信息。且整套系統(tǒng)具有良好的穩(wěn)定性,攝像頭無(wú)故障工作時(shí)間超40小時(shí),可以滿足系統(tǒng)的教學(xué)要求。測(cè)試過(guò)程截圖如圖5,圖6所示。
圖5 學(xué)生實(shí)操平臺(tái)運(yùn)行截圖
圖6 教師監(jiān)控平臺(tái)運(yùn)行截圖
系統(tǒng)基于Android嵌入式技術(shù)和互聯(lián)網(wǎng)技術(shù)進(jìn)行設(shè)計(jì)并開(kāi)發(fā),經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,系統(tǒng)運(yùn)行流暢,用戶可以自定義需要采集的光學(xué)圖像,學(xué)生實(shí)操平臺(tái)可以實(shí)現(xiàn)圖像觀察和數(shù)據(jù)上傳功能,教師監(jiān)控平臺(tái)實(shí)現(xiàn)監(jiān)控和成績(jī)?cè)u(píng)定功能,圖像觀察清晰,視頻預(yù)覽流暢,數(shù)據(jù)傳輸高效,工作性能可靠,系統(tǒng)穩(wěn)定性好,可靠性高,具有較好的易用性和可移植性。