《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于DLP投影技術(shù)車載集成終端的軟件設(shè)計(jì)
基于DLP投影技術(shù)車載集成終端的軟件設(shè)計(jì)
2015年電子技術(shù)應(yīng)用第6期
王 瓊,姜 棟
合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院,安徽 合肥230009
摘要: 提出一種基于DLP投影技術(shù)的車載集成顯示終端設(shè)計(jì)方案。以嵌入式處理器S5PV210作為控制中心,采用基于DLPC300 DMD芯片的DLP投影儀,軟件設(shè)計(jì)平臺(tái)基于Linux2.6.38和QT/E4.6,在此基礎(chǔ)上設(shè)計(jì)并完成了軟件開發(fā)工作并在樣機(jī)上進(jìn)行了模擬實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)能夠圖形化實(shí)時(shí)顯示汽車行駛信息,色彩明亮,視頻圖像采集清晰,集成化顯示避免了駕駛員視線分散,提高了行車安全性。
中圖分類號(hào): TP391.1
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)06-0020-04
Software design of vehicle intergrated display system based on DLP technologies
Wang Qiong,Jiang Dong
School of Computer and Information,Hefei University of Technology,Hefei 230009,China
Abstract: A design scheme of vehicle integration display system based on digital light procession(DLP) technologies is put forward. The embedded processor S5PV210 is used as the hardware control kernel.The DLP projector based on the DLPC300 DMD is used. On the development platform of Linux2.6.38 and QT4.6, software development is designed and implemented.Finally,the simulation experiment is carried out on the prototype, the experimental results show that the system can display vehicle informations graphically in real time, which has clear image collection,avoids the events of sight scattered and improves the driving safety and comfort.
Key words : intergrated display terminal;digital light procession;embedded systems;graphical user interface

    

0 引言

    汽車儀表是汽車與駕駛員進(jìn)行信息交流的窗口,也是汽車電子技術(shù)的重要內(nèi)容。隨著現(xiàn)代汽車所使用車載電器不斷增多,如車載多媒體、行車記錄儀、空調(diào)和導(dǎo)航等,汽車駕駛環(huán)境在日益改善的同時(shí),顯示的信息量也急劇增加。目前,多數(shù)汽車廠商采用在中控臺(tái)安置兩個(gè)顯示屏的方案解決信息顯示問題,即“儀表盤+中控彩色大屏”。行車時(shí),該方案容易導(dǎo)致駕駛員頻繁轉(zhuǎn)移視線,造成注意力不集中,留下安全隱患。此外,傳統(tǒng)的機(jī)械式儀表盤存在部件磨損后誤差等級(jí)大、儀表樣式單一的缺點(diǎn),而以液晶屏作為顯示終端的虛擬儀表則存在液晶屏壽命較短的缺陷。

    針對(duì)上述問題,本文提出了一種基于數(shù)字光處理(Digital Light Procession,DLP)[1]投影技術(shù)的車載集成前屏方案,將汽車行駛、行車記錄儀視頻和多媒體播放等功能集中起來,應(yīng)用DLP投影技術(shù)將畫面投射到方向盤前的反射屏上,并采用界面分隔的設(shè)計(jì)方法在一幀屏幕上同時(shí)顯示不同信息畫面,實(shí)現(xiàn)了系統(tǒng)樣機(jī)的研制及模擬實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,數(shù)字化儀表響應(yīng)靈敏、畫面美觀,各功能模塊之間通過按鍵切換,交互便利。集成的顯示方法避免了駕駛員在兩個(gè)顯示屏中轉(zhuǎn)移視線,駕駛環(huán)境更為舒適,提高了行車安全性。

