程序編譯器:keil4/keil 5
編程語言:C語言
設(shè)計編號:Y001
資料下載鏈接
設(shè)計說明
課題主要研究語音識別、按鍵識別、PWM波調(diào)節(jié)亮度、OLED屏幕顯示四個模塊。
目前市面上語音識別的臺燈大多僅是控制燈的亮滅,采用的是普通LED節(jié)能燈進行照明。相比較于市場上已有的產(chǎn)品,本課題所研究設(shè)計的臺燈采用的主控芯片是性能較高的STM32F103C8T6單片機芯片,采用中斷方式對臺燈進行按鍵控制,并通過基于LD332O語音識別模塊,利用非特定人語音識別技術(shù)對臺燈的工作狀態(tài)進行語音控制,同時實現(xiàn)了語音控制和按鍵控制臺燈的工作狀態(tài)。
采用輸出波形比較輸出PWM波,利用PWM波來控制光照的亮度及達到柔光照射的目的。并采用OLED屏幕顯示臺燈的工作狀態(tài)燈信息,因此使用者可以快速的指導(dǎo)臺燈目前的工作狀態(tài),根據(jù)自身的實際需求通過語音或者按鍵對臺燈的工作狀態(tài)進行調(diào)節(jié),這樣就能夠更好的幫助這些弱勢群體,如老人、兒童、孕婦等行動不便的人。
由于采用的是柔光臺燈照明,在一定程度上減緩青少年近視發(fā)病率持續(xù)上升的趨勢,并且LED燈能夠緩解資源消耗過大、污染物排放量的現(xiàn)狀。
實現(xiàn)功能如下:
1、語音識別部分:采用市面上流行的基于LD3320語音識別模塊,利用非特定人語音識別(ASR)技術(shù),調(diào)試語音模塊使其滿足臺燈所需要的特定詞匯。詞匯包括:喚醒詞、開燈、關(guān)燈、亮一點、變暗等。采用主控芯片STM32F103C8T6與LD3320語音識別模塊進行串口通信,主控芯片接收數(shù)據(jù)后處理該消息命令。
2、按鍵控制部分:利用按鍵中斷機制來控制燈的亮度,以及控制燈的開和關(guān)。
3、PWM波控制LED柔光燈亮度部分:采用STM32F103C8T6內(nèi)部自帶定時器輸出PWM功能,接上外圍電路,控制多個LED燈。
4、顯示模塊部分:主控芯片通過SPI協(xié)議驅(qū)動0.96寸OLED屏幕,在128*64個像素點的屏幕上顯示燈的亮度級數(shù)及其他信息。
原理圖
系統(tǒng)各模塊器件介紹
整個設(shè)計包括STM32F103C8T6主控芯片模塊、0.96寸OLED顯示模塊、LD3320語音模塊、按鍵模塊、LED燈組模塊等組成,如下圖 2.1所示:
主要用到的元器件有STM32F103C8T6單片機、OLED顯示屏幕和其驅(qū)動芯片SSD1306、LD3320語音識別芯片和內(nèi)部的增強型51單片機等,這些元器件將會在本章中進行介紹。
LD3320語音識別模塊
? LD3320語音識別常用的芯片,該芯片組成的語音模塊識別的靈敏度高,采用的是非特定人語音識別(ARS)技術(shù),這種技術(shù)是能夠識別漢字小寫拼音內(nèi)容的,本課題的語音識別模塊由LD3320與STC11L08XE單片機組成識別系統(tǒng),如圖 2.4所示:
語音識別系統(tǒng)原理框圖
? 語音識別芯片能夠?qū)?a class="article-link" target="_blank" href="/baike/484367.html">咪頭輸入的語音信息內(nèi)容進行頻譜分析之后再提取出該信息內(nèi)容的特征,再將識別出來的內(nèi)容傳輸至語音識別器中與先前所設(shè)定好的關(guān)鍵詞進行比對,然后找出與識別出的信息最為相似的關(guān)鍵詞,并進行輸出。使用者只需要將識別出來的關(guān)鍵詞語內(nèi)容以漢字拼音字符串的形式傳輸至語音芯片當(dāng)中,即可識別生效。本課題語音識別模塊每次識別完成將通過中斷方式請求主控模塊進行處理,通過SPI協(xié)議從語音識別芯片讀取信息,并根據(jù)識別的信息通過串口通信的方式將識別出來的信息發(fā)送給STM32F103C8T6單片機。
OLED顯示模塊
OLED顯示屏,是一種有機的發(fā)光二極管,它能夠自發(fā)光,并且擁有反應(yīng)靈敏、極薄厚度、能夠適應(yīng)的溫度范圍大、對比度相對較高,還有不需要背光源、結(jié)構(gòu)簡單、分辨率高等優(yōu)勢,同時也存在著難以大型化的不足。
本課題采用的OLED顯示屏為中景園電子的顯示屏,該模塊有藍色、黃藍色、白色三種顏色可供選擇,但是每一個OLED顯示屏只能顯示這三種顏色中的其中一種顏色,模塊尺寸為2.7CM2.6CM,顯示尺寸為0.96寸,屏幕的分辨率達12864,工作電壓為3.3V。其結(jié)構(gòu)圖如下圖 2.6所示:
PCB圖
源程序
程序設(shè)計框架
整個程序的設(shè)計主要分為STM32F103C8T6單片機IO的初始化程序設(shè)計、OLED顯示程序設(shè)計、PWM波輸出程序設(shè)計、LD3320語音識別程序設(shè)計等,設(shè)計的框架如下圖 4.1所示:
程序流程圖
在主程序里,先直接調(diào)用各個模塊初始化程序,完成OLED初始化、定時器初始化、串口初始化等,然后不斷掃描執(zhí)行switch case函數(shù),調(diào)用PWM波輸出控制LED燈程序和OLED顯示屏顯示函數(shù)。串口中斷和按鍵外部中斷會改變工switch控制參數(shù),以此達到改變PWM波和OLED不同的顯示界面。其主函數(shù)程序如下
主函數(shù)
int main(void)
{
delay_init(); //延時函數(shù)初始化
NVIC_Configuration(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級 LED_Init(); //LED端口初始化
OLED_Init(); //初始化OLED
OLED_Clear();
TIM1_PWM_Init(); //TIM1 PWM波輸出初始化,并使能TIM1 PWM輸出
usart2_Init(9600); //初始化串口2
EXTIX_Init();
int j;
show_name();
My_USART2_SendData("123");
while(1)
{
j=ld3320_uart_receive(); //得到接受函數(shù)的字符串buff
pwm_led_out_test(lighter);
switch(j)
{
case 1: show_name(); break; //小陳
case 2: //亮一點
My_USART2_SendData("ligther ");
if(lighter<5) //如果亮度還不滿5
{ lighter++; show_light(lighter); } //顯示亮度
else
{ show_zuida(); } break; //屏幕提示已達最大亮度
case 3: //變暗
if(lighter>0)
{ lighter--; show_light(lighter); } //顯示亮度
else
{ show_zuidi(); } break; //屏幕提示已達最低亮度
case 4: lighter = 3; show_light(lighter); break; //開燈,默認(rèn)亮度等級3,60%
case 5: lighter = 0; show_ling(); break; //關(guān)燈
case 6: lighter = 1; show_ershi(); break; //亮度20
case 7: lighter = 3; show_liushi(); break; //亮度60
case 8: lighter = 5; show_yibai(); break; //亮度100
case 9: show_chongfa(); break; //顯示請重新發(fā)口令
case 10: show_chongfa(); break; //顯示請重新發(fā)口令
default:break;
}
}
}
OLED程序
在液晶顯示屏程序里,先配置SPI協(xié)議四個GPIO口和SSD1306復(fù)位引腳為推挽輸出,然后輸出復(fù)位電平復(fù)位SSD1306芯片。接下來是調(diào)用寫命令函數(shù)來設(shè)置SSD1306工作參數(shù),最后關(guān)閉顯示,復(fù)位坐標(biāo)點到原點,
/初始化SSD1306通信引腳
void OLED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能A端口時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_4);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能A端口時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_8);
OLED_RST_Set();
delay_ms(100);
OLED_RST_Clr();
delay_ms(200);
OLED_RST_Set(); //復(fù)位過程
LD3320驅(qū)動代碼
void ProcessInt0(void)
{
uint8 nAsrResCount=0;
EX0=0; //外部中斷0允許位:不允許
ucRegVal = LD_ReadReg(0x2B);
LD_WriteReg(0x29,0) ; //中斷允許寄存器
LD_WriteReg(0x02,0) ; //FIFO中斷允許位
if((ucRegVal & 0x10) && LD_ReadReg(0xb2)==0x21 && LD_ReadReg(0xbf)==0x35)
// b2:DSP忙閑狀態(tài),0x21表閑,可以進行下一步ASR動作;bf:ASR狀態(tài)報告寄存器,確定一次語音識別流程正常結(jié)束,識別成功
{
nAsrResCount = LD_ReadReg(0xba);
if(nAsrResCount>0 && nAsrResCount<=4) //BA寄存器對內(nèi)容進行評分
{
nAsrStatus=LD_ASR_FOUNDOK; //0x10 一次識別結(jié)束后有一個識別結(jié)果
}
else
{
nAsrStatus=LD_ASR_FOUNDZERO; //0x11一次識別結(jié)束后沒有識別結(jié)果
}
}
else //沒有識別結(jié)果
{
nAsrStatus=LD_ASR_FOUNDZERO;
}
LD_WriteReg(0x2b,0); //中斷請求編號寄存器
LD_WriteReg(0x1C,0); //ADC開關(guān)控制,寫0表示ADC不可用
LD_WriteReg(0x29,0) ; //中斷允許寄存器
LD_WriteReg(0x02,0) ; //FIF0中斷允許
LD_WriteReg(0x2B,0); //中斷請求編號寄存器
LD_WriteReg(0xBA,0); //中斷輔助信息寄存器
LD_WriteReg(0xBC,0); //識別過程強制結(jié)束,在ASR進行過程中,可以設(shè)置本寄存器提前結(jié)束本次ASR過程
LD_WriteReg(0x08,1); //清除FIF0內(nèi)容(清除指定FIF0后再寫入一次0x00),0x01為清除FIFO_DATA
LD_WriteReg(0x08,0); //清除FIFO_DATA后 再次寫
EX0=1; //外部中斷允許位:允許中斷
}
設(shè)計說明書
立論依據(jù)
(課題來源、選題依據(jù)和背景情況、課題研究目的、理論意義和實際應(yīng)用價值)
隨著社會的發(fā)展,人們對美好生活愈加的向往,智能產(chǎn)品成為時代的發(fā)展趨勢。我國語音識別研究在近年來發(fā)展迅速,研究的水平也從實驗室逐步走向市場,進入消費者的電子產(chǎn)品、工業(yè)、家電、通信、汽車電子、醫(yī)療、家庭服務(wù)等各個領(lǐng)域。
語音識別技術(shù)就是通過識別和理解把語音信號轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令的高技術(shù),發(fā)展至今日,中小詞匯量非特定人語音識別系統(tǒng)識別精度已經(jīng)大于98%,對特定人語音識別系統(tǒng)的識別精度就更高,這已經(jīng)能夠滿足一般應(yīng)用的要求,于是大量的語音識別產(chǎn)品開始進入市場和服務(wù)領(lǐng)域。這些產(chǎn)品為人們的生活提供了很大的便利,例如語音識別的智能臺燈,改變了傳統(tǒng)只能通過手動控制的方式,采用語音識別技術(shù),通過語音來控制臺燈的工作狀態(tài)。
現(xiàn)在大部分臺燈都是通過手動控制,雖然目前已有語音控制的臺燈,但大多數(shù)語音控制臺燈的控制模式單一,主要是控制臺燈的開和關(guān)。當(dāng)需要調(diào)節(jié)光照亮度時還需手動調(diào)節(jié),因此使用起來很不方便,特別是對于老人、兒童和行動不便者來講尤其困難。
設(shè)計這樣一款能夠通過語音識別控制亮滅以及亮度的臺燈,它可以根據(jù)使用者的需求來進行調(diào)節(jié),這樣就能夠更好的幫助這些弱勢群體人群,以及在一定程度上減緩青少年近視發(fā)病率持續(xù)上升的趨勢,并且能夠避免資源的不必要消耗。
文獻綜述
(國內(nèi)外研究現(xiàn)狀、發(fā)展動態(tài))
隨著智能制造業(yè)的快速發(fā)展,語音識別開始得到廣泛的應(yīng)用,在信息處理、通信、控制等領(lǐng)域也相繼出現(xiàn)了各種功能的語音識別系統(tǒng)。其中應(yīng)用相對廣泛的有IBM公司的Viavoice、Android系統(tǒng)的Voice Actions、蘋果的Siri以及國內(nèi)科大訊飛的語音識別產(chǎn)品等,這些軟件的共同點是文本轉(zhuǎn)語音的功能較為完善,而反過來語音轉(zhuǎn)文本的功能則較為差些。例如Voice Actions的識別能力超強,但是前提是必須按照規(guī)定的格式和語法結(jié)構(gòu)表達,否則就無法識別。
隨著語音識別的廣泛應(yīng)用,出現(xiàn)了許多不同用途的語音識別模塊,例如DFRobot的中文語音識別模塊,它的核心是國內(nèi)ICRoute公司的高性能LD3320語音識別芯片,是一顆基于非特定人語音識別(ASR)技術(shù)的語音識別/聲控芯片,上面集成了高精度的A/D和D/A接口,不再需要外界輔助的Flash和RAM,就可以實現(xiàn)語音識別、聲控、人機對話功能,不需要用戶進行錄音訓(xùn)練,識別的關(guān)鍵詞語列表是可以動態(tài)編輯的。
越來越多的語音識別模塊的出現(xiàn),更加刺激了語音識別類產(chǎn)品的創(chuàng)新研發(fā),市面上出現(xiàn)各種功能的語音智能產(chǎn)品,產(chǎn)品以實用性、易用性和人性化為主,致力于為人們提供一個舒適、方便、高效和快捷的生活環(huán)境。
研究內(nèi)容
畢業(yè)設(shè)計(論文)的主要研究內(nèi)容、構(gòu)想與思路、可能出現(xiàn)的工作難點以及擬解決的方法)
主要研究內(nèi)容:本課題是基于語音識別的智能LED柔光臺燈設(shè)計,主要的研究內(nèi)容包括語音識別模塊應(yīng)用,PWM波控制LED柔光燈的亮度,0.96寸OLED顯示當(dāng)前柔光LED臺燈的工作狀態(tài),軟件硬件的聯(lián)合調(diào)試。
構(gòu)想與思路:
1. 語音識別部分:采用市面上流行的非特定人語音識別(ASR)模塊,調(diào)試模塊可以滿足所需臺燈要的特定詞匯。詞匯包括:喚醒詞、開燈、關(guān)燈、亮一點、暗一點。采用主控芯片STM32F103C8T6與語音識別模塊進行串口通信,主控芯片接收數(shù)據(jù)后處理該消息命令。
2. 按鍵控制部分:按鍵中斷機制控制燈的亮度,按鍵控制燈的開光。
3. PWM波LED柔光燈亮度:采用STM32F103C8T6內(nèi)部自帶定時器輸出PWM功能,接上外圍電路,控制多個LED燈。
4. 顯示模塊:主控芯片通過SPI協(xié)議驅(qū)動0.96寸OLED屏幕,在128*64個像素點的屏幕上顯示燈的亮度級數(shù)及其他信息
研究基礎(chǔ)
(所需研究條件和實驗條件)
1. 設(shè)計需要的主要元器件: STM32F103C8T6單片機開發(fā)板、LED燈、基于LD3320語音識別模塊、0.96寸OLED屏幕
2. 制作需要的實驗條件:用于軟硬件設(shè)計的個人電腦、用于制作電路板的電子電工實驗室相關(guān)設(shè)備、用于燒錄程序的ST-LINK下載器。
3. 調(diào)試需要的實驗條件:直流穩(wěn)壓電壓源、萬用表、示波器等。
4. 研究所需的理論基礎(chǔ):C語言程序設(shè)計、單片機原理及應(yīng)用、模擬電子技術(shù)基礎(chǔ)、數(shù)字電路與邏輯設(shè)計、電路分析基礎(chǔ)等。
資料清單
下載鏈接見文章開頭
- 設(shè)計需要的主要元器件: STM32F103C8T6單片機開發(fā)板、LED燈、基于LD3320語音識別模塊、0.96寸OLED屏幕
2. 制作需要的實驗條件:用于軟硬件設(shè)計的個人電腦、用于制作電路板的電子電工實驗室相關(guān)設(shè)備、用于燒錄程序的ST-LINK下載器。
3. 調(diào)試需要的實驗條件:直流穩(wěn)壓電壓源、萬用表、示波器等。
4. 研究所需的理論基礎(chǔ):C語言程序設(shè)計、單片機原理及應(yīng)用、模擬電子技術(shù)基礎(chǔ)、數(shù)字電路與邏輯設(shè)計、電路分析基礎(chǔ)等。
資料清單
下載鏈接見文章開頭