張 偉,沈福周
(1.北京奇虎科技有限公司 360未來安全研究院,北京 朝陽 100015;2.揚州大學 信息工程學院,江蘇 揚州 225001)
裸眼3D顯示系統因其獨特的3D顯示視覺效果,已經從公共信息展示等商業應用向消費類多媒體應用滲透,也成為了近年來國內外的研究熱點。光立方作為一種新型裸眼3D信息發布媒介,給人們帶來了全新的視覺體驗。然而,現有的光立方存在顯示色彩單一、分辨率不高、人機交互性能差、設計復雜、成本較高等問題,嚴重阻礙了光立方三維動態顯示技術的推廣應用。
為使光立方更好地改善智能化生活,設計了一種基于語音控制的3D動態顯示系統,采用RGB全彩LED制作了12×12×12分辨率的光立方,高階全彩的動態顯示效果極大地擴充了顯示色域,增強了三維視覺享受;采用SM16126串轉并級聯驅動輸出電路設計,為高階光立方的設計提供了一種可行的實現方案。
另外,隨著語音識別技術的不斷發展,在諸多領域展現了出色的應用效果,成為了新型智能人機交互方式。本系統采用基于LD3320的語音識別模塊控制其工作,提高了人機交互性能,拓寬了其應用范圍,使生活更加智能化、人性化。
本智能語音3D動態顯示系統主要分為語音識別模塊和12×12×12全彩光立方兩大部分,采用語音識別模塊、硬件驅動電路、STM32F407核心控制器控制不同立體位點的LED亮滅和顏色變換,顯示多種炫彩三維動態畫面。光立方采用RGB全彩LED焊接完成,構成三維顯示陣列;通過讀取外設SD卡內的數據流,并送入級聯的SM16126芯片控制每個LED燈的顏色;采用語音識別模塊對非特定人聲語音指令進行識別,并將結果通過UART串口發送給STM32控制光立方顯示相應的動畫,并播放背景音樂。另外,STM32的UART2串口連接藍牙模塊,可使用手機藍牙控制光立方顯示。系統結構如圖1所示。

圖1 系統結構
LED發光體的體積越小,光立方整體的通透性就越好,即后排的LED就越不容易被前排的LED擋住;另一方面,使用直徑更大或是霧面的LED越容易看到光點。此外,還要注意LED光點的可視角度,霧狀LED比光面LED更大。
綜上分析,本系統使用的LED燈為5 mm、RGB霧狀散光共陽極LED燈,其最大電流為20 mA,電壓范圍為3.0~3.5 V,波長460~465 nm。實物如圖2所示。

圖2 4腳RGB LED
光立方采用RGB全彩LED焊接完成,實現三維顯示陣列。將光立方模塊分成3個4×12×12的子立方,每層48個LED的陽極連在一起,由2片74HC138構成4~16選擇器實現對層(12層)的選擇,控制某一層和/或某幾層燈的亮滅;豎直方向同列的R、G、B引腳分別連接SM16126的輸出端口,控制每個LED的顏色(具體實現如圖3和圖4所示)。此外,由于構成光立方的LED燈數量巨大,對電流的要求很高,故選擇74HC245作為數據的強驅動緩沖器,同時SM16126能夠提供極為精確的穩定電流輸出,保證系統穩定工作。

圖3 SM16126串轉并強驅動級聯電路

圖4 強上拉驅動和4~16層選擇電路
采用SM16126串轉并級聯驅動輸出和公共端強上拉設計,多個光立方可自由拼接,為高階光立方的設計提供了一種可行的實現方案。一面LED燈組裝示意圖如圖5所示,光立方組裝測試如圖6所示,光立方組裝完成圖如圖7所示。

圖5 一面LED燈組裝示意圖

圖6 光立方組裝測試

圖7 光立方組裝完成圖
LDV5語音識別模塊主要包括LD3320非特定人聲識別芯片和STM32F103微處理器。LD3320芯片內部集成了高精度的A/D接口,無需外接輔助FLASH和RAM即可實現語音識別、聲控、人機對話功能,并且識別的關鍵詞語列表可動態編輯。
該模塊具有以下優點:
(1)LDV5模塊具備USB接口及TF卡讀取U盤功能。
(2)支持最大4G mini 低速TF卡讀取。
(3)可實現人機對話,具有播放MP3、播放歌曲及對話等功能。
(4)具備串口輸出識別碼功能,支持1~12字節自定義十六進制輸出。
(5)支持口令識別方式,例如:定義模塊為“小光”,只有每次喊“小光”后,模塊才能接收其他操作指令。另外,還支持普通識別模式、按鍵觸發模式,以適應不同應用環境。
(6)具備看門狗復位功能,系統更穩定。
模塊上有一個TF卡,加入語音模塊后,只需對TF卡內容進行修改就可對該模塊進行操作。圖8所示主菜單文件中的串口輸出識別碼01、02,分別為語音模塊響應時通過串口發送給STM32主控制器的識別結果。

