Arduino 控制的 MP3 播放器 Zen 音箱
0
准备工作:
材料:
- 多色 #18 AWG 规格导线
- 焊锡丝 与 助焊剂(flux)
- 排针(公头) —— 用于焊接连接
- 热缩管(heatshrink tubing)
- 热熔胶(hot glue) —— 用于固定模块、屏幕等
- 白色哑光喷漆(matte white spray paint) —— 用于喷涂外壳(建议干燥 24 小时)
- 面包板(breadboard) —— 用于原型测试
- 杜邦跳线(jumper wires)
- 1 个 18650 锂电池(单节)
- 1 个 18650 单节电池座(DKARDU 模块套装中已包含)
- 2 个 面板安装式轻触按钮(瞬动开关)
- 1 个 面板安装式自锁按钮(开关型,按一下开、再按关)
- 2 个 旋钮(分别用于电位器和旋转编码器)
- 若干 #6 螺丝与螺母(用于固定 PCB 和元件)
- 若干 小号橡胶垫圈(用于抬高并固定 PCB)
- 若干 垫片(按需使用)
- 1 个 原型板(洞洞板)或 自行设计并制作的 PCB
- 4 个 0.1μF 薄膜电容(或等效低压电容)
- 2 个 22pF 陶瓷电容(低压)
- 1 个 100μF 电解电容(16V)
- 1 个 2N2222A NPN 三极管
- 5 个 10kΩ 电阻
- 4 个 330Ω 电阻
- 2 个 1kΩ 电阻
- 1 个 100Ω 电阻
- 1 个 12kΩ 电阻
- 1 个 10kΩ 电位器(面板安装型)
- 1 个 16MHz 晶振
- 1 个 5mm 红色 LED
- 1 个 Arduino UNO 开发板
- 1 个 ATmega328P 微控制器(裸片)
- 1 个 28 脚 IC 插座
- 1 个 DFPlayer Mini 模块(Aideepen 品牌,5 片装 YX5200 MP3 播放板,支持 TF 卡/USB,适用于 Arduino)
- 1 个 DKARDU 18650 锂电池充电升压模块(型号 JK-US-648,含 5 片充电升压板 + 5 个 18650 电池盒,输入 3.7V/4.2V,输出 5V/9V 1A)
- 1 个 三色共阴极 RGB LED(Daokai 品牌,5mm,红/绿/蓝,4 引脚,DC 3V,20mA,100 个装)
- 1 个 旋转编码器(Cylewet 品牌,360° 带按键数字电位器,5 引脚 + 旋钮帽,5 个装)
- 1 个 I2C 1602 LCD 显示屏(Freenove 品牌,2 行 × 16 字符,IIC/TWI 接口,兼容 Arduino/Raspberry Pi/ESP32 等,2 个装)
- 1 个 全频扬声器(ACEIRMC 品牌,4Ω 5W,全频音频喇叭,4 个装)
- 1 个 项目外壳(LeMotech 品牌,ABS 塑料防水防尘接线盒,IP65 等级,尺寸 120×120×90 mm,黑色,2 个装)
- 2 个 Micro USB 电源接口转接板(Daokai 品牌,Micro USB 母座转 DIP 插针,2.54mm 间距,带 50 针排针,10 个装)
- 1 个 自粘乙烯基贴膜(哑光黑色,12 英寸 × 40 英尺卷,适用于 Cricut/Silhouette,用于装饰或制作 LCD 边框)
- 1 个 Micro SD 卡(32GB Class 10 高速卡,含 SD 转接器,2 张装)
- 1 个 USB 转 SD 卡读卡器(Type-C 接口,支持 SD + MicroSD,即插即用,适用于 iPhone/Mac/相机等)
面包板搭建

这是一个比较复杂的项目,所以务必先在面包板上进行搭建。这主要是因为 DFPlayer 比较难用,在实际搭建之前,你应该检查所有软件是否运行正常,以及 Arduino 是否能与 DFPlayer 通信。稍后我会详细讨论这一点。
使用 Arduino Uno 开发板作为微控制器。将 DFPlayer 和 LED 等元件放置在面包板上,并用跳线将它们连接到 Arduino Uno。使用 UNO 的 +5V 引脚为所有元件供电。
示意图