1 系統(tǒng)整體實(shí)現(xiàn)方案

    汽車集成顯示系統(tǒng)整體結(jié)構(gòu)如圖1所示。為滿足系統(tǒng)快速處理數(shù)據(jù)和實(shí)時(shí)性的要求,選用Samsung公司的32位RISC微處理器S5PV210作為系統(tǒng)控制核心,內(nèi)置高清晰多媒體接口線(High-Definition Multimedia Interface,HDMI)模塊,可通過HDMI接口連接DLP投影儀進(jìn)行投影顯示。外圍電路包括:存儲(chǔ)單元256 MB DDR RAM和1 GB NAND Flash、RS-232口、CAN總線口等擴(kuò)展通信接口。投影儀選用COOLUX X3S型DLP投影儀。

qrs3-t1.gif

    系統(tǒng)功能為:采集模塊采集各類車載信號(hào),兩個(gè)攝像頭分別采集前、后兩個(gè)行車視頻圖像信號(hào),處理器根據(jù)獲得的信號(hào)調(diào)整信息顯示畫面,通過HDMI接口將畫面輸送到DLP投影儀并投射在反射屏上,駕駛員通過觀察反射屏的圖像即可獲取所需信息,并通過人機(jī)交互按鍵實(shí)現(xiàn)菜單操作,可方便地調(diào)整和切換顯示畫面。集成顯示畫面包括汽車行駛信息、行車記錄儀、電子地圖和多媒體播放4個(gè)子功能模塊。

2 基于DLP技術(shù)的投影顯示方案

    DLP技術(shù)是指通過數(shù)字微鏡器件(Digital Micromirror Device,DMD)芯片將光強(qiáng)數(shù)字化以完成信息顯示的技術(shù)。DLP投影系統(tǒng)由光源、色輪、數(shù)字信號(hào)處理器、光學(xué)器件和DMD芯片組成。其投影原理為:當(dāng)光源的光線經(jīng)過聚透鏡和色輪后,被分解為R、G、B三原色投射到DMD芯片上,光線再經(jīng)過DMD鏡片的反射后由投影鏡頭投影成像。

    本文通過HDMI接口將車載集成系統(tǒng)與DLP投影儀連接,HDMI協(xié)議數(shù)據(jù)傳輸如圖2所示,HDMI接口包含:3個(gè)用于傳輸數(shù)據(jù)的最小化傳輸差分信號(hào)(Transition Minimized Differential Signaling,TMDS)通道;1個(gè)獨(dú)立的同步時(shí)序TMDS通道,以保證數(shù)據(jù)傳輸時(shí)所需的統(tǒng)一時(shí)序;顯示數(shù)據(jù)通道(Display Data Channel,DDC),用于HDMI輸出端向接收端發(fā)送配置信息或讀取接收端的顯示屬性信息。

qrs3-t2.gif

    車載終端與投影儀的連接結(jié)構(gòu)如圖3所示。處理器S5PV210內(nèi)部的視頻編碼器產(chǎn)生非標(biāo)準(zhǔn)流速視頻流,經(jīng)過雙時(shí)鐘FIFO緩沖器將其調(diào)整為標(biāo)準(zhǔn)流速視頻流,下一級(jí)的像素點(diǎn)轉(zhuǎn)換器將視頻流轉(zhuǎn)換為DLP投影儀可處理的24 bit RGB彩色圖像,最后經(jīng)視頻信號(hào)同步發(fā)生器處理,把標(biāo)準(zhǔn)視頻流發(fā)送給HDMI發(fā)送器,由HDMI接收器接收后輸入給DLPC300 DMD控制器,DMD鏡片將圖像反射后由投影鏡頭投影成像。

qrs3-t3.gif

    為了使終端能夠滿足不同顯示分辨率系統(tǒng),本文設(shè)計(jì)配置文件hdmi.conf并加入到根文件系統(tǒng)/etc目錄下。系統(tǒng)啟動(dòng)后,后臺(tái)服務(wù)進(jìn)程hdmi-service首先讀取投影儀接口分辨率參數(shù)并寫入到配置文件hdmi.conf中,隨后hdmi-service進(jìn)程將hdmi.conf中的分辨率配置數(shù)據(jù)通過DDC通道發(fā)送到HDMI接收器的EDID ROM中,投影儀系統(tǒng)根據(jù)該數(shù)據(jù)變更顯示分辨率。用戶如要更改顯示分辨率,只需修改配置文件hdmi.conf即可完成。

    本設(shè)計(jì)將DLP微型投影儀安裝在汽車方向盤轉(zhuǎn)向軸上,將圖像投影到方向盤前的反射屏上,如圖4所示。圖4中,標(biāo)號(hào)1表示DLP微型投影儀,標(biāo)號(hào)2表示反射屏。

