【RT-Thread作品秀】智能家居的語(yǔ)音控制方案。
作者:xqyjlj
概述
智能家居是現(xiàn)在一個(gè)很火熱的方向,隨著人們生活水平的提高,我們都逐漸開(kāi)始希望身邊的電器都可以不用手來(lái)控制,本作品就是基于這種需求,開(kāi)發(fā)出來(lái)了一個(gè)基于語(yǔ)音控制的智能家居方案。本智能家居方案,分為聯(lián)網(wǎng)與不聯(lián)網(wǎng)兩種版本。其中,無(wú)論是聯(lián)網(wǎng)與不聯(lián)網(wǎng),語(yǔ)音識(shí)別功能均能正常使用。在本作品沒(méi)有連上網(wǎng)的情況下,可以進(jìn)行語(yǔ)音對(duì)開(kāi)關(guān)的控制,進(jìn)行MP3等常用音頻文件的播放,以及具有拍照功能,可以將拍下來(lái)的照片儲(chǔ)存在SD卡內(nèi),在本作品連上網(wǎng)的情況下,還附加了以下功能,可以將一些數(shù)據(jù)上報(bào)到云平臺(tái)(onenet),并且將一些工作日志通過(guò)郵件發(fā)送給用戶。
開(kāi)發(fā)環(huán)境
硬件:ART_PI(主控)
LD3320(語(yǔ)音識(shí)別芯片)
VS1053(音頻解碼芯片)
OV2640(攝像頭)
RT-Thread版本:RT-Thread V 4.0.3
開(kāi)發(fā)工具及版本:RT-Thread Studio 2.0.0
RT-Thread使用情況概述
內(nèi)核:調(diào)度器,信號(hào)量。
軟件包:smtp_client,btstack,netuils,fal,easyflash,littlefs,onenet。
硬件框架
主控:ART-PI
ART-Pi 是 RT-Thread 團(tuán)隊(duì)為嵌入式軟件工程師、開(kāi)源創(chuàng)客設(shè)計(jì)的一款極具擴(kuò)展功能的 DIY 開(kāi)源硬件。致力打造一個(gè)開(kāi)源的軟硬件平臺(tái)。
語(yǔ)音識(shí)別芯片:LD3320
LD3320是非特定人(不用針對(duì)指定人)語(yǔ)音識(shí)別芯片,即語(yǔ)音聲控芯片。最多可以識(shí)別50條預(yù)先內(nèi)置的指令。
音頻解碼芯片:VS1053
VS1053是一款利用SPI通訊的音頻解碼模塊,支持大部分的音頻文件的解碼播放和編碼保存
攝像頭:OV2640
OV2640是OmniVision公司生產(chǎn)的一顆1/4寸的CMOS UXGA(1632*1232)圖像傳感器;支持自動(dòng)曝光控制、自動(dòng)增益控制、自動(dòng)白平衡、自動(dòng)消除燈光條紋等自動(dòng)控制功能。
軟件框架說(shuō)明
本項(xiàng)目采用的是多級(jí)聯(lián)控模式。將多個(gè)模塊的任務(wù)分為多個(gè)級(jí)別,以語(yǔ)音識(shí)別為主體,攝像頭和語(yǔ)音播報(bào)為從體,在語(yǔ)音識(shí)別到關(guān)鍵字的時(shí)候,會(huì)出發(fā)相對(duì)應(yīng)的函數(shù),實(shí)現(xiàn)不同的效果,而onenet是與語(yǔ)音識(shí)別互相獨(dú)立的,會(huì)源源不斷的把數(shù)據(jù)實(shí)時(shí)發(fā)送到云端。
軟件模塊說(shuō)明
- smtp_thread_entry:郵件線程,用于發(fā)送郵件。
- ld3320_asr_thread:語(yǔ)音識(shí)別線程,用于語(yǔ)音識(shí)別,調(diào)用其他程序。
- onenet_upload_entry:onenet線程,用于向云端發(fā)送數(shù)據(jù)。
語(yǔ)音識(shí)別過(guò)程:
首先初始化LD3320芯片,在對(duì)其寫入需要識(shí)別的關(guān)鍵字?jǐn)?shù)據(jù),之后啟動(dòng)LD3320,之后等待其信號(hào)引腳拉低,在其信號(hào)引腳拉低后,通過(guò)讀取其寄存器,我們便能知道LD3320獲取到了什么樣的關(guān)鍵字。之后便從關(guān)鍵字調(diào)取我們的相對(duì)應(yīng)的函數(shù)。使之工作于不同的功能。
演示效果
演示視頻:
比賽感悟
在報(bào)名這個(gè)比賽之后,我的目標(biāo)其實(shí)是比現(xiàn)在的功能多得多的,這一點(diǎn)可以從我的Gitee上面的進(jìn)度表可以看出,奈何原本打算三個(gè)人做的項(xiàng)目,到最后,也是我一個(gè)人來(lái)完成。自己之前畫的板子,也是因?yàn)樽约寒嫲骞αΣ蛔?,還有焊接能力不足,導(dǎo)致本來(lái)?yè)碛懈喙δ艿耐卣拱逡矝](méi)完成。
不過(guò)比賽嘛,重要的不是結(jié)果,而是過(guò)程。通過(guò)這次比賽,我最起碼收貨到了以下知識(shí):
安卓開(kāi)發(fā),微信小程序設(shè)計(jì),web開(kāi)發(fā)(以上由于個(gè)人能力問(wèn)題,其實(shí)并未實(shí)現(xiàn)),音頻處理,STM32H750的眾多DMA的設(shè)置,以及bootloader,同時(shí)也知道了STM32還能片外運(yùn)行的神奇事情,也學(xué)會(huì)了RT-Thread Studio的使用。最重要的事情就是明白了不要過(guò)分依賴別人,自己想的計(jì)劃,就要自己去實(shí)現(xiàn),不要總是把任務(wù)布置給其他人。