一: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线。然后你插上电脑,就可以了,就会出现以下情况
这样就可以了,先要下的进去语音,才能用串口调试一下各个指令。哦,对,还有一个合成语音软件,做语音播报一般都是合成自己需要的语音就可以,如果你需要,留言给我,我可以分享给你!
四:软件控制
我是用STM32实现的,用了一个串口,然后通过程序实现语音播放
void uart3_init(u32 bound){
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能USART3,GPIOB时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
//USART3_TX GPIOB.10
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
//USART3_RX GPIOB.11初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOB, &GPIO_InitStructure);
//USART 初始化设置
USART_InitStructure.USART_BaudRate = bound;//串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
USART_Init(USART3, &USART_InitStructure);
// USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启串口接受中断
USART_Cmd(USART3, ENABLE);
}
//音乐播放 7e 04 03 00 02 ef
void Play(u16 cmd)
{
USART_SendData(USART3,0x7E);
delay_ms(1);
USART_SendData(USART3,0x04);
delay_ms(1);
USART_SendData(USART3,0x03);
delay_ms(1);
USART_SendData(USART3,0x00);
delay_ms(1);
USART_SendData(USART3,cmd);
delay_ms(1);
USART_SendData(USART3,0xEF);
delay_ms(1);
}
五:总结
1、语音模块一般都要搭一个喇叭才能外放声音,我是接了一个0.5欧8w的喇叭,接在原理图spk那里。
2、更新语音插入无显示,尝试换一根usb线。
3、串口调发送数据以十六进制
4、出现语音断续,可能是电压的问题。