qrs3-t4.gif

3 系統(tǒng)軟件設(shè)計(jì)

3.1 開發(fā)環(huán)境構(gòu)建與系統(tǒng)軟件移植

    系統(tǒng)軟件設(shè)計(jì)包括開發(fā)環(huán)境構(gòu)建[2]、系統(tǒng)軟件移植和應(yīng)用程序開發(fā)三部分。本文采用的開發(fā)環(huán)境為VMware Workstation虛擬機(jī)和Red Hat Linux5操作系統(tǒng),在虛擬機(jī)中安裝交叉編譯工具鏈ARM-Linux-gcc4.4.3,用于完成嵌入式操作系統(tǒng)內(nèi)核、busybox、QT/E4.6.3和車載終端應(yīng)用程序的編譯;安裝QT/E4.6.3[3]庫(kù)以支持應(yīng)用程序的開發(fā);設(shè)計(jì)AD驅(qū)動(dòng)jd_adc.c、人機(jī)交互按鍵驅(qū)動(dòng)jd_buttons.c和HDMI驅(qū)動(dòng)等驅(qū)動(dòng)并加入到Linux2.6.38內(nèi)核源碼樹中,配置編譯內(nèi)核;設(shè)計(jì)根文件系統(tǒng)并在其中加入inittab、rcS和hdmi.conf等配置文件以及glibc庫(kù)、QT庫(kù)等動(dòng)態(tài)鏈接庫(kù)構(gòu)建車載終端應(yīng)用程序的運(yùn)行環(huán)境。

3.2 應(yīng)用程序設(shè)計(jì)

    車載終端應(yīng)用程序設(shè)計(jì)主要解決信號(hào)采集、圖形用戶界面(Graphical User Interface,GUI)實(shí)時(shí)顯示和信號(hào)與GUI實(shí)時(shí)通信3個(gè)關(guān)鍵問題。其中信號(hào)采集包括車載傳感器信號(hào)采集與攝像頭圖像信號(hào)采集。

