DF-Player mini
dfplayer(数据手册)组件
允许您播放存储在 SD 卡或 USB 闪存驱动器中的声音和音乐。

要让此组件工作,您需要在配置中设置UART 总线。
模块可以由 NodeMCU 的 3.3V 输出供电。对于通信,您只需将 uart 总线的
tx_pin 连接到模块的 RX;但如果您需要播放状态的回馈,
则还需要将 rx_pin 连接到模块的 TX。
为了获得最佳音质,可以将有源立体声扬声器连接到模块的 DAC_R、
DAC_L 和 GND;或者,模块内置了一个 3W 音频放大器,在这种情况下,
应将 SPK_1 和 SPK_2 引脚连接到单个无源扬声器,并需要
5V 1A 的电源。
# Example configuration entrydfplayer:- uart_id (可选, ID):手动指定 UART 集线器的 ID。
- id (可选, ID):手动指定用于代码生成的 ID。
- on_finished_playback (可选, 自动化):播放完成时要执行的 动作。
dfplayer.is_playing 条件
Section titled “dfplayer.is_playing 条件”当播放处于活动状态时,此条件返回 true。
# In some trigger:on_...: if: condition: dfplayer.is_playing then: logger.log: 'Playback is active!'dfplayer.play_next 动作
Section titled “dfplayer.play_next 动作”开始播放下一曲目,或跳到下一曲目。
on_...: then: - dfplayer.play_next:dfplayer.play_previous 动作
Section titled “dfplayer.play_previous 动作”播放之前播放过的曲目。
on_...: then: - dfplayer.play_previous:dfplayer.play 动作
Section titled “dfplayer.play 动作”播放一个曲目。
on_...: then: - dfplayer.play: file: 23 loop: false # Shorthand - dfplayer.play: 23配置选项:
dfplayer.play_mp3 动作
Section titled “dfplayer.play_mp3 动作”播放 mp3 文件夹中的曲目。文件夹中的文件必须按 1 到 9999
编号,例如 0001.mp3、0002.mp3 等等。
文件夹名称必须为 mp3,放在 SD 卡根目录下,且
mp3 文件名需要是 4 位数字,例如 “0001.mp3”,放在 mp3 文件夹下。
如果需要,您可以在文件名中的数字后添加额外文本,例如
0001hello.mp3,但在 yaml 中必须始终只通过数字来引用。
/mp3 /0001hello.mp3 /0002.mp3 /0003_thisistheway.mp3 ..on_...: then: - dfplayer.play_mp3: file: 1 # Shorthand - dfplayer.play_mp3: 1配置选项:
- file (必选, int, 可模板化):要播放的
mp3文件夹内的文件编号。
dfplayer.play_folder 动作
Section titled “dfplayer.play_folder 动作”播放带编号文件夹中的文件,文件夹必须以 1 开头并用前导
零编号。例如 01、02 等等。文件夹中的文件必须以两个前导零编号,
例如 001.mp3、002.mp3 等等。
文件夹编号范围可以是 1 到 99,文件名范围可以是 1 到 255;或者
文件夹编号 1 到 10,文件编号 1 到 1000。
/01 /001.mp3 /002.mp3 ../02 /001.mp3 /002.mp3 /003.mp3 ..on_...: then: - dfplayer.play_folder: folder: 2 file: 1配置选项:
-
folder (必选, int, 可模板化):文件夹编号。
-
file (可选, int, 可模板化):要播放的 文件夹内的文件编号。仅在未设置
loop时可选。 -
loop (可选, boolean, 可模板化):重复播放 文件夹中的所有文件。会导致
file被忽略。默认为false。
dfplayer.set_device 动作
Section titled “dfplayer.set_device 动作”更改正在使用的设备。有效值为 TF_CARD 和 USB。
on_...: then: - dfplayer.set_device: TF_CARDdfplayer.set_volume 动作
Section titled “dfplayer.set_volume 动作”更改音量。
on_...: then: - dfplayer.set_volume: volume: 20 # Shorthand - dfplayer.set_volume: 20配置选项:
- volume (必选, int, 可模板化):音量值。
有效值为
0到30。
dfplayer.volume_up 动作
Section titled “dfplayer.volume_up 动作”调高音量。
on_...: then: - dfplayer.volume_updfplayer.volume_down 动作
Section titled “dfplayer.volume_down 动作”调低音量。
on_...: then: - dfplayer.volume_downdfplayer.set_eq 动作
Section titled “dfplayer.set_eq 动作”更改音频均衡器预设。
on_...: then: - dfplayer.set_eq: eq_preset: ROCK # Shorthand - dfplayer.set_eq: ROCK配置选项:
- eq_preset (必选, enum, 可模板化):均衡器预设值。有效值为
NORMAL、POP、ROCK、JAZZ、CLASSIC和BASS。
dfplayer.sleep 动作
Section titled “dfplayer.sleep 动作”进入睡眠模式。播放会停止,并且应发送 dfplayer.set_device: TF_CARD 动作
才能使播放再次启用。
on_...: then: - dfplayer.sleepdfplayer.reset 动作
Section titled “dfplayer.reset 动作”模块复位。
on_...: then: - dfplayer.resetdfplayer.start 动作
Section titled “dfplayer.start 动作”开始播放曲目或恢复暂停的播放。
on_...: then: - dfplayer.startdfplayer.pause 动作
Section titled “dfplayer.pause 动作”暂停播放,可以通过 dfplayer.start 从相同位置恢复播放。
on_...: then: - dfplayer.pausedfplayer.stop 动作
Section titled “dfplayer.stop 动作”停止播放。
on_...: then: - dfplayer.stopdfplayer.random 动作
Section titled “dfplayer.random 动作”随机播放所有曲目。
on_...: then: - dfplayer.random- id (可选, ID):如果您有多个组件,手动指定 DFPlayer 的 ID。
使用以下代码,您可以快速设置一个节点,并在 Home Assistant 的开发者工具中使用其服务。
例如,要调用 dfplayer.play_folder,请选择服务 esphome.test_node_dfplayer_play,并在
服务数据中输入
{ "file": 23 }uart: tx_pin: GPIOXX rx_pin: GPIOXX baud_rate: 9600
dfplayer: on_finished_playback: then: logger.log: 'Playback finished event'
api: actions: - action: dfplayer_next then: - dfplayer.play_next: - action: dfplayer_previous then: - dfplayer.play_previous: - action: dfplayer_play variables: file: int then: - dfplayer.play: !lambda 'return file;' - action: dfplayer_play_loop variables: file: int loop_: bool then: - dfplayer.play: file: !lambda 'return file;' loop: !lambda 'return loop_;' - action: dfplayer_play_folder variables: folder: int file: int then: - dfplayer.play_folder: folder: !lambda 'return folder;' file: !lambda 'return file;'
- action: dfplayer_play_loop_folder variables: folder: int then: - dfplayer.play_folder: folder: !lambda 'return folder;' loop: true
- action: dfplayer_set_device_tf then: - dfplayer.set_device: TF_CARD
- action: dfplayer_set_device_usb then: - dfplayer.set_device: USB
- action: dfplayer_set_volume variables: volume: int then: - dfplayer.set_volume: !lambda 'return volume;' - action: dfplayer_set_eq variables: preset: int then: - dfplayer.set_eq: !lambda 'return static_cast<dfplayer::EqPreset>(preset);'
- action: dfplayer_sleep then: - dfplayer.sleep
- action: dfplayer_reset then: - dfplayer.reset
- action: dfplayer_start then: - dfplayer.start
- action: dfplayer_pause then: - dfplayer.pause
- action: dfplayer_stop then: - dfplayer.stop
- action: dfplayer_random then: - dfplayer.random
- action: dfplayer_volume_up then: - dfplayer.volume_up
- action: dfplayer_volume_down then: - dfplayer.volume_down