以下是我对电路图的注释:
- USB-Micro 连接器 USB1 用于直接为电路板供电,绕过电池。
- 可以通过 H1 接头和 USB-Micro 接口 USB2 使用编程器对 Arduino 进行板载编程。板载编程似乎只有在 DFPlayer 未连接时才能正常工作,原因不明。无论如何,您可以在 Arduino UNO 上对 ATMEGA 328P 进行编程,然后将其移至您的项目板上,这样如果您不需要这些接口,就可以将其移除。
- 重要提示:U6 电池充电器和升压模块采用 USB-C 接口。插入后,无论电源开关是否打开,它都会直接向电路板提供 5V 电源。这是因为电源开关仅控制电池供电。非常重要:此模块可将电池的 3.7V 电压升压至最高 28V!因此,在连接任何设备之前,务必将其电压调整至 +5V。您可以使用模块上的一个小型电位器进行调整。请参见模块图片。电位器位于 USB-C 接口的左侧。您需要使用数字万用表 (DVM) 进行此操作。将万用表连接到模块的 +/- 输出引脚,将模块连接到 USB-C 电源或已充电的电池,然后调节电位器至最高 5V。
- LED 2、3、4 都是同一个三色 LED。这个 LED 亮度很高,所以我需要在接地引脚上加一个 R12 (12K) 电阻来降低亮度。这个 LED 有 4 个引脚。你需要用数字万用表来区分每个引脚。或者,你也可以通过一个 330 欧姆的电阻将它连接到 +5V 电源,以限制电流。
- LCD 显示屏是一个内置背光的 I2C 显示屏。如果通过软件开启背光,它会非常亮。如果想要调暗亮度,需要稍作修改。移除显示模块背面的 R9 电阻(见图)。这是一个非常小的贴片电阻。用镊子将其取下,同时用烙铁熔化电阻上的焊点。操作时要小心迅速,以免损坏模块。接下来,将一根导线连接到显示屏一端标有“A”的 LED 的阳极。这根导线连接到 R9 电阻,R9 电阻连接到 Arduino 的 9 号引脚。我们在这个引脚上施加一个 PWM 信号来控制亮度。令人遗憾的是,你无法通过软件或模块上的电位器来控制 LCD 的亮度,但事实就是如此。
- 晶体管 Q1 用于在启动时断开扬声器,因为它在上电时会发出很大的噪音——非常烦人,我们不想每次都听到这种声音!
DFPlayer 的异常行为及应对措施




这是我做过的最令人抓狂的 Arduino 项目之一,主要原因就是 DFPlayer 模块。以下是我遇到的问题以及一些解决方法:
我买了 5 个 DFPlayer 模块,庆幸自己多买了几个。其中一个完全无法工作;第二个在把电路板装进盒子时不知怎么就弄坏了,SD 卡插槽松动,无法固定 SD 卡。由此可见,这些模块在物理结构上很脆弱,可靠性也可能存在问题。
我使用了一个编程转接器(dongle)来给 PCB 上的 ATmega328P 微控制器烧录程序。一开始是正常的,但一旦我把 DFPlayer 连接到 ATmega328P 上,编程器就再也无法工作了。我手头有好几个不同的编程器,但只要 DFPlayer 接着,它们全都失效。具体原因我至今没搞明白。所以除非你拔掉 DFPlayer,否则我预留的编程接口和排针就毫无用处。
当你往 SD 卡里保存音频文件时,请务必先将卡格式化为 FAT32 格式。
MP3 文件必须按特定方式命名:要么是 0001、0002……,要么是 001、002……这样的编号格式。否则 DFPlayer 无法识别这些文件。
你的音频文件必须是 MP3 格式。
奇怪的是,一旦你把文件拷贝到 SD 卡上,DFPlayer 似乎就会“记住”最初的状态。如果你之后更改文件名或顺序,它经常会播放错误的文件。因此,最好的做法是一开始就确定好你要使用的音频文件及其播放顺序,一次性拷贝到 SD 卡后就不要再改动。
如果你确实需要更新 SD 卡上的 MP3 文件,可以尝试以下方法来规避上述问题:
- 完全删除 SD 卡上的所有文件,然后重新拷贝你需要的文件;
- 重新格式化 SD 卡,再拷贝所有需要的文件;
- 更改文件编号方式。例如,如果之前用的是 0001、0002,现在改成 001、002;
- 先用原始文件名拷贝到 SD 卡,然后再在卡上重命名为 0001、0002 等格式;
- 换一张新的 SD 卡试试。
DFPlayer 的说明文档中提到,你可以在 SD 卡上创建任意数量的文件夹存放音频文件。比如,在名为 “MP3” 的文件夹中,你可以使用 playMp3Folder() 命令来播放该文件夹内的文件。这确实可行,但你必须在播放命令后加上一个与音频长度对应的 delay() 延时。例如,对于一段 3 秒的音频片段,你需要写 delay(3000)。这种方法适用于短音频,但对于较长的音乐就不实用了。
对于较长的音乐文件,建议直接放在 SD 卡根目录下,并使用 myDFPlayer.play() 命令播放。例如,要播放根目录下的 0001.mp3 文件,就调用 myDFPlayer.play(1);
但这里有个严重限制:根目录下最多只能有效识别前 9 个文件。如果你试图播放第 10 个文件(即 myDFPlayer.play(10)),DFPlayer 会混淆并播放第 1 个文件。目前我还不知道有什么办法能绕过这个问题。幸运的是,我的项目不需要太多音频文件,所以这个限制对我影响不大。
PCB 板或原型板




