发作品签到
专业版

毕设-智能语音风扇

工程标签

8.7k
0
0
24

简介

基于STM32F103C8T6单片机为核心开发的一款智能语音风扇。功能包含语音识别、串口通信、语音播报、RTC实时时钟、PWM控制风扇和灯光实现无极调节和按键、无线蓝牙连接手机控制。

简介:基于STM32F103C8T6单片机为核心开发的一款智能语音风扇。功能包含语音识别、串口通信、语音播报、RTC实时时钟、PWM控制风扇和灯光实现无极调节和按键、无线蓝牙连接手机控制。

开源协议

CC BY-NC-SA 4.0

(未经作者授权,禁止转载)
创建时间:2023-11-21 14:02:39更新时间:2023-12-11 09:28:14

描述

 

1、设计任务与需求

1.1设计背景

智能语音风扇的设计背景源于人们对于生活品质和便利性的不断追求。随着科技的飞速发展,人们对于智能家居产品的需求也越来越强烈。传统的风扇虽然能够给人们带来清凉的风,但操作繁琐,限制了用户的便捷性和舒适性。新一代的智能产品致力于为用户带来更加智能、便捷、舒适的家居体验,满足了人们对高品质生活的追求。未来,随着技术的进一步发展,智能语音风扇有望成为家庭生活中必不可少的智能家居产品之一。

1.2设计需求

1、具备语音识别功能,能够识别出普通话所描述的操作。

2、具备手机APP远程遥控,不需要人为接触操作。

3、风扇可调,能够实现无极调速。

4、能够有一定便携能力,方便用户携带。

5、利用Solidworks3维建模软件设计一个外壳。

1.3设计任务

1、需求分析:明确智能语音风扇的功能和性能要求。

2、硬件选型:选择合适的风扇机构、温度传感器和其他所需硬件组件。

3、硬件设计与组装:设计风扇外壳和支架,安装和连接所选的硬件组件。

4、软件开发:开发语音识别功能和温度感应功能的软件程序,包括语音控制和实时温度监测与调节。

5、外观与安全设计与制造:根据现代家居审美标准,设计风扇的外观,并制造出外壳和支架。

6、操作界面设计:设计清晰简洁的触摸按钮或遥控器,方便用户进行基本操作。

7、组装与测试:将所有组件进行组装和测试,确保产品性能和安全性能达到要求。

 

 

 

 

2、方案论证

2.1方案比较

2.1.1 MPU方案比较

方案一:STM32F103C8T6是一款由STMicroelectronics公司推出的基于ARM Cortex-M3内核的32位微控制器,属于STM32F1系列产品。该单片机的工作电压范围为2-3.6V,具有高性能和低功耗的特点。它的主频可达72MHz,内部集成了64KB的闪存和20KB的SRAM,以及多种模拟和数字外设,包括ADC、UART、I2C、SPI等。如图2.1所示。

图2.1 STM32F103C8T6单片机

方案二:STC32G12K128系列单片机是STC公司于2022年推出的一款基于32位8051内核的微控制器,属于STC32G系列产品。该单片机的工作电压范围为1.9V~5.5V,具有高性能和低功耗的特点。它内部集成了128K字节的Flash存储器,12K字节的SRAM,以及多种模拟和数字外设,包括4路串口、5个定时器、8路16位高级PWM、15路12位ADC、2路CAN总线功能单元、1路I2C串行总线等。该单片机还支持DMA(SPI/I2C/ADC/UART/LCM)功能,以及所有IO口的中断功能。如图2.2所示。

图2.2 STC32G12K128单片机

2.1.2 人机交互方案比较

方案一: OLED显示屏(如图2.3所示)是一种由众多微型发光二极管构成的显示技术。每个发光二极管被称为一个像素点,它能够自主发光。这使得OLED显示屏能够达到极高的像素密度,呈现出更清晰、更鲜艳的图像效果。同时,由于每个像素点都可以单独控制,OLED显示屏能够实现更深沉的黑色和更高的对比度。

图2.3 OLED液晶显示屏

