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

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

一. 系统设计及框图:

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

设计框图:

二. 离线语音模块的设计

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

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

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

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

垃圾名字对照表:

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

SU-03T是通过网页形式来配置的,配置方法也很简单请参考上面的优快云的链接。本设计提供了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

<think>好的,用户想了解SU03T语音模块STC32G单片机之间的串口通信协议及实现方法。首先,我需要回顾这两者的基本资料。SU03T是一款离线语音识别模块,通常使用UART进行通信。而STC32G是基于8051内核的单片机,支持多种串口模式。 接下来,通信协议方面,常见的可能是简单的自定义协议,比如固定格式的数据帧,包含起始位、命令、数据校验。或者SU03T可能有自己的协议标准,需要查阅其数据手册。例如,模块可能以特定格式发送识别结果,比如“0xAA 0x55 [命令字] [数据长度] [数据] [校验]”这样的结构。 然后是硬件连接。SU03T的TXD应连接到STC32G的RXD,RXD连接到TXD,同时共地。需要确认两者的电压是否匹配,比如都是3.3V或5V,否则可能需要电平转换。 软件配置方面,STC32G的串口初始化是关键。用户提供的引用[2]中有串口初始化的代码,可以参考设置波特率、定时器、工作模式等。例如,设置波特率为115200,使用定时器1作为波特率发生器,8位数据模式,无校验位,1位停止位。 数据接收部分,STC32G需要通过中断或轮询方式读取SU03T发送的数据。中断方式更高效,需配置ES位使能串口中断,并在中断服务函数中处理接收到的字节,存入缓冲区,解析协议。 数据发送方面,单片机可能需要发送控制指令给SU03T,比如唤醒词设置或模式切换。按照模块的协议格式封装数据帧,通过串口发送函数逐个字节传输。 需要注意的问题包括波特率一致性、数据帧的同步校验,以及可能的抗干扰措施,如添加校验验证数据完整性。此外,SU03T的唤醒识别响应机制也需要遵循其通信规范。 最后,用户可能需要具体的代码示例,比如初始化代码、中断处理函数协议解析部分。确保代码中的寄存器配置正确,比如引用[2]中的AUXR、SCON等设置,以及定时器的计算。</think>### SU03T语音模块STC32G单片机串口通信实现方法 #### 一、硬件连接 1. **电平匹配**:SU03T工作电压通常为3.3V,STC32G单片机支持5V/3.3V电平,建议统一使用3.3V供电以避免电平冲突。 2. **物理接口**: - SU03T的`TXD` → STC32G的`P3.1`(RXD1) - SU03T的`RXD` → STC32G的`P3.0`(TXD1) - 共地连接(GND) #### 二、通信协议解析 SU03T默认采用**固定帧格式UART协议**,典型数据帧结构如下: $$ \begin{array}{|c|c|c|c|c|c|} \hline 帧头1 & 帧头2 & 命令字 & 数据长度 & 数据内容 & 校验 \\ 0xAA & 0x55 & 1字节 & 1字节 & N字节 & 1字节 \\ \hline \end{array} $$ **校验计算**:`SUM = 0xAA + 0x55 + 命令字 + 数据长度 + 数据内容`(取低8位) #### 三、STC32G软件实现 1. **串口初始化**(基于引用[2]代码修改) ```c #define SU03T_BAUD 9600 // SU03T默认波特率 void UART1_Init(void) { P_SW1 = (P_SW1 & 0x3F) | 0x00; // 使用P3.0/P3.1作为串口 SCON = 0x50; // 模式1: 8位UART,可变波特率 AUXR |= 0x40; // 定时器1时钟1T模式 AUXR &= 0xFE; // 选择定时器1为波特率发生器 TL1 = (65536 - (MAIN_FOSC/4/SU03T_BAUD)); TH1 = (65536 - (MAIN_FOSC/4/SU03T_BAUD)) >> 8; TR1 = 1; // 启动定时器1 ES = 1; // 使能串口中断 EA = 1; // 全局中断使能 } ``` 2. **中断接收处理** ```c uint8_t rxBuffer[32]; uint8_t rxIndex = 0; void UART1_ISR() interrupt 4 { if (RI) { RI = 0; // 清除接收中断标志 rxBuffer[rxIndex++] = SBUF; // 帧头检测 if (rxIndex >= 2) { if (rxBuffer[0] != 0xAA || rxBuffer[1] != 0x55) { rxIndex = 0; // 帧头错误,重置 } } // 完整帧处理 if (rxIndex >= 5 && rxIndex == (5 + rxBuffer[3])) { if (CheckSum(rxBuffer)) { ProcessCommand(rxBuffer[2], &rxBuffer[4], rxBuffer[3]); } rxIndex = 0; // 处理完成重置 } } } // 校验验证函数 uint8_t CheckSum(uint8_t *data) { uint8_t sum = 0; for (uint8_t i=0; i<data[3]+4; i++) { sum += data[i]; } return (sum == data[data[3]+4]); } ``` 3. **语音指令处理示例** ```c void ProcessCommand(uint8_t cmd, uint8_t *data, uint8_t len) { switch(cmd) { case 0x01: // 识别结果指令 printf("识别到关键词ID:%d\r\n", data[0]); break; case 0x02: // 唤醒事件 LED_Blink(); // 执行唤醒动作 break; } } ``` #### 四、关键配置要点 1. **波特率同步**:需与SU03T模块的出厂设置一致(默认9600bps) 2. **数据帧超时**:建议添加15ms帧间隔超时检测 3. **抗干扰设计**: - 在串口输入引脚添加100Ω电阻100pF电容滤波 - 软件实现连续三次校验失败后复位通信链路 #### 五、典型应用场景 1. **家电控制**:通过语音指令控制继电器模块 2. **工业HMI**:语音交互式参数设置 3. **智能玩具**:语音触发动作响应
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

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

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

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

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

打赏作者

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

抵扣说明:

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

余额充值