风筝
发表于: 2017-6-29 16:49:42 | 显示全部楼层

Simple-Arduino-Audio-Player-with-LM386-amplifier.jpg


在我们的项目中添加声音或音乐总是会使其看起来更酷一些,听上去更有吸引力。特别是如果您使用的是Arduino开发板,并且有很多空余的引脚,只需要添加一个SD卡模块和一个普通的扬声器即可轻松添加音效。在本文中,我将向您展示使用您的Arduino开发板来播放音乐以及添加音效是多么容易。感谢Arduino社区开发了一些库,可以使用快速而简便的方式实现。。我们也在这里使用了LM386芯片进行放大和噪声消除。


需要的硬件:

1.  Arduino UNO开发板

2.  SD卡读卡器模块

3.  SD卡

4.  LM386音频放大器芯片

5.  10uf电解电容

6.  100uf电解电容

7.   1K和10K电阻

8.  按键

9.  面包板

10.  连接导线


准备WAV音频文件:

为了使用Arduino开发板从SD卡播放声音,我们需要.wav格式的音频文件,因为Arduino开发板可以播放wav特定格式的音频文件。要制作一个arduino mp3播放器,使用arduino开发板有很多可用的mp3扩展板。或者为了在arduino中播放mp3文件,有些网站可以用来将您计算机上的任何音频文件转换成特定的WAV文件。


所以要将任何音频文件转换为wav格式,请按照以下步骤操作:

步骤1:点击“Online Wav Converter”进入网站。


步骤2:Arduino可以播放下列格式的wav文件。稍后您可以尝试各种设置,但以下这些设置经过验证是质量最好的。

位分辨率
8位
采样率
16000 Hz
音频频道
PCM格式
PCM无符号8位

步骤3:在网站上点击“choose file”,选择要转换的文件。然后进入上述设置。一旦完成,它应该看起来类似下面的图像:

converting-audio-files-into-wav-format-for-playing-using-Arduino.png


步骤4:现在,点击“Convert File”,您的音频文件将转换为.Wav文件格式。转换完成后也会自动下载。


步骤5:最后格式化您的SD卡,并保存.wav音频文件。在添加此文件之前,请确保格式化。还要记住您的音频文件的名称。同样地,您可以选择任何四个音频,并使用名称1、2、3和4(名称不应更改)保存这些文件。我转换了四首歌,并将它们保存为1.wav、2.wav、3.wav和4.wav,如下所示。

songs-in-wav-format-for-playing-using-Arduino.png


电路原理和硬件:

该Arduino音频文件播放器的电路原理图很简单。完整的电路图如下图所示。

Simple-Arduino-Audio-Player-with-LM386-amplifier-circuit-diagram.png


我们知道我们的音频文件保存到SD卡中,因此我们将一个SD卡读卡模块连接到Arduino接口。 Arduino和SD卡使用SPI通信协议进行通信。因此,模块连接到Arduino的SPI引脚接口,如上图所示。在下表中进一步列出。

Arduino
SD卡模块
+5V
VCC
GND
GND
12引脚
MISO(主进从出)
11引脚
MOSI(主出从进)
13引脚
SCK(同步时钟)
4引脚
CS(芯片选择)


现在,Arduino将可以从SD卡读取音乐文件,并将其在9引脚上播放。但是由Arduino的9脚上产生的音频信号不会发出声音。因此,我们使用LM386低电压音频放大器IC进行放大。

上图所示的放大器设计为增益为200,Vdd(引脚6)由Arduino的5V引脚供电。如果要增加/减少音量,您可以增加/减少提供给此引脚的电压。它可以最大承受15V。点击此链接了解更多关于LM386的200增益放大配置。

我们还有两个按钮连接到Arduino的引脚2和3。这些开关分别用于播放歌曲的下一曲目,和播放/暂停音乐。我已经测试过这些按钮了,您可以随时播放歌曲。


您可以将此电路完全组装在面包板上,如下图所示

Simple-Arduino-music-Player-fritzing-breadboard-image.png


编程Arduino:

一旦我们准备好了硬件和SD卡,我们就差一步来播放这些歌曲了。将SD卡插入SD卡模块中,然后按照以下步骤操作。

步骤1:如前所述,我们将在该项目中使用库。库文件的链接如下。点击它,选择“Clone or download”,然后选择下载保存ZIP。

●  TMRpcm库


步骤2:通过选择Sketch-> Include Library - > Add .ZIP Library(如下所示),然后选择我们刚刚下载的ZIP文件,将此Zip文件添加到Arduino IDE中。

installing-library-for-playing-audio-files-using-Arduino.png


步骤3:本文末尾给出了arduino音乐播放器项目的完整程序,只需将其复制并粘贴到Arduino程序中即可。现在,点击上传并准备播放你的音频文件。


程序很容易看懂,它们有注释行。但是,我在下面也解释了TMRpcm库的重要函数。


播放音频文件:

您可以使用以下代码播放SD卡模块内存储的Wav格式的任何音频。

  1. music.play( “3.wav”);
  2. // object name.play(“FileName.wav”);
复制代码

您可以在要播放音频的地方使用该代码行。


暂停音频文件:

要暂停音频文件,您可以简单地调用下面的代码行。

  1. music.pause();
  2. //objectname.pause();
复制代码

快进/快退音频:

没有直接的方式来快进或快退音频文件,但您可以使用下面的代码行在特定时间播放歌曲。这可以结合使用一些其他代码实现快进/快退音频。

  1. music.play( “2.wav”,33); //从第33秒播放歌曲
  2. //objectname.play("Filename.wav",time in second);
复制代码

设置音频的质量:

库给我们两个品质的音乐,一个是作为普通模式,另一个是2X采样。

  1. music.quality(0); //正常模式
  2. music.quality(1); // 2X采样模式
复制代码

设置音频音量:

是的,您可以通过软件来控制音频的音量。您可以使用下面的代码行简单地设置音量。较高的音量往往影响音频的质量,因此尽可能使用硬件控制。

  1. music.setVolume(5); //播放歌曲在音量5
  2. //objectname.setVolume(Volume level);
复制代码

Arduino音乐播放器:

在编程Arduino之后,只需按下连接到2引脚的按钮,您的Arduino将为您播放第一首歌曲(保存为1.wav)。现在,您可以再次按下按钮将您的曲目更改为要播放的下一首歌曲2.wav。同样,您可以导航到所有四首歌曲。

您还可以通过按连接到3引脚的按钮来播放/暂停歌曲。按一下可暂停歌曲,然后再次按下可从停止的位置播放歌曲。

playing-songs-from-SD-card-using-Arduino.jpg

希望你能喜欢这个项目。现在释放您的创造力,在您的项目中使用它们。你可以做一个说话时钟、语音助手、说话机器人、语音警报安全系统等等。如果你有任何问题,可以通过论坛与我联系。


代码

  1. Arduino Based Music Player
  2. This example shows how to play three songs from SD card by pressing a push button
  3. The circuit:
  4. * Push Button on pin 2 and 3
  5. * Audio Out - pin 9
  6. * SD card attached to SPI bus as follows:
  7. ** MOSI - pin 11
  8. ** MISO - pin 12
  9. ** CLK - pin 13
  10. ** CS - pin 4
  11. created  25 Jun 2017
  12. by Aswinth Raj
  13. This example code was created for CircuitDigest.com
  14. */

  15. #include "SD.h" //Lib to read SD card
  16. #include "TMRpcm.h" //Lib to play auido
  17. #include "SPI.h" //SPI lib for SD card
  18. #define SD_ChipSelectPin 4 //Chip select is pin number 4
  19. TMRpcm music; //Lib object is named "music"
  20. int song_number=0;
  21. boolean debounce1=true;
  22. boolean debounce2=true;
  23. boolean play_pause;
  24. void setup(){
  25. music.speakerPin = 9; //Auido out on pin 9
  26. Serial.begin(9600); //Serial Com for debugging
  27. if (!SD.begin(SD_ChipSelectPin)) {
  28. Serial.println("SD fail");
  29. return;
  30. }
  31. pinMode(2, INPUT_PULLUP); //Button 1 with internal pull up to chage track
  32. pinMode(3, INPUT_PULLUP); //Button 2 with internal pull up to play/pause
  33. pinMode(3, INPUT_PULLUP); //Button 2 with internal pull up to fast forward
  34. music.setVolume(5);    //   0 to 7. Set volume level
  35. music.quality(1);        //  Set 1 for 2x oversampling Set 0 for normal
  36. //music.volume(0);        //   1(up) or 0(down) to control volume
  37. //music.play("filename",30); plays a file starting at 30 seconds into the track   
  38. }
  39. void loop()
  40. {
  41.   
  42.   if (digitalRead(2)==LOW  && debounce1 == true) //Button 1 Pressed
  43.   {
  44.   song_number++;
  45.   if (song_number==5)
  46.   {song_number=1;}
  47.   debounce1=false;
  48.   Serial.println("KEY PRESSED");
  49.   Serial.print("song_number=");
  50.   Serial.println(song_number);
  51.   if (song_number ==1)
  52.   {music.play("1.wav",10);} //Play song 1 from 10th second
  53.   if (song_number ==2)
  54.   {music.play("2.wav",33);} //Play song 2 from 33rd second
  55.   if (song_number ==3)
  56.   {music.play("3.wav");} //Play song 3 from start
  57.   if (song_number ==4)
  58.   {music.play("4.wav",25);} //Play song 4 from 25th second }
  59.   if (digitalRead(3)==LOW  && debounce2 == true) //Button 2 Pressed
  60.   {
  61.   music.pause();  Serial.println("PLAY / PAUSE");
  62.   debounce2=false;
  63.   }
  64.   if (digitalRead(2)==HIGH) //Avoid debounce
  65.   debounce1=true;
  66.   if (digitalRead(3)==HIGH)//Avoid debounce
  67.   debounce2=true;
  68. }
复制代码


本文翻译自:https://circuitdigest.com/microcontroller-projects/arduino-audio-music-player


跳转到指定楼层
yang
发表于: 2018-12-14 14:14:35 | 显示全部楼层

请问10  100的电容分别是多少v的
回复

使用道具 举报

yang
发表于: 2018-12-14 21:39:59 | 显示全部楼层

为什么读入卡失败啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-24 08:07 , Processed in 0.046002 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表