СОДЕРЖАНИЕ ►
Довольно часто в проектах требуется сделать проигрывание музыки на Ардуино с SD карты. Для этого используется звуковой модуль dfplayer mini, который позволяет воспроизводить звуки в формате mp3 с флэшки или карты памяти. Рассмотрим, как подключить dfplayer mini к Arduino UNO, дадим описание и распиновку данного модуля, а также команды с библиотекой DFPlayer_Mini_Mp3.h для управления.
Характеристики DF Player mini
Распиновка модуля приведена на изображении, он представляет собой недорогой MP3-модуль со встроенным усилителем и выходами к динамикам. DFPlayer поддерживает такие аудио форматы, как MP3, WAV и WMA, которые можно считывать с флэшки или TF-карты до 32 Гб. С помощью данного модуля можно озвучивать проекты на Ардуино, один из них мы представляли ранее — это световой меч своими руками для детей.

Характеристики DF Player mini mp3
- Рабочее напряжение: 3,3 ~ 5 В
- Слот для хранения карт памяти Micro SD
- Работает даже без присутствия микроконтроллера
- Совместимость с форматами MP3, WAV, WMA
- Работает с форматами FAT16 и FAT32
- Поддерживает до 100 папок на SD-карте
- Максимум 255 композиций в одной папке
- 30 регулируемых уровней громкости
- 6 регулируемых уровней эквалайзера
Кроме того, данный модуль можно использовать без платы Arduino Nano, подключив к модулю питание, динамик и кнопки напрямую. Схема данного подключения (datasheet dfplayer mini) размещена далее на схеме выше. Питание модуля должно быть в пределах 3,3 — 5 Вольт. Все звуковые файлы должны лежать в папке «mp3» на флэшке или TF карты в следующем формате: «0001.mp3», «0002.mp3», «0003.mp3» и т.д.
Подключение DF Player mini к Arduino
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- модуль DF Player mini;
- SD карта или флэшка;
- динамик;
- провода «папа-мама».

На приведенной выше схеме представлено подключение DFplayer mini Arduino Uno. Также на приведенной схеме проиллюстрировано, как подключить к звуковому модулю USB порт, чтобы проигрывать звуки флэшки. После сборки схемы, сохраните на Flash-карте несколько звуковых файлов в формате: «0001.mp3», «0002.mp3», «0003.mp3» в папке «mp3». Все файлы и скетч можно скачать одним архивом здесь.
Скетч для mp3 модуля к Ардуино
#include "SoftwareSerial.h" // библиотека для для обмена данными #include "DFPlayer_Mini_Mp3.h" // подключаем библиотеку для DFPlayer Mini SoftwareSerial mySerial(2, 3); // RX, TX void setup() { mySerial.begin(9600); mp3_set_serial(mySerial); // включаем передачу данных с DFPlayer mp3_set_volume(10); // устанавливаем громкость от 0 до 30 mp3_set_EQ(0); // устанавливаем эквалайзер от 0 до 5 } void loop() { mp3_play(); // проигрываем первый файл в папке delay(5000); // задержка 5 секунд mp3_play(2); // проигрываем файл mp3/0002.mp3 delay(5000); // задержка 5 секунд mp3_next(); // проигрываем следующий файл delay(5000); // задержка 5 секунд mp3_next(); // проигрываем следующий файл delay(5000); // задержка 5 секунд }
Пояснения к коду:
- звуковой модуль, кроме усилителя, имеет эквалайзер. С помощью команды
mp3_set_EQ ();задается разная частота звучания музыки. Можно выставлять следующие значения: 0 — Normal, 1 — Pop, 2 — Rock, 3 — Jazz, 4 — Classic, 5 — Bass.
Описание команд библиотеки DFPlayer_Mini_Mp3.h:
mp3_set_volume();// установка громкости от 0 до 30
mp3_set_EQ();// эквалайзер от 0 до 5
mp3_play();// запуск воспроизведения
mp3_next();// следующий трек
mp3_prev();// предыдущий трек
mp3_pause();// пауза
mp3_stop();// стоп
Заключение. Мини-плеер DFPlayer обеспечивает частоты дискретизации 8, 11,025 12 16 22,05 24 32 44,1 и 48 кГц и 24-битный выход ЦАП. Он имеет 30 регулируемых уровней громкости, 6-уровневый эквалайзер и соотношение сигнал/шум (SNR) 85 дБ. Связь с модулем DFPlayer осуществляется через последовательный порт. Он имеет функции воспроизведения, остановки, паузы, перемотки вперед и назад между песнями.










