Package: micropython-dfplayer
DescriptionA micropython library to control theDFPlayer minimp3 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_filesto 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.ConnectionConnect GND of the DFPlayer to the GND of your microcontroller (and your power source)Connect VCC of the DFPlayer to 3.3V / 5VConnect 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 inget_files_in_folder(),get_volume()orìs_playing())ExamplesPlay a file from a folderimporttimefromdfplayerimportDFPlayerdf=DFPlayer(uart_id=1,tx_pin_id=4,rx_pin_id=5)#wait some time till the DFPlayer is readytime.sleep(0.2)#change the volume (0-30). The DFPlayer doesn't remember these settingsdf.volume(25)time.sleep(0.2)#play file ./01/001.mp3df.play(1,1)Find the number of files in a folderIf a folder doesn't exist, get_files_in_folder will return 0importtimefromdfplayerimportDFPlayerdf=DFPlayer(uart_id=1,tx_pin_id=4,rx_pin_id=5)#wait some time till the DFPlayer is readytime.sleep(0.2)print(df.get_files_in_folder(1))time.sleep(0.2)print(df.get_files_in_folder(4))APIclass 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 playfile: File number of the file you want to playstop()stop all playbackvolume(vol)set the volume of the module.vol: Volume of the module. The range is 0 to 30. The DFPlayer doesn't remember these settingsget_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 errorget_files_in_folder(folder)returns the number of files in a folder or 0 if the folder doesn't exist or -1 on communication errorfolder: folder to get the number of files inreset()reset the modulesend_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 modulesdocumentationas reference.cmd: cammand byte (0-255)param1: parameter 1 or MSB of a 2 byte parameterparam2: parameter 2 or LSB of a 2 byte parametersend_query(cmd,param1=0,param2=0)like send_cmd, but returns the bytes the module sends as answer to the querycmd: cammand byte (0-255)param1: parameter 1 or MSB of a 2 byte parameterparam2: parameter 2 or LSB of a 2 byte parameter