3.2.1 車載信號(hào)的采集

    車載傳感器信號(hào)主要采集車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速、燃油量、冷卻液溫度、車燈信號(hào)和車身報(bào)警信號(hào)等,一般為數(shù)字脈沖信號(hào)、模擬電壓信號(hào)和開關(guān)量信號(hào),分別引入S5PV210的tclk0(輸入頻率在0~720 Hz)和tclk1(輸入頻率在0~8 kHz)兩個(gè)引腳;模擬電壓信號(hào)引入S5PV210的AD輸入引腳adcAIN[0]和adcAIN[1],兩個(gè)AD輸入引腳電壓范圍在0~3.3 V;車燈信號(hào)接S5PV210的外部I/O引腳GPH1[4:7],車身報(bào)警信號(hào)接中斷引腳EINT[0:3]。由于采集的信號(hào)多且實(shí)時(shí)性強(qiáng),為提高程序運(yùn)行效率,采集模塊設(shè)計(jì)采用多線程方法,分別設(shè)計(jì)車速speedThread、發(fā)動(dòng)機(jī)轉(zhuǎn)速rotateThread、燃油量oilThread、冷卻液溫度watertempThread等信號(hào)采集子線程。系統(tǒng)工作時(shí),各個(gè)子線程循環(huán)采集傳感器傳來的信號(hào)。

    在信號(hào)采集線程中,為了保證實(shí)時(shí)性,設(shè)計(jì)while(1)循環(huán)持續(xù)讀取信號(hào)值。由usleep函數(shù)控制采集頻率,其功能是將線程掛起一段時(shí)間。經(jīng)過反復(fù)試驗(yàn),usleep函數(shù)頻率設(shè)為10 Hz為佳,即把掛起時(shí)間設(shè)定為0.1 s。

    以車速信號(hào)的采集為例,部分代碼如下:

    void Thread::readSpeed()

    {int fd;

      char buffer[BUF_SIZE];

      fd = open(“/dev/ashspeed”,0);//打開車速設(shè)備文件

    while(1){

    …

      value = atoi(buffer);//獲取當(dāng)前速度值

      emit speedChanged(value);

      //將當(dāng)前速度值傳遞給時(shí)速表刷新函數(shù)

    usleep(100000);//線程掛起0.1 s

    }

3.2.2 視頻信號(hào)的采集

    本系統(tǒng)在車頭和車尾各安裝一個(gè)攝像頭,能同時(shí)記錄汽車前后的行車視頻圖像。本文設(shè)計(jì)行車記錄儀模塊為雙攝像頭圖像采集方案,通過界面分隔的方法使雙攝像頭采集的視頻能夠同時(shí)在一屏顯示圖像畫面。

    系統(tǒng)的視頻采集設(shè)備選用中星微ZC301攝像頭和泰科姆2C8型CMOS攝像頭,分別對(duì)應(yīng)/dev目錄下的video0和video1設(shè)備文件。設(shè)計(jì)視頻采集程序時(shí),基于LinuxV4l2驅(qū)動(dòng)程序框架[4],視頻圖像采集通過調(diào)用v4l2_read、v4l2_ioctl和v4l2_mmap等函數(shù)實(shí)現(xiàn)。在進(jìn)行界面分隔顯示時(shí),通過向屏幕緩沖區(qū)中寫入前后攝像頭所采集的圖像信息以進(jìn)行屏幕繪圖,實(shí)現(xiàn)在同一屏中同時(shí)顯示不同畫面的效果。視頻信號(hào)的采集流程如圖5所示。

qrs3-t5.gif

3.2.3 多道程序并發(fā)控制

    多道程序并行性提高了系統(tǒng)資源的利用率和實(shí)時(shí)性能,但也相應(yīng)產(chǎn)生了一些問題。在行車記錄儀模塊中,事件輪詢代碼塊在執(zhí)行時(shí)需要一次性完成,不允許被其它線程打斷,因此必須加入并發(fā)控制機(jī)制。

    本系統(tǒng)在并發(fā)控制處理中采用了互斥鎖機(jī)制,在需要保護(hù)的代碼塊執(zhí)行前進(jìn)行上鎖操作,代碼塊執(zhí)行后進(jìn)行解鎖操作,保證代碼塊執(zhí)行時(shí)不被打斷。部分代碼如下:

    LockMutex(affmutex);//上鎖    

    while (PollEvent(event))

    {switch(event->type)

     { ……

     }

    }//被保護(hù)的代碼塊

    UnlockMutex(affmutex);//解鎖

3.2.4 信號(hào)與GUI界面通信

    程序運(yùn)行時(shí),GUI界面模塊需要對(duì)各采集信號(hào)作出實(shí)時(shí)響應(yīng)。本系統(tǒng)各子線程的采集信號(hào)與界面模塊的通信使用信號(hào)(signal)-槽(slot)機(jī)制[5]實(shí)現(xiàn),采集線程與界面刷新函數(shù)連接方法是:各子線程采集傳感器信號(hào)作為signal信號(hào)源,界面刷新函數(shù)作為slot槽函數(shù)。各采集子線程每隔一段時(shí)間將當(dāng)前采集的信號(hào)值發(fā)送到主線程的界面刷新函數(shù),完成界面的更新。以時(shí)速表為例,信號(hào)-槽的連接代碼如下:

    connect(&speedThread,SIGNAL(speedChanged(int)),this,SLOT(updateSpeed(int)));

3.2.5 GUI界面的設(shè)計(jì)

    數(shù)字儀表盤模塊顯示汽車行駛中的各類關(guān)鍵信息,可實(shí)現(xiàn)時(shí)速表、發(fā)動(dòng)機(jī)轉(zhuǎn)速表、燃油表、水溫表和車燈、報(bào)警信號(hào)的實(shí)時(shí)顯示。程序設(shè)計(jì)時(shí)需解決靜態(tài)儀表繪圖和界面實(shí)時(shí)刷新兩個(gè)關(guān)鍵問題。

    考慮到駕駛員的審美習(xí)慣,設(shè)計(jì)的儀表盤沿用了傳統(tǒng)的指針式儀表盤[6]。使用drawRect()、drawEllipse()、drawText()等函數(shù)完成靜態(tài)儀表繪圖。為了使繪圖更加美觀、更具立體感,在渲染時(shí)加入了漸變效果,時(shí)速表渲染前后對(duì)比如圖6所示。

qrs3-t6.gif

    界面的實(shí)時(shí)刷新主要體現(xiàn)在儀表指針的轉(zhuǎn)動(dòng),首先根據(jù)傳感器采集的速度信號(hào)確定指針轉(zhuǎn)動(dòng)角度,利用信號(hào)-槽機(jī)制將角度信息傳遞到刷新函數(shù)update()中。在update()函數(shù)中,應(yīng)用rotate()函數(shù)旋轉(zhuǎn)邏輯坐標(biāo)系,用drawConvexPolygon()函數(shù)完成指針的繪制[7]。

    數(shù)字儀表盤模塊的啟動(dòng)流程如圖7所示。

qrs3-t7.gif

    系統(tǒng)采用EEPROM芯片AT24C08完成行駛里程等數(shù)據(jù)的存儲(chǔ),通過I2C總線完成對(duì)芯片存儲(chǔ)數(shù)據(jù)的修改。汽車行駛時(shí),里程數(shù)據(jù)需要不斷更新,增加的里程數(shù)據(jù)ΔS(單位:km)與車速(單位:km/h)的關(guān)系為:

    qrs3-gs1.gif

其中,v(i)為某次采集的速度值,采集間隔為10 ms。

4 系統(tǒng)測(cè)試與結(jié)論

    本文設(shè)計(jì)的車載集成顯示終端將汽車儀表、電子地圖、多媒體播放和行車記錄等功能集成在一起,通過DLP投影技術(shù)將信息集中顯示在反射屏上,極大地節(jié)省了車內(nèi)空間,方便駕駛員獲取信息,提高了行車安全性。測(cè)試結(jié)果如圖8所示。

qrs3-t8.gif

    測(cè)試結(jié)果表明,系統(tǒng)畫面顯示穩(wěn)定,實(shí)時(shí)數(shù)據(jù)準(zhǔn)確,動(dòng)畫效果較好,界面切換迅速。此外,本系統(tǒng)提供多種通信接口,可擴(kuò)展性強(qiáng),具有較高的實(shí)用價(jià)值和廣闊的應(yīng)用前景。

參考文獻(xiàn)

[1] 胡堅(jiān).DLP和LCD投影機(jī)對(duì)比分析[J].微計(jì)算機(jī)信息,2005,21(2):140-142.

[2] 韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2011:240-360.

[3] 閆鋒欣,曾泉人.C++ GUI Qt4編程(第二版)[M].北京:電子工業(yè)出版社,2010:138-268.

[4] 奚海蛟,呂鐵軍.嵌入式Linux驅(qū)動(dòng)程序?qū)崙?zhàn)開發(fā)[M].北京:北京航空航天大學(xué)出版社,2012:1-91.

[5] 王潤(rùn)民.基于嵌入式Linux的車載終端系統(tǒng)研究與實(shí)現(xiàn)[D].西安:長(zhǎng)安大學(xué),2013.

[6] 曹成昆,何彬.混合動(dòng)力汽車真彩液晶數(shù)字儀表軟件設(shè)計(jì)[J].上海交通大學(xué)學(xué)報(bào),2008,42(7):1081-1084.

[7] 陳新.電動(dòng)汽車液晶數(shù)字儀表的設(shè)計(jì)[J].汽車工程,2013,35(3):272-276.

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