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

Jun 07, 2021 17:48

Из того что есть на GitHub ничего не понравилось. Пришлось писать свою...

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



специально обученная перемычка для YX5200, YX5300, JL AAxxxx
На плату с GD3200B перемычек не завезли. Тут нужно поднять с земли STBY pin 1 усилителя NS8002 и бросить от него провод к BUSY pin 3 плеера GD3200B.



специально обученная перемычка для GD3200B



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



кросс платформенный терминал SerIO
Многие пишут что у модуля нет 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" и снимает паузу с основного.

Вот пожалуй и все. Забирать библиотеку тут.

UDP: На алишечки стали появляться совсем кривые платы с непонятной прошивкой и системой команд. Часы поддерживают только модули на чипах YX5200, YX5300, JL AAxxxx и GD3200B. Будьте внимательны при покупке!!!

#arduino, arduino

Previous post Next post
Up