系统功能
本语音控制的智能家居系统可以实现本地在线语音识别,控制家电;通过手机语音远程控制家电;手机可以远程实时获取家内传感器的数据。
1)单片机实现音频信息的采集,播放内置音频信息,获取温湿度传感器数据和光照度传感器数据,通过显示屏显示传感器数据和语音转文字后的信息。
2)网络传输模块实现网络传输,与MQTT Server和语音识别API分别建立TCP连接,通过发布和订阅MQTT的Topic主题进行数据的上传与下行。
3)单片机将采集的音频信息进行base64编码,将编码后的音频数据和TOKEN以及一些必要参数整合成JSON格式整合到HTTP BODY中,单片机通过带流控位的串口与网络传输模块进行数据传输。
4)网络传输模块将接收到串口数据通过TCP通信同步上传到百度语音识别API,传输结束后,等待TCP Server返回HTTP 响应报文,将报文BODY字段数据进行裁剪,只要其中JSON格式的语音识别信息(UTF-8编码),将语音识别信息发送到单片机,单片机通过UTF-8转GBK算法进行最终的语义控制, 并进行对应语音播报。
5)手机APP端利用语音识别API接口进行语音识别,与MQTT Server端建立TCP连接,通过MQTT协议订阅和发布,将转换后语音信息发布到订阅设备,单片机处理收到的订阅信息。
6)单片机将采集到的传感器数据发布到MQTT Server端,APP端可以通过订阅来实时更新传感器数据。
硬件组成
系统硬件主要由九部分组成,分别是单片机、网络传输模块、立体声编解码模块、IO扩展模块、温湿度传感器、光照度传感器与液晶显示屏、按键及LED灯组组成,系统的总体框图如图:
Image
单片机选用了ST公司的STM32F407VET6芯片,通过内部的USART接口与ESP8266 NodeMCU通信,通过丰富的外设功能获取传感器的各项数据;
网络传输模块采用乐鑫科技的ESP8266单片机通过STA模式连路由器链入到Internet,连接百度语音识别API接口进行语音识别,通过MQTT协议连接百度天工物接入平台发送传感器数据;手机端APP通过访问MQTT Server实时更新内部显示传感器数据;
立体声编解码模块采用深圳普中科技有限公司的WM8978模块自带MIC头可以直接采集音频信息;
Image
IO扩展模块采用PCF8574,可以通过I2C引脚最多控制8个PCF8574模块也就是说可以控制64个IO口;
温湿度传感器采用DHT22进行温湿度数据的采集,采集的温度精度为±0.5℃,湿度精度为±2%RH;光照度传感器采用BH1750FVI可以获取0~65535单位为lx光照值数据。
系统软件
系统的软件框图:
Image
单片机将传感器数据和语音识别包通过带硬件流控的USART串口与网络传输模块进行数据的交互;网络传输模块通过Wi-Fi的STA模式连接到路由器,通过向语音识别API发送HTTP数据包获取语音转文字数据报,通过向MQTT Server发送订阅与发布消息,进行传感器数据的上传与手机控制命令的下传;手机APP通过与MQTT Server 订阅和发布消息,获取传感器数据后实时显示,通过手机APP语音识别,识别成功后将识别内容发布到MQTT Server,等待MQTT Server转发消息给订阅的设备。
单片机的程序设计、云端设备参数设置、wifi传输模块软件设计、手机APP程序设计在分享的论文与代码中,可以查看到更多详细的介绍。
需要改进的地方
1)上面项目的控制语音识别开始和结束,都是通过按键进行控制的,缺少了唤醒词的功能,希望之后可以通过采用DTW(Dynamic Time Warping,动态时间归整)算法,进行唤醒词识别。
2)目前只能对获取的语音进行简单的操控,无法进行语音的合成,只能依靠SD卡内存放的音频文件,之后可以将百度语音合成技术也加入到系统中,并将内部命令改成数据库命令,通过海量的知识丰富当前的语音操控。
3)系统只有一个终端设备,之后可以增加节点设备,从而实现一主机控制多从设备。
上一篇:毕业设计| 【开源】自制下推式磁悬浮
下一篇:【STM32】使用HAL库进行电机测速,原理、代码、滤波
推荐阅读最新更新时间:2024-10-09 11:19
设计资源 培训 开发板 精华推荐
- 基于涂鸦智能的温湿度传感器
- 适用于STM32F072RB MCU的STM32 Nucleo-64开发板,支持Arduino和ST morpho连接
- 具有 ON/OFF 拨动开关的 LF18CDT-TR 1.8V 多路低压降稳压器电源的典型应用
- 12V/8A有源钳位正激转换器、符合IEEE 802.3bt标准的以太网供电(PoE)参考设计
- AN54,采用 LTC1149 10-48V、12V/2A 高压降压转换器的应用电路
- LTC3110HUF 1.8V/300mA 输出的典型应用电路,单个电容器从 2.5V 放电至 1V,并具有低至 0.3V 的备用电源
- DC1496C-A,基于具有 I2C 接口的 LTC2941 电池电量计的演示板
- DAP-Link_STM32F103C8_Type-C
- RH1128M 的典型应用 - 抗辐射超低噪声精密高速运算放大器
- 移动电源(调整OK程序+原理图PCB图)
- STEVAL-IDB008V2板子连接BlueNRG Navigator 下载不了固件
- 只支持8级灰度的硬件,文字显示时如果反锯齿?
- 高科技大型上市公司招聘: 嵌入式系统设计工程师 /通信产品设计工程师 / 系统软件设计工程师 工作地点 深圳
- NAND FLASH从K9F1208修改成K9F1G08要跳电阻?为什么?不是完全兼容吗?难道操作的周期数不一样?
- 【DFRobot电机驱动】+收到DFRobot Arduino 驱动板
- 2006年广西大学生电子设计竞赛题目
- 【请教】Launchpad的串口可以给STC单片机下载程序吗?
- 请玩过MSP430F5438的大侠们帮我一下!!!
- 数据批量分析提取,求指点迷津
- 关于WinCE下显示驱动中的SetMode函数