Распиновка dfplayer mini

Модуль DFPlayer Mini для проигрывания mp3 файлов.

Сегодня будем изучать такую интересную вещь как аудиоплеер.
Есть такой модуль для Ардуино, DFPlayer.
Но прелесть этого модуля в том, что он может работать и без Ардуино.
Другую статью про этот модуль можно прочитать здесь.
Для сборки достаточно только MicroSD карты от 2 до 32 Gb, двух кнопок и динамика.
Питается всё это от 3,3-5 вольт.

Характеристики модуля DFPlayer MP3 mini аудио:
Напряжение питания: 3,3–5 В
Количество каналов: 1 моно, 3 Вт + 2 стерео, без усилителя
Поддерживаемые частоты дискретизации: 8, 11,025, 12, 16, 22,05, 24, 32, 44,1, 48 кГц
Разрядность ЦАП: 24 бита
Отношение сигнал/шум: до 85 дБ
Поддерживаемые файловые системы: FAT16, FAT32
Максимальный объём SD-карты: 32 ГБ
Количество каталогов композиций: до 100
Количество композиций в каталоге: до 255
Форматы аудиофайлов: MP3, WAV, WMA
Кол-во уровней громкости: 30
Режимов эквалайзера: 6 (Normal/Pop/Rock/Jazz/Classic/Base)

Применять можно как в разных поделках будильниках, музыкальных шкатулках, так и в более серьёзных проектах, таких как сигнализации, оповещении и многих других.
На MicroSD карту можно записать огромное количество файлов и обращаться к любому из них по запросу из скетча.
Для работы с Ардуино нужна библиотека DFPlayer-Mini-mp3.zip скачать можно с этого сайта.
Если вы хотите собрать плейер без Ардуино, то и библиотека не нужна. Просто подключаете модуль по этой схеме и слушаете музыку.
Правда в такой конструкции есть недостатки.

  1. Нельзя включить запись, например 12, можно только пролистывать до нужной записи нажимая кнопку Следующая/Предыдущая. Короче, только по порядку.
  2. Нельзя запустить случайное проигрывание, опять только по порядку
  3. Можно прослушивать только по одной записи. Одна проиграла, плейер выключился. Снова нажали он включился и стала воспроизводиться следующая запись.

Подготовка карты MicroSD
Карта должна быть от 2 до 32 Gb и отформатирована в FAT16 или FAT32
Создаём папку mp3 (это обязательно) и переносим туда ваши записи.
Записи должны начинаться с 0001 0002 0003 итд. После цифр могут быть любые название
напр. 0001-ABBA-concert.mp3

Описание контактов модуля DFPLayer:

Номер вывода Название Описание вывода Описание
1 VCC Питание Питание постоянного тока от 3 до 5 Вольт
2 RX UART serial input
3 TX UART serial output
4 DAC_R Audio output right channel Выход на усилитель, правый канал
5 DAC_L Audio output left channel Выход на динамик, со встроенного усилителя до 3W
9 IO1 Trigger port 1 Короткое нажатие | (длительное нажатие — уменьшение громкости)
10 GND Ground Выход на динамик, со встроенного усилителя до 3W
11 IO2 Trigger port 2 Короткое нажатие (длительное нажатие — увеличение громкости)
12 ADKEY1 AD port 1 Trigger play first segment
13 ADKEY2 AD port 2 Trigger play fifth segment
14 USB USB DP USB Port
15 USB- USB- DM USB Port
16 Busy Playing Status Low means playingHigh means no

НА Модуле есть два каскада выходного сигнала.
Выход на внешний усилитель(DAC_R и DAC_L стерео) и Выход на динамик(SPK_1 и SPK_2 моно режим)

Список функций DFPlayer Mini:

  • mp3_play (); // Запуск воспроизведения
  • mp3_play (5); // Воспроизвести файл «mp3/0005.mp3»
  • mp3_next (); // Следующий трек
  • mp3_prev (); // Предыдущий трек
  • mp3_set_volume (uint16_t volume); // Уровень громкости 0

