SU-03T和STM32F103C8T6及MP3模块搭建离线语音识别控制系统01

本文介绍了使用SU-03T语音识别模块、STM32F103C8T6微控制器和MP3模块搭建离线语音识别控制系统的过程。SU-03T模块在效率和价格上优于LD3320,且作者承诺提供详细教程。STM32F103C8T6是常见的微控制器,MP3模块则用于音频播放。配套资源包括PCB板设计、代码仓库和视频教程。整体项目成本控制在200元内,适合学习和实践。

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


前言

大家好我是志城,今天给大家分享如何通过SU-03T和STM32F103C8T6及MP3模块搭建离线语音识别控制系统,良心发布,包教包会。


一、SU-03T语音识别模块是什么?

1.1、就语音识别效率来讲,这款语音识别模块甩出LD3320模块十几条街。

1.2、从价格来讲一个LD3320模块66元;而一个SU-03T模块9.5元,算上邮费6块,买几个排针、排母、咪头、喇叭、下载器下来30块钱撑死了,所以果断建议后来者入手这款模块。

1.3、从开发难易程度讲:SU-03T的生态稍差那么一丢丢,但是大家放心,后期我一步步出教程,保证大家手到擒来,学的心满意足。

机芯智能有看到记得打钱或者免费给送点模块哈。
机芯智能看到的话记得打钱哈
模块背面



二、STM32F103C8T6和MP3模块

2.1、STM32F103C8T6懂得都懂不啰嗦了。

在这里插入图片描述

2.2、MP3模块,买它绝对没错:

在这里插入图片描述

别的不说,配个内存卡之后便宜好用,技术储备充足。

2.3、买8G内存卡:

这个就不放图了,内存卡买8G的。


三、配套资料:

3.1、配套PCB板:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

配备了:8路舵机、一个超声波、一个MPU6050、一个PS2手柄接收、一个1.8TFT显示屏、一个L293D电机驱动芯片、四个按键。采用SU+C8T6+MP3模块实现语音识别控制,全体用充电宝加Type-c数据线供电,好用且免费。大家赞后启用即可。

3.2、配套代码:

在这里插入图片描述

3.2.1、上述代码大家在仓库下载即可:https://gitee.com/ha-city/SU-03T_MP3_STM32F103C8T6.git

3.2.2、这个仓库我会持续的更新,大家下载参考即可。配套的教程也在一步步录制上传,大家耐心期待即可;在使用过程中有什么不足之处请及时和我联系。

3.2.3、视频教程请搜索B站“简单快乐的123” LV5的那个。

3.3、模块采购:

3.3.1、PCB板我都免费分享出来了,大家在群文件或者Gitee都可以下载打板。

3.3.2、所需的零散元器件可以加群找我一次性采购,节省大家时间价格绝对良心公道,具体多少钱我还没仔细算过,等算好了再给大家分享。

3.3.3、就总的一套下来,完成语音识别系统搭建、舵机控制、超声波控制、1.8TFT控制学习成本在200块钱以内。


四、总结

01、SU-03T和STM32F103C8T6及MP3模块搭建语音识别系统之【开机播报和随机回复测试】

4.1.良心分享,包教包会。

4.2.期待后来者可以踩在我的肩上不再重复我走过的弯路。

4.3.如果对你有所帮助的话,麻烦你帮我点个赞,我更新的动力就大一点。

### SU03T与STM32通过UART通信的配置 为了实现SU03T模块STM32微控制器之间的串口通信,可以通过STM32 HAL库完成初始化数据传输功能。以下是详细的说明以及示例代码。 #### 配置步骤概述 在使用HAL库时,需注意具体的错误码可能随STM32系列、型号及HAL库版本变化而有所不同[^1]。因此,在实际开发过程中应查阅相关参考手册以确认具体参数设置。此外,UART错误处理可通过`huart->ErrorCode`变量检测特定类型的错误,例如帧错误或奇偶校验错误等[^2]。 对于DMA模式下的UART缓冲区管理,可定义发送接收缓冲区大小并利用FIFO队列机制优化性能[^3]。同时,UART作为常见的异步通信接口之一,其基本原理是在嵌入式系统调试中广泛应用,尤其是在向PC端打印日志信息时非常有用[^4]。 --- #### 初始化配置 以下是一个典型的UART外设初始化过程: ```c #include "stm32f4xx_hal.h" // 定义全局变量用于存储接收到的数据 uint8_t RxBuffer[64]; UART_HandleTypeDef huart1; void MX_USART1_UART_Init(void) { huart1.Instance = USART1; huart1.Init.BaudRate = 9600; // 设置波特率为9600bps huart1.Init.WordLength = UART_WORDLENGTH_8B; // 数据长度为8位 huart1.Init.StopBits = UART_STOPBITS_1; // 停止位数为1 huart1.Init.Parity = UART_PARITY_NONE; // 不启用奇偶校验 huart1.Init.Mode = UART_MODE_TX_RX; // 启用收发模式 huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; // 关闭硬件流控制 huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { // 调用HAL库函数进行初始化 Error_Handler(); // 如果失败则调用错误处理器 } } ``` 上述代码片段展示了如何基于HAL库初始化USART1外设,并设置了常用的通信参数如波特率、字长、停止位等。 --- #### 发送数据至SU03T模块 当需要向SU03T设备发送命令字符串或其他形式的消息时,可以采用如下方法: ```c void SendDataToSU03T(const char *data, uint16_t length) { if (HAL_UART_Transmit(&huart1, (uint8_t *)data, length, HAL_MAX_DELAY) != HAL_OK){ Error_Handler(); } } // 使用实例 SendDataToSU03T("AT+CMD\r\n", strlen("AT+CMD\r\n")); ``` 此部分实现了简单的消息传递逻辑,其中包含了超时保护策略以防阻塞操作过久未响应的情况发生。 --- #### 接收来自SU03T的数据 针对从外部传感器或者其它装置读取反馈信号的需求,则要构建对应的监听循环结构: ```c void ReceiveDataFromSU03T(uint8_t* buffer, uint16_t size) { if(HAL_UART_Receive_IT(&huart1, buffer, size)!= HAL_OK){ Error_Handler(); } } // 中断回调函数模板 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance == USART1){ ProcessReceivedData(RxBuffer); // 自定义解析函数 HAL_UART_Receive_IT(&huart1, RxBuffer, sizeof(RxBuffer)); // 继续等待新数据到来 } } ``` 这里采用了中断驱动的方式提高实时性效率,每当有新的字符到达指定寄存器位置之后便会触发相应事件通知应用程序层进一步处理这些输入资料。 --- ### 注意事项 - **波特率匹配**:确保双方都工作在同一速率下以免造成误解码现象。 - **奇偶校验选项**:如果启用了此项特性记得同步调整目标节点上的对应属性值。 - **流量控制协议**:除非必要否则一般推荐禁用RTS/CTS之类额外握手线路连接减少布线复杂度的同时简化固件设计流程。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值