当前位置: 首页 > article >正文

STM32单片机与SU-03T联动(语音播报传感器数据)

需要用到的硬件

USB转TTL(用于烧录和测试)、杜邦线、SU-03T语音模块(配套的咪头和喇叭)、STM32F103C8T6最小系统板

浏览器直接搜索 智能公元 进行注册。

智能公元的使用

创建产品

选择SU-03T

  

  

 配置GPIO

这里我们要用到语音播报传感器数据功能,所以我们只要用到串口,其他不用更改

自定义命令词

 创建三条命令,选择好相应的触发方式以及相应的命令词

这里想要的效果是分别对语音模块说出三句不同的命令词,然后语音模块接收到命令词之后通过串口发送指令给单片机,单片机通过串口发数据帧给语音模块(数据帧包含传感器数据),语音模块进行播报。定义如下:

我们点击>>进入控制详情,为命令添加触发添加控制

 添加触发

这里我们定义两个参数,因为后面考虑到温度要返回小数点后一位,所以这里统一写两个参数,方便后面代码的统一编写,类型根据数据的大小去定义,这里我们用了unsigned char。

下面的数据帧解释:帧头帧尾分别是十六进制的AA 55和55 AA,第三个十六进制数是下图的消息编号,作用是语音模块读取到数据帧之后,区分要播报哪条指令。第四和第五个十六进制数分别是我们定义的两个参数,一个用来表示整数,一个用来表示小数。

添加控制 

 这样配置之后当我们的语音模块接收到AA 55 01 55 00 55 AA数据帧就会播报语音:测得当前的心率为85次每分钟。

特殊地,

返回有小数的传感器数据可以这么定义:

 然后我们通过下面的命令来发送给单片机命令,让单片机发送数据帧给我们的语音模块。

添加控制

 当我们说播报当前心率,语音模块就会通过串口给单片机发送十六进制数01,单片机接收到之后,就通过串口向语音模块发送带着传感器数据的数据帧。

配置好之后就点击右上角的发布版本

等待SDK的生成 

 

烧录

 下载烧录软件,点击官网的文档然后选择SU-03T

下载串口烧录软件

​ SDK生成完毕之后,下载固件,将它保存到全英语路径下,记得是全英文路径

 然后打开我们下载的串口烧录软件

 选择全英文路径下这个比较长的bin文件

​ 硬件连线

USB转TTLSU-03T
5VVCC
GNDGND
TXB6(RX)
RXB0(TX)

重点来了重点来了重点来了 

我们点击烧录后每个串口都会一个一个变成黄色,当黄色列到我们的烧录串口号,我们就拔掉SU-03T的VCC,只要拔掉VCC,其他的都不用拔,然后再接回去,这时如果显示app 0%,就说明开始烧录,如果失败了就多试几次。下面是烧录成功界面。

 STM32代码

因为我们给语音模块传的数据帧都是十六进制数,而我们的传感器采集的数据是整数和浮点数,所有我们通过下面的代码就十进制数转换为十六进制数。

 首先我们要初始化一个串口,然后将它设置为发送和接收模式。

然后在串口中断中设置一些标志位,区分不同指令不同操作:

然后我们再在主函数里面检测标志位,调用相应的播报任务函数:

 


http://www.kler.cn/news/314362.html

相关文章:

  • Docker Networking Tutorial (Bridge - None - Host - IPvlan - Macvlan )
  • TCP/IP协议详解:现代网络通信的基石
  • Unity3D入门(一) : 第一个Unity3D项目,实现矩形自动旋转,并导出到Android运行
  • CSS 的元素显示模式简单学习
  • stack和queue(一)
  • 网络信息传输安全
  • R18 Enhancements on CHO procedure for NES cell(s)(NES event)
  • Linux相关概念和重要知识点(5)(权限的修改、时间属性)
  • 蓝桥杯【物联网】零基础到国奖之路:七. 串口
  • 4、FPGA特征简介
  • 重生之我们在ES顶端相遇第15 章 - ES 的心脏-倒排索引
  • R语言机器学习算法实战系列(二) SVM算法(Support Vector Machine)
  • ChatGPT 在国内使用的方法
  • 论文阅读 - SELF-REFINE: Iterative Refinement with Self-Feedback
  • 了解二八定律,提高工作效率、生活质量
  • Maven笔记(二):进阶使用
  • 国产Linux:OpenEuler溯源
  • 初级前端面试
  • 【RabbitMQ】⾼级特性
  • 关于有源蜂鸣器及无源蜂鸣器的区别及驱动各类单片机案例
  • 华为---代理ARP工作过程示例分析
  • 使用ultralytics库微调 YOLO World 保持 Zero-Shot 能力
  • Go小专栏 第一期
  • 【前端】ES6:Promise对象和Generator函数
  • 【MySQL 01】数据库基础
  • 配置docker的proxy指向
  • 【Proteus仿真】基于51单片机的L298N电机电速调节
  • 记录动态库项目仅生成了dll,未生成lib文件的问题
  • 深度学习02-pytorch-07-张量的拼接操作
  • 剖析Spark Shuffle原理(图文详解)