DF-Player Mini (AKA FN-M16P) Расширенная библиотека для STM32

Мадиас
Пн, 6 июля 2015 г. 18:12
Привет,
По мере необходимости для моего проекта «Wooden-MP3-Player» я полностью переписал оригинальную библиотеку (теперь все команды включены!)

Вы можете получить этот маленький модуль примерно на 4-6USD (Search Tip: «DF-Player Mini» и (!) "Fn-m16p")

хороший: Качество звука, строительство усилителя, простые в обращении (все через последовательные команды, только модуль TX и RX для микроконтроллера), все мои карты Micro SD работают (даже форматирован FAT32)
плохой: Имена файлов не возвращаются, файлы и заказы должны быть конкретными.

Бонус: Не в таблице данных: просто подключите USB-фиксы (через 27R) к USB-разъему, а игрок действует как «съемное устройство», немного медленно, но полезно.

В качестве дополнения я включил полный серийный пример для начала. Stm32_df_player_serial_demo

Для таблицы данных, Пожалуйста, Google "Fn-M16p Embedded Mp3 Audio Module", а не DF-Player (неполный и серьезный (!) ошибки!)

Rogerclark
Пн, 6 июля 2015 г., 21:40
Матиас

Вы покупали на eBay или AliexPress. Я не могу найти это на ebay Australia

Мадиас
Пн, 6 июля 2015 г., 21:45
http: // www.aliexpress.com/item/mini-mp3 ... 68837.HTML

Странно, как я нашел это :) В описании нет «DF-Player» или FN-M16P, но это оригинальный DF-игрок.

Редактировать: офтопический: Посмотрите на рейтинг продавца, вау. Я знаю, что доставка была невероятной пост (13 дней до Австрии - это действительно новый рекорд).

Rogerclark
Пн, 6 июля 2015 г. 22:03
Спасибо, Матиас

Я могу видеть это только на AliexPress, все модули MP3 на моем eBay, кажется, используют WDT020, который у меня уже есть, и это в целом бесполезно, так как он играет только специально кодированные файлы.

Я буду от Aliexpress.

КСТАТИ. На прошлой неделе у меня было несколько рекордов от поставщиков eBay Китая на прошлой неделе. Я думаю 7 или 8 дней !! от некоторых поставщиков.

Возможно, China Mail не очень занята экспресс -пакетами на данный момент

Бдбелл
Вторник 01 декабря 2015 г., 16:29
Привет, Матиас,

Я работаю над MP3 -будильником для моей дочери на Рождество. Я тестирую с Maple R3 и Mini, а DFPlayer - один из DFROBOT. Имею проблему, чтобы получить ваш эскиз STM32_DF_PLAYER_SERIAL_DEMO, чтобы воспроизвести любые файлы - все, что я получаю, это «Ошибка: указанный трек не найден»? Эскиз "dfplayer_sample" работает нормально - поэтому я знаю, что мои соединения, именование файлов и SD -карта в порядке. Я пробовал довольно много разных имен файлов/папок без повезения....

Требует ли ваша измененная библиотека другой формат именования файлов/папки, чем оригинал?

Мадиас
Ср 02 декабря 2015 г., 7:00 утра
Привет,
Вы установили мою библиотеку с первого поста?
Да, я изменил много вещей, потому что оригинальная библиотека была действительно неполной (не все команды были включены плюс небольшие ошибки)
Вот мой полный проект (возможно, полезно для сравнения) + библиотека снова.

с уважением
Матиас

Мадиас
Ср 02 декабря 2015 г. 8:40
Некоторая дополнительная важная информация:
Если вы планируете использовать игрока с папками, вам нужно подчиняться следующей структуре, В противном случае он не будет играть в режиме папки!
Все папки должны иметь имя "01", "02", "03",... «99»
Все mp3 в папках должны иметь имя "001.mp3 "," 002.mp3 " ....
Итак, у вас есть:
01
--001.mp3
--002.mp3
--XXX.mp3
02
--001.mp3
--002.mp3
и так далее.

