【RT-Thread作品秀】智能家居的语音控制方案。
作者:xqyjlj
概述
智能家居是现在一个很火热的方向,随着人们生活水平的提高,我们都逐渐开始希望身边的电器都可以不用手来控制,本作品就是基于这种需求,开发出来了一个基于语音控制的智能家居方案。本智能家居方案,分为联网与不联网两种版本。其中,无论是联网与不联网,语音识别功能均能正常使用。在本作品没有连上网的情况下,可以进行语音对开关的控制,进行MP3等常用音频文件的播放,以及具有拍照功能,可以将拍下来的照片储存在SD卡内,在本作品连上网的情况下,还附加了以下功能,可以将一些数据上报到云平台(onenet),并且将一些工作日志通过邮件发送给用户。
开发环境
硬件:ART_PI(主控)
LD3320(语音识别芯片)
VS1053(音频解码芯片)
OV2640(摄像头)
RT-Thread版本:RT-Thread V 4.0.3
开发工具及版本:RT-Thread Studio 2.0.0
RT-Thread使用情况概述
内核:调度器,信号量。
软件包:smtp_client,btstack,netuils,fal,easyflash,littlefs,onenet。
硬件框架
主控:ART-PI
ART-Pi 是 RT-Thread 团队为嵌入式软件工程师、开源创客设计的一款极具扩展功能的 DIY 开源硬件。致力打造一个开源的软硬件平台。
语音识别芯片:LD3320
LD3320是非特定人(不用针对指定人)语音识别芯片,即语音声控芯片。最多可以识别50条预先内置的指令。
音频解码芯片:VS1053
VS1053是一款利用SPI通讯的音频解码模块,支持大部分的音频文件的解码播放和编码保存
摄像头:OV2640
OV2640是OmniVision公司生产的一颗1/4寸的CMOS UXGA(1632*1232)图像传感器;支持自动曝光控制、自动增益控制、自动白平衡、自动消除灯光条纹等自动控制功能。
软件框架说明
本项目采用的是多级联控模式。将多个模块的任务分为多个级别,以语音识别为主体,摄像头和语音播报为从体,在语音识别到关键字的时候,会出发相对应的函数,实现不同的效果,而onenet是与语音识别互相独立的,会源源不断的把数据实时发送到云端。
软件模块说明
- smtp_thread_entry:邮件线程,用于发送邮件。
- ld3320_asr_thread:语音识别线程,用于语音识别,调用其他程序。
- onenet_upload_entry:onenet线程,用于向云端发送数据。
语音识别过程:
首先初始化LD3320芯片,在对其写入需要识别的关键字数据,之后启动LD3320,之后等待其信号引脚拉低,在其信号引脚拉低后,通过读取其寄存器,我们便能知道LD3320获取到了什么样的关键字。之后便从关键字调取我们的相对应的函数。使之工作于不同的功能。
演示效果
演示视频:
比赛感悟
在报名这个比赛之后,我的目标其实是比现在的功能多得多的,这一点可以从我的Gitee上面的进度表可以看出,奈何原本打算三个人做的项目,到最后,也是我一个人来完成。自己之前画的板子,也是因为自己画板功力不足,还有焊接能力不足,导致本来拥有更多功能的拓展板也没完成。
不过比赛嘛,重要的不是结果,而是过程。通过这次比赛,我最起码收货到了以下知识:
安卓开发,微信小程序设计,web开发(以上由于个人能力问题,其实并未实现),音频处理,STM32H750的众多DMA的设置,以及bootloader,同时也知道了STM32还能片外运行的神奇事情,也学会了RT-Thread Studio的使用。最重要的事情就是明白了不要过分依赖别人,自己想的计划,就要自己去实现,不要总是把任务布置给其他人。