想给机器人加语音提示、给小车配一段开机音乐、或者做语音播报器,DFPlayer Mini是廉价好用的MP3模块。它体积比一枚硬币稍大,能把SD卡里的音频解码成声音输出,用串口接主控就能控制播放、暂停、切换曲目。这篇把它的接线和几个关键避坑点说清楚。
模块的电源和音频输出
模块工作电压一般是3.2V到5V,VCC接5V或3.3V都行,GND接地。音频输出是DAC_OUT,通常接一个小功放或直接接一个耳机/小喇叭,模块有个VCC供电的功放输出脚,可以直接驱动小喇叭发声。要控制音量、分区播放,靠串口命令。

串口怎么接:关键是要分压
DFPlayer通过UART串口接收命令,模块的RX接主控TX、TX接主控RX。但这里有个大坑:DFPlayer Mini的逻辑电平和许多模块并不完全兼容5V,尤其它的RX脚,如果直接从Arduino的5V TX灌进去,长时间容易损伤模块。稳妥做法是在主控TX到模块RX之间串一个约1K欧电阻做分压,或者用电平转换。模块TX到主控RX一般可以直连,但为保险也可加电阻。

接线是TX-RX交叉:主控TX连模块RX(中间串1K电阻),模块TX连主控RX。用软件串口(比如接D10/D11)把模块单独放在一路串口,避免和USB调试串口抢。
SD卡的格式和命名很讲究
DFPlayer对SD卡有要求:一般要FAT32格式,而且音频文件的命名和放入目录有讲究,通常是放到名为01、02这样的数字文件夹里,文件名按四位数编号如0001.mp3、0002.mp3。命令通过"文件夹号+曲目号"来定位播放。如果用错名字、放错目录,播不出来特别常见。
控制命令很简单
用DFRobotDFPlayerMini类库,初始化后就能play、playFolder、volume等操作。上电后先给模块一点初始化时间再发指令,不然会丢首条命令。音量范围0到30,睡眠唤醒等状态也要注意,模块默认可能进入睡眠而忽略指令。
把供电、串口分压、SD卡格式和命名都对上,DFPlayer就能稳定播放。卡壳大多在1K分压丢指令和SD卡命名上,这两个排掉基本就顺了。


SD卡命名放错目录真的播不出来,改成01文件夹加0001.mp3这种命名就好,坑得很
软件串口单独开一路给模块很实用,不和USB调试抢,指令就不容易丢
串1K电阻分压这个提醒太及时,我之前RX直接怼5V,模块用久了才出问题