方案二:TFT(Thin-Film Transistor,薄膜晶体管)(如图2.4所示)是一种液晶显示(Liquid Crystal Display,LCD)的驱动技术。TFT是一种利用非晶硅或多晶硅薄膜制造的半导体开关器件,它能够在每个像素点上独立控制液晶分子的排列状态,从而调节液晶显示屏的亮度和颜色。

图2.4 TFT彩屏

2.1.3 语音识别方案比较

方案一:ASR PRO(如图2.5所示)是一款专门针对中文语音识别和语音合成的模块,能够实现用户的语音输入和输出功能。它利用AI语音合成技术,将用户输入的语音转换为文字,并将文字转换为自然流畅的语音输出。ASR PRO支持多种语言和场景的语音识别,适用于各种智能设备和应用。它涵盖了语音信号处理、语音识别、语音理解与语音合成等关键技术。

图2.5 ASRPRO模块

方案二:离线语音模组VC-02(如图2.6所示)是一款基于云知声锋鸟M芯片的AI离线语音识别产品,能够实现最高150条本地指令的离线识别,无需联网。该模组通过UART接口与IOT模组通信,将识别到的词条序列码发送给IOT模组,由IOT模组根据序列码执行相应的控制操作,并将设备状态更新上报到云端,实现云端与设备的同步。反之,当云端下发控制命令时,IOT模组也会通过UART接口将词条序列码发送给VC-02模组,并由VC-02模组播放相应的语音提示,实现设备与用户的交互。

图2.6 VC-02离线语音模组

2.1.4 手机APP开发方式

方案一:App Inventor是一款面向初学者的可视化编程工具,能够快速简便地创建Android应用程序。它由麻省理工学院(MIT)的行动学习中心开发和维护,是一个基于云计算的在线开发平台。

方案二:Android Studio是一款由Google开发和支持的官方集成开发环境(IDE),专门用于创建Android应用程序。它基于IntelliJ IDEA平台,提供了多种强大的功能,包括智能代码编辑器、布局编辑器、性能分析器、APK分析器、模拟器等。

2.2方案选取

2.2.1 MPU方案选取

选择STM32F103C8T6是因为其是一款32位ARM Cortex-M3内核的微控制器,具有高效计算能力和丰富的外设接口。同时拥有72MHz的CPU时钟频率,128KB Flash存储器和20KB SRAM,满足多种应用需求。支持USART、SPI和I2C等通信接口,方便与其他设备通信。GPIO引脚可连接传感器、执行器等外部设备,多个定时器和PWM输出通道可应用于各种控制任务。所以选择STM32F103C8T6作为本次主控芯片。

2.2.2 人机交互方案选取

选择OLED12864液晶屏的理由有几个方面。首先,OLED12864屏幕具有高对比度、广视角和鲜艳的颜色,显示效果清晰、生动。其次,尺寸紧凑、薄型设计方便嵌入各种设备中,适用于有限空间的需求。最后,OLED12864支持I2C或SPI接口,易于与主控制器连接,提供灵活性和便利性。基于这些因素,选择OLED12864液晶屏能够满足显示要求,展示出高质量的图像,并且适用于各种应用场景。

2.2.3 语音识别方案选取

选择ASRPRO语音模块的理由有三个方面。首先,ASRPRO拥有高度准确的语音识别功能,能够实现准确、流畅的语音交互体验。其次,模块体积小巧,易于集成到各种设备中,具有良好的可扩展性和兼容性。最后,ASRPRO提供丰富的开发文档和支持,使开发者能够快速上手和定制化开发。基于这些因素,选择ASRPRO语音模块能够有效提升产品的智能化与用户体验。

2.2.4 手机软件选取

App Inventor 并不需要复杂的编程知识,使用它你可以使用拖放功能来设计应用程序的用户界面,然后使用图形化编程块来添加功能。这些图形化编程块可以执行各种操作,如处理用户输入、访问设备功能、与网络通信等。App Inventor 还提供了模拟器,可以在计算机上测试应用程序的运行情况,无需实际的 Android 设备。所以选择App Inventor作为本次APP开发软件。

 

 

 

 

3、硬件电路设计与制作

3.1 硬件系统总体设计

