Arduino串口控制DY-SV5W音频播放

以下为DY-SV5W介绍摘抄模块应用手册

1.产品概述

DY-SV5W是本司自主研发的一款智能语音模块,集成IO分段触发,UART串口控制,ONE_line单总线串口控制,标准MP3等7种工作模式,简单拨码开关设置;板载5W D类功放,可直接驱动4Ω,3~5W喇叭;支持MP3,WAV解码格式,最大支持32G TF卡存储,可通过USB数据线连接电脑更新TF卡存储音频文件。

2.产品特性

1、支持MP3、WAV解码格式。

2、支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48。

3、24位DAC输出,动态范围支持90dB,信噪比支持85dB。

4、完全支持FAT16/FAT32文件系统,最大支持32G的TF卡。

5、自带5W D类功放,可直接驱动4Ω,3~5W喇叭。

6、UART串口控制语音播报功能,可控制播放,暂停,选曲,音量加减等功能,最大选曲65535首曲目,波特率9600bit/s。

7、支持IO触发播放功能,8个IO口单独触发8首曲目或8个IO口组合触发255首曲目。

8、支持One_line单总线串口控制,可控制播放,暂停,选曲,音量加减等功能。

9、支持3个配置IO进行多达7种工作模式选择,拨码开关设置简单。

3.模块接口及功能定义

Arduino串口控制DY-SV5W音频播放_第1张图片

引脚定义

引脚名称 引脚描述
5V电源正极 接5V电源正极
TXD/IO0 IO触发模式下为输入引脚IO0;UART控制模式下为TX引脚,连接控制端(MCU)的RX
RXD/IO1 IO触发模式下为输入引脚IO1;UART控制模式下为RX引脚,连接控制端(MCU)的TX
IO2 IO触发模式输入引脚IO2
IO3 IO触发模式输入引脚IO3
IO4/ONE_LINE IO触发模式输入引脚IO4;One_Line一线串口控制模式数据接收引脚
IO5 IO触发模式输入引脚IO5
IO6 IO触发模式输入引脚IO6
IO7 IO触发模式输入引脚IO7
BUSY 播放曲目时输出低电平(0V),播放结束输出高电平(3.3V)

IO输入输出特性

IO输入特性
VIL 低电平输入 0 0.8 V
VIH 高电平输入 2.7 3.3 V
IO输出特性
VoL 低电平输出 0 0.33 V

拨码开关模式配置

对应拨码开关上的编号 1 CON1 拨到数字端为低电平(下拉) 拨到ON端为高电平(上拉)

Arduino串口控制DY-SV5W音频播放_第2张图片

注:“按键组合播放”是指IO0-IO7输出对应的电平后恢复原来的高电平,类似于按键触发一次

“电平组合播放”是指IO0-IO7输出对应的电平后保持电平不变

“I/O组合(独立)模式0”与“I/O组合(独立)模式1”的区别在于前者模式释放电平后继续播放当前曲目至结束,后者模式释放电平后立即停止播放曲目。

4.模块尺寸

Arduino串口控制DY-SV5W音频播放_第3张图片

5 UART串口模式操作说明

5.1 通信格式

采用全双工串口通信;

波特率为9600,数据位:8 ,停止位1位,检验位 N。

起始码-指令类型-数据长度(n)-数据1-数据n-和检验(SM)

l ※ 指令码 :固定为AA。

l ※ 指令类型 : 用来区分指令类型。

l ※ 数据长度:指令中的数据的字节数。

l ※ 数据 :指令中的相关数据,当数据长度为1时,表示只有CMD,没有数据位。

l ※ 和检验 :为之前所有字节之和的低8位,即起始码到数据相加后取低8位。

※ 数据格式:发送的数据或命令,高8位数据在前,低8位在后。

5.2 通信协议

以下是本芯片返回和能识别的数据定义。

  1. 播放状态定义 :系统上电处于停止状态。

※ 00(停止) 01(播放) 02(暂停)

  1. 盘符定义: 切换盘符后处于停止状态。

※ USB:00 SD:01 FLASH:02 NO_DEVICE:FF

  1. 音量:音量总共为31级,0-30级,上电默认为20级。

  2. 播放模式定义:上电默认为单曲停止。

