最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Arduino语音模块-DFRduino Player MP3播放模块

Arduino 少儿编程 3003浏览 0评论
Arduino语音模块

友情提示:380元/半年,儿童学编程,就上码丁实验室

外 观

Arduino语音模块-DFRduino Player MP3播放模块

概 述

  • DFRduino Player 语音播放模块的设计初衷是为了让您的机器人会说话。
  • 如果机器人能与人进行简单的交流的话,那么机器人就会显的更加智能,同时也增加了不少可玩性。
  • DFRduino Player V3.0,改为炬力硬编解码芯片,增加了录音功能,支持中文TTS语音合成及更多指令,sd卡兼容性更强,兼容市面上常见的32GBytes及以下的SD卡 。
  • 模块具有立体声输出,可与有源音箱连接;2路功放输出,每路最大3W,可直接接喇叭;通过一个专用MP3编解码芯片进行处理,完全不占用Arduino或其他控制器上的资源,只需要将语音文件放置在SD卡中,Arduino或其他控制器便可以实现播放。
  • 也可以实现录音到sd卡中,还提供一个播放完毕提示端口,当播放完一首歌曲后,OUT 会输出一个高脉冲。

注意:当前版本USB功能暂未开发

技术规格

  • 工作电压:5V
  • 工作电压:大于200mA(带负载时)
  • 驱动负载:建议4欧或8欧(扬声器内阻)
  • 输出功率:每路最大3W(4欧内阻扬声器)
  • 存储卡:完全支持FAT16、FAT32文件系统,最大支持32G的TF卡
  • 支持格式:.WAV、.MP3这两种文件格式
  • 通信格式:19200bps,格式8 N 1
  • 模块尺寸:52 X 37mm
  • 模块重量:30g

产品样式图
Arduino语音模块-DFRduino Player MP3播放模块

  • 串口排针接口:

    • 1.+5V 电源正,要保证电源电压为5V,电流最好大于1000毫安,如果电流不够需要将音量调小或者使用单个喇叭播放。
    • 2.GND 电源地
    • 3.RX 串口数据接收端
    • 4.TX 串口数据发送端
    • 5.OUT 语音结束中断输出,当语音结束时输出一个1毫秒低电平
  • 扬声器接口:

    • L_SP:左声道
    • R_SP:右声道
  • 红色指示灯:电源指示灯

  • 绿色指示灯:初始化成功后将长亮,如果SD卡未插好或SD是坏的,指示灯将一直闪烁,同时串口会输出 Plese check micro SD cardrn

模块通讯协议

串口模式,波特率19200bps,格式8N1。

通讯指令使用字符串形式,rn表示回车换行符,发送命令后有字符串形式的返回值。

功能名称 指令 返回值 备注
暂停播放 :prn 成功返回pausern rn表示回车换行符
继续播放 :srn 成功返回startrn rn表示回车换行符
下一首 :nrn 成功返回nextrn 失败返回 falsern rn表示回车换行符
上一首 :urn 成功返回key uprn rn表示回车换行符
音量设置 :v Xrn(备注:是v空格再跟数字,范围为0-255,0表示静音,255表示最大声音) 成功返回vol set okrn X=0-255,数字越大音量越大
查看歌曲列表 :lrn 成功返回歌曲列表rn 歌曲列表最后会紧跟一个End of FileList
指定文件播放 语音文件名称rn 成功返回Play okrn 失败返回 Not foundrn 播放完毕返回 Play endrn 语音文件名称必须为大写字母,不超过8个英文字母或者4个中文字,输入文件名需要包含类型后缀
录音开始 :rrn 成功返回recordrn 开启mic录音,启动录音后,中间不再支持其他控制命令,除非发送:e退出录音应用。
录音结束 :ern 输出:exit recordrn 停止录音,并依次自动保存为:REC001.mp3 REC002.mp3 ……
播放tts语音 :t 语音文字rn 成功返回Play okrn 失败返回 Not foundrn 播放完毕返回 Play endrn 语音不超过21个中文字
版本查询 :irn 成功返回DFRduino Player V3.0 rn www.DFRobot.com rn

使用教程
按键录音机

    1. 将SD卡插到sd卡插槽中
    1. 为模块供电
    1. 按住REC按钮不放,对着麦克风说话,说完后松开REC按钮。
    1. 录音文件将存放在RECORD目录下,文件名为RECxxx.mp3

简易录音机

a) 目标:实现录制mp3文件到sd卡中

b) 硬件清单

  • DF_UNO 1
  • ADKeyboard 1
  • 本模块 1
  • micro SD卡读写器
  • 杜邦线

c) 软件清单

  • Arduino IDE

d) 连线图
Arduino语音模块-DFRduino Player MP3播放模块

