我仍然收到许多发布Arduino Sound Machine项目的请求。我认为现在是为初学者准备入门书的合适时机。首先,保持低期望,因为我在这里没有什么新的东西可以分享。我只是想帮你构建一个基于Arduino的小型语音生成器项目 - 仅此而已。好的,让我们开始吧!
我在这里介绍的项目是基于旧的,但仍然可用的串行MP3迷你模块MP3-TF-16P,这是一个廉价的MP3模块,具有放大的单声道扬声器输出。该模块可用作带有电池、扬声器和按钮的独立模块,或与 Arduino 或任何其他具有串行通信 (UART) 功能的微控制器结合使用。根据数据表,这种易于使用、稳定且可靠的模块提供了完美的集成MP3和WMV硬件解码。
最小的模块有一个SD卡端口,并从SD卡读取MP3文件。此外,该模块具有用于与微控制器通信的TX和RX引脚。它还具有DAC和USB功能。
主要特性(复制自数据表):
以下是围绕YX5200-24SS(内核)和8002(音频)IC构建的MP3-TF-16P模块的引脚。正如您在引脚排列数据中看到的那样,小MP3模块还在软件音量控制(DAC_R,DAC_L)下提供双声道(立体声)音频输出。
MP3-TF-16P 模块操作有三种模式 – 串行模式、AD 键模式和 I/O 模式。串行模式支持异步串行通信 – UART。
相关网站链接:
要与 Arduino 板配合使用,您只需要模块的 VCC、GND、SP+、SP-、TX 和 RX 引脚(其他引脚是可选的)。整个布线非常简单。该模块通过其标有TX和RX的引脚与Arduino Uno串行通信。在当前设置中,Uno 的引脚 D10 和 D11 充当软件串行库下的可编程 TX 和 RX。模块的扬声器输出引脚(SPK_1和SPK_2)被路由到小型扬声器。将一些MP3文件复制到SD卡并上传Arduino Sketch后,您可以看到模块上的红色LED在播放操作期间开始闪烁。
请注意,您只能将micro SD卡与模块一起使用(1GB足以快速入门)。大多数微型SD卡开箱即用,但设置可能无法读取以前使用的卡。如果是这样,请尝试使用micro SD卡适配器/读卡器和计算机格式化存储卡。该安装程序支持 FAT16 和 FAT32 文件系统。将micro SD卡插入计算机,转到“我的电脑”,右键单击SD卡,然后选择“格式化...”
接下来,在该Micro SD卡上创建一个名为MP3的新文件夹,并将mp3文件复制到那里。MP3文件应具有名称“0001名称.mp3”,“0002名称.mp3”等。请记住,您将MP3文件复制到micro SD卡中的顺序会影响播放顺序,即播放(1)功能在这里使用的Arduino Sketch中将播放复制到micro SD卡中的第一个MP3文件。
在下面,您可以看到我在上述硬件设置中使用的快速测试Arduino Sketch。坦率地说,这个Arduino Sketch是从Web获取的代码的改编版本。Arduino Sketch需要三个库 - “Arduino h”,“SoftwareSerial h”和“DFRobotDFPlayerMini.h”。
下载并安装第三个库后,只需复制并粘贴Arduino Sketch并上传(库下载链接https://github.com/DFRobot/DFRobotDFPlayerMini).
[code]
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h" // Requisite Library
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
void setup()
{
mySoftwareSerial.begin(9600);
Serial.begin(115200);
Serial.println();
Serial.println(F("MP3 TF 16P Module Test"));
Serial.println(F("Initializing MP3 TF 16P >>> (May take a couple of seconds)"));
if (!myDFPlayer.begin(mySoftwareSerial)) {
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true);
}
Serial.println(F("MP3 TF 16P Module Active!"));
myDFPlayer.volume(30); //Set volume value to 30
myDFPlayer.play(1); //Play the first mp3
}
void loop()
{
static unsigned long timer = millis();
if (millis() - timer > 5000) {
timer = millis();
// myDFPlayer.next(); //Play next mp3 every 5 seconds
}
if (myDFPlayer.available()) {
printDetail(myDFPlayer.readType(), myDFPlayer.read());
/*Print the detail message from MP3 TF 16P Module to handle different errors and states*/
}
}
void printDetail(uint8_t type, int value){
switch (type) {
case TimeOut:
Serial.println(F("Time Out!"));
break;
case WrongStack:
Serial.println(F("Stack Wrong!"));
break;
case DFPlayerCardInserted:
Serial.println(F("Card Inserted!"));
break;
case DFPlayerCardRemoved:
Serial.println(F("Card Removed!"));
break;
case DFPlayerCardOnline:
Serial.println(F("Card Online!"));
break;
case DFPlayerPlayFinished:
Serial.print(F("Number:"));
Serial.print(value);
Serial.println(F(" Play Finished!"));
break;
case DFPlayerError:
Serial.print(F("DFPlayerError:"));
switch (value) {
case Busy:
Serial.println(F("Card not found"));
break;
case Sleeping:
Serial.println(F("Sleeping"));
break;
case SerialWrongStack:
Serial.println(F("Get Wrong Stack"));
break;
case CheckSumNotMatch:
Serial.println(F("Check Sum Not Match"));
break;
case FileIndexOut:
Serial.println(F("File Index Out of Bound"));
break;
case FileMismatch:
Serial.println(F("Cannot Find File"));
break;
case Advertise:
Serial.println(F("In Advertise"));
break;
default:
break;
}
break;
default:
break;
}
}
[/code]
这是上述Arduino Sketch的Serial Monitor窗口:
这是我的快速测试设置:
老实说,我讨厌我的小聚酯薄膜扬声器的微弱单声道MP3输出。因此,我寻找一种简单的方法来获得立体声输出,并找到了一个很棒的技巧!我将MP3-TF-16P模块的输出引脚DAC_R和DAC_L连接到一个有点“黑客入侵”的PC多媒体扬声器的信号输入点L和R,通过100Ω电阻,而其公共信号输入点(G)连接到GND。然后,模块的现有单声道扬声器输出引脚(SPK_1和SPK_2)连接到2引脚螺丝端子,作为可选的单声道声音插座。尽管如此,修改后的设置仍然发挥出色!
这是我使用的PC多媒体扬声器系统。幸运的是,它有自己的USB电源。
最初的DFPlayer模块(来自DFRobotics)是一个很棒的小型MP3播放器模块,价格实惠。这款便宜的MP3-TF-16P模块的性能也相当不错。该MP3-TF-16P模块的原理图基本上是YX5200-24SS MP3播放器芯片供应商描述的官方参考设计的近似复制品(见下文),但它在BTL(桥接负载)模式下采用了伪造的AB类(不是D)8引脚8002音频放大器芯片。
随它去!您刚刚学习了如何将MP3-TF-16P迷你MP3播放器模块连接到Arduino Uno以及如何开始播放。显然,将基于micro SD卡的MP3播放器模块连接到Arduino打开了一个真正的数字音频的新世界。您可以编辑此基本想法,以便在许多需要自定义基于语音的报警器的项目中使用。
这里介绍的Mini MP3播放器模块是一个小巧而便宜的模块,可直接输出一个扬声器。该模块还可以用作独立模块,并附有电池、扬声器和按钮。值得注意的是,这个超级可爱的模块有很多变体,包括假货。我观察到这些假货并不支持最新DFR库的所有功能(假货有效,但形式有限)。此外,如果您在播放过程中听到非常响亮的噪音,则需要将模块电源与Arduino电源分开和/或简单地将模块的Vcc降低到4.2VDC。这是DFPlayerMini备忘单的有用链接
https://reprage.com/post/dfplayer-mini-cheat-sheet
页面更新:2024-04-29
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号