基于STM32的智能風扇設計_第1頁
基于STM32的智能風扇設計_第2頁
基于STM32的智能風扇設計_第3頁
基于STM32的智能風扇設計_第4頁
基于STM32的智能風扇設計_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGEII基于STM32的智能風扇設計摘要隨著全球氣候變暖,經濟快速發(fā)展,人們對家用電器的要求也不斷提高,風扇已成為人們家居中最為常見的家用電器,但傳統(tǒng)的風扇存在不能適時自動調節(jié),不夠綠色環(huán)保、操作不方便等問題,基于此,本設計提出了基于STM32的智能風扇設計方案及作品。本設計主要以STM32F103VET6為核心,結合傳感器技術、語音識別技術和電機控制技術等,使用DS18B20溫度傳感器與OLED液晶屏,測出室內溫度及顯示,達到智能溫控的效果;使用STM32定時器和L298N電機驅動器控制直流電機,實現(xiàn)對風扇轉速控制;通過UART通信實現(xiàn)LD3320語音識別模塊與STM32通信,識別特定語音,執(zhí)行相應響應的效果,比如調節(jié)風速、開關機等。從而實現(xiàn)完整的智能風扇設計。該設計具有操作簡單、性能穩(wěn)定、可擴展性的特點,同時還有一定的市場應用價值。關鍵詞:STM32語音識別傳感器

