DY-SV17F 是一款智能语音模块,集成 IO 分段触发,UART 串口控制,ONE_line 单总线串口控制,标准 MP3 等 7 种工作模式;板载 5W D 类功放,可直接驱动 4Ω,3~5W 喇叭;支持 MP3,WAV 解码格式,板载 32Mbit(4MByte)flash 存储,可通过 USB 数据线连接电脑更新音频文件。
本次将会以IO 分段触发实现语音自动播报
下文由Arduino控制DY-SV17F的“IO独立模式0”展开

电路配置

上图中的上下拉电阻不可以省略。
按要求把外围电路搭建好
| Arduino UNO | DY-SV17F |
|---|---|
| D9 | IO0 |
| D8 | IO1 |
| D7 | IO2 |
| D6 | IO3 |
| D5 | IO4 |
| D4 | IO5 |
| D3 | IO6 |
| D2 | IO7 |
| 5V | 5V |
| GND | GND |

先拔掉Arduino UNO上5V接口的线 然后用USB数据线把DY-SV17F模块连接上电脑,
打开我的电脑,会发现我的电脑中多了一个名称为“U盘”的盘符,空间大小只有不到4M,这就是我们放音频文件的地方,所以要注意音频文件的大小。导入需要播报的音频文件,注意命名格式为“0000X。mp3”其中X为1-8的数字

一切准备就绪后开始实验
通过改变Arduino UNO的IO口电平来驱动DY-SV17F播报预存的音频文件

由手册可知,IO独立模式是需要把DY-SV17F的8和IO口默认拉高,然后通过拉低某一个IO的口电平来选择播放该IO口对应的音频文件。
那么我们可以通过创建一个函数来专门用于把DY-SV17F的8个IO口拉高
void INIT()
{
digitalWrite(IO0,HIGH);
digitalWrite(IO1,HIGH);
digitalWrite(IO2,HIGH);
digitalWrite(IO3,HIGH);
digitalWrite(IO4,HIGH);
digitalWrite(IO5,HIGH);
digitalWrite(IO6,HIGH);
digitalWrite(IO7,HIGH);
}
每一次播放完一段音频后都要调用这个初始化函数去拉高所有IO口,使DY-SV17F恢复默认状态
现在来测试播放效果
主函数
void loop() {
// put your main code here, to run repeatedly:
Play(1);
delay(1000);
Play(2);
delay(1000);
Play(3);
delay(1000);
}
上面是播放DY-SV17F存储内的第1-3个音频文件,每个文件播放间隔1秒钟,
需要播放其它的音频文件只需要更改
Play(X);
“X”指需要播放的第几段音频文件。
下面来看看效果

DY-SV17F音频测试