Arduino Uno接JQ8900-16p语音播报模块

Arduino Uno接JQ8900-16p语音播报模块

前言

​ 记录一个比较好用的语音播报模块JQ8900,这个模块成本低廉(十几块就能买到),使用方便。

​ 此外,这个模块还有以下优点:

​ ①搭载配套的软件可以支持文字转语音,生成mp3格式的文件,可以像U盘一样拷贝到模块中,并在代码中选择播放某个mp3文件;

​ ②有多种人声可选,可调音量、音调和音速。

一、所需材料及接线

所需主要材料:

1.Arduino Uno开发板一块;

2.JQ8900-16p语音播报模块(含喇叭)一个;

3.杜邦线若干

语音播报模块如下图:
在这里插入图片描述

将mp3文件拷贝进入模块的内存接线:找到一根合适的数据线,一端接JQ8900模块,另一端连接电脑的USB口,将文件直接复制进去即可。
在这里插入图片描述

Arduino控制JQ8900模块接线:

Arduino UnoJQ8900-16p
3VPP
GNDGND
5VDC-5V
JQ8900-16p喇叭
SPK-正极
SPK+负极

在这里插入图片描述
(白色的是喇叭)

二、代码

通过串口控制选择对应的mp3文件播放:

/*
整合系统功能:
1.语音提示-串口选择mp3播放

*/

char val="";//接收串口发送过来的值

int pin = 3;//接vpp引脚

void setup()
{
    pinMode(pin,OUTPUT);
    Serial.begin(9600);//设置波特率
    Serial.println("请输入你要发送的数据:");//提示字符
}
 
void loop()
{
  while(Serial.available()>0){//检验在串口缓存区中是否有数据,如果有则返回1,没有就是0.
    val = char(Serial.read());//Serial.read()一位一位的从串口缓存区里读数据
    delay(10);

  if(val=='S')
    Sys_start();
  if(val=='T')
    Say_thanks();
  }

}

//系统已启动-语音提示
void Sys_start()
{
    //设置音量为20
    SendData(0x0a);    //清空数字
    SendData(0x02);    //音量20
    SendData(0x00);
    SendData(0x0c);    //设置音量
    delay(2000);    //延时
    
    //选取曲目1播放
    SendData(0x0a);//清空数字
    SendData(0x01);//曲目数字,对应00001.mp3
    SendData(0x0b);//选曲播放
    delay(2000);
    
    //开始播放
    //SendData(0x11);//开始播放
    //delay(2000);
}

//谢谢使用-语音提示
void Say_thanks()
{
    //设置音量为20
    SendData(0x0a);    //清空数字
    SendData(0x02);    //音量20
    SendData(0x00);
    SendData(0x0c);    //设置音量
    delay(2000);    //延时
    
    //选取曲目2播放
    SendData(0x0a);//清空数字
    SendData(0x02);//曲目数字,对应00002.mp3
    SendData(0x0b);//选曲播放
    delay(2000);
    
    //开始播放
    //SendData(0x11);//开始播放,这部分可以没有
    //delay(2000);
}

void SendData (char addr )//发送函数
{
    digitalWrite(pin,HIGH); /*开始拉高*/
    delayMicroseconds ( 1000 );
    digitalWrite(pin,LOW); /*开始引导码*/
    delayMicroseconds ( 3200 );/*此处延时最少要大于2ms*/
    for (int i = 0; i < 8; i++ ) /*总共8位数据  */
    {
        digitalWrite(pin,HIGH);
        if ( addr & 0x01 ) /*3:1表示数据位1,每个位用两个脉冲表示  */
        {
            delayMicroseconds ( 600 );
            digitalWrite(pin,LOW);
            delayMicroseconds ( 200 );
        }
        else        /*1:3表示数据位0 ,每个位用两个脉冲表示  */
        {
            delayMicroseconds (200);
            digitalWrite(pin,LOW);
            delayMicroseconds ( 600 );
        }
        addr >>= 1;
    }
    digitalWrite(pin,HIGH);
}

实现的效果是通过串口输入不同的值选择不同的mp3播放。

相关资料

语音播报模块相关的语音合成软件和资料:

链接:https://pan.baidu.com/s/1q0tWEnxipMKokLdAQdNoUQ?pwd=sv4m
提取码:sv4m
–来自百度网盘超级会员V5的分享

### JQ6500语音播报模块在面包板上的接线图 对于JQ6500语音播报模块,在面包板上连Arduino UNO R3开发板的具体方式如下: #### 硬件准备 - **JQ6500语音播报模块** - **Arduino UNO R3 开发板** - 杜邦线若干 - 小面包板一块 #### 连说明 为了实现基本的功能测试,需按照下述方式进行连线。此配置适用于大多数基础应用场景。 | JQ6500引脚 | 功能描述 | 对应Arduino引脚 | |------------|----------------|------------------| | VCC | 电源正极输入 | 5V | | GND | 地 | GND | | TX | 数据发送端 | RX (D0) | | RX | 数据收端 | TX (D1) | 具体接线方法可以参照以下示意代码来理解各个引脚的作用以及如何通过串口通信控制该模块播放音频文件[^1]。 ```cpp // 初始化串口通讯波特率为9600bps void setup() { Serial.begin(9600); } // 主循环函数 void loop() { // 发送指令给JQ6500, 假设要播放编号为1的曲目 playTrack(1); delay(5000); // 暂停五秒再重复执行一次 } // 定义一个用于向JQ6500发送命令的方法 void playTrack(int trackNumber){ char command[] = {0x7E, 0xFF, 0x06, 0x02, 0x00, lowByte(trackNumber), highByte(trackNumber), 0xEF}; for(int i=0; i<sizeof(command)/sizeof(char); ++i){ Serial.write(command[i]); } } ``` 上述C++程序展示了怎样利用Arduino IDE编写简单的程序片段去操作JQ6500语音播报模块完成指定音轨的播放任务。注意这里使用的`Serial.write()`函数是用来向外部设备传输数据流的一种手段;而实际应用中可能还需要考虑更多细节比如错误处理机制等[^2]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值