目錄TOC\o"1-3"\h\u31312第一章引言 1307831.1課題背景和意義 1245041.2國內外研究現(xiàn)狀 2296131.2.1國內發(fā)展現(xiàn)狀 2200011.2.2國外發(fā)展現(xiàn)狀 223416第二章系統(tǒng)總體設計方案及器件選材 3323292.1系統(tǒng)設計方案 347412.2器件選材 421002.2.1單片機選材 4221922.2.2液晶顯示選材 4185742.2.3風扇電機選材 5223202.2.4電機驅動選材 6189522.2.5語音識別選材 7294372.2.6溫度采集選材 768062.2.7紅外模塊選材 81936第三章系統(tǒng)硬件電路 9296363.1STM32最小系統(tǒng)電路圖 9149623.2DS18B20模塊電路圖 1057493.3人體紅外傳感器模塊原理圖 11154793.4電機驅動原理圖 11321953.5OLED顯示電路圖 12152543.6LD3320原理圖 13271123.7按鍵控制原理圖 138381第四章系統(tǒng)軟件設計 1528954.1工作流程 15248534.2室內溫度檢測程序 1659484.3檢測風扇范圍有無人程序 1798724.4語音識別程序 1868294.5PWM調速程序 19291104.6OLED顯示程序 20177714.7STM32與LD3320通信程序 2099964.8按鍵程序 2130299第五章系統(tǒng)調試驗證 23195975.1軟件調試 23234335.1.1人體紅外傳感器調試 2382035.1.2溫度采集與顯示調試 23193495.1.3風扇電機調試 24136825.1.4LD3320語音識別與STM32通信調試調試 24274865.1.5完成程序調試 2510875.2硬件調試 252589第六章總結 2717842參考文獻 2812117致謝 29PAGEPAGEII引言課題背景和意義風扇作為一種家居產品,具有加強室內空氣流動與進化空氣的作用,幾乎走進了每家每戶。雖然在空調出現(xiàn)之后,電風扇被稱之為夕陽產業(yè),與之相比,風扇具有價格便宜、節(jié)能省電、方便安裝或攜帶等優(yōu)點,據(jù)中商情報網(wǎng)迅調查顯示2017年上半年中國電風扇產量超過1億臺,2018年風扇行業(yè)規(guī)模達到695.32億元,風扇市場需求依然龐大,所以本課題具有一定意義。在幾十年的發(fā)展中,傳統(tǒng)電風扇的功能都沒有得到較大的改變,目前市面上大多數(shù)傳統(tǒng)風扇的功能依然是定時、調節(jié)風扇轉數(shù)以及風扇搖頭等功能。據(jù)中國報告大廳的一篇關于風扇市場調研分析得出,傳統(tǒng)風扇已經不太適應市場的需求,存在部分不足。例如不能根據(jù)室內溫度改變轉速,這在一些晝夜溫差較大地區(qū)造成一些困擾,其次普通風扇在沒人時,不能自動關閉,造成了一些電力的浪費,最后風扇依然是按鍵控制,造成了操作上的不必要的麻煩,比如上課或者離風扇較遠時。課題設計應用場景為普通家庭、學校等區(qū)域,主要用于降低室內溫度、提供簡便操作,實現(xiàn)智能化控制。智能風扇是基于普通風扇的一些不足而提出并設計的,傳統(tǒng)風扇沒有根據(jù)室溫調節(jié)風速,通過添加DS18B20溫度傳感器,讓智能風扇能夠根據(jù)室內溫度調節(jié)風速。為了響應新時代的節(jié)能號召,添加人體紅外傳感器,識別風扇工作范圍內是否有人,沒人的時候自動關閉風扇。普通風扇還需要人們按鍵控制,為了簡化操作步驟,實現(xiàn)智能化控制,本文采用LD3320語音識別模塊,識別客戶語音,執(zhí)行對應響應,比如調節(jié)風速、開關機及溫控功能啟動和關閉等。從社會價值角度來看,本課題的智能風扇不僅解決了傳統(tǒng)風扇的一些不足,還加入了一些新功能,例如識別是否有人、根據(jù)溫度調節(jié)轉速、語音控制等,智能風扇有著一定的研究價值與意義。從個人角度來看,本課題對個人能力的提升有極大幫助,在課題設計的過程中,通過設計電源電路、顯示電路、電機控制電路、傳感器電路等構建智能風扇系統(tǒng),實現(xiàn)風扇智能控制的各種功能。讓我鞏固STM32的定時器、引腳、中斷、PWM等知識,同時也讓我學習LD3320語音識別技術等新技術,在整個STM32的智能風扇設計的項目中鍛煉了自己的自學能力與思考力。國內外研究現(xiàn)狀國內發(fā)展現(xiàn)狀目前市面上大多數(shù)風扇的功能依然只是定時、調節(jié)轉速、搖頭等功能,而這些功能在十幾年前就已經存在了,廠家對于風扇的優(yōu)化一般也在于減少風扇噪聲、減少風扇功耗、材料外觀等方面,真正對于風扇的技術方面的創(chuàng)新不是很多,這也導致了目前市面上的風扇在功能上還是千篇一律,在外觀與性能上存在差異。國外發(fā)展現(xiàn)狀風扇是1830年在美國發(fā)明的,因而風扇在國外更早進入到電子風扇的階段,在電子風扇階段的風扇已經不再是要求定時準、風扇保持穩(wěn)定等等這些基本條件了,電子風扇的優(yōu)點在于可實現(xiàn)智能控制,例如根據(jù)發(fā)動機的運行參數(shù),也就是轉速、冷卻液溫度、艙溫等自行調節(jié)風扇轉速,保證冷卻液溫度在合理范圍,提高風扇的使用壽命。傳統(tǒng)風扇所使用的硅油離合器或者電磁離合器只能有限的調節(jié)風扇轉速變化,而電子風扇冷卻系統(tǒng)則采用發(fā)動機水溫信號燈通過ECU精確控制風扇轉數(shù),以保證發(fā)動機冷卻。從前瞻產業(yè)研究院的一篇報道得知,盡管眾多國內企業(yè)對風扇制造進行了研發(fā)和創(chuàng)新,比如美的集團股份有限公司、鴻海精密工業(yè)股份有限公司。相較于國外先進的廠家,中國仍處于落后狀態(tài)。中國風扇制造研究未涉及或將要涉及的領域還有許多,大量高科技核心技術仍掌握在國外先進企業(yè)手中。中國風扇企業(yè)需不斷提高散熱風扇產品質量,在市場需求外不忘創(chuàng)新,并且積極引進先進技術,提高本身開發(fā)能力。系統(tǒng)總體設計方案及器件選材系統(tǒng)設計方案本課題設計一款基于STM32單片機的智能風扇,該智能風扇系統(tǒng)以STM32為控制核心,外設控制及顯示模塊主要有按鍵控制部分、溫度檢測部分、液晶顯示部分和電機驅動部分。在該系統(tǒng)用DS18B20溫度模塊與OLED液晶屏,實現(xiàn)測出室內溫度及顯示,達到智能溫控的效果;根據(jù)STM32定時器與L298N電機驅動模塊,實現(xiàn)對風扇風扇轉速控制;通過LD3320語音識別模塊與STM32的UART通信,實現(xiàn)識別特定語音,執(zhí)行相應響應,比如調節(jié)風速、開關機、開啟和關閉溫控功能等。同時響應新時代的節(jié)能號召,采用HC-SR501人體感應,識別沒有人時,自動關閉風扇。系統(tǒng)設計框圖如2.1所示。本智能風扇系統(tǒng)主要由六個部分組成:(1)主控芯片,主要用于處理傳感器信息、控制執(zhí)行器的作用;(2)室溫檢測模塊,用于檢測室內溫度,將溫度傳遞給單片機;(3)電機和驅動模塊,用于實現(xiàn)風扇轉速的調節(jié);(4)語音模塊,識別特定語音、將識別后的信息發(fā)送給單片機;(5)人體紅外檢測模塊,檢測風扇工作范圍內是否有人,將信息傳遞給單片機;(6)液晶顯示模塊,用于顯示DS18B20獲取到的溫度值。圖2.1系統(tǒng)總體方案框圖器件選材單片機選材在風扇系統(tǒng)的控制端元的選取上,本課題主要有以下兩種方案:方案一,用STC89C51單片機,51單片機在價格上相比于STM32更加便宜,但是51單片機只有5個中斷,兩個外部中斷、兩個定時器中斷和一個串口中斷,該智能風扇系統(tǒng)中,按鍵需要兩個中斷、電機需要一個中斷、UART也需要一個中斷,紅外傳感器也需要中斷,OLED顯示也需要一個中斷,一共需要6個中斷,51單片機的中斷數(shù)目不夠了,所以我們不使用51單片機。方案二,采用STM32單片機,STM32單片機擁有19個中斷源和8個定時器,滿足課題對于中斷和定時器的需求,此外還擁有4對UART通信、SPI通信和大量IO口等,并且STM32的FLASH與ROM相比于STC89C51更加大,能夠存儲的數(shù)據(jù)更多、性能更加穩(wěn)定。通過綜合對比選取STM32單片機,51單片機不滿足設計所需要的中斷數(shù)量與定時器數(shù)量,STM32可以滿足課題需求。在理論上使用兩塊STC89C51也可以完成本項目,在成本上用兩塊STC89C51相比于用一塊STM32單片機還要低很多,但是涉及到風扇系統(tǒng)的實時性問題,如果利用兩塊STC89C51實現(xiàn)智能風扇系統(tǒng),就需要使用兩塊51單片機和LD3320語音芯片分別實現(xiàn)UART通信,一塊51單片機的串口中斷只有一個,無法保證UART通信傳輸數(shù)據(jù)能夠無延時的到達,會造成整個風扇系統(tǒng)的延時性較大,所以最終選擇STM32F103VET6。液晶顯示選材在風扇系統(tǒng)的液晶顯示的選取上,本課題主要有以下三種方案:方案一,LCD1602顯示室內溫度,LCD1602是一種工業(yè)字符型液晶,分上下兩行,每行能夠顯示16個字符,顯示的總內容數(shù)為16*2個字符。但它不能很好地顯示圖形,在使用時需要使用10個IO端口,優(yōu)點是價格比較親民。LCD1602在使用時有一個需要注意的問題,如果在一個函數(shù)體內同時改變LCD1602的第一行與第二行的顯示內容,有一定的可能會造成顯示亂碼或者顯示位置錯誤,如果需要同時改變LCD1602第一行與第二行的值,最好在main函數(shù)中,改變一行的值,然后在中斷服務程序中改變另一行的值。方案二,選取0.96寸OLED屏顯示室內溫度,該模塊支持黃藍雙色顯示,可以同時顯示128字符,功耗低,支持3.3V供電,最為重要的是通信接口方式豐富,最多支持5種通信協(xié)議,比如SPI、I2C等,在價格上相較為LCD1602貴了不少。方案三,采用USARTHMI智能串口屏顯示。采用USART屏開發(fā)較為簡單,廠商會提供上位機,配合工程師的開發(fā),不用關心底層的驅動,這種串口屏自帶GUI,供電就可以使用,可通過串口通信對控件上的參數(shù)進行修改,還有一些特定的指令可實現(xiàn)一些功能操作,任何有串口通信功能的單片機都可以配合使用。如果采用USART屏可以讓本設計更快地做出來,但是USART屏價格都較為昂貴,因此放棄這方案。通過綜合比較選取0.96寸OLED作為液晶顯示模塊,雖然USARTHMI智能串口屏更加精美、功耗更低,但在成本上較高,該智能風扇設計只需要穩(wěn)定、實時顯示室內溫度,不需要顯示其他內容,方案二與方案一符合要求,考慮成本,放棄方案三。在操作的簡便性上,OLED屏采用I2C通信模式,可以實現(xiàn)用2個IO口完成LCD1602需要10個IO口才能完成的功能,所以最終選取0.96寸OLED顯示屏。風扇電機選材在風扇系統(tǒng)的電機的選取上,本課題主要有以下三種方案:方案一,選擇直流電機作為風扇的電機。直流電機質量相對較輕,很小巧不占用空間,非常好用和常見。缺點是不能精確控制到每一個角度,但是轉速可以達到很高,滿足模擬風扇需要的轉速,直流電機在轉動時噪聲小、功耗較低。方案二,選擇步進電機作為風扇電機。這種電機有一個好處,當電機工作時,它的力矩就逐漸降低,所以對于角度控制可以很精確,也正因為這樣轉速較慢,同時在轉動時有噪聲,不利于用于風扇電機的模擬。方案三,選擇360度的SG90舵機作為風扇電機,舵機相較為直流電機與步進電機而言,不需要借助電機驅動器驅動,在成本上較低,舵機的控制是發(fā)送一個時基脈沖,根據(jù)時基脈沖的時間來決定轉動多少角度,這表示如果需要不停的轉動就需要一直發(fā)送時基脈沖,這導致在操作上相較于步進電機與直流電機來說復雜了一些,也占用了CPU的資源,SG90舵機也存在一個和步進電機相近的不足,在轉動時存在大量的噪音。通過綜合比較選取直流電機作為風扇電機,SG90舵機需要不斷發(fā)送PWM信號,占用大量的內存,所以我們直接放棄這個方案三。步進電機雖然在精確度上,優(yōu)于直流電機,但在智能風扇系統(tǒng)中,對于電機的精確度要求不高,對轉數(shù)要求較高,步進電機達不到高轉速要求,直流電機可以實現(xiàn)高轉速,所以對比選取直流電機。電機驅動選材在對于風扇系統(tǒng)的電機驅動模塊選取上,本課題主要有以下三種方案:方案一,選擇5V繼電器模組實現(xiàn)驅動風扇電機。選擇繼電器模組的主要原因是單純的控制芯片無法直接控制繼電器,芯片的IO口驅動力不夠,也就是輸出電流較小,為了方便使用與接線,使用5V繼電器模組。繼電器的工作原理是電磁線圈通電后產生的磁力,使接點吸合或者釋放,所以繼電器在使用過程中會產生噪音。在使用繼電器控制電機方面也存在一些不足,繼電器相較為L298N響應時間較長、可靠性低。方案二,選擇L298N來實現(xiàn)驅動風扇電機。L298N是專門用于驅動電機,有4個輸入口,兩組電源線,可以同時驅動兩個步進電機,L298N可以選擇外接5V或者12V電壓,相對于繼電器來說,L298N選擇更加多樣性,利于設計后期優(yōu)化。方案三,選擇PMD006作為風扇電機的驅動,PMD006是一款微型電機驅動器,可供選擇輸出電流0.1A~6A,可選電壓9V~48V,可以同時支持8線電機,但從性能上來說比L298N更加優(yōu)異,價格也相對較高,作為風扇直流電機驅動器來說,PMD006很多功能都沒有使用的空間。通過綜合比較選取L298N作為電機驅動模塊,PMD006在性能上是最優(yōu)異的,但是作為5V直流電機驅動器來說,L298N完全可以替代PMD006的作用,且成本更低。L298N相較于繼電器而言,雖然成本上貴了一點,對于L298N的控制也相對繼電器較為繁瑣,考慮到風扇系統(tǒng)的穩(wěn)定性、可靠性、后期擴展性,最終選取L298N作為風扇電機的驅動芯片。語音識別選材在對于風扇系統(tǒng)的語音識別模塊選取上,本課題主要有以下兩個方案:方案一,采用LD3320語音識別模塊,它集成了麥克風接口、語音輸出接口、AD/DA轉換器等,不需要后期的電路設計,方便性較強,支持同時提供了UART通信,可以實現(xiàn)與STM32的通信。通過查詢使用LD3320芯片手冊得知,在識別范圍3米類的識別度達到95%,支持一級指令語音與二級指令語音,為風扇語音系統(tǒng)的開發(fā)提供了很好的參考價值。方案二,采用WTK6900B02語音識別模塊,該芯片在半米內識別率在90%左右,語音支持32種語言,還可通過單片機串口控制播放指定語音,還可提供直接識別、按鍵識別、喚醒識別多種模式,但是需要外接SPI、Flash和存儲條,選擇語音功能更加多樣性。通過綜合對比選取LD3320語音識別模塊,本設計需求是能夠識別戶主語音,然后將識別后的信息傳遞給單片機,LD3320語音識別模塊與WTK6900B02語音識別模塊都符合需求,LD3320語音識別芯片的成本低,并且在識別范圍3米內的識別精確度更高,還可以播放mp3,控制也比較簡單,所以本設計采用LD3320語音識別模塊。溫度采集選材在風扇系統(tǒng)中室內溫度檢測模塊的選取上,本課題主要有有以下兩個方案:方案一,采用DS18B20溫度傳感器,DS18B20是單總線器件,體積小。與傳統(tǒng)的熱敏電阻相比,DS18B20能夠直接將溫度轉化為數(shù)字信號,需要經過一個數(shù)學公式,就可以得出溫度值,不需要AD轉換,溫度值的精度達到0.1度,完成滿足本設計對于室內溫度精度,DS18B20溫度傳感器內含放大電路,所以在設計中不需要設計放大電路,對于DS18B20的控制也比較簡單,使用AT命令進行控制。方案二,采用MAX31865鉑電阻溫度檢測模塊,對于精確的溫度檢測,沒有什么比鉑金RTD更勝一籌。電阻式溫度檢測器(RTDs)是溫度傳感器,它包含一個電阻,它隨著溫度變化而改變電阻值,基本上是一種熱敏電阻,但是價格是DS18B20的幾倍到十幾倍。通過綜合對比選取DS18B20溫度傳感器,考慮到本系統(tǒng)并不需要在復雜的環(huán)境中工作,只需要檢測到室內溫度就行,并且對于精確度要求不是太高,考慮成本和設計所需求,方案一更加符合系統(tǒng)設計的需求。紅外模塊選材本設計要求智能風扇在工作時,通過人體紅外模塊檢測風扇工作范圍內是否有人,當檢測風扇工作范圍內沒人的時候風扇立即關閉,達到節(jié)能目的。本課題采用人體紅外傳感器HC-SR501作為識別是否有人的模塊,HC-SR501是基于紅外線技術的自動化控制產品,靈敏性高、可靠性強、低功耗、低電壓工作模式,HC-SR501的熱釋紅外傳感器,采用6只型熱釋紅外傳感器,按半圓形排列構成人體檢測模塊,每一個傳感器感應30°范圍內的人群信息,完全滿足本設計對于角度的需求。系統(tǒng)硬件電路STM32最小系統(tǒng)電路圖STM32F103VET6單片機最小系統(tǒng)細分由5個部分組成,分別是電源、復位、時鐘、調試接口以及啟動,本文采用的是STM32F103VET6的開發(fā)板,共有100個引腳,采用的是LQFP封裝,時鐘頻率是72.0MHz。STM32單片機擁有19個中斷源和8個定時器,滿足課題對于中斷和定時器的需求,此外還擁有4對UART通信、SPI通信和大量IO口等本設計共使用單片機8根引腳和4組電源線與接地線,其中PB5與PA3通過TIM3控制風扇轉速;人體紅外傳感器的DOUT引腳連接到單片機的PB1引腳,當檢測到有人時PB1引腳為高,當檢測到人離開后,PB1延時一段時間變?yōu)榈碗娖?,DS18B20溫度傳感器的DQ引腳連接到單片機的PE6引腳,通過AT命令對DS18B20進行控制,OLED顯示模塊SCL連接到單片機的PB6,SDA連接到PB7,通過I2C協(xié)議控制OLED顯示內容與顯示位置。LD3320語音識別模塊的TXD與RXD分別連接到單片機的RXD與TXD引腳,也就是STM32的PC12與PD12兩個引腳。STM32F103VET6電路圖如圖3.1所示。圖3.1STM32F103VET6電路圖DS18B20模塊電路圖在風扇系統(tǒng)中測室溫使用的是DS18B20溫度傳感器,有三條線,其中DQ是數(shù)據(jù)線,VCC與GND分別是電源和接地線。將DS18B20的VCC與GED分別接到單片機的VCC與GND,本文采用PE6號引腳與DS18B20的數(shù)據(jù)總線相連。在本設計中需要注意的是從DS18B20溫度傳感器讀出的數(shù)據(jù)是一個16位的帶符號擴展的二進制補碼形式,在設計中采用12位分辨率,12位分辨率分別為4個小數(shù)位、5個符號位、7個整數(shù)位,所以溫度的計算公式為:溫度=符號位+整數(shù)+小數(shù)*0.0625。同時需要在程序中添加一個16位的變量用于存儲溫度,方便OLED液晶顯示溫度時調用。DS18B20模塊電路圖如圖3.2所示。圖3.2DS18B20模塊電路圖人體紅外傳感器模塊原理圖本課題采用HC-SR501人體紅外檢測模塊,檢測風扇工作范圍內是否有人,有人時風扇能正常使用,例如風扇轉動、語音識別等,當檢測到風扇工作范圍內無人時,風扇不工作,達到節(jié)能環(huán)保的效果。HC-SR501人體感應模塊的正常工作電流為50uA,電平輸出高低兩種狀態(tài),高電平為3.3V,低電平為0V。HC-SR501人體紅外傳感器的數(shù)據(jù)總線接PB1引腳,在PB1腳為低電平時,表示風扇工作范圍內沒人,風扇停止工作,在PB1腳為高電平時,表示風扇工作范圍內有人,風扇的功能正常使用,在本作品中只需要判斷在工作范圍內是否有人,而不需要判斷有幾個人,HC-SR501的感應角度為100°,完全滿足使用。HC-SR501模塊電路原理圖如圖3.3所示。圖3.3人體紅外檢測電路圖電機驅動原理圖在設計中電機不能直接用于單片機控制,單片機IO的驅動力不夠,也就是常說的輸出電流或輸出電壓不夠,需要借助電機驅動器,提高驅動的電壓與電流,如圖下圖3.4所示,圖中點劃線所包括的控制指令、脈沖發(fā)生控制單元、反饋與保護單元可以用STM32控制實現(xiàn)實現(xiàn)。驅動單元使用的是L298N實現(xiàn)。圖3.4電機驅動圖L298N是電機驅動芯片,可以同時驅動兩個電機,可以選擇外接5V或者12V電壓,經試驗得出外接5V電源就可以滿足使用需要,如果外接12V電源導致直流電機因電壓過大,從而風扇轉速難以降低。L298N有4對信號輸出與輸入端,在本設計用INT1與INT2分別與PB5與PA3連接,用于控制風扇風速。L298N電機驅動模塊電路如圖3.5圖所示。圖3.5L298N電機驅動原理圖OLED顯示電路圖本設計采用0.96寸OLED用于顯示DS18B20采集到的室內溫度,OLED顯示模塊SCL連接到單片機的PB6,SDA連接到PB7,采用通信方式為I2C,分辨率為128*64,正常工作電壓為3.3V到5V,其內部具有升壓功能,所以在設計的電路的使用不用考慮升壓電路。在本作品中,需要注意的是由于端口采用的是PB7和PB6,需要在程序中開啟IO口的復用功能。主控發(fā)送啟動信號,發(fā)送0XA0,將SDA設置為輸入,并接收判斷應答信號,發(fā)送要寫入的地址值,將SDA設置為輸入,并接收判斷應答信號,開始發(fā)送數(shù)據(jù),每8位接收一次應答,最后發(fā)送停止信號。OLED顯示電路圖如圖3.6所示。圖3.6OLED顯示電路圖LD3320原理圖本設計采用的是LD3320芯片實現(xiàn)識別特定語音,達到控制風扇轉數(shù)、溫控的開啟與關閉等效果,在電路設計中我們需要將主控MCU連接到YS-LD3320模塊上,同時需要將RX與TX連接到STM32的PC12與PD12上。語音識別芯片的工作流程是,對MIC輸入的聲音實施頻譜分許,接著語音特征提取,匹配程序中的關鍵字,匹配成功輸出相應輸出,在該芯片已經集成了AD轉換電路、麥克風接口、聲音輸出接口,本作品需要提供電源穩(wěn)定的3.3V電源。LD3320芯片電路圖如圖3.7所示。圖3.7LD3320芯片原理圖按鍵控制原理圖在本設計中,需要按鍵控制風扇轉速與風扇的關閉,對于按鍵的精確度較高,軟件去抖與硬件去抖是按鍵去抖的兩種主要方式,在智能風扇設計中采用軟件去抖,軟件去抖就是利用一個短暫延時消去誤差,再寫入一個while函數(shù),讓按下一次按鍵只能讀取一次。按鍵模塊電路圖如圖3.8所示。圖3.8按鍵控制原理圖系統(tǒng)軟件設計工作流程當智能風扇系統(tǒng)上電之后,按下電源開關,整個系統(tǒng)實行初始化,DS18B20溫度傳感器采集室內溫度,并通過I2C協(xié)議顯示在OLED上面,之后人體紅外傳感器判斷風扇范圍內是否有人,無人時繼續(xù)檢測是否有人,有人時風扇將進行按鍵檢測與語音檢測兩個部分,當檢測到按鍵按下時,執(zhí)行對應操作,例如開關機、風速調節(jié),當檢測到特定語音風扇時,執(zhí)行對應響應,例如當我們需要風扇搖頭時,我們需要先說出一級指令“風扇”,當一級指令說正確后,LD3320的信號燈變?yōu)榧t色,然后說出對應的二級指令“風扇搖頭”,LD3320芯片通過UART通信,將指令轉遞給STM32,然后UART中斷接收到指令后,風扇即可搖頭。總體軟件流程圖如圖4.1所示。本設計智能風扇執(zhí)行工作時,除了主程序外,還需要設計的子程序有:風扇轉速的PWM的調控;溫度采集及顯示;語音識別的實現(xiàn)及準確性;根據(jù)溫度改變轉速;識別風扇工作范圍內是否有人。圖4.1工作流程圖室內溫度檢測程序在本設計中STM32與DS18B20采用1-Wire通信,即一根數(shù)據(jù)線與STM32通信。將4.7K電阻外接到DS18B20的數(shù)據(jù)線DQ上,以增加數(shù)據(jù)的抗干擾能力。在初始化DS18B20的時序中,我們需要將與DQ連接的IO口,即PE6先拉高,短暫延時后拉低,在精確延時500us后拉高,DS18B20會發(fā)送一個15~60us給STM32單片機說明初始化完成。STM32單片機想要獲取DS18B20傳感器的溫度值,也就是讀時序,必須STM32產生大于1us或15us的低電平信號,之后設置成輸入,釋放總線,由外部上拉電阻將總線拉高即可讀取DS18B20的字節(jié)序。在讀取DS18B20溫度傳感器的16位字節(jié)之后,在經過一個固定的溫度計算公式:溫度=符號位+整數(shù)+小數(shù)*0.0625,求出室溫溫度。溫度采集流程圖如圖4.2所示。圖4.2室溫采集流程圖檢測風扇范圍有無人程序在風扇的前端安裝了HC-SR501人體紅外檢測模塊,檢查風扇工作范圍內是否有人。室內無人時風扇依然轉動造成資源浪費。模塊為全自動感應,數(shù)據(jù)線連接到PE6管腳,當HC-SR501檢測到風扇工作范圍內有人時,風扇的功能正常使用,PE6引腳為高電平,當檢測到風扇范圍內沒人時,其他功能都不能使用,風扇進入到檢測有無人的循環(huán)當中。在本設計中采用的是HC-SR501可重復觸發(fā)方式工作模式。即風扇檢測到人時,PE6持續(xù)保持高電平,在人離開之后PE6才延時將高電平變?yōu)榈碗娖?,這樣做的好處是不需要風扇系統(tǒng)一直檢測PE6的引腳為高還是低,只需要將PE6設置成中斷服務程序,當PE6由高變低時,風扇不工作,節(jié)省風扇系統(tǒng)的CPU。人體紅外檢測流程圖如圖4.3所示。圖4.3人體紅外檢測流程圖語音識別程序本設計采用一顆基于非特定人語音識別的LD3320語音芯片,內含麥克風、AD電路等集成電路,無需外接RAM、麥克風,即可實現(xiàn)語音識別,在本設計中所使用的引腳為PC12與PD12兩個引腳,LD3320語音模塊采用的是關鍵字詞語表識別技術,需要將關鍵字列表寫入到程序中,并把LD3320內部以字符形式保存,在每次識別客戶語音時,將LD3320接收到客戶說的話,通過頻譜轉換為語音特征,在與LD3320內部字符形式的關鍵字列表對比,一一比對得出最相近的關鍵字,若沒有得出關鍵字則匹配失敗,跳過本次匹配。LD3320語音芯片采用的是一一匹配關鍵詞序列,在本設計中考慮到識別精確度與節(jié)能方面。在程序設計中,采用了一級指令與二級指令,在使用中,需要先說對一級指令,然后再說二級指令,在本設計的一級指令為“風扇”,在說正確一級指令后,LD3320的指示燈亮,說明一級指令正確,然后說出二級指令比如“第一檔風速”、“第二檔風速”、“搖頭”等等指令。因而一般來說,如果要獲得理想的識效果,每條關鍵詞語的字數(shù)不要過長,避免影響效果。語音識別流程圖如圖4.4所示。圖4.4語音識別流程圖PWM調速程序使用PWM的優(yōu)點在于可以有效調節(jié),電動機轉動速度的快慢,并且可以廣泛運用到不同的,電動機控制系統(tǒng)中。在本設計中采用TIM3定時器PB5管腳產生PWM波,在使用時將PB5管腳設置成復用推挽輸出,然后進行定時器TIM3初始化,其中自動重裝載寄存器配置為500,時鐘分頻系數(shù)設置成72,設置TIM3向上計數(shù)、在設定輸出極性,即可輸出PWM波。PWM軟件流程圖如圖4.5所示。圖4.5PWM脈沖產生流程圖OLED顯示程序本設計使用的是0.96寸OLED屏幕用于顯示室內溫度,OLED的SCL與SDA分別連接到STM32的PB6與PB7兩個端口,實現(xiàn)單片機與OLED的I2C通信,在使用OLED時需要注意延時函數(shù)的使用,延時時間不夠容易造成顯示亂碼和卡死等現(xiàn)象。我們需要在DS18B20測得室內溫度之后,要將溫度顯示在OLED上,并實現(xiàn)實時刷新。我們使用的是字符串,所以我們需要READ字符串顯示函數(shù)用于顯示溫度,同時我們還需要溫度實時更新,所有我們通過指針P不斷調用字符顯示函數(shù),0.96寸OLED顯示位數(shù)為128*64,主控向OLED屏幕寫入數(shù)據(jù)的過程為,主控發(fā)送啟動信號,發(fā)送0XA0,將SDA設置為輸入,并接收判斷應答信號,發(fā)送要寫入的地址值,將SDA設置為輸入,并接收判斷應答信號,開始發(fā)送數(shù)據(jù),沒8位接收一次應答,最后發(fā)送停止信號。OLED顯示流程圖如圖4.6所示。圖4.6OLED顯示流程STM32與LD3320通信程序在本設計中需要LD3320語音模塊與STM32F103VET6進行通信,兩者之間需要進行數(shù)據(jù)的交換,當LD3320語音模塊識別到正確戶主的一級語音指令與二級語音指令之后,LD3320語音模塊需要將識別的結果,傳遞給STM32單片機,STM32接收到LD3320語音模塊發(fā)來的數(shù)據(jù)之后,執(zhí)行相應的響應,比如調節(jié)風扇轉數(shù)、溫控功能開啟和關閉等等,同時STM32也需要給LD3320語音模塊發(fā)送數(shù)據(jù),告知LD3320語音模塊自己接收到了數(shù)據(jù)。在本設計中,我們將需要將RX與TX連接到STM32的TX與RX上,也就是連接到STM32的PC12與PD12上,我需要在STM32單片機與LD3320語音識別模塊兩者的程序中分別配置UART通信。在STM32單片機中我們將PC12設置成推挽復用模式、PD12設置成浮空輸入模式,波特率設置成9600,并保證STM32單片機與LD3320語音模塊的波特率一致,否則會出現(xiàn)亂碼問題或者收發(fā)失敗。再對發(fā)送與接收的數(shù)據(jù)格式進行設置,也需要保證STM32單片機與LD3320語音模塊的數(shù)據(jù)傳輸?shù)母袷奖3忠淮?,否則也會出現(xiàn)亂碼或者收發(fā)接收不到的問題。在STM32單片機中需要編寫中斷服務程序,方便隨時可收發(fā)數(shù)據(jù),在中斷優(yōu)先級的設置上,設置成搶斷優(yōu)先級1,子優(yōu)先級1,把UART設置成較高優(yōu)先級,減少數(shù)據(jù)阻塞風險。LD3320語音模塊的UART設計和STM32的UART保持一致。LD3320語音模塊與STM32的UART通信流程圖如圖4.7所示。圖4.7LD3320語音模塊與STM32的UART通信流程圖按鍵程序在本設計中需按鍵控制風扇的轉速,使用了三個按鍵PA0、PC13、PD3三個按鍵,其中PA0與PC13用于控制風扇的轉速第一檔與第二檔,PD3用于控制風扇的停止。本設計將PA0、PC13及PD3設置成GPIO_Mode_IN_FLOATING,在設計中需要在按鍵按下之后,需要知道哪一個按鍵被按下,并執(zhí)行按鍵按下之后的程序,所以需要將三個按鍵分別設置成中斷服務程序,這樣當按鍵被按下后,才能馬上發(fā)現(xiàn)是哪一個按鍵被按下,并且執(zhí)行按下按鍵后的程序。在中斷優(yōu)先級的設置上,設置成搶斷優(yōu)先級1,子優(yōu)先級1,將按鍵的設置優(yōu)先級較高。按鍵流程圖如4.8所示圖4.8按鍵流程圖系統(tǒng)調試驗證軟件調試本文所使用的的軟件調試方法是將每個功能模塊的程序進行單獨調試正確之后,再將所有程序整合在一起,此方法可以有效判斷程序出現(xiàn)的問題,方便我們修改程序。主要利用的開發(fā)軟件有keil5、串口調試助手、STM32下載軟件等。人體紅外傳感器調試在本設計中將人體紅外傳感器的dout數(shù)據(jù)腳連接到PB1管腳,定義一個LED燈,用于模擬風扇系統(tǒng),當LED燈正常亮,表示風扇工作范圍內有人,風扇系統(tǒng)可以正常使用,當LED不亮時,表示風扇工作范圍內沒人,風扇系統(tǒng)不可正常使用。在在具體實驗中發(fā)現(xiàn)了一些問題,雖然我們人離開了風扇的工作范圍,但是LED燈并沒有馬上變暗,而是過了約7秒才變暗,與我們的預期不符,本設計需要當人離開風扇工作范圍內時,馬上就變暗。經過不斷的調試與驗證,將人體紅外傳感器設置為中斷服務程序,當人離開時,也就是PB1為低電平后,風扇系統(tǒng)能夠立刻通過中斷服務程序獲取到PB1變?yōu)榈碗娖?,然后風扇停止工作。溫度采集與顯示調試本設計中OLED顯示溫度分為兩部分,第一步是DS18B20正確采集室內溫度,然后將獲取到的溫度通過一個公式轉換存放在16位字符串中,第二步是STM32獲取到16位字符串,然后通過I2C通信,將溫度正確傳遞到0.96寸OLED中。首先將OLED顯示模塊SCL連接到單片機的PB6,SDA連接到PB7,DS18B20數(shù)據(jù)線連接到PA4,通過ST-link下載好溫度采集與顯示的程序,觀察實現(xiàn)現(xiàn)象。在具體實驗中發(fā)現(xiàn)了一些問題,比如OLED溫度不能實時更新,有較高的延時,經檢查發(fā)現(xiàn),是系統(tǒng)時鐘設置不規(guī)范,調節(jié)系統(tǒng)時鐘,OLED可以實時更新,并且沒有較大延時。其次在顯示過程中,有時會出現(xiàn)OLED顯示亂碼或者卡死的問題,卡死的問題經檢驗發(fā)現(xiàn)是由于線路接觸不良造成,OLED顯示亂碼問題,可由OLED控制指令中的關閉OLED,再用控制指令打開可以解決。經過不斷的調試與驗證,DS18B20能正確采集室內溫度,并且OLED也能正確顯示溫度,符合我們的預期。風扇電機調試在本設計中風扇的電機決定了風扇的轉速,在調試中,我們將L298N是步進電機驅動芯片接5V電源,L298N有4個信號輸入端和4個信號輸出端,信號輸入端由單片機I/O口直接控制。在本設計用INT1與INT2連接到PB5、PA3用于控制電機的轉速。通過ST-link下載電機控制的程序。在試驗中我們發(fā)現(xiàn)了一些問題,我一開始使用TIM2用于產生PWM波,然后發(fā)現(xiàn)沒有產生PWM波,通過查STM32的原理圖得知,PB5管腳對應TIM3定時器,更改為TIM3,成功產生PWM波。LD3320語音識別與STM32通信調試調試在本設計中完整的流程為LD3320正確識別特定語音,在正確識別語音后,通過UART將特定指令發(fā)送到STM32,然后STM32執(zhí)行對應的響應。整個LD3320初始化程序需要3s左右,才能識別特定語音,在本設計中我們將關鍵詞“風扇”作為一級指令,寫入LD_AsrAddFixed函數(shù)體內,再依次將我們的二級指令寫入sRecog數(shù)組類等。STM32與LD3320建立UART通信,將LD3320的TX和RX分別與STM32的PC12與PD12相連,設置通信波特率為9600,編寫read函數(shù)和write函數(shù),即可實現(xiàn)uart通信。在試驗中,我先通過串口助手對LD3320進行調試,看能否正確識別語音,發(fā)送數(shù)據(jù)。經試驗可以正確識別語音和發(fā)送數(shù)據(jù),將LD3320與STM32相連,在LD3320識別語音后,STM32沒有任何反應。初步分析是波特率問題,其次是串口的問題,經調試發(fā)現(xiàn)是串口問題PA9串口已經用來作為USB串口了,不能再作為UART串口,更改串口試驗正確,考慮后期程序整合,將UART接收設置為中斷服務程序。完成程序調試各個功能模塊已經調試完成,現(xiàn)在需要完整程序調試。目的是為了完成整個項目,同時檢測各個模塊的兼容性。(1)將所有傳感器、執(zhí)行器、LD3320等按照設計準確的連接誒,成為完整的智能風扇系統(tǒng);(2)將寫好的最終程序在Kile5上編譯好,下載到系統(tǒng)主控芯片上;(3)給系統(tǒng)連接上電源;(4)DS18B20是否采集溫度、OLED顯示溫度顯示是否正確;(5)對人體紅外傳感器是否工作正常,正常情況下在進行下面測試;(6)按鍵控制風扇轉數(shù)是否正常;(7)語音識別和uart通信是否正常;(8)語音控制溫控是否正常;(9)能根據(jù)環(huán)境變化,自適應地控制風扇轉。硬件調試硬件調試主要是對智能風扇系統(tǒng)器件進行功能性調試和可靠性調試,一般分為上電前測試和上電后調試。主要測試每個模塊的供電、數(shù)據(jù)輸出是否合理,以及讓系統(tǒng)長時間的工作查看系統(tǒng)的穩(wěn)定性與準確性。在上電之后檢查各個模塊的電壓、電流等,需要特別注意的是LD3320芯片,LD3320需求的電壓是3.3V,如果長時間接入5V的電壓,會導致芯片過熱,造成識別語音不準確,在檢測到電壓與模塊的供電標準電壓不符時,需要改動供電的引腳,然后在測試,一直將每個模塊電壓調試到正常工作狀態(tài)。對風扇的整體的調試按照功能模塊來進行,主要分為以下幾個步驟:(1)風扇系統(tǒng)上電,查看各個模塊是否正常通電;(2)利用USB轉TTL下載器和STM32下載軟件下載風扇程序;(3)下載完整程,人體紅外傳感器是否工作正常;(4)提高溫度,看溫度顯示是否

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論