《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于DLP投影技術車載集成終端的軟件設計
NI-LabVIEW 2025
基于DLP投影技術車載集成終端的軟件設計
2015年電子技術應用第6期
王 瓊,姜 棟
合肥工業(yè)大學 計算機與信息學院,安徽 合肥230009
摘要: 提出一種基于DLP投影技術的車載集成顯示終端設計方案。以嵌入式處理器S5PV210作為控制中心,采用基于DLPC300 DMD芯片的DLP投影儀,軟件設計平臺基于Linux2.6.38和QT/E4.6,在此基礎上設計并完成了軟件開發(fā)工作并在樣機上進行了模擬實驗。實驗結果表明,系統(tǒng)能夠圖形化實時顯示汽車行駛信息,色彩明亮,視頻圖像采集清晰,集成化顯示避免了駕駛員視線分散,提高了行車安全性。
中圖分類號: TP391.1
文獻標識碼: A
文章編號: 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 引言

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

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

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

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

qrs3-t1.gif

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

2 基于DLP技術的投影顯示方案

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

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

qrs3-t2.gif

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

qrs3-t3.gif

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

    本設計將DLP微型投影儀安裝在汽車方向盤轉向軸上,將圖像投影到方向盤前的反射屏上,如圖4所示。圖4中,標號1表示DLP微型投影儀,標號2表示反射屏。

qrs3-t4.gif

3 系統(tǒng)軟件設計

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

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

3.2 應用程序設計

    車載終端應用程序設計主要解決信號采集、圖形用戶界面(Graphical User Interface,GUI)實時顯示和信號與GUI實時通信3個關鍵問題。其中信號采集包括車載傳感器信號采集與攝像頭圖像信號采集。

3.2.1 車載信號的采集

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

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

    以車速信號的采集為例,部分代碼如下:

    void Thread::readSpeed()

    {int fd;

      char buffer[BUF_SIZE];

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

    while(1){

    …

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

      emit speedChanged(value);

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

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

    }

3.2.2 視頻信號的采集

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

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

qrs3-t5.gif

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

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

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

    LockMutex(affmutex);//上鎖    

    while (PollEvent(event))

    {switch(event->type)

     { ……

     }

    }//被保護的代碼塊

    UnlockMutex(affmutex);//解鎖

3.2.4 信號與GUI界面通信

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

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

3.2.5 GUI界面的設計

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

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

qrs3-t6.gif

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

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

qrs3-t7.gif

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

    qrs3-gs1.gif

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

4 系統(tǒng)測試與結論

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

qrs3-t8.gif

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

參考文獻

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

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

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

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

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

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

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

此內容為AET網站原創(chuàng),未經授權禁止轉載。