※ 全盘循环(00):按顺序播放全盘曲目,播放完后循环播放。

※ 单曲循环(01):一直循环播放当前曲目。

※ 单曲停止(02):播放完当前曲目一次停止。

※ 全盘随机(03):随机播放盘符内曲目。

※ 目录循环(04):按顺序播放当前文件夹内曲目,播放完后循环播放,目录不包含子目录。

※ 目录随机(05): 在当前目录内随机播放,目录不包含子目录。

※ 目录顺序播放(06):按顺序播放当前文件夹内曲目,播放完后停止,目录不包含子目录。

※ 顺序播放(07):按顺序播放全盘曲目,播放完后停止。

  1. EQ定义:上电默认EQ为NORMAL(00)。

※ NORMAL(00) POP(01) ROCK(02) JAZZ(03) CLASSIC(04)

  1. 组合播放定义:组合播放是按文件名来组合,文件要求存储在“XY”文件夹下,可以把要组合的文件名称更改为两个字节的名称,一般建议用数字表示。如: 01.mp3,02.mp3,也可以用两个字母或一个汉字命名。

5.3 通信指令

Arduino串口控制DY-SV5W音频播放_第4张图片

UART调试工具
Arduino串口控制DY-SV5W音频播放_第5张图片

UART模式详细开发资料查看“UART模式应用手册”

以下为Arduino串口通信控制DY-SV5W音频模块播放程序

#define UART_VIOCE   Serial3 // 音频通信
unsigned char vqTxBuf[6] = { 0xAA, 0x07, 0x02, 0x00, 0x00, 0x00 };  //选定曲目播放,改变4、5字节
unsigned char vqcTxBuf[7] = { 0xAA, 0x16, 0x03, 0x01, 0x00, 0x00 , 0x00 };  //选定曲目插播,改变5、6字节
unsigned char vbTxBuf[6] = { 0xAA, 0x02, 0x00, 0xAC             }; //播放
unsigned char vcTxBuf[6] = { 0xAA, 0x01, 0x00, 0xAB             }; //查询播放状态,00 停止; 01 播放; 02 暂停
unsigned char vtTxBuf[6] = { 0xAA, 0x10, 0x00, 0xBA             }; //结束播放
unsigned char vxTxBuf[6] = { 0xAA, 0x18, 0x01, 0x01, 0xc4       }; //单曲循环
unsigned char vdTxBuf[6] = { 0xAA, 0x18, 0x01, 0x02, 0xc5       }; //单曲播放
unsigned char v30TxBuf[6] = { 0xAA, 0x13, 0x01, 0x1E, 0xDC       }; //音量最大30级
unsigned char v20TxBuf[6] = { 0xAA, 0x13, 0x01, 0x14, 0xD2       }; //音量20级
unsigned char v25TxBuf[6] = { 0xAA, 0x13, 0x01, 0x19, 0xD7       }; //音量25级
unsigned char v10TxBuf[6] = { 0xAA, 0x13, 0x01, 0x0A, 0xC8       }; //音量10级

unsigned long previousMillis = 0; //millis延时使用
// 使用millis()替换delay延时 interval:ms
boolean doDelayMillisTime(unsigned long interval, boolean state)
{
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval)
  {
    previousMillis = currentMillis;
    state = !state;
  }
  return state;
}

void setup()
{
  UART_VIOCE.begin(9600);

  UART_VIOCE.write(v30TxBuf, 6); //初始化音量
  UART_VIOCE.write(vxTxBuf, 6);//单曲循环
  vqTxBuf[4] = 0x01;
  vqTxBuf[5] = 0xb4;
  UART_VIOCE.write(vqTxBuf, 6); //选定曲目默认播放
}

void loop()
{
	//每隔5秒插播一次音乐
	if (doDelayMillisTime(5000 , false) == true) {
      vqcTxBuf[5] = 0x03;
      vqcTxBuf[6] = 0xc7;
      UART_VIOCE.write(vqcTxBuf, 7);
    }
}

你可能感兴趣的:(Arduino)