JQ6500语音模块

本文介绍了JQ6500语音模块在STM32上的应用,包括串口通信设置、语音添加、软件控制及常见问题解决,如电压影响语音播放、USB线选择等。

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

一:Note

今天分享一下最近用到的JQ6500语音模块,我主要是用它来做个语音播报功能,同时在使用中遇到的一些问题。

二:使用说明

这个模块一些什么使用场景的废话我就不讲了,主要讲一些比较重要的部分。
1、它的工作电压,这个点我觉得我还挺重要,因为在后面我使用的时候,发现有的时候语音出来是很短,一下就没了,后来发现是电压这里的问题
在这里插入图片描述
2、 实物图及原理图,新手刚拿到,就只能按照这个图来连线,对好个个引脚。在这里插入图片描述
在这里插入图片描述
3、通讯命令,它是支持异步串口通信,波特率9600,8位数据位,没有校验位,没有流控制,这里也要注意,在利用串口调试的时候,这些参数都要设置好,一旦有偏差都通信不了。调试的时候利用串口调试助手就可以,尤其注意一点,发送数据的时候,要勾选上以十六进制发送数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
组合播放 :
连续发送【7E 04 03 00 01 EF】【7E 04 03 00 02 EF】【7E 04 03 00 03 EF】,则连续播放第一首、第二首、第三首,最多可以十首组合,播放完停止。

三:添加语音

拿到这个模块,当然需要是自己弄语音进去让他播放,这里就要使用到更新语音这个环节了。拿一根usb线,连接上模块的miniUSB口,注意,这里的USB线,我之前用的是那种充电宝的万能充电线,然后就一直不行,后来我换了一个单一的usb线就可以了,所以如果你的也是这样连接不上,可以试一下换一根USB线。然后你插上电脑,就可以了,就会出现以下情况
在这里插入图片描述
在这里插入图片描述

### STM32JQ6500语音播报模块集成方法 #### 一、硬件连接说明 为了使STM32能够成功驱动JQ6500语音播报模块工作,两者之间需建立可靠的物理连接。具体来说,通过UART接口完成二者间的通讯交互,其中TXD和RXD分别对应于发送端与接收端的数据传输线路[^1]。 #### 二、初始化配置过程 在程序启动初期阶段,应对串口参数实施必要的设定动作,比如波特率设置为9600bps,并确认数据帧格式无误(一般情况下默认即可)。此外还需注意的是,在向JQ6500下发任何命令前,应先执行一次握手测试以验证链路畅通状况良好。 ```c // 初始化USART1 void USART_Config(void){ GPIO_InitTypeDef GPIO_InitStruct; USART_InitTypeDef USART_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE); // 配置PA9作为USART1_TX, PA10作为USART1_RX GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStruct); USART_InitStruct.USART_BaudRate = 9600; USART_InitStruct.USART_WordLength = USART_WordLength_8b; USART_InitStruct.USART_StopBits = USART_StopBits_1; USART_InitStruct.USART_Parity = USART_Parity_No; USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1,&USART_InitStruct); USART_Cmd(USART1,ENABLE); } ``` #### 三、基本功能实现方式 当上述准备工作完成后,则可着手编写实际业务逻辑代码来操控该语音播报设备了。下面给出一段简单的例子用来触发特定编号的声音文件播放: ```c #include "stm32f1xx_hal.h" #define CMD_PLAY_FILE "\xA7\xF0" /* 播放指定序号的MP3/WAV */ #define FILE_ID "\x00\x01" /* 文件ID */ HAL_StatusTypeDef Play_Sound(uint8_t *file_id){ uint8_t cmd[] = {CMD_PLAY_FILE[0], CMD_PLAY_FILE[1]}; HAL_UART_Transmit(&huart1,cmd,sizeof(cmd),100); HAL_Delay(10); HAL_UART_Transmit(&huart1,file_id,strlen((char*)file_id),100); return HAL_OK; } int main(){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART1_UART_Init(); while (1){ Play_Sound(FILE_ID); HAL_Delay(5000); } } ``` 此段代码展示了如何构建并发出一条完整的控制指令给到JQ6500,从而使其按照预设规则选取对应的音频资源予以回放。值得注意的是这里采用了十六进制表示法定义了一些常量字符串,这有助于提高编码效率同时也便于后续维护调整。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值