完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
描述
Arduino 的 Mp3 屏蔽 硬件概述 MP3 Player Shield 的核心是 VS1053B 音频编解码器 IC。VS1053B 是一款多才多艺的小芯片。除了 MP3 之外,它还可以解码 Ogg Vorbis、AAC、WMA 和 MIDI。(它还能够对音频进行编码,尽管这超出了 MP3 Shield 的范围。) 支持 VS1053 的是一个 μSD 卡插槽,您可以使用它来存储 MP3 文件。使用 Arduino SD 库,很容易从 SD 卡中读取音乐文件,并将它们流式传输到 VS1053B。板上还有额外的电路可以将信号电平转换到 SD 卡允许的最大值 3.3V。 以下是 MP3 Player Shield 上重要连接器和其他组件的快速概览: 在上图中,蓝色标签是 VS1053 MP3 编解码器 IC 使用的引脚,红色标签用于与 μSD 卡通信,紫色标签的引脚由两个组件使用(耶 SPI!)。 使用了哪些引脚? MP3 Player Shield 需要专门使用少量引脚。这些引脚不能用于与其他设备接口: D2 连接到 VS1053B 的数据请求输出。该引脚是一个中断,它告诉 Arduino IC 需要更多音乐数据。 D6 连接到 VS1053B 的片选输入。该低电平有效引脚告诉芯片何时向其发送数据。 D7 连接到 VS1053B 的数据片选输入,它告诉芯片何时发送音乐数据。 D8 连接到 VS1053B 的复位输入。 D9 连接到 μSD 卡的片选输入。 Arduino 的三个 SPI 数据和时钟引脚——D11、D12 和 D13——可用于连接其他 SPI 组件。但是,它们不能用于 SPI 以外的任何目的。 哪些引脚是免费的? 哇!屏蔽确实用掉了很多引脚,但这里的引脚仍然可用于连接其他组件。 硬件 UART 引脚——RX 和 TX——在引脚 0 和 1 D5 和 D10(PWM 引脚!) 所有模拟引脚(A0 到 A5)。 可选引脚跳线 我们还没有提到的两个引脚是 D3 和 D4,它们分别连接到 VS1053B 的 MIDI-In 和 GPIO1 引脚。这些引脚的使用是可选的。大多数 MP3 播放功能不需要它们,包括我们将在本教程中展示的示例。 要禁用这些引脚中的任何一个,可以使用爱好刀切割其标签旁边的跳线。 输出音频 从 MP3 Player Shield 驱动音频有两种选择。最简单、即插即用的选项是将一些耳机插入板载 3.5 毫米立体声音频插孔中。有源(有源)扬声器也可以插入此插孔,但仅 VS1053B 本身并没有足够的功率来驱动低阻抗无源扬声器。 左右声道以及音频接地也被分到耳机插孔旁边的 0.1" 接头上。您可以使用这些引脚连接到扬声器或放大器输入。 线路输出警告 如果您要将扬声器输出连接到功率放大器或电路,请务必阅读 VLSI 的连接模拟输出应用说明。 “R”和“L”旁边标有“-”的引脚连接到 VS1053B 上的“GBUF”引脚。该引脚不接地,不应接地!它在 VS1053B 内部偏置为 1.25V。例如,如果 GBUF 连接到 PC 上的线路输入,它可以在 PC 侧接地并形成接地回路。 如果 GBUF 连接到放大器接地,则可能会产生危险的(对 VS1053B 而言)电流回路。(来自 VS10XX 模拟输出应用说明。) 不要那样做!VLSI 应用笔记有一些推荐的电路(见第 3.1 和 3.2 节),以帮助避免此类问题。 组装和准备 在我们开始上传代码和流式传输一些曲调之前,首先需要完成一些准备步骤。您需要在屏蔽层上焊接一些东西,并准备一张 μSD 卡。 添加标题 要开始使用屏蔽,您需要焊接一些接头。如果您希望保持屏蔽层可堆叠,可堆叠接头可能是最佳选择。否则,直男头也可以。 一个 MP3 Player Shield,上面焊接了可堆叠的接头。 查看我们的屏蔽组装指南,获取更多有关将接头添加到屏蔽的帮助。 MP3 文件和 μSD 卡设置 在连接的这个阶段,您可能还想开始准备您的 μSD 卡。首先,确保它的格式正确。我们将使用的 SDFat Arduino 库仅支持格式化为 FAT16 或 FAT32 的卡。您的卡可能已经格式化为这些标准之一,但仔细检查并没有什么坏处。 您可能还需要准备音乐文件。VS1053B 能够播放 MP3、AAC、WMA、MIDI 和 Ogg Vorbis 音频文件。VS1053B 支持每种文件类型的各种采样率和比特率。查看数据表(从第 8 节开始——第 26 页),确保支持您的音频文件。例如,MP3 支持高达 320 kbps 的比特率和 48 kHz 的采样率。 最后,在将音频文件加载到 SD 卡之前,您需要修改它们的名称。SDFat 库仅支持“8.3”文件名——即 '.' 之前的八个字符。和后面的三个字符(例如“track001.mp3”)。此外,我们稍后将使用的一些示例代码要求使用特殊约定命名音频文件。在 MP3 触发器示例中,文件需要命名为“track001.mp3”、“track002.mp3”等。 使用 SFEMP3Shield 库 SFEMP3Shield Arduino 库 - 由 Bill Porter、Michael Flaga、ddz 和 Wade Brainerd 合作编写 - 是 MP3 Player Shield 的惊人资源。结合同样出色的 SdFat 库,SFEMP3Shield 极大地简化了与 VS1053 连接和使用 MP3 Player Shield 的任务。 我们建议将 SFEMP3Shield 库与此屏蔽一起使用。在此页面上,我们将介绍如何安装和使用该库。在下一页,我们将使用它制作一个有趣的示例草图。 安装 SFEMP3Shield 库 要下载最新版本的 SFEMP3Shield,请单击库 GitHub 页面上的“下载 ZIP”链接。您还应该能够直接从这里获取它。 此 GitHub 存储库已包含 SdFat 库的副本,因此您已被覆盖。 您提取的“Sparkfun-MP3-Player-Shield-Arduino-Library-master”文件夹中应该有一些文件夹。“SFEMP3Shield”和“SdFat”文件夹尤其需要安装为 Arduino 库。如需安装库的帮助,请查看我们的安装 Arduino 库教程。您需要将这两个文件夹放在您的 Arduino 速写本中(默认情况下在您的 home/Arduino 文件夹中)。安装后,您的文件结构应如下所示: 现在重新启动 Arduino(如果它已打开),并在“Sketch”>“Import Library”菜单下检查以确保“SFEMP3Library”和“SdFat”都列在那里。 上传示例草图 SFEMP3Shield 库包含一些有趣的示例草图,展示了其所有令人敬畏的能力。首先,尝试加载“FilePlayer”示例,方法是转到“File”>“Examples”>“SFEMP3Shield”>“Examples”>“FilePlayer”。 确保 MP3 Player Shield 舒适地坐在您的 Arduino 上,然后上传! 上传后,打开串行监视器并将波特率设置为 115200 bps。一旦草图初始化,它应该为您提供一个可导航的菜单: 希望在菜单底部,您会看到草图在您的 SD 卡上找到的 MP3 文件列表。尝试发送一个带有填充零的 3 位数字(例如 001、003 等),以使列出的文件之一开始播放。你现在开槽了吗? 如果太安静,请尝试使用“+”命令调高音量,或使用“-”调低音量。还有各种其他有趣的选择可以尝试。 有用的 SFEMP3Shield 库文档 如果您正在寻求使用 SFEMP3Shield 的帮助,请首先查看其支持网站的主页。那里有一些很好的故障排除信息。 要深入研究代码,您可以查看他们的 GitHub 存储库。还有一个有用的 SFEMP3Shield 类参考指南,其中列出了该库提供的所有功能。 在下一页,我们将使用 MP3ShieldLibrary 制作一个示例草图,以展示它的一些更基本的功能。 示例草图:MP3 触发器 无论是红色还是紫色,每个人都喜欢好的 MP3 触发器。只需一个简单的按钮或开关即可触发歌曲或音效。让我们使用 MP3 Player Shield 库来制作一个可以与大男孩竞争的 MP3 触发器。 这是一个简单的示例,展示了如何使用 SFEMP3Shield 库播放和停止曲目。使用引脚 0、1、5、10 和 A0-A4,屏蔽最多可以触发 9 个轨道。A5 可用于停止当前播放的曲目。 第 1 步:设置 SD 卡 在将 μSD 卡插入屏蔽之前,您需要重命名 MP3 文件。九个曲目中的每一个都需要从“track001.mp3”到“track009.mp3”进行具体命名。 第一个触发器 - D0 - 将播放名为“track001.mp3”的 MP3,第二个触发器 - D1 - 将播放“track002.mp3”,依此类推,直到 A4 将播放“track009.mp3”。 第 2 步:设置硬件 当然,Shield 会为您完成大部分硬件设置。除了将屏蔽贴在 Arduino 上之外,您还需要找一些东西来触发引脚。您可以使用一个开关,其中有很多选项,或者您可以只使用一根简单的跳线将一个触发引脚接地。 您可以将耳机插入板载插孔以收听,或者,如果您想使用它,可以使用三个断开的“扬声器”引脚。这是我们结合了 MonoAmp Breakout 和 8 Ω 扬声器的设置: 第 3 步:加载代码 这是我们的 MP3 Shield 触发器草图。从下面复制/粘贴,或在此处下载: 语言:c /* MP3 屏蔽触发器 作者:吉姆·林德布洛姆 火花电子 日期:2013年9月23日 这是 SparkFun MP3 Shield 的示例 MP3 触发器草图。 引脚 0、1、5、10、A0、A1、A2、A3 和 A4 设置为触发轨道 “track001.mp3”、“track002.mp3”等加载到 SD 卡上 护盾。每当这些引脚中的任何一个对地短路时, 他们各自的曲目将开始播放。 当一个新的 pin 被触发时,当前正在播放的任何曲目都会 停止,新的将开始。 A5 设置为在触发时全局停止播放曲目。 如果您需要更多触发器,请使用针脚 3 和 4 上的屏蔽跳线 (MIDI-IN 和 GPIO1)可以切开并用作附加 触发销。此外,因为引脚 0 和 1 用作触发器 串行不可用于调试。将它们禁用为 如果要使用串行,则触发。 大部分代码是从 FilePlayer 示例中获取的 包含在 SFEMP3Shield 库中。主要感谢比尔 波特和迈克尔弗拉加,再次,为这个了不起的图书馆! */ #include #include #include #include SdFat 标准差;// 创建对象来处理 SD 函数 SFEMP3Shield MP3播放器;// 创建 Mp3 库对象 // 这些变量在 MP3 初始化时用来设置 // 一些立体声选项: 常量 uint8_t 体积 = 0;// MP3 播放器音量 0=最大,255=最低(关闭) const uint16_t monoMode = 1; // 单声道设置 0=off, 3=max /* 引脚设置 */ #define TRIGGER_COUNT 9 int triggerPins[TRIGGER_COUNT] = {0, 1, 5, 10, A0, A1, A2, A3, A4}; int stopPin = A5;//此引脚触发轨道停止。 整数最后触发器 = 0;// 这个变量跟踪正在播放的曲调 无效设置() { /* 将所有触发引脚设置为输入,激活上拉:*/ for (int i=0; i pinMode(triggerPins, INPUT_PULLUP); } pinMode(stopPin, INPUT_PULLUP); 初始化SD();//初始化SD卡 initMP3Player(); // 初始化 MP3 屏蔽 } // 循环所做的就是不断地单步执行触发器 //引脚以查看是否拉低。如果是,它将停止任何 // 当前播放曲目,并开始播放新曲目。 无效循环() { for (int i=0; i if ((digitalRead(triggerPins) == LOW) && ((i+1) != lastTrigger)) { 最后触发 = i+1; // 更新 lastTrigger 变量为当前触发器 /* 如果正在播放另一首曲目,请停止:*/ 如果 (MP3player.isPlaying()) MP3player.stopTrack(); /* 使用 playTrack 函数播放编号的曲目: */ uint8_t 结果 = MP3player.playTrack(lastTrigger); // 这里的另一种选择是使用 // playMP3(fileName) 函数,只要你映射 // 触发引脚的文件名。 if (result == 0) // playTrack() 成功返回 0 { // 成功 } else // 否则有错误,检查代码 { // 以某种方式打印错误代码 } } } //循环并检查触发引脚后,检查到 // 查看是否触发了 stopPin (A5)。 if (digitalRead(stopPin) == LOW) { 最后触发器 = 0; // 重置 lastTrigger // 如果正在播放另一首曲目,请停止。 如果 (MP3player.isPlaying()) MP3player.stopTrack(); } } // initSD() 初始化 SD 卡并检查错误。 无效初始化SD() { //初始化SD卡。 if(!sd.begin(SD_SEL, SPI_HALF_SPEED)) sd.initErrorHalt(); if(!sd.chdir("/")) sd.errorHalt("sd.chdir"); } // initMP3Player() 设置所有的初始化 // MP3 播放器屏蔽。它运行 begin() 函数,检查 // 对于错误,如果找到则应用补丁,并设置音量/ //立体声模式。 无效的 initMP3Player() { uint8_t 结果 = MP3player.begin(); // 初始化 mp3 播放器屏蔽 if(result != 0) // 检查结果,错误代码见自述文件。 { // 错误检查可以到这里! } MP3player.setVolume(音量, 音量); MP3player.setMonoMode(monoMode); } 检查代码中的注释以获取分步演练。这个例子展示了使用 MP3 Player Shield 是多么容易(非常感谢 Bill Porter 和 Michael Flaga 的库)。调用 MP3player.playTrack() 函数开始一首歌曲,并使用 MP3player.stopTrack() 调用停止它。 第 4 步:触发一些曲调 加载草图后,您所要做的就是将其中一个触发销(0、1、5、10、A0、A1、A2、A3、A4)接地。当一个新的触发引脚接地时,任何当前正在播放的歌曲都将停止,与之相关的 MP3 文件将开始播放。如果要停止轨道,请将 A5 短暂接地。 您可以将这些触发引脚中的任何一个连接到各种按钮或开关,或者只需使用一根电线将它们暂时短接到地。
|
|
只有小组成员才能发言,加入小组>>
9529 浏览 0 评论
8896 浏览 0 评论
13303 浏览 0 评论
4341 浏览 0 评论
4566 浏览 0 评论
1667浏览 1评论
298浏览 1评论
434浏览 1评论
IPC-6012E CN 2020中文 CN 刚性印制板的鉴定及性能规范
504浏览 1评论
328浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 15:02 , Processed in 1.302799 second(s), Total 74, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号