30
mp3_set_EQ (); // Эквалайзер 0

5 (0 — Normal, 1 — Pop, 2 — Rock, 3 — Jazz, 4 — Classic, 5 — Bass)

  • mp3_pause (); // пауза
  • mp3_stop (); // остановить воспроизведение
  • mp3_random_play (); // Воспроизвести в случайном порядке.
  • void mp3_get_state (); //send get state command
  • void mp3_get_volume ();
  • void mp3_get_u_sum ();
  • void mp3_get_tf_sum ();
  • void mp3_get_flash_sum ();
  • void mp3_get_tf_current ();
  • void mp3_get_u_current ();
  • void mp3_get_flash_current ();
  • void mp3_single_loop (boolean state); //set single loop
  • void mp3_DAC (boolean state);
  • Подключение к Ардуино будет описано в следующей статье блога (подписывайтесь что бы не пропустить).

    А сейчас рассмотрим, как собрать без Ардуино.

    Есть два способа, Простой и более сложный.
    Рассмотрим простой.
    Нам понадобится сам модуль плеера, MicroSD карта, две кнопки и динамик.

    Управление плейером.

    • Длительное нажатие кнопки S1 — Громкость меньше
    • Короткое нажатие кнопки S1 — Следующая запись
    • Длительное нажатие кнопки S2 — Громкость больше
    • Короткое нажатие кнопки S2 — Предыдущая запись

    Более сложный режим

    Источник

    Подключение модуля DFPlayer Mini к arduino

    Рейтинг статьи: 3.872/5 (47 голосов).

    Схема подключения модулей MP3 DFPlayer Mini на базе yx5300 к arduino, система команд UART

    Спонсор этой страницы:

    Предисловие

    В связи с удешевление TF карт, стало интересно использовать MP3 модули в своих проектах. Возможно это говорящие часы, или термометр, а возможно звуки в игрушечной машинке. на Ali я встредил 2 варианта модулей. Они на одной микросхеме и управляются одинаковыми командами.

    Размеры и распиновка

    MP3 DFPlayer Mini

    Подключение к arduino

    RX и TX обоих MP3 плейеров работают от 3.3V до 5V. Возможно 2 варианта подключения.

    Вариант 1: Через TX, RX arduino.
    Плюс в простоте подключения.
    Минус в занятости порта, когда arduino подключена к компьютеру.
    TX arduino к RX DFPlayer
    RX arduino к TX DFPlayer

    void setup()
    <
    Serial.begin(9600);
    delay(500);
    .

    Вариант 2: Через виртуальны TX, RX arduino (например 7,8);
    Плюс в возможности работы устройства, когда arduino подключена к компьютеру.
    Минус — занятие двух контактов, которые могут понадобиться в больших проектах.

    #include
    #define pin_TX 7 // artuinio TX mp3 player RX
    #define pin_RX 8 // artuinio RX mp3 player TX
    SoftwareSerial mp3(pin_RX, pin_TX);
    void setup()
    <
    mp3.begin(9600);
    delay(500);
    .

    Задержка необходима для инициализации mp3 плеера

    Структура папок и файлов

    На носителе можно создать 99 нумерных папок, от «01» до «99»
    именные папки «MP3» и «ADVERT»
    в номерные папки можно поместить обычные и нумерные файлы (нумерация от «001_имя.mp3» до «255_имя.mp3»)
    в именные папки можно поместить обычные и нумерные файлы (нумерация от «0001_имя.mp3» до «9999_имя.mp3»)
    Производитель предупреждает, что если файлов будет больше 3000, то будет замедление в работе.

    Управление DFPlayer mini

    Структура команды

    Через порт подключения посылаются команды.
    Длинна команды с контрольной суммой — 10 байт.
    Возможна отсылка команды без контрольной суммы — 8 байт.

    $S 0x7E начало
    VER 0xFF Версия
    Len 0xNN количество байт в команде без начального и конечного байта, 0x06 — без конр. суммы, 0x08 — c конр. суммы
    CMD 0xNN команда/запрос
    FeedBack 0xNN 1-потребовать подтверждение успешности, 0-не требовать
    Para_MSB 0xNN наиболее значимый байт параметра
    Para_LSB 0xNN наименее значимый байт параметра
    конр.сумма Check_MSB Check_LSB Checksum (2 bytes) = 0xFFFF–(Ver.+Length+CMD+Feedback+Para_MSB+Para_LSB)+1 (можно опустить.)
    $O 0xEF Конец команды

    В примерах я буду использовать второй вариант подключения через виртуальный Serial mp3

    static uint8_t cmdbuf[8] = <0>;

    void command(int8_t cmd, int8_t Para_MSB, int8_t Para_LSB)
    <
    cmdbuf[0] = 0x7e;
    cmdbuf[1] = 0xFF;
    cmdbuf[2] = 0x06;
    cmdbuf[3] = cmd;
    cmdbuf[4] = 0x00;
    cmdbuf[5] = Para_MSB;
    cmdbuf[6] = Para_LSB;
    cmdbuf[7] = 0xef;
    for (uint8_t i = 0; i 03 00 00 02 EF» Проиграть второй файл
    «7E FF 06 03 00 02 FF EF» Проиграть 767 файл 0x04 00 00 Громче 0x05 00 00 Тише 0x06 00 NN Громкость (0..30)
    «7E FF 06 06 00 00 1E EF» Максимальная 30 (1E) 0x07 00 NN Эквалайзер 0:Normal/1:Pop/2:Rock/3:Jazz/4:Classic/5: Bass 0x08 NN MM Циклическое воспроизведение песни «MM» из папки «NN»
    «7E FF 06 08 00 01 02 EF» — Проиграть в цикле файл «01\002Имя.mp3» 0x09 00 NN Устройство 1 — USB 2 — TF, 4 — Flash 0x0A 00 00 Переход в спящий режим 0x0B 00 00 Пробуждение 0x0C 00 00 Reset 0x0D 00 00 Play 0x0E 00 00 Pause 0x0F NN MM Проиграть файл «MM» из папки «NN»
    «7E FF 06 0F 00 01 03 EF» — Проиграть файл «01\003. mp3» 0x10 NN MM Настройка усиления звука MSB=1: усиление включено, LSB: установить усиление 0-31 0x11 00 00 Включить циклическое воспроизведение всех файлов из всех папок 0x12 NN MM Воспроизвести файл 0xNNMM из папки «MP3»
    «7E FF 06 12 00 01 02 EF» — Проиграть файл «mp3\0193. mp3» 0x13 NN MM Вставить объявление 0xNNMM из папки «ADVERT» во время воспроизведения
    «7E FF 06 13 00 00 02 EF» — Вставить объявление «ADVERT\0002. mp3». После объявление воспроизведение продолжится с прерванного места 0x14 NM MM Поддержка больше 1000. Имя папки — первые 4 байта из MSB («01» — «15», остальное имя файла)
    «7E FF 06 14 00 C7 Cf EF» — Проиграть файл «12\1999. mp3»
    «7E FF 06 14 00 10 09 EF» — Проиграть файл «01\0009. mp3» 0x15 00 00 Прекратить объявление и вернитесь назад и продолжайте играть прерванную музыку 0x16 00 00 Stop 0x17 00 NN Циклическое воспроизведение указанной папки «NN». В папке могут присутствовать не нумерованные файлы 0x18 00 00 Воспроизведение в случайном порядке все файлы 0x19 00 00 Отключить циклическое воспроизведение. 0x1A 00 NN 00 Start up DAC output
    01 DAC no output 0x21 В одной китайской документации сказано как проиграть набор файлов. Возможно изменение размера пакета. У меня не заработало
    «7E FF 07 21 00 01 03 04 EF» — Проиграть первую, третью и четвертую песню 0x22 NN MM Проиграть песню с определенной громкостью
    «7E FF 06 22 00 09 01 EF» Проиграть первую песню с громкостью 9

    Список запросов

    CMD Para_MSB Para_LSB
    0x3F 00 00 Список доступных устройств (побитно) USB 1, TF 2, Flash 4
    0x42 00 00 Статус плеера
    0x43 00 00 Текущая громкость
    0x44 00 00 Текущий эквалайзер
    0x47 00 00 Общее количество файлов USB
    0x48 00 00 Общее количество файлов TF
    0x49 00 00 Общее количество файлов Flash
    0x4B 00 00 Текущий файл USB
    0x4C 00 00 Текущий файл TF
    0x4D 00 00 Текущий файл Flash
    0x4E 00 NN Общее количество файлов в папке «NN»
    0x4F 00 00 Общее количество папок
    0x61 00 00 Текущий указатель папки Flash

    Список Ответов

    Ответы, связанные с количеством файлов приходят с задержкой

    CMD Para_MSB Para_LSB
    CMD Para_MSB Para_LSB
    0x3A 00 00 Вставлена карта TF (Приходит без запроса)
    0x3B 00 00 Вынута карта TF (Приходит без запроса)
    0x3C NN MM Закончил играть файл 0xNNMM на USB (Приходит без запроса)
    0x3D NN MM Закончил играть файл 0xNNMM на TF (Приходит без запроса)
    0x3F 00 00 Список доступных устройств (побитно) USB 1, TF 2, Flash 4
    0x42 NN MM Статус плеера NN — 1 USB/2 TF, MM — 0 Stop/1 Play/2 Pause
    0x43 00 NN Текущая громкость
    0x44 00 NN Текущий эквалайзер
    0x47 NN MM Общее количество файлов USB 0xNNMM
    0x48 NN MM Общее количество файлов TF 0xNNMM
    0x49 NN MM Общее количество файлов Flash 0xNNMM
    0x4B NN MM Текущий файл USB
    0x4C NN MM Текущий файл TF
    0x4D NN MM Текущий файл Flash
    0x4E NN MM Общее количество файлов 0xNNMM
    0x4F NN MM Общее количество папок 0xNNMM
    0x61 00 00 Текущий указатель папки Flash

    Функция получения ответа.

    В связи с тем, что при получении ответа возможно получения мусора, я ищу начало пакета, и далее считываю весь пакет.

    static uint8_t ansbuf[10] = <0>;

    boolean answer(void)
    <
    uint8_t i;
    uint8_t b = 0;
    while(mp3.available() && (b!=0x7E))
    <
    b = mp3.read();
    delay(1);
    >
    ansbuf[0] = b;
    i = 1;
    while(mp3.available() && (i

    #define pin_TX 7 // artuinio TX mp3 player RX
    #define pin_RX 8 // artuinio RX mp3 player TX

    SoftwareSerial mp3(pin_RX, pin_TX);

    static uint8_t cmdbuf[8] = <0>;
    static uint8_t ansbuf[10] = <0>;

    void byte2hex(uint8_t b)
    <
    #ifdef _DEBUG
    Serial.print(«0x»);
    if (b cmd;
    cmdbuf[4] = 0x00;
    cmdbuf[5] = Para_MSB;
    cmdbuf[6] = Para_LSB;
    cmdbuf[7] = 0xef;
    for (uint8_t i = 0; i 1 2 3 4 5

    Комментарии к статье:

    Спасибо , отличный материал!

    А как сделать с контрольной суммой? Нужно какуюто формуд=лу добавлять в код?

    если использовать мп3 YX5300 то надо добавлять библиотеку для него конкретно например MD YX5300

    Ваши отзывы и предложения по работе сайта направляйте на форму обратной связи.

    Источник