圖8 TF卡主菜單文件
LM358是雙運算放大器,內部包括2個獨立的、高增益、內部頻率補償的運算放大器,適合于電源電壓范圍寬的單電源使用,也適用于雙電源工作模式,在推薦的工作條件下,電源電流與電源電壓無關。其使用范圍包括傳感放大器、直流增益模塊和其他所有可用單電源供電的使用運算放大器的場合。本系統用其進行音頻播放。音頻輸出電路如圖9所示。

圖9 音頻輸出電路
系統啟動后,將處于休眠模式,顯示開機動畫,語音識別模塊在后臺進行語音監聽。考慮到使用環境的多樣性,程序設定了語音指令“小光”來喚醒語音交互功能,并播放語音提示“在呢在呢”,顯示相應動畫。此后,在限定的時間內檢測語音指令,并將識別碼通過串口發送給STM32,控制顯示相應的動畫、播放背景音樂。系統軟件設計流程如圖10所示。

圖10 系統軟件設計流程
該系統軟件源代碼目錄如圖11所示。

圖11 軟件系統結構
結合具體的源文件分析每層實現的功能。
(1)寄存器接口層
寄存器接口層是外設驅動層和單片機硬件之間的橋梁,它直接操縱單片機內部的寄存器,封裝實現I/O輸入輸出模塊、定時器模塊、ADC模塊和串口模塊。其中,STM32F4xx.h頭文件中定義了單片機的型號以及相關I/O口寄存器等。sys.c中封裝了I/O管腳的地址偏移;usart.c中封裝了串口模塊;TIM.c中封裝了定時器模塊。
(2)外設驅動層
外設驅動層主要由SM16126驅動模塊、SPI總線驅動和SD卡讀取驅動構成。其中,SM16126.c中封裝了SM16126驅動模塊,通過MCU模擬IC通信對SM16126寄存器進行操作,可調用底層的I/O輸入輸出模塊以及定時器模塊。diskio.c中封裝了SD卡讀寫驅動,可調用寄存器層的I/O輸入輸出模塊。SPI_MSD0_Driver.c中封裝了SPI總線驅動,可調用底層的I/O輸入輸出模塊以及定時器模塊,搭建了基于DMA傳輸的SPI通信協議。
(3)應用層
應用層設計主要面向用戶并且負責處理具體事務。主要包括顯示系統、語音系統以及FATFs文件系統。main.c文件中封裝了整個程序的入口函數main(),負責啟動任務模塊。LED_CUBE.c文件中封裝了顯示系統的操作函數,同時其頭文件LED_CUEB.h對所用管腳以及各全局變量進行了定義,如圖12所示。
該文件已經完成了數十種動畫的播放,并封裝成了相應的函數,如圖13所示。

圖12 LED_CUBE.h(1)

圖13 LED_CUBE.h(2)
TFCard.c中封裝了FATFs文件系統調用的相關配置。借助基于DMA傳輸的SPI總線對內存卡的扇區進行快速讀寫操作,同時該文件的頭文件TFCard.h中也封裝了所占用的具體管腳以及DMA總線的初始化內容。
通過移植FATFs系統對文件進行快速讀寫。初始化SPI總線,掛載文件系統,在DMA方式下讀取文件數據,關閉文件。
TF讀卡程序如下:


通過模擬IC總線來驅動SM16126芯片,同時通過多次頻繁的寫入數據,模擬PWM脈寬調制來實現多灰度的顯示。具體實現過程如下:
(1)數據端口準備數據;
(2)時鐘端口拉高,發送數據線數據;
(3)時鐘端口拉低,鎖存數據;
(4)鎖存器使能端打開,輸出控制數據。
本文設計了一種基于語音控制的3D動態顯示系統,通過語音識別控制高階全彩光立方顯示動畫,改善了現有光立方顯示色彩單一、分辨率低、人機交互性能差、設計復雜等問題,提高了三維顯示系統的視覺體驗。
本3D顯示系統相較于其他顯示系統具有如下優勢:
(1)采用LD3320語音識別模塊控制其工作,提高了人機交互性能,拓寬了其應用范圍,使生活更加智能化和人性化;
(2)采用RGB全彩LED制作了12×12×12高分辨率的光立方,高階全彩的動態顯示效果極大地擴充了顯示色域,增強了三維視覺體驗;
(3)采用SM16126串轉并級聯驅動輸出和公共端強上拉的電路設計,多個光立方可自由拼接,為高階光立方的設計提供了一種可行的實現方案;
(4)采用DMA方式讀取外設SD卡,動畫修改更方便,讀取時不占用系統資源,顯示效果更加流暢。
系統實現效果如圖14所示。經實際測試,本系統能夠達到預期的效果,對推進3D顯示技術的實際應用具有一定的意義。

圖14 系統實現效果