張 偉,沈福周
(1.北京奇虎科技有限公司 360未來安全研究院,北京 朝陽 100015;2.揚州大學(xué) 信息工程學(xué)院,江蘇 揚州 225001)
裸眼3D顯示系統(tǒng)因其獨特的3D顯示視覺效果,已經(jīng)從公共信息展示等商業(yè)應(yīng)用向消費類多媒體應(yīng)用滲透,也成為了近年來國內(nèi)外的研究熱點。光立方作為一種新型裸眼3D信息發(fā)布媒介,給人們帶來了全新的視覺體驗。然而,現(xiàn)有的光立方存在顯示色彩單一、分辨率不高、人機交互性能差、設(shè)計復(fù)雜、成本較高等問題,嚴(yán)重阻礙了光立方三維動態(tài)顯示技術(shù)的推廣應(yīng)用。
為使光立方更好地改善智能化生活,設(shè)計了一種基于語音控制的3D動態(tài)顯示系統(tǒng),采用RGB全彩LED制作了12×12×12分辨率的光立方,高階全彩的動態(tài)顯示效果極大地擴充了顯示色域,增強了三維視覺享受;采用SM16126串轉(zhuǎn)并級聯(lián)驅(qū)動輸出電路設(shè)計,為高階光立方的設(shè)計提供了一種可行的實現(xiàn)方案。
另外,隨著語音識別技術(shù)的不斷發(fā)展,在諸多領(lǐng)域展現(xiàn)了出色的應(yīng)用效果,成為了新型智能人機交互方式。本系統(tǒng)采用基于LD3320的語音識別模塊控制其工作,提高了人機交互性能,拓寬了其應(yīng)用范圍,使生活更加智能化、人性化。
本智能語音3D動態(tài)顯示系統(tǒng)主要分為語音識別模塊和12×12×12全彩光立方兩大部分,采用語音識別模塊、硬件驅(qū)動電路、STM32F407核心控制器控制不同立體位點的LED亮滅和顏色變換,顯示多種炫彩三維動態(tài)畫面。光立方采用RGB全彩LED焊接完成,構(gòu)成三維顯示陣列;通過讀取外設(shè)SD卡內(nèi)的數(shù)據(jù)流,并送入級聯(lián)的SM16126芯片控制每個LED燈的顏色;采用語音識別模塊對非特定人聲語音指令進(jìn)行識別,并將結(jié)果通過UART串口發(fā)送給STM32控制光立方顯示相應(yīng)的動畫,并播放背景音樂。另外,STM32的UART2串口連接藍(lán)牙模塊,可使用手機藍(lán)牙控制光立方顯示。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)
LED發(fā)光體的體積越小,光立方整體的通透性就越好,即后排的LED就越不容易被前排的LED擋住;另一方面,使用直徑更大或是霧面的LED越容易看到光點。此外,還要注意LED光點的可視角度,霧狀LED比光面LED更大。
綜上分析,本系統(tǒng)使用的LED燈為5 mm、RGB霧狀散光共陽極LED燈,其最大電流為20 mA,電壓范圍為3.0~3.5 V,波長460~465 nm。實物如圖2所示。
圖2 4腳RGB LED
光立方采用RGB全彩LED焊接完成,實現(xiàn)三維顯示陣列。將光立方模塊分成3個4×12×12的子立方,每層48個LED的陽極連在一起,由2片74HC138構(gòu)成4~16選擇器實現(xiàn)對層(12層)的選擇,控制某一層和/或某幾層燈的亮滅;豎直方向同列的R、G、B引腳分別連接SM16126的輸出端口,控制每個LED的顏色(具體實現(xiàn)如圖3和圖4所示)。此外,由于構(gòu)成光立方的LED燈數(shù)量巨大,對電流的要求很高,故選擇74HC245作為數(shù)據(jù)的強驅(qū)動緩沖器,同時SM16126能夠提供極為精確的穩(wěn)定電流輸出,保證系統(tǒng)穩(wěn)定工作。
圖3 SM16126串轉(zhuǎn)并強驅(qū)動級聯(lián)電路
圖4 強上拉驅(qū)動和4~16層選擇電路
采用SM16126串轉(zhuǎn)并級聯(lián)驅(qū)動輸出和公共端強上拉設(shè)計,多個光立方可自由拼接,為高階光立方的設(shè)計提供了一種可行的實現(xiàn)方案。一面LED燈組裝示意圖如圖5所示,光立方組裝測試如圖6所示,光立方組裝完成圖如圖7所示。
圖5 一面LED燈組裝示意圖
圖6 光立方組裝測試
圖7 光立方組裝完成圖
LDV5語音識別模塊主要包括LD3320非特定人聲識別芯片和STM32F103微處理器。LD3320芯片內(nèi)部集成了高精度的A/D接口,無需外接輔助FLASH和RAM即可實現(xiàn)語音識別、聲控、人機對話功能,并且識別的關(guān)鍵詞語列表可動態(tài)編輯。
該模塊具有以下優(yōu)點:
(1)LDV5模塊具備USB接口及TF卡讀取U盤功能。
(2)支持最大4G mini 低速TF卡讀取。
(3)可實現(xiàn)人機對話,具有播放MP3、播放歌曲及對話等功能。
(4)具備串口輸出識別碼功能,支持1~12字節(jié)自定義十六進(jìn)制輸出。
(5)支持口令識別方式,例如:定義模塊為“小光”,只有每次喊“小光”后,模塊才能接收其他操作指令。另外,還支持普通識別模式、按鍵觸發(fā)模式,以適應(yīng)不同應(yīng)用環(huán)境。
(6)具備看門狗復(fù)位功能,系統(tǒng)更穩(wěn)定。
模塊上有一個TF卡,加入語音模塊后,只需對TF卡內(nèi)容進(jìn)行修改就可對該模塊進(jìn)行操作。圖8所示主菜單文件中的串口輸出識別碼01、02,分別為語音模塊響應(yīng)時通過串口發(fā)送給STM32主控制器的識別結(jié)果。
圖8 TF卡主菜單文件
LM358是雙運算放大器,內(nèi)部包括2個獨立的、高增益、內(nèi)部頻率補償?shù)倪\算放大器,適合于電源電壓范圍寬的單電源使用,也適用于雙電源工作模式,在推薦的工作條件下,電源電流與電源電壓無關(guān)。其使用范圍包括傳感放大器、直流增益模塊和其他所有可用單電源供電的使用運算放大器的場合。本系統(tǒng)用其進(jìn)行音頻播放。音頻輸出電路如圖9所示。
圖9 音頻輸出電路
系統(tǒng)啟動后,將處于休眠模式,顯示開機動畫,語音識別模塊在后臺進(jìn)行語音監(jiān)聽??紤]到使用環(huán)境的多樣性,程序設(shè)定了語音指令“小光”來喚醒語音交互功能,并播放語音提示“在呢在呢”,顯示相應(yīng)動畫。此后,在限定的時間內(nèi)檢測語音指令,并將識別碼通過串口發(fā)送給STM32,控制顯示相應(yīng)的動畫、播放背景音樂。系統(tǒng)軟件設(shè)計流程如圖10所示。
圖10 系統(tǒng)軟件設(shè)計流程
該系統(tǒng)軟件源代碼目錄如圖11所示。
圖11 軟件系統(tǒng)結(jié)構(gòu)
結(jié)合具體的源文件分析每層實現(xiàn)的功能。
(1)寄存器接口層
寄存器接口層是外設(shè)驅(qū)動層和單片機硬件之間的橋梁,它直接操縱單片機內(nèi)部的寄存器,封裝實現(xiàn)I/O輸入輸出模塊、定時器模塊、ADC模塊和串口模塊。其中,STM32F4xx.h頭文件中定義了單片機的型號以及相關(guān)I/O口寄存器等。sys.c中封裝了I/O管腳的地址偏移;usart.c中封裝了串口模塊;TIM.c中封裝了定時器模塊。
(2)外設(shè)驅(qū)動層
外設(shè)驅(qū)動層主要由SM16126驅(qū)動模塊、SPI總線驅(qū)動和SD卡讀取驅(qū)動構(gòu)成。其中,SM16126.c中封裝了SM16126驅(qū)動模塊,通過MCU模擬IC通信對SM16126寄存器進(jìn)行操作,可調(diào)用底層的I/O輸入輸出模塊以及定時器模塊。diskio.c中封裝了SD卡讀寫驅(qū)動,可調(diào)用寄存器層的I/O輸入輸出模塊。SPI_MSD0_Driver.c中封裝了SPI總線驅(qū)動,可調(diào)用底層的I/O輸入輸出模塊以及定時器模塊,搭建了基于DMA傳輸?shù)腟PI通信協(xié)議。
(3)應(yīng)用層
應(yīng)用層設(shè)計主要面向用戶并且負(fù)責(zé)處理具體事務(wù)。主要包括顯示系統(tǒng)、語音系統(tǒng)以及FATFs文件系統(tǒng)。main.c文件中封裝了整個程序的入口函數(shù)main(),負(fù)責(zé)啟動任務(wù)模塊。LED_CUBE.c文件中封裝了顯示系統(tǒng)的操作函數(shù),同時其頭文件LED_CUEB.h對所用管腳以及各全局變量進(jìn)行了定義,如圖12所示。
該文件已經(jīng)完成了數(shù)十種動畫的播放,并封裝成了相應(yīng)的函數(shù),如圖13所示。
圖12 LED_CUBE.h(1)
圖13 LED_CUBE.h(2)
TFCard.c中封裝了FATFs文件系統(tǒng)調(diào)用的相關(guān)配置。借助基于DMA傳輸?shù)腟PI總線對內(nèi)存卡的扇區(qū)進(jìn)行快速讀寫操作,同時該文件的頭文件TFCard.h中也封裝了所占用的具體管腳以及DMA總線的初始化內(nèi)容。
通過移植FATFs系統(tǒng)對文件進(jìn)行快速讀寫。初始化SPI總線,掛載文件系統(tǒng),在DMA方式下讀取文件數(shù)據(jù),關(guān)閉文件。
TF讀卡程序如下:
通過模擬IC總線來驅(qū)動SM16126芯片,同時通過多次頻繁的寫入數(shù)據(jù),模擬PWM脈寬調(diào)制來實現(xiàn)多灰度的顯示。具體實現(xiàn)過程如下:
(1)數(shù)據(jù)端口準(zhǔn)備數(shù)據(jù);
(2)時鐘端口拉高,發(fā)送數(shù)據(jù)線數(shù)據(jù);
(3)時鐘端口拉低,鎖存數(shù)據(jù);
(4)鎖存器使能端打開,輸出控制數(shù)據(jù)。
本文設(shè)計了一種基于語音控制的3D動態(tài)顯示系統(tǒng),通過語音識別控制高階全彩光立方顯示動畫,改善了現(xiàn)有光立方顯示色彩單一、分辨率低、人機交互性能差、設(shè)計復(fù)雜等問題,提高了三維顯示系統(tǒng)的視覺體驗。
本3D顯示系統(tǒng)相較于其他顯示系統(tǒng)具有如下優(yōu)勢:
(1)采用LD3320語音識別模塊控制其工作,提高了人機交互性能,拓寬了其應(yīng)用范圍,使生活更加智能化和人性化;
(2)采用RGB全彩LED制作了12×12×12高分辨率的光立方,高階全彩的動態(tài)顯示效果極大地擴充了顯示色域,增強了三維視覺體驗;
(3)采用SM16126串轉(zhuǎn)并級聯(lián)驅(qū)動輸出和公共端強上拉的電路設(shè)計,多個光立方可自由拼接,為高階光立方的設(shè)計提供了一種可行的實現(xiàn)方案;
(4)采用DMA方式讀取外設(shè)SD卡,動畫修改更方便,讀取時不占用系統(tǒng)資源,顯示效果更加流暢。
系統(tǒng)實現(xiàn)效果如圖14所示。經(jīng)實際測試,本系統(tǒng)能夠達(dá)到預(yù)期的效果,對推進(jìn)3D顯示技術(shù)的實際應(yīng)用具有一定的意義。
圖14 系統(tǒng)實現(xiàn)效果