总体设计围绕STM32F103F103C8T6进行。电源部分输入12V通过BUCK降压电路得到5V,由AMS117-3.3V稳压芯片产生3.3V;手机APP、语音模块通过串口与单片机通讯;OLED12864与单片机数据交互通过IIC协议。如图3.1所示。

图3.1 硬件系统框图

3.2 STM32单片机最小系统设计

STM32F103C8T6最小系统是以STM32F103C8T6微控制器为核心的硬件系统。它包括一个主控制器芯片(如图3.2所示)、一个外部高速晶体振荡器(一般为8MHz(如图3.3所示))和一个外部低速晶体振荡器(一般为32.768kHz(如图3.4所示))。此外,系统还配备了多个通信接口,如USART、ADC和I2C,以及一些GPIO引脚连接外部设备。

图3.2 主控

图3.3 外部高速时钟 图3.4 外部低速时钟

3.3 复位及下载电路设计

复位电路(如图3.5左所示)是将电路恢复到初始状态的电路。电阻上拉至3.3V保持高电平,当按键按下短接到地,低电平触发单片机复位。STM32单片机遵循SW接口下载,只需预留SWCLK和SWDIO接口。如图3.5右所示。

图3.5 复位(图左)及下载电路(图右)

3.4照明与风扇驱动电路设计

照明驱动电路(如图3.6所示)通过一个NPN三极管控制,由单片机产生一个10kHZ的PWM波,即可控制三极管基极电流大小来控制灯光亮度。

图3.6 照明驱动电路

风扇驱动电路(如图3.7所示)通过一个NMOS管控制,由单片机产生一个10kHZ的PWM波,即可控制MOS管导通时间改变电机转速。

图3.7 电机驱动电路

3.5语音识别模块最小系统设计

ASRPRO语音模块外围电路(如图3.8所示)设计简洁,只需要连接一个电源、扬声器和麦克风即可使其运行。这种简单的连接方案使得使用和配置变得容易,同时确保了ASRPRO语音模块的正常操作和高效工作。

图3.8 ASRPRO最小系统

3.6 按键电路设计

为了避免在没有按下按键时出现误触发情况,添加上拉电阻R29、R30和R31。当按键未被按下时,上拉电阻将确保GPIO口电平保持高电平状态,防止误触发事件的发生。而当按键被按下时,相当于将按键短接到地,导致GPIO口电平被拉低,从而触发低电平事件。通过这样的设计,可以保证按键的稳定触发,并有效避免误操作的发生。如图3.9所示。

图3.9 按键电路

3.7 ADC采集电路设计

在某些情况下,风扇不可能无休止的运转下去,通过NTC热敏电阻和等值电阻来采集温度(如图3.10所示)。将热敏电阻的阻值转换为温度值,以便监控和控制环境温度,确保风扇在适宜的温度范围内运行。

NTC 热敏电阻温度计算公式:Rt = R *EXP(B*(1/T1-1/T2))

这里T1和T2指的是K度即开尔文温度,K度=273.15(绝对温度)+摄氏度;其中T2=(273.15+25)。

Rt热敏电阻在T1温度下的阻值。

R是热敏电阻在T2常温下的标称阻值。

B值是热敏电阻的重要参数。

EXP是e的n次方。

通过这样的设计方案,可以实现简单的温度采集,并利用相关公式将热敏电阻的阻值转换为相应的温度值。就可以对环境温度进行监测和控制,从而确保风扇在合适的温度范围内运行。

图3.10 温度采集电路

通过采用两个电阻R6、R7进行电压分压(如图3.11所示),能够测量并了解电池的实时电压。一旦电压超出或低于设定的阈值,系统将立即启动保护措施,如切断电池供电或发出警报信号。这种设计不仅可以有效地预防电池损坏,还可以避免系统故障。

图3.11 电源电压监控电路

3.8 显示及指示灯电路设计

显示方案采用的是OLED12864液晶显示屏,它是通过IIC协议进行驱动,需要保证其空闲状态下为高电平,其SDA、SCL必须有上拉电阻R11、R12,添加4个短接电阻可以适用于不同型号OLED显示屏。如图3.12所示。

图3.12 OLED显示电路设计

对于一个系统监视其是否在运行,通过LED发光二级管即可明显观察到。采用LED3、LED4监视单片机运行状态,LED5监视语音模块运行状态。如图3.13所示。

