• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Библиотека для DFPlayer Mini

enjoynering

Well-known member
Из того что есть на GitHub ничего не понравилось, но появились вопросы. Так и не понял зачем, для ожидания ответа, люди городят огород с millis(), delay() или дополнительными библиотеками. Все уже давно есть в Arduino - Serial.setTimeout() и Serial.readBytes(). Второй вопрос у меня к китайским товарищам. Зачем они ставят перемычку не туда? Из-за этого во время инициализации чипа из динамика валит шум и треск. У усилителя DM8002 есть standby режим, а у DFPlayer Mini есть пин busy. Нужно просто перепаять резистор/перемычку справа (STBY->GND) налево (STBY-BUSY).

DFPlayer_Mini_Modification.jpg

В datasheet куча непоняток и неточностей. Например я так не понял как уводить модуль в loop all, loop folder, random. Мой умеет только loop track. Пытался найти перебором - модуль отвечает ошибкой на все команды, выше 0x1A. Перепутаны местами количество треков на USB и SD card и тд. Sleep не отключаем и работает всегда - после проигрывания модуль снижает потребление до 20-25мА в не зависимости от команды.

Многие пишут что у модуля нет mute. Это не правда. Для этого есть команда 0x1A, я ее обернул в enableDAC(bool enable). Остальные забыли школьную программу и не знают как найти количество треков в папке "mp3". Всего-то надо отнять количество треков в каждой папке из количества всех треков на карте. Вот как я делаю это в MatrixClock:

Код:
tracks = mp3.getTotalTracksSD() - mp3.getTotalTracksFolder(1) - mp3.getTotalTracksFolder(2);
У модуля адские требования к названию файлов. Если файлы находятся в корне, то они должны содержать 4-е цифры с ведущими нулями. Например: SD_ROOT/0001 - My favorite song.mp3. DFPlayer Mini сортирует root по времени записи на флешку. Не копируйте 0003.mp3, а затем 0001.mp3, тк сначала будет воспроизведен 0003.mp3.

Желательно распихать файлы по папкам. Папки должны содержать 2-e цифры с ведущими нулями. Количество папок 01..99. Файлы внутри должны содержать 3-и цифры с ведущими нулями. Количество файлов в каждой папке 001..255. Например: SD_ROOT/01/001 - My favorite song.mp3. В отличии от корня, файлы из папок можно читать по номеру файла, а не по времени записи на флешку.

Есть еще - папка "mp3" и "advert". Файлы внутри должны содержать 4-е цифры с ведущими нулями, количество файлов 0001..9999 и можно читать по номеру файла. Например: SD_ROOT/mp3/0001 - My favorite song.mp3. Файлы из "advert" проигрываются только если уже играет трек. Тогда модуль ставит текущий на паузу, проигрывает файл из "advert" и снимает паузу с основного.

Забирать библиотеку тут.
 
Сверху Снизу