跳转到内容

DF-Player mini

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

DF-Player mini 模块。

要让此组件工作,您需要在配置中设置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 entry
dfplayer:
  • uart_id (可选, ID):手动指定 UART 集线器的 ID。
  • id (可选, ID):手动指定用于代码生成的 ID。
  • on_finished_playback (可选, 自动化):播放完成时要执行的 动作。

当播放处于活动状态时,此条件返回 true。

# In some trigger:
on_...:
if:
condition:
dfplayer.is_playing
then:
logger.log: 'Playback is active!'

开始播放下一曲目,或跳到下一曲目。

on_...:
then:
- dfplayer.play_next:

播放之前播放过的曲目。

on_...:
then:
- dfplayer.play_previous:

播放一个曲目。

on_...:
then:
- dfplayer.play:
file: 23
loop: false
# Shorthand
- dfplayer.play: 23

配置选项:

  • file (必选, int, 可模板化):全局曲目 编号(来自设备中的所有曲目)。

  • loop (可选, boolean, 可模板化):重复播放 同一曲目。默认为 false。

播放 mp3 文件夹中的曲目。文件夹中的文件必须按 1 到 9999 编号,例如 0001.mp3、0002.mp3 等等。 文件夹名称必须为 mp3,放在 SD 卡根目录下,且 mp3 文件名需要是 4 位数字,例如 “0001.mp3”,放在 mp3 文件夹下。 如果需要,您可以在文件名中的数字后添加额外文本,例如 0001hello.mp3,但在 yaml 中必须始终只通过数字来引用。

Terminal window
/mp3
/0001hello.mp3
/0002.mp3
/0003_thisistheway.mp3
..
on_...:
then:
- dfplayer.play_mp3:
file: 1
# Shorthand
- dfplayer.play_mp3: 1

配置选项:

  • file (必选, int, 可模板化):要播放的 mp3 文件夹内的文件编号。

播放带编号文件夹中的文件,文件夹必须以 1 开头并用前导 零编号。例如 01、02 等等。文件夹中的文件必须以两个前导零编号, 例如 001.mp3、002.mp3 等等。 文件夹编号范围可以是 1 到 99,文件名范围可以是 1 到 255;或者 文件夹编号 1 到 10,文件编号 1 到 1000。

Terminal window
/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。

更改正在使用的设备。有效值为 TF_CARD 和 USB。

on_...:
then:
- dfplayer.set_device: TF_CARD

更改音量。

on_...:
then:
- dfplayer.set_volume:
volume: 20
# Shorthand
- dfplayer.set_volume: 20

配置选项:

  • volume (必选, int, 可模板化):音量值。 有效值为 0 到 30。

调高音量。

on_...:
then:
- dfplayer.volume_up

调低音量。

on_...:
then:
- dfplayer.volume_down

更改音频均衡器预设。

on_...:
then:
- dfplayer.set_eq:
eq_preset: ROCK
# Shorthand
- dfplayer.set_eq: ROCK

配置选项:

  • eq_preset (必选, enum, 可模板化):均衡器预设值。有效值为 NORMAL、POP、ROCK、JAZZ、 CLASSIC 和 BASS。

进入睡眠模式。播放会停止,并且应发送 dfplayer.set_device: TF_CARD 动作 才能使播放再次启用。

on_...:
then:
- dfplayer.sleep

模块复位。

on_...:
then:
- dfplayer.reset

开始播放曲目或恢复暂停的播放。

on_...:
then:
- dfplayer.start

暂停播放,可以通过 dfplayer.start 从相同位置恢复播放。

on_...:
then:
- dfplayer.pause

停止播放。

on_...:
then:
- dfplayer.stop

随机播放所有曲目。

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