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