DFPlayer Mini资料 随手记
簡介
DFPlayer Mini是一款小巧且價格低廉的MP3模塊,可以直接接駁揚聲器。模塊配合供電電池、揚聲器、按鍵可以單獨使用,也可以通過串口控制,作為Arduino UNO或者是任何有串口的單片機的一個模塊。模塊本身完美的集成了MP3、WAV、WMA的硬解碼。同時軟件支持TF卡驅動,支持FAT16、FAT32文件系統。通過簡單的串口指令即可完成播放指定的音樂,以及如何播放音樂等功能,無需繁瑣的底層操作,使用方便,穩定可靠。
產品參數
*支持采樣率(KHz):8/11.025/12/16/22.05/24/32/44.1/48
*24位DAC輸出,動態范圍支持:90dB,信噪比支持:85dB
*完全支持FAT16、FAT32文件系統,最大支持32G的TF卡,支持32G的U盤、64M字節的NORFLASH
*多種控制模式可選。IO控制模式、串口模式、AD按鍵控制模式
*廣播語插播功能,可以暫停正在播放的背景音樂。廣告播放完畢回到背景音繼續播放
*音頻數據按文件夾排序,最多支持100個文件夾,每隔文件夾可以分配255首曲目
*30級音量可調,6級EQ可調
引腳說明
{| style=“width:100%”
! style=“width: 40%;” |
! style=“width: 60%;” |
|-style=“vertical-align:top;”
| style=“padding: 5px;”|
[[image:miniplayer_pin_map.png|400px|center|DFPlayer_Mini_Pin]]
| style=“padding: 10px;”|
{|style="width:100%; height:600px; "
|-style="background-color:#78CDF8; height:40px; " align=“center”
|’’‘引腳號’’’||’’‘引腳名稱’’’||’’‘功能描述’’’||’’‘備注’’’
|-
| 1 || VCC || 模塊電源輸入 || 3.3V—5V,建議5V,不要超過5.2V
|- style="background-color:#E2F1F9; "
| 2 || RX || UART串行數據輸入 ||
|-
| 3 || TX ||UART串行數據輸出 ||
|- style=“background-color:#E2F1F9;”
| 4 || DAC_R || 音頻輸出右聲道 || 驅動耳機、功放
|-
| 5 || DAC_L || 音頻輸出左聲道 || 驅動耳機、功放
|- style=“background-color:#E2F1F9;”
| 6 || SPK2 || 接小喇叭 || 驅動小于3W喇叭
|-
| 7 || GND || 地 || 電源地
|- style="background-color:#E2F1F9; "
| 8 || SPK1 || 接小喇叭 || 驅動小于3W喇叭
|-
| 9 || IO1 || 觸發口 || 默認上一曲(長按音量減);此引腳短接到地可使歌曲循環播放
|- style=“background-color:#E2F1F9;”
| 10 || GND || 地 || 電源地
|-
| 11 || IO2 || 觸發口 || 默認下一曲(長按音量加)
|- style=“background-color:#E2F1F9;”
| 12 || ADKEY1|| AD口1 || 當觸發時是第一首(長按循環第一首)
|-
| 13 || ADKEY2 || AD口2 || 當觸發時是第五首(長按循環第五首)
|- style="background-color:#E2F1F9; "
| 14 || USB+ || USB+ DP || 接U盤或插電腦的USB口
|-
| 15 ||USB- || USB- DM || 接U盤或插電腦的USB口
|- style=“background-color:#E2F1F9;”
| 16 || Busy || 播放狀態 || 有音頻,輸出低;無音頻,輸出高
|}
|}
使用教程
=連線圖=
[[image:playerMini_CN.png|600px|center|DFPlayer_Mini]]
=樣例代碼=
庫文件下載鏈接:[https://github.com/DFRobot/DFRobotDFPlayerMini/archive/1.0.3.zip DFRobotDFPlayerMini]
[http://www.dfrobot.com.cn/community/forum.php?mod=viewthread&tid=1854&page=1&extra=#pid6805 庫安裝]
“GetStarted” 庫樣例, 每3秒切換下一首
/*************************************************** DFPlayer - A Mini MP3 Player For Arduino“FullFunction” 庫樣例, 包含了所有的功能, 詳見注釋以及文檔
/***************************************************DFPlayer - A Mini MP3 Player For Arduino{|style=“background-color:#78CDF8;color:#000000;”
|’’‘注意’’’:文件夾命名需要是mp3,放置在SD卡根目錄下,而mp3文件命名需要是4位數字,例如"0001.mp3",放置在mp3文件夾下。
如需中英文命名,可以添加在數字后,例如"0001hello.mp3"或者"0001后來.mp3"。
|}
====Mind+(基于Scratch3.0)圖形化編程代碼==== 在相同的接線情況下,使用Mind+軟件進行圖形化編程, [[Mind+基礎wiki教程-軟件下載安裝|前往-Mind+下載和安裝]]
首先在Mind+中選擇MP3功能模塊,“擴展”-“執行器”-“MP3模塊”
[[image:Mind+選擇MP3功能模塊.png|600px|center|DFPlayer_Mini]]
主要功能模塊如下:
[[image:MP3.png|530px|center|DFPlayer_Mini]]
1.設置“UART串行數據輸入”所在的引腳為圖形化編程的引腳口,在接線圖中是引腳11,所以圖形化編程設置“11”。
2.設置MP3模塊的播放模式:“停止”“播放”“循環播放”“隨機播放”“暫停”“上一首”“下一首”“音量加”“音量減”
[[image:Mind+mp3使用1.png|354px|center|DFPlayer_Mini]]
3.設置MP3模塊播放特定歌曲,選擇正確引腳之后,再選擇第幾首歌。
[[image:Mind+MP3使用21.png|354px|center|DFPlayer_Mini]]
4.如果音響中經常有“突突”電流聲,一般是因為“UART串行數據輸入”信號的干擾,那么在設置MP3播放模式的指令后加上“設置引腳xx為低電平”,
[[image:Mind+MP3使用22.png|354px|center|DFPlayer_Mini]]
資料說明
=串口模式=
模塊支持異步串口通訊模式,通過串口接受控制命令
*’’‘串口指令格式’’’
{|border=“1” cellspacing=“0” align=“center” cellpanding=“5” width=“650px”
|-
|style=“background-color:#78CDF8” align=“center”|’’‘指令名稱’’’
|style=“background-color:#78CDF8” align=“center”|’’‘對應功能’’’
|style=“background-color:#78CDF8” align=“center”|’’‘功能描述’’’
|-
|align=“center”|S∣align="center"∣起始位0x7E∣align="center"∣每條命令反饋均以S |align="center"|起始位0x7E |align="center"|每條命令反饋均以S∣align="center"∣起始位0x7E∣align="center"∣每條命令反饋均以開頭,即0x7E
|-
|align=“center”|VER
|align=“center”|版本
|align=“center”|版本信息[目前默認為0xFF]
|-
|align=“center”|Len
|align=“center”|len后字節個數
|align=“center”|校驗和不計算在內
|-
|align=“center”|CMD
|align=“center”|命令字
|align=“center”|表示具體的操作,比如播放/暫停等等
|-
|align=“center”|Feedback
|align=“center”|命令反饋
|align=“center”|是否需要反饋信息,1反饋,0不反饋
|-
|align=“center”|para1
|align=“center”|參數1
|align=“center”|查詢的數據高字節(比如歌曲序號)
|-
|align=“center”|para2
|align=“center”|參數2
|align=“center”|查詢的數據低字節
|-
|align=“center”|checksum
|align=“center”|校驗和[占兩個字節]
|align=“center”|累加和校驗[不計起始位$]
|-
|align=“center”|$0
|align=“center”|結束位
|align=“center”|結束位0xEF
|-
|}
舉個例子,如果我們制定播放NOR FLASH,就需要發送:7E FF 06 09 00 00 04 FF DD EF,數據長度為6,這6個字節分別是[FF 06 09 00 00 04]。
不計算起始、結束、和校驗。再然后對得到的結果進行取反。
*’’‘串口控制指令’’’
{|border=“1” cellspacing=“0” align=“center” cellpanding=“5” width=“650px”
|-
|style=“background-color:#78CDF8” align=“center”|’’‘CMD命令(指令)’’’
|style=“background-color:#78CDF8” align=“center”|’’‘對應的功能’’’
|style=“background-color:#78CDF8” align=“center”|’’‘參數(16位)’’’
|-
|align=“center”|0x01
|align=“center”|下一曲
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| } |
*’’‘串口查詢指令’’’
{|border=“1” cellspacing=“0” align=“center” cellpanding=“5” width=“650px”
|-
|style=“background-color:#78CDF8” align=“center”|’’‘CMD命令詳解(指令)’’’
|style=“background-color:#78CDF8” align=“center”|’’‘對應的功能’’’
|style=“background-color:#78CDF8” align=“center”|’’‘參數(16位)’’’
|-
|align=“center”|0x3C
|align=“center”|STAY
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| - |
| align=“center” |
| align=“center” |
| align=“center” |
| } |
*’’‘串口使用過程’’’
串口連接線路圖
[[image:DFP0299usbserial1.png|800px|center|DFPlayer_Mini]]
1.打開sscom,連接USB serial。
2.在串口發送指令就能對mini進行控制使用了。
[[image:DFP0299usbserial2.png|800px|center|DFPlayer_Mini]]
=AD按鍵模式=
模塊還支持AD按鍵控制方式,取代了傳統了矩陣鍵盤的接法,這樣做的好處是充分利用了MCU越來越強大的AD功能。設計簡約而不簡單,我們模塊默認配置2個AD口,20個按鍵的阻值分配。
*按鍵使用示意原理圖
[[image:ankey.png|800px|center|DFPlayer_Mini]]
=IO模式=
本模塊也支持簡單的IO模式
[[image:speaker_key.png|650px|center|DFPlayer_Mini]]
PS:短按:低電平時間約為200ms
疑難解答
{|style=“width:100%;background-color:#E1FDDF;color:#009000;”
|style=“padding: 5px;”|
‘’‘問 :’’‘Arduino控制DFPlayer mini時,喇叭有雜音,如何處理?
|}
:’’‘答:’’‘在TX,RX與MP3模塊的RX,TX之間連一個1k電阻。因為DFPlayer Mini模塊工作電壓應該是3.3V,而主控板傳入電壓為5V,因此需要1K左右電阻分壓。
:’’‘答:’’’ 如果效果不好,可以在mp3播放的代碼后面增加一條語句,將RX引腳置為低電平。
{|style=“width:100%;background-color:#E1FDDF;color:#009000;”
|style=“padding: 5px;”|
‘’‘問 :’’‘為什么 play(1) 播放的不是 0001.mp3, 而是其他的的音樂? 為什么播放的順序不是按照文件名播放?
|}
:’’‘答:’’‘play(1)是播放TF卡中的第一首歌, ‘’‘播放順序是由mp3放入TF卡的順序決定的’’’, 而不是按照文件名排序播放的, 如果需要按照文件名播放, 可以參考下面的playMp3Folder(1)
{|style=“width:100%;background-color:#E1FDDF;color:#009000;”
|style=“padding: 5px;”|
‘’‘問 :’’‘是否可以按照文件名播放?
|}
:’’‘答:’’‘可以使用函數’’‘playMp3Folder (1);’’’ 播放文件的格式為"0001***.mp3(或支持其他格式)". 您可能需要注意這些:
(1). 該音頻文件的名稱應該命名一個四位數字開始,如:
*0001.mp3
*0002Chasing The Sun.mp3
*0003.mp3
*0004Try.mp3
*0010FourFiveSeconds.mp3
[[image:MP3-1.png|450px|center]]
(2).該音頻文件應該放在’’’“MP3”‘它坐落在TF卡的’’‘根目錄’’’'文件夾;
[[image:MP3-2.png|450px|center]]
{|style=“width:100%;background-color:#E1FDDF;color:#009000;”
|style=“padding: 5px;”|
‘’‘問 :’’‘想用下插播廣告的功能,請問有樣例嗎?
|}
:’’‘答:’’'推薦閱讀【英文】——[http://www.dfrobot.com/forum/viewtopic.php?f=2&t=1524 如何實現插播廣告的功能?]
{|style=“background-color:#78CDF8;color:#000000;”
|style=“padding: 5px;”|
更多問題及有趣的應用,可以 [http://www.dfrobot.com.cn/community/forum.php ‘’‘訪問論壇’’’] 進行查閱或發帖!
|}
更多
*[http://www.dfrobot.com.cn/images/upload/File/201811051127329r3tdn.pdf 開發文檔]
*推薦閱讀:[http://www.dfrobot.com.cn/community/forum.php?mod=viewthread&tid=11416 Arduino - 測試 DFPlayer Mini MP3 播放模組]
:[[image:shopping_car.png|link=http://www.dfrobot.com.cn/index.php?route=common/home]] [http://www.dfrobot.com.cn/goods-891.html DFRobot商城購買鏈接]
總結
以上是生活随笔為你收集整理的DFPlayer Mini资料 随手记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML基础之label标签
- 下一篇: Remix 以太坊Solidity ID