Я не уверен, можете ли вы использовать имена файлов, такие как "001_songxy.mp3 "," 002_songyz.mp3 "Я не пробовал это.

Бдбелл
Пт, 04 декабря 2015 г., 16:35
Я получил это работа - я использовал неправильное именование файлов/папки - изменил его, и все хорошо сейчас хорошо. Я также попробовал "001_songxy.формат файла mp3 ", и он работает нормально.

Еще раз спасибо за вашу помощь!

ваше здоровье,

Брент

Мадиас
Пт, 04 декабря 2015 11:24
Дорогой Брент,
Я рад вам помочь!
Забавно в том, что я строю прошлым летом MP3 -плеер для моей дочери тоже :) Она любит это и использует каждый день. Так что, надеюсь, вы подготовите его до Рождества!
Вот моя ссылка на проект (если вы еще не видели ее): ViewTopic.PHP?F = 19&t = 14&начало = 20

Ваше здоровье
Матиас

Уилрей
Чт 31 декабря 2015 г., 2:30
Матиас,

Есть ли шанс, что вы можете подтвердить, что команда mp3_next () фактически поступает последовательно через файлы в правильном порядке при тестировании, от 0001.mp3 через любой максимальный номер, который вы назначили, а затем перерабатывает до 0001.mp3 и повторения?

На моем плате я, кажется, могу попросить любой конкретный номер файла Foo (mp3_play (<Фу>)), и он правильно воспроизводит этот файл, однако, mp3_next (), по -видимому, проходит через файлы случайной (но неоднократно последовательной) модой. я.эн., Если у меня есть 8 файлов с именем 0001.mp3 ... 0008.mp3, он будет играть 1,8,7,6,4,3,5,2,11... и повторить этот цикл снова и снова. Если я назову файлы 001.mp3 ... 008.mp3, он пройдет через них в другом детерминированном порядке. Я почти уверен, что в обоих случаях mp3_play (я.эн.3), правильно играет 0003/003.mp3, и т.д.

Поскольку у меня есть N из 1, я не могу понять, делаю ли я что -то не так, или это ожидаемое поведение, или ???

Любое понимание того, что вы наблюдали в своей работе, было бы действительно полезно!

Воля

Мадиас
Сб 02 января 2016 г., 7:27 утра
Здравствуйте, извините за отсроченный ответ:
Сначала я не помню, как точно управлял файловой системой. Как я помню, есть некоторые проблемы, поэтому я сделал это вручную. (Чтение обратно ошибки, если следующий файл недоступен)
Пожалуйста, не стесняйтесь изучить мой код!
https: // drive.Google.com/folderview?id = ... sp = совместное использование
Последняя версия должна быть в "Sketches/vali_mp3_master3"
Я уверен, что если вы используете режим папки, вы должны использовать имена файлов для mp3, как "001.mp3 ", а не" 0001.mp3 "Внутри папок.

Бдбелл
Пн, 04 января 2016 г., 13:33
Привет,

Я использую 01,02... Имена папок и 001,002 для файлов MP3, и я не заметил никаких проблем с порядком файлов, воспроизводимых, когда я тестировал команду mp3_next. Я закончил тем, что не использовал mp3_next, но я отслеживаю воспроизведения папки/файла в настоящее время и использую mp3_play (трек, папка) для воспроизведения в следующем файле. Это также позволяет мне перейти в следующую папку, когда воспроизводится последний файл, отслеживая # треков в каждой папке.

Уилрей
Ср 13 января 2016 г. 1:28
Итак, означает ли это, что вы полагаетесь на знание количества папок и треков в каждом, чтобы правильно перемещаться между треками, или, успешно ли вы извлеките эти данные из ответов на статус из Mini Player Adware?