图3.13 LED指示电路

3.9 电源电路设计

在本设计中,电源电压输入电压范围是8~24V,通过SW2控制整系统电源,SS24防止电路反接烧毁。语音模块和蓝牙模块输入电压范围3.6-5V,必须通过XL1509 BUCK降压芯片来实现5V输出,其输出电压计算公式为:Vout = (1 + R19 / R20) * 1.23V≈4.92V。如图3.14所示。

图3.14 电源输入及BUCK降压电路设计

STM32单片机的是整个系统核心,电源纹波要求小,需得到精心的考虑。为了满足其对3.3V电源的需求,选择了AMS117-3.3V LOD线性稳压器(如图3.15所示)作为供电方案。这款芯片能够稳定地输出3.3V电压,确保STM32单片机的正常运行,LED1也能实时监控芯片工作状态。

图3.15 LDO降压电路

3.10 PCB制板

嘉立创EDA制图软件可以非常便捷设计出PCB板,经过合理规划电路板的布局、优化信号传输路径和信号完整性、保证电源供电稳定等,即可完成功能稳定、高效可靠的PCB设计需求。

3.10.1 PCB布局

在本设计中,电源部分、照明和风扇驱动电路存在大电流,存在强干扰,都集中布局在右上角,主控芯片部分是整个系统核心,电气线路复杂,居中放置。按键部分、显示部分靠板框下部分放置方便用户交互。图3.16 PCB布局图所示。

图3.16 PCB布局图

3.10.2 PCB布线

在本设计中,电源部分需要驱动电灯和风扇,其峰值电流是比较大,需要采用填充连接。而其它部分基本都属于信号线,采用8mil布线。5V、3.3V网络需要给单片机、语音模块及蓝牙莫供电,导线采用15-25mil即可。如图3.17所示。

图3.17 PCB布线图

3.10.2 PCB检查

将PCB布局与PCB布线完成后,需要仔细核对元器件摆放是否合理,PCB板丝印是否存在错误、不清晰等情况。同时运行DRC规则检查,排除PCB可能存在的短路、断路等故障。如图3.18所示。

图3.18 PCB3D图

 

 

 

 

 

4、软件程序设计与编写

4.1 STM32单片机程序设计

4.1.1程序流程图

单片机上电后,初始化系统外设,进入主循环。循环中扫描蓝牙和语音模块发送的指令,处理指令后。再扫描按键并判断是否按下。最后刷新屏幕显示,这样能快速响应用户指令,更新显示内容。如图4.1 STM32单片机程序流程图所示。

图4.1 STM32单片机程序流程图

4.1.2蓝牙、语音数据处理

当蓝牙接收到数据,单片机串口的DMA空闲中断被触发,数据被存入缓存数组,标志位设为有效。我使用strstr()函数进行内容比对,相似则获取对应数值。处理完毕后,清除标志位,清空数组,实现循环接收。语音模块的处理方式类似。

图4.2 蓝牙数据处理程序设计

4.1.3 按键识别程序设计

按键默认是高电平,当有按键被按下时被短接到地,只需要将对应GPIO配置为输入模式,读取其状态为低电平就可以认定为按键触发。

图4.3 按键处理程序设计

4.1.4 屏幕显示程序设计

OLED通过IIC协议与STM32单片机连接,该单片机已内置该接口,只需简单配置即可启用。使用OLED_ShowString()函数,可以在屏幕上显示指定位置、内容和字体大小的文本。

图4.4 屏幕显示程序设计

4.2手机软件程序设计

4.2.1程序流程图

在App Inventor中,进入界面后对使用的控件初始化。滑动控件检测到位置被改变会主动向单片机发送位置,定时器10ms中断一次,对单片机发送过来的数据进行处理及跟新显示。如图4.5 手机软件程序流程图所示。

图4.5 手机软件程序流程图

4.2.2 手机UI界面设计

在App Inventor可视化编程环境中,你可以通过拖放UI设计控件,如按钮、标签、文本框、图片、列表视图等,并设置它们的垂直或水平布局属性,来快速地创建出类似图4.6的Android应用程序UI界面。

图4.6 手机APPUI设计界面图

4.2.3 手机程序设计

使用滑动条和蓝牙客户端两个控件,实现对其他设备的操作。滑动条可以在一定的范围内拖动,从而改变数值的大小。蓝牙客户端可以连接其他的蓝牙设备,并发送或接收数据。本文将以图形化积木式的编程方式,展示如何通过滑动条的数值来控制蓝牙客户端发送的指令。如图4.7 滑动条程序设计所示。

图4.7 滑动条程序设计

温度和电源电压值监控设计,将接收数据存入数组中,再进行检索即可将手机显示数值更新。如图4.8 手机APP接收数据程序设计所示。

图4.8 手机APP接收数据程序设计

4.3 语音识别程序设计

4.3.1程序流程图

ASRPRO上电对使用的I/O、串口进行初始化后,其可以在多线程情况下运行。当处于唤醒下状态下,检测到关键音频,会向单片机发送字符串指令。同时也会处理接收单片机发送过来的字符串指令,并播报对应内容。如图4.9 语音识别流程图所示。

图4.9 语音识别流程图

4.3.2识别程序设计

基于ASRPRO语音识别模块的程序开发框架,该框架通过创建一个唯一的语音ID号,并将其与相应的串口输出信号或动作指令对应,实现了对系统的语音控制功能。

图4.10 语音识别程序设计

4.3.3串口接收程序设计

匹配字符串成功,即可播报相对应ID号内所对应的中文语音内容。

图4.11 串口接收程序设计

 

 

 

 

 

5、整体调试

5.1硬件装调

5.1.1 准备材料清单

表5.1 材料清单

序号

名称

规格

数量

1

HC-05蓝牙模块

插件

1个

2

ASRPRO语音模块

插件

1个

3

STM32F103C8T6

LQFP-48

1块

4

AMS1117

SOT_223

1块

5

XL1509-ADJ

SOIC-8

1块

6

OLED

插件

1颗

7

晶振

插件

2颗

8

LED

LED603

5颗

9

按键

KEY-TH

3个

10

电容

C0805

25颗

11

电阻

R0805

30颗

5.1.2 焊接

准备相关材料(如图5.1所示),调节电烙铁温度,使其升温到约350°C左右,以保证焊锡能够充分熔化。用电烙铁对贴片元件进行焊接,优先焊接高度较高或体积较大的元件,遵循从低到高,从小到大的顺序,以避免干扰或碰撞。

图5.1 焊接准备图

焊接完成后(如图5.2所示),用刷子蘸洗板水清洗电路板上的多余的焊锡膏和焊油,检查焊接质量,确保没有虚焊或漏焊;优先使用万用表蜂鸣挡测量12V、5V、3.3V到地是否存在短路,电压源网络是否正常。

图5.2 焊接完成图

5.2软件调试

5.2.1 STM32单片机程序下载

将ST-LINK模块分别与电脑和单片机连接。然后在Keil5软件中,点击魔术棒图标,选择Debug选项,进入Settings界面。在这里,你可以看到连接状态的信息(如图5.3所示)。如果连接正常,你就可以点击Download按钮,将程序烧录到单片机中。

图5.3 STM32单片机下载

5.2.2 语音模块下载

将USB转TTL模块分别与电脑和单片机连接(如图5.4所示)。然后在天问软件中,选择你的语音模块的程序,并点击下载按钮。在下载过程中,你需要注意以下几点:

1、开始下载之前,你需要确保电源开关处于关闭状态,以防止电源干扰下载。

2、下载开始后,你会看到软件界面上有一个进度条显示下载的进度。

3、下载完成后,你需要立即打开电源开关,让单片机运行你的程序。

4、如果你没有及时打开电源开关,或者在下载过程中出现错误,你可能需要重新下载。

图5.4 语音模块下载

5.3 功能调试

分别将测试完成的电路板、风扇、射灯和扬声器等安装到3D打印的外壳上,并用螺丝刀将螺丝拧紧固定。接入8-24V直流电源,即可观察到如图5.5所示。

图5.5 功能调试图

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
3D外壳.zip
121
2
程序.zip
819
3
语音演示.mp4
315
4
手机软件演示.mp4
252
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航