Здравствуйте. Не получается выставить максимальную громкость. После уровня 20 плеер отказывается работать. В динамике получаю трещотку. Выход с встроенного усилка, питание 3.3 вольт, динамик 0,5 Вт на 8 Ом. Не думаю, что дело в питании. Может наводки от усилка идут на контролер? (Управление ардуинкой по UARTу)
Вижу такие варианты: подключите DF Player к 5 Вольтам, замените динамик, уменьшите громкость. После какого порога динамик начинает трещать?
Рома, такая же проблема с таким же, вероятно, динамиком на 0,5 Вт и 8 Ом. При том от уровня питания 3,3 В или 5 В ничего не зависит. Также продолжает трещать и на 5 В. Но я управлял с помощью кнопок без контроллера. Я так понимаю для решения этой задачки необходимо действительно менять динамик.
Необходимо поменять питание модуля DF Плеера = 5 вольт 1 Ампер хотя бы. или питать от акум. 18650
Что бы не было трещетки, динамик необходимо подключать к GND и AUX1 или AUX2
Доброго суток дня всем.
Я хочу иметь несколько папок на карте с разными аудио файлами, как должен выглядеть код, чтобы переключать папки через кнопки на Ардуино. Спасибо всем за помощь
К сожалению, все аудио файлы должны лежать в одной папке «mp3»
код крайне странно работает
функция mp3_play(1); delay(5000); не работает ( mp3_play(2);mp3_play(3);) так же не работают. А вот mp3_play(); mp3_next(); mp3_prev(); работают исправно.
Папка должна назваться mp3 и только так. Когда вы пишите mp3_play(1) это значит плеер ищет папку mp3 песню 0001. Файлы обязательно должны называться 0001хххх.mp3 Функция mp3_next, если файлы не пронумерованы, берёт наугад и хаотично
Спасибо! Все работает на dfplayer от кнопок, без Ардуино. Громкость регулируется долгим нажатием, треки переключаются быстрым нажатием на кнопку. Ещё не со всеми функциями разобрался, но штука полезная и интересная.
Стоп-стоп, не путайте людей. Эти сведения только для работы с этой БИБЛИОТЕКОЙ, но не с этим модулем. Папок может быть всего до 255 и в каждой папке может быть до 255 файлов. Вот мануал: files.amperka.ru/datasheets/DFPlayer_Mini.pdf
Vadim прав,- работают еще папки 01-99, правда нумерация файлов в них уже не 3 , а 4 знака: 001.mp3; 002.mp3; 003.mp3; …….и т.д.. (или 001_наименование.mp3; 002_наименование.mp3, 003_наименование.mp3……..и т.д.. )
Я попробовал — получилось, как в инструкции.
При воспроизведении звуков в Мониторе порта появляются рандомные символы, в основном квадратики, я так понимаю что то с кодировкой. То же самое было даже при отключенном RX. Скетч из примера.
Вопрос: Что за символы и как их корректно отобразить?
Порты TX и RX (аппаратный последовательный порт UART) в скетче работают для обмена информацией с модулем DF Player mp3, поэтому их нельзя использовать для вывода информации на Мониторе порта. Если есть такая необходимость, то следует добавить библиотеку SoftwareSerial для создания программного последовательного порта (для этого можно использовать любые цифровые порты) и уже к ним подключить DF Player.
Привет. Как сделать, чтобы воспроизведение было один раз по условию, например, когда на аналоговом входе будет 500. Надо чтоб при достижении этого значения запустился один трек и больше не повторялся.
После
mp3_play();поставьте задержку с нужным количеством миллисекундВСЕМ здравствуйте.
При работе указанного скетча и содержимого папки МР3 ,музыкальные файлы воспроизводятся с обрезанием окончания. Воспроизведение длится 5 с, как указано в delay(5000).
А нельзя ли доработать библиотеку так, чтобы функция mp3_play () ожидала окончания проигрывания предыдущего файла..(TF card finish playback 1st track —> 7E FF 06 3D 00 00 01 xx xx EF )
А то приходится между функциями mp3_play () вставлять бесконечный цикл с выходом по сигналу с 16 контакта Busy
while ( !digitalRead(PIN_INPUT)){}
а мне вообще нужно кучу процессов совместить и там delay() точно ни к месту!!!!!
Не встречались более толковые библиотеки?
1) чтоб не было треска, на Rx модуля припаяйте резистор 1к
2) чтоб ардуино определяла конец файла, выход модуля BUSY подайте на любой вход Ардуины и в цикле после PLAY проверяйте BUSY и будет Вам счастье)
ради бога напишите кусочек скетча чтобы по сигналу с busy останавливался плеер.
у меня не хватает нервов и мозгов. человечество вам будет благодарно
**чтоб не было треска, на Rx модуля припаяйте резистор 1к**
какая связь? усилителю не хватает питание, причем здесь передача команд UART
Здравствуйте, столкнулся с проблемой что Arduino IDE не видит эту библиотеку (не выделяет красным), качал с нескольких сайтов одно и тоже, видит в графе «подключить библиотеку» , но опять же не видит в программе. В чем может быть проблема?
Если программа не выводит ошибку, то никаких проблем нет в том, что не выделяется красным цветом библиотека
В Вашем примере библиотека SoftwareSerial совершенно ни при чем, она никакой функции не выполняет. Модуль подключен к аппаратному Serial — выводы 0 и 1, плюс к этому строка mp3_set_serial(Serial); поэтому и приходится отсоединять RX, TX.
В разрыв цепей Rx и Tx обязательно нужно включать резисторы 1 кОм. Так как логические уровни для того модуля 3.3В, а у Ардуинки 5В. По питанию нужно поставить электролит большой емкости, так как модуль при максимальной громкости жрет очень прилично. И вообще питать модуль лучше непосредственно от источника (тока стабилизатора Ардуинки может не хватить). Кстати, включение резисторов в цепи Rx и Tx помогают загружать скрипт в Ардуино без отключения DFPlayer.
Спасибо за ваши советы
Всё работает хорошо. От ардуино питается одновременно и 5 управляемых светодиодов плюс один подсветки.MP3 не греется.. Запитал от постороннего источника через LM317. 12 — 8B Греется LM. Ток 0,5А. Громкость 30. Динамик 4OM- 3w.
Необходимо отдельное питание 5 вольт.
Для беспрерывного воспроизведения (без delay,) нужно кидать файлы в корень флешки, а не в папку mp3.