Я начал пытаться прочитать данные от игрока и ни к чему не получал, но я думаю, что это была проблема с конверсией уровня. Наконец-то вытащил конвертер уровня из коробки с частями, и сейчас я получаю 8-байтовые ответы, поэтому затем попытаться выяснить, являются ли эти ответы разумными. Я беспокоюсь о том, что не воспроизводимые файлы (не mp3 и т. Д.) Подсчитаны хотя. Может быть, не станет проблемой на практике?

В то же время у меня работают работа, используя номера треков (и увеличивая их для перемещения вперед к «Далее») и проверки строки «занятой», чтобы увидеть, вышел ли я вперед мимо конца существующих файлов. Неэлегантный, но, по крайней мере, пригодным для использования для моих целей.

Поведение «предыдущее/следующее» в отсутствие явных номеров треков (даже с файлами с именем 00# или 0# или 000#) просто испорчено, по крайней мере, с версией оборудования, которую у меня есть. Я заметил примечание, где-то на междопах, где кто-то предположил, что эти устройства могут быть достаточно тупыми в отношении доступа к файловой системе, который «следующий» им не означает алфа предна. Я не подтвердил это, но что бы ни делало для реализации Prev/Next, определенно не имеет ничего общего с буквенно-цифровой сортировкой имен файлов, поэтому блок-заказ, по крайней мере, разумный предположение.

Уилрей
Ср 13 января 2016 г. 1:37
Мадиас написал: Я уверен, что если вы используете режим папки, вы должны использовать имена файлов для mp3, как "001.mp3 ", а не" 0001.mp3 "Внутри папок.

Уилрей
Ср 13 января 2016 г., 19:40
И я подтвердил, что знание модуля о файловой системе достаточно тривиально, чтобы процедуры mp3_get _*_ sum () более или менее бесполезны.

Они возвращают общее количество файлов на устройстве, а не общее количество воспроизводимых файлов, которые вы хотите, чтобы они вернули. В результате, если ваша операционная система имеет привычку оставлять файлы «точки», лежащие вокруг, или скрытые каталоги с невозможным мусором и т. Д., Процедуры get _*_ sum () нельзя рассчитывать, чтобы сообщить вам о фактическом количестве воспроизводимые файлы.

Это может быть приемлемо, если у вас есть строго контролируемая среда и может гарантировать, что носитель всегда чист от всего, кроме воспроизводимых, правильно именованных файлов, но он слишком хрупкий, чтобы использовать, где случайные пользователи могут подключить носитель с потенциально неожиданным содержанием файловой системы.

Похоже, что самый безопасный способ реализации следующего/предыдущего - использовать команду Play (#) с явными номерами треков и линейкой занято в занятом статусе.

Гариндо
Вторник 20 сентября 2016 г. 15:19
Привет, я использую это.
Например, функция вызова:
SoundNumber (1);



int crcaudio = 0;

void init () {
crcaudio = 0- (255+6+6+0+0+30);
Аудио.Печать (126, байт);
Аудио.Печать (255, байт);
Аудио.Печать (06, байт);
Аудио.Печать (06, байт);
Аудио.Печать (00, байт);
Аудио.Печать (00, байт);
Аудио.Печать (30, байт);
Аудио.Печать (254, байт);
Аудио.Печать (Crcaudio, Byte); //// Crc
Аудио.Печать (239, байт);

задержка (100);

}

///// mp3 номер в имени папки = 01
void soundnumber (int num) {
crcaudio = 0- (255+06+15+00+01+num);
Аудио.Печать (126, байт);
Аудио.Печать (255, байт);
Аудио.Печать (06, байт);
Аудио.Печать (15, байт);
Аудио.Печать (00, байт);
Аудио.Печать (01, байт); /////папка 01
Аудио.print (num, byte); //// mp3 номер 01.mp3.......02.mp3...
Аудио.Печать (254, байт);
Аудио.Печать (Crcaudio, Byte);
Аудио.Печать (239, байт);
задержка (400);
}