基于STM32 STC15和SU-03T语音模块的智能语音垃圾桶设计

该设计利用SU-03T离线语音模块识别垃圾类型,通过STM32或STCMCU控制舵机实现垃圾分类。用户可以自定义垃圾种类,配置简单,提供源代码和硬件资料。演示视频展示了STM32和STC15版本的工作效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 系统设计及框图:

本设计可以实现垃圾的自动识别和分类,通过离线语音模块SU-03T进行语音采集分辨,分析出不同的垃圾种类后MCU模块驱动不同的舵机开关来模拟垃圾桶的开启关闭。MCU模块可选择STM32或STC或其它Arduino板, 在控制原理上是相通的。本设计可用作课程设计或毕业设计,提供软硬件资料。

设计框图:

二. 离线语音模块的设计

离线语音模块SU-03T的基本使用可参考本人csdn文章:

SU-03离线语音模块的配置使用_远望创客学堂的博客-CSDN博客_su-03t

本设计首先将垃圾分为四类:可回收垃圾,厨余垃圾,有害垃圾和其它垃圾。SU-03T离线语音模块将不同的垃圾种类信息发送给MCU,然后MCU再来控制四路不同的舵机,这样就实现了垃圾分类。

在这里SU-03T充当语音识别和转换的角色,比如将旧报纸,熟料瓶,图书等识别为可回收垃圾,通过串口告诉MCU模块这是可回收垃圾,然后MCU模块控制可回收垃圾舵机动作。

垃圾名字对照表:

当然你也可以自定义垃圾种类或者增加某一类垃圾中垃圾数量(比如在厨余垃圾种类下增加“鸡骨头”垃圾),这都可以通过修改SU-03T语音模块的识别方式来实现。

SU-03T是通过网页形式来配置的,配置方法也很简单请参考上面的CSDN的链接。本设计提供了SU-03T的配置和烧录文件,如果需要增加垃圾种类等则只需在这个基础上做一些简单修改即可。

SU-03T语音模块配置和烧录资料:

三. MCU模块的选型

本设计使用STM32最小系统板,如下图所示

或STC15最小系统板,如下图所示:

这两种最小系统板都可以在本人某宝店铺中找到,当然也可以采用其它系统板,本设计支持其它MCU的功能定制。

四. 舵机的控制方法

舵机是一种位置(角度)伺服的驱动器,舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:

0.5ms--------------0度;

1.0ms------------45度;

1.5ms------------90度;

2.0ms-----------135度;

2.5ms-----------180度;

对于STM32核心板控制舵机,因为STM32有足够多的PWM通道,可以实现一路PWM通道控制一路舵机。但对于STC15这种PWM通道不够用的芯片来说则需要使用软件模拟PWM的方式来控制舵机。因为舵机控制频率为50HZ,对于一般单片机即便是用软件模拟PWM的方法也是没有问题的,因为频率并不是很高。

STM32舵机控制示例代码:

STC15舵机控制示例代码:

五. SU-03T和MCU模块的信息交互

SU-03T模块识别出不同种类的垃圾后(这里是四种)通过串口发送给MCU,MCU再控制不同的舵机动作。

示例代码:

STM32智能语音垃圾桶设计演示视频:

智能垃圾桶 语音识别 stm32控制四路舵机_哔哩哔哩_bilibili

STC15智能语音垃圾桶设计演示视频:

智能垃圾桶 离线语音识别 STC 51单片机控制四路舵机_哔哩哔哩_bilibili

### 测试 SU-03T 语音识别模块的方法 为了测试 SU-03T 语音识别模块的功能,可以通过以下方法验证其基本性能定制功能。以下是详细的测试流程: #### 1. **硬件连接** 确保按照标准的接线方式进行连接。通常情况下,SU-03T 可通过 USB-TTL 模块与电脑通信[^3]。具体连接方式如下: | 接口名称 | SU-03T 引脚号 | USB-TTL 对应引脚 | |----------|---------------|-------------------| | VCC | PIN5 (B7) | 5V | | RX | PIN6 (B6) | TX | | TX | | RX | | GND | GND | GND | 完成上述连接后,确认供电正常并打开串口调试工具。 --- #### 2. **软件环境准备** 使用串口调试工具(如 SecureCRT 或者更简单的工具如 XCOM),设置波特率为默认值 `9600` bps,并选择对应的 COM 端口号。如果不确定端口号,可以在设备管理器中查看新增加的虚拟串口设备。 --- #### 3. **基础功能测试** 发送 AT 命令来检测模块是否工作正常。例如输入以下命令以获取版本信息: ```plaintext AT+VERSION? ``` 如果返回类似于 `"SU-03T_V1.x"` 的字符串,则表明模块已成功初始化[^2]。 还可以尝试其他常用命令,比如查询当前状态或配置参数: ```plaintext AT+STATUS? // 查询模块运行状态 AT+CLEARALL // 清除所有自定义词条 ``` --- #### 4. **唤醒词及响应测试** 根据文档说明,预先设定好唤醒词及其触发后的反馈动作。例如,默认唤醒词可能是 “你好”,当说出此词语时,模块会播放预设提示音或者回传特定数据包给主机表示已被激活[^1]。 在实际操作过程中,对着麦克风清晰地说出指定唤醒短语,观察是否有预期反应发生;如果没有听到任何声音回应,请检查音频输入增益调整是否适当以及线路接触状况良好与否。 --- #### 5. **命令词匹配实验** 除了单纯的唤醒之外,还需要检验不同指令能否被正确认知执行。这一步骤涉及加载多个固定表达式到内部存储区里供后续调用。利用配套提供的图形界面应用程序导入所需条目文件(.bin),再重新上电启动即可生效。 随后逐一朗读这些项目列表中的每一项内容看它们对应的结果表现如何——应该能够立即得到相应的答复或者是物理行为改变(像灯光亮灭之类的效果展示)。 --- #### 示例代码片段:Python 实现自动化测试框架 下面给出一段基于 PySerial 库编写的简单程序用来连续向目标装置发出询问请求直到获得满意答案为止。 ```python import serial import time def test_su03t(port='COM3', baudrate=9600, timeout=1): ser = serial.Serial(port, baudrate, timeout=timeout) if not ser.is_open: raise Exception("Failed to open port") commands = ["AT+VERSION?", "AT+STATUS?", "AT+CLEARALL"] responses = [] try: for cmd in commands: ser.write((cmd + '\r\n').encode()) time.sleep(0.5) response = ser.read_all().decode('utf-8') responses.append(response.strip()) finally: ser.close() return responses if __name__ == "__main__": results = test_su03t() for result in results: print(result) ``` --- #### 注意事项 在整个试验期间需要注意保护敏感元件免受静电损害风险影响;另外也要留意电源电压范围必须严格遵循官方推荐规格以免造成永久损坏情况出现。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机毕业设计-远望创客学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值