Skip to main content

Library to use the DFPlayer mini mp3 player module with micropython

Project description

pypi version shield pypi downloads per month shield

Description

A micropython library to control the DFPlayer mini mp3 player module.

This library focuses on the most essential functions. Some advanced functions of the DFPlayer, like the equalizer modes are not implemented yet.

Further this library is made to use the folders function of the dfmini. You can use up to 99 folders and 255 files per folder. The files on your micro sd card need to be structured like this:

.
├── 01
│   ├── 001.mp3
│   ├── 002.mp3
│   └── ...
├── 02
│   ├── 001.mp3
│   ├── 002.mp3
│   └── ...
├── 03
│   ├── 001.mp3
│   ├── 002.mp3
│   └── ...
└── ...

There should be no gaps in the numbering scheme. It might be best to prepare the whole file structure on your harddrive first and then copy them in one go on a freshly formated micro sd card, as the DFPlayer might get confused from artifacts left on the sd cards filesystem. You can use the files in /sample_files to test your module.

Sometimes the module isn't able to keep up if you try to send commands to fast, so some delay between the commands is needed.

Connection

  • Connect GND of the DFPlayer to the GND of your microcontroller (and your power source)
  • Connect VCC of the DFPlayer to 3.3V / 5V
  • Connect the RX pin of the DFPlayer to the TX pin of your microcontroller. This is used to send data to the DFPlayer mini.
  • Connect the TX pin of the DFPlayer to the RX pin of your microcontroller. This is optional and only needed if you want to return data from the DFPlayer (as in get_files_in_folder(), get_volume() or ìs_playing())

DFPlayer mini pinout

Examples

Play a file from a folder

import time
from dfplayer import DFPlayer
df=DFPlayer(uart_id=1,tx_pin_id=4,rx_pin_id=5)
#wait some time till the DFPlayer is ready
time.sleep(0.2)
#change the volume (0-30). The DFPlayer doesn't remember these settings
df.volume(25)
time.sleep(0.2)
#play file ./01/001.mp3
df.play(1,1)

Find the number of files in a folder

If a folder doesn't exist, get_files_in_folder will return 0

import time
from dfplayer import DFPlayer
df=DFPlayer(uart_id=1,tx_pin_id=4,rx_pin_id=5)
#wait some time till the DFPlayer is ready
time.sleep(0.2)
print(df.get_files_in_folder(1))
time.sleep(0.2)
print(df.get_files_in_folder(4))

API

class DFPlayer(uart_id,tx_pin_id=None,rx_pin_id=None)

  • uart_id: Uart channel you want to use (0 or 1 for pi pico)
  • tx_pin_id: Pin id for uart tx if your board supports changing the pins of the uart channel.
  • tx_pin_id: Pin id for uart rx if your board supports changing the pins of the uart channel.

play(folder,file)

  • play a file from a folder (stops all previous playback)
  • folder: Folder number of the file you want to play
  • file: File number of the file you want to play

stop()

  • stop all playback

volume(vol)

  • set the volume of the module.
  • vol: Volume of the module. The range is 0 to 30. The DFPlayer doesn't remember these settings

volume_up()

  • increase the volume by 1 up to the maximum of 30.

volume_down()

  • decrease the volume by 1 down to the minimum of 1.

get_volume()

  • returns the current volume setting of the module or -1 on communication error

ìs_playing()

  • returns if currently some playback is running or -1 on communication error

get_files_in_folder(folder)

  • returns the number of files in a folder or 0 if the folder doesn't exist or -1 on communication error
  • folder: folder to get the number of files in

reset()

  • reset the module

send_cmd(cmd,param1=0,param2=0)

  • sends a command byte with 2 bytes for parameters to the module. This can be used to send commands not yet implemented in this library. Use the modules documentation as reference.
  • cmd: cammand byte (0-255)
  • param1: parameter 1 or MSB of a 2 byte parameter
  • param2: parameter 2 or LSB of a 2 byte parameter

send_query(cmd,param1=0,param2=0)

  • like send_cmd, but returns the bytes the module sends as answer to the query
  • cmd: cammand byte (0-255)
  • param1: parameter 1 or MSB of a 2 byte parameter
  • param2: parameter 2 or LSB of a 2 byte parameter

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

micropython_dfplayer-1.0.5.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

micropython_dfplayer-1.0.5-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file micropython_dfplayer-1.0.5.tar.gz.

File metadata

  • Download URL: micropython_dfplayer-1.0.5.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.6

File hashes

Hashes for micropython_dfplayer-1.0.5.tar.gz
Algorithm Hash digest
SHA256 eafaaf5834014ad405b6bba9e65b8e5f90bcb7d7e27e54544d1a18173b39229c
MD5 91b33e706e7a2c4ef5321a6a545f8886
BLAKE2b-256 c352f89c0bb6fa44e52cba9f44d76845f72f0b762905f0c431bbc03b4ab0132e

See more details on using hashes here.

File details

Details for the file micropython_dfplayer-1.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for micropython_dfplayer-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d1dab45b20f1011ab71f1ffe954832ec8ce94d27d51c4976311d03505cbf7ab3
MD5 6664b5749ed3ee45d51ec74afcaf7852
BLAKE2b-256 58920043b55036802ac60a77249191450009192fd9bb7d315858454a809b87b6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page