• Arduino DY-SV17F自动语音播报


    语音播报DY-SV17F


    在这里插入图片描述

    点击图片购买

    DY-SV17F简介

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

    工作模式说明

    1. IO 组合模式0:
      单片机控制 I/O 组合触发(低电平有效)指定的曲目后释放(IO0-IO7 恢复高电平),播放完当前曲目停止;播放中途重新触发,播放新的曲目,播放结束停止;若一直触发(不释放电平),循环播放。
    2. IO 组合模式 1:
      单片机控制 IO 组合触发(低电平有效)指定的曲目,一直循环播放指定曲目,电平释放(IO0-IO7
      恢复高电平)即停止播放。播放中途释放电平,即刻停止播放。
    3. IO 独立模式 0:
      IO0-IO7 独立控制 8 首曲目, IO 触发(低电平有效)指定的曲目后释放(IO0-IO7 恢复高电平),播放完当前曲目停止;播放中途重新触发,播放新的曲目,播放结束停止;若一直触发(不释放电平),循环播放。
    4. IO 独立模式 1:
      IO0-IO7 独立控制 8 首曲目,IO 触发(低电平有效)指定的曲目,一直循环播放指定曲目,
      电平释放(IO0-IO7 恢复高电平)即停止播放。播放中途释放电平,即刻停止播放。
    5. UART 串口模式:
      通过UART串口发送
      起始码-指令类型-数据长度(n)-数据 1-数据 n-和检验(SM)
      来实现模块的语音播报、上一曲、下一曲等功能。
    6. One_line 单总线串口模式:
      通过特定的时序,往模块发送0码或1码的组合实现模块的语音播报、上一曲、下一曲等功能。

    下文由Arduino控制DY-SV17F的“IO独立模式0”展开

    在这里插入图片描述

    点击图片购买

    IO 独立模式 0

    电路配置
    在这里插入图片描述
    上图中的上下拉电阻不可以省略。

    接线

    按要求把外围电路搭建好

    Arduino UNODY-SV17F
    D9IO0
    D8IO1
    D7IO2
    D6IO3
    D5IO4
    D4IO5
    D3IO6
    D2IO7
    5V5V
    GNDGND

    在这里插入图片描述
    先拔掉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);
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    每一次播放完一段音频后都要调用这个初始化函数去拉高所有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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    上面是播放DY-SV17F存储内的第1-3个音频文件,每个文件播放间隔1秒钟,
    需要播放其它的音频文件只需要更改

    Play(X);
    
    • 1

    “X”指需要播放的第几段音频文件。
    下面来看看效果
    在这里插入图片描述

    DY-SV17F音频测试

  • 相关阅读:
    node32-综合案例图书管理9
    【Linux】NFS搭建存储服务器
    【电机控制】FOC电机控制
    Redis系列9:Geo 类型赋能亿级地图位置计算
    vue3 uniapp h5 安卓和iOS开发适配踩坑记录
    ESP32蓝牙实例-BLE服务器与电池电源指示
    【系统架构设计】 架构核心知识: 2 云原生架构
    MySQL - MySQL 三范式理解
    Linux--进程控制
    pubsub消息订阅与发布
  • 原文地址:https://blog.csdn.net/qq_42250136/article/details/125514618