e) 操作步骤

  • 在电脑上先将SD卡格式化为FAT格式,音频文件放在根目录下。
  • 将SD卡插入模块内
  • 打开Arduino IDE
  • 将下面的代码上传到UNO (注意:UNO只有一个串口,因此程序下载和DFRduino Player模块不能同时使用)
  • 按连接图进行连线,并对UNO进行供电,建议使用外部电源。
 /////////////////////////////////////////////////////////////////////////////////
 //使用命令完成录音
 //:rrn 开始录音指令
 //:ern 结束录音指令
 /////////////////////////////////////////////////////////////////////////////////
 
 //串口接线方式
 //Arduino    MP3
 //TX         RX
 //RX         TX
 //5V         +5V
 //GND        GND
 
 int adc_key_val[5] ={600, 650, 700, 800, 950 };
 int NUM_KEYS = 5;
 int adc_key_in;
 int key=-1;
 int oldkey=-1;
 
 void setup()
 {
   Serial.begin(19200); 
   delay(2000);                   //Wait for initialization
   Serial.println("\:v 200");    //Set the volume, from 0 (minimum)-255 (maximum)
   delay(50);
 }
 
 
 void loop()
 {
   adc_key_in = analogRead(0);    // read the value from the sensor  
 
   key = get_key(adc_key_in);    // convert into key press
    
   if (key != oldkey)     // if keypress is detected
    {
     delay(50);     // wait for debounce time
     adc_key_in = analogRead(0);    // read the value from the sensor  
     key = get_key(adc_key_in);    // convert into key press
     if (key != oldkey)             
     {          
       oldkey = key;
       if (key >=0){
         switch(key)
         {
            case 0:
                   Serial.println("\:r"); // start record
                   break;
            case 1:
                   Serial.println("\:e");// exit record
                   break;
            default:
                   break;   
         }                 
       }
     }
   }
  delay(100);
 }
 
 // Convert ADC value to key number
 int get_key(unsigned int input)
 {
     int k;
     
     for (k = 0; k < NUM_KEYS; k++)
     {
       if (input < adc_key_val[k])
      {
             return k;
       }
    }
     if (k >= NUM_KEYS)k = -1;  // No valid key pressed 
     return k;
 }

f) 实现效果 按下按钮实现相应功能:

  • S1 – 开始录音
  • S2 – 结束录音

简易播放器

a) 目标:实现播放、暂停、下一首、上一首功能

b) 硬件清单

  • DF_UNO 1
  • 扬声器 2
  • ADKeyboard 1
  • 本模块 1
  • micro SD卡读写器
  • 杜邦线

c) 软件清单

  • Arduino IDE

d) 连线图
Arduino语音模块-DFRduino Player MP3播放模块

  • 在电脑上先将SD卡格式化为FAT格式,音频文件放在根目录下。
  • 将SD卡插入模块内
  • 打开Arduino IDE
  • 将下面的代码上传到UNO (注意:UNO只有一个串口,因此程序下载和DFRduino Player模块不能同时使用)
  • 按连接图进行连线,并对UNO进行供电,建议使用外部电源。
 /////////////////////////////////////////////////////////////////////////////////
 //将音频文件放在根目录下,支持.WAV、.MP3 这两种文件格式
 //电压 5V,电流保证有1000毫安,如果电流不够需要将音量调小或者使用单个喇叭
 //指示灯的功能:
 //               等待初始化成功后将长亮,如果SD卡未插好将一直闪烁同时
 //               如果是串口模块将输出 Plese check micro SD cardrn
 ///////////////////////串口通信方式/////////////////////////////////////////////
 // 播放音频:语音文件名称rn 播放相应名称的歌曲,如果找到歌曲播放正确将返回 Play okrn
 // 如果失败返回 Not foundrn; 如果播放完毕返回 overrn(rn表示回车换行)
 // 语音文件名称不超过8个英文字母,4个中文。
 // 暂停播放\:prn   成功返回pausern
 // 继续播放\:srn   成功返回startrn
 // 播放下一首\:nrn  成功返回nextrn,失败返回 falsern
 // 播放上一首\:urn  成功返回key uprn
 // 音量设置\:v 255rn,设置音量大小 数字 0-255 数字越大音量越大,成功返回Play endrn
 /////////////////////////////////////////////////////////////////////////////////
 
 //串口接线方式
 //Arduino    MP3
 //TX         RX
 //RX         TX
 //5V         +5V
 //GND        GND
 
 int adc_key_val[5] ={600, 650, 700, 800, 950 };
 int NUM_KEYS = 5;
 int adc_key_in;
 int key=-1;
 int oldkey=-1;
 
 void setup()
 {
   Serial.begin(19200); 
   delay(2000);                   //Wait for initialization
   Serial.println("\:v 200");    //Set the volume, from 0 (minimum)-255 (maximum)
   delay(50);
 }
 
 
 void loop()
 {
   adc_key_in = analogRead(0);    // read the value from the sensor  
 
   key = get_key(adc_key_in);    // convert into key press
    
   if (key != oldkey)     // if keypress is detected
    {
     delay(50);     // wait for debounce time
     adc_key_in = analogRead(0);    // read the value from the sensor  
     key = get_key(adc_key_in);    // convert into key press
     if (key != oldkey)             
     {          
       oldkey = key;
       if (key >=0){
         switch(key)
         {
            case 0:
                   Serial.println("\:p"); // Pause
                   break;
            case 1:
                   Serial.println("\:s");// Continoue to play
                   break;
            case 2:
                   Serial.println("\:n");  // Play next
                   break;
            case 3:
                   Serial.println("\:u"); // Play previous
                   break;       
            case 4:                        //Play specified song
                   Serial.println("\YOURS.mp3"); 
                   break;   
         }                 
       }
     }
   }
  delay(100);
 }
 
 // Convert ADC value to key number
 int get_key(unsigned int input)
 {
     int k;
     
     for (k = 0; k < NUM_KEYS; k++)
     {
       if (input < adc_key_val[k])
      {
             return k;
       }
    }
     if (k >= NUM_KEYS)k = -1;  // No valid key pressed 
     return k;
 }

f) 实现效果 按下按钮实现相应功能:

  • S1 – 暂停
  • S2 – 继续播放
  • S3 – 播放上一首
  • S4 – 播放下一首
  • S5 – 播放指定歌曲(由程序指定)

更多
原理图
SVG矢量图
CAD文件

本文整理于 DFRobot wiki

您必须 登录 才能发表评论!