这个项目中,我使用 EasyEDA 设计了一块 PCB,并通过 JLCPCB 进行了制作。从下单到收货不到一周,速度很快。虽然这种方式让组装变得简单,但成本相对较高。与直接使用洞洞板(面包板或原型板)相比,它既不够快,也不够便宜。
我的 PCB 设计并不理想,犯了不少错误,还有一些细节没有考虑到。如果以后还想再制作更多这样的设备,我肯定需要重新设计 PCB。因此,我建议你直接使用原型板来搭建电路——毕竟这个电路本身并不复杂。
Arduino程序

Arduino 程序代码已添加完整注释。您可以根据需要进行修改,也可以直接使用。
施工

制作及其他注意事项:
- 在 PCB 或洞洞板下方使用橡胶垫圈或垫片,以将其固定在所需的高度。
- 先确定好 PCB 的安装位置后,再钻孔并用锉刀修整 USB 接口的开孔,确保与 PCB 上的 USB 接口位置精确对齐。
- 为 LCD 屏幕开孔时,先钻孔定位,再用线锯(jigsaw)切割出所需形状。可用热熔胶将屏幕固定到位。
- 使用电钻在盒体上钻出扬声器网罩的孔洞。我用一张纸模板标出每个孔的精确位置,这样打出来的孔排列整齐、外观美观。
- 为螺丝、电位器、旋转编码器、按钮等元件钻出对应的安装孔。
- 用热熔胶将电池充电/升压模块固定在合适位置。
- 使用自粘乙烯基贴膜(self-adhesive vinyl)为 LCD 制作一个边框(bezel),以遮盖开孔边缘,提升整体外观。具体做法是:先仔细测量 LCD 尺寸,然后用直尺和美工刀(Xacto knife)裁剪贴膜。
- 若想让塑料外壳更美观,可用喷漆将其喷涂成你喜欢的颜色(白色效果不错)。注意:务必在所有开孔完成并打磨光滑后再进行喷漆。虽然喷漆罐上写着“5 分钟快干”,但实际上此时漆面仍很软、容易刮花。建议至少晾干一整晚,最好放置 24 小时,这样漆面会更耐磨、不易划伤。
- 使用黑色记号笔配合字母模板,在盒子上清晰标注各个按钮、旋钮等功能部件的名称。
音频文件获取提示:
YouTube 等平台上有海量的音乐资源。你可以使用免费的文件转换工具将这些视频转换为 MP3 格式用于本项目。我个人推荐两款免费工具:
- Any Video Converter(全能视频转换器)
- YTMP3 - YouTube to MP3 Converter(YouTube 转 MP3 工具)
0
0
0
qq空间
微博
复制链接
分享