Найти тему
Project A.L.T.

Обзор модуля проигрывания MP3 и WAV файлов DY-SV17F

Оглавление
Обзор модуля проигрывания MP3 и WAV файлов DY-SV17F
Обзор модуля проигрывания MP3 и WAV файлов DY-SV17F

Введение

Модуль проигрывания аудиофайлов DY-SV17F - это компактное и удобное устройство для воспроизведения MP3 и WAV файлов. Он может быть использован в различных проектах, где необходимо воспроизведение звуковых эффектов, музыки или голосовых сообщений. Благодаря своей маленькой размерности и простому управлению, модуль DY-SV17F подходит как для начинающих, так и для опытных разработчиков. В данной статье мы рассмотрим основные характеристики, преимущества и возможности данного модуля, а также рассмотрим примеры его использования в различных проектах.

Технические характеристики

Модуль проигрывания MP3 и WAV файлов DY-SV17F имеет следующие технические характеристики:

  • Поддерживаемые форматы: MP3, WAV
  • Разрешение: 8 или 16 бит
  • Частота дискретизации: 8-48 кГц
  • Флеш-память: BoyaMicro 25Q32BSSIG 32Мбит (4мб). или Winbond W25Q32BVSIG 32Мбит (4мб)
  • Режимы воспроизведения: по номеру, случайный, папки и т.д.
  • Повтор воспроизведения: для одного файла или всей папки
  • Регулировка громкости
  • Входные пины для управления (проигрывание, пауза, следующий/предыдущий файл, увеличение/уменьшение громкости)
  • Встроенный 5Вт аудио усилитель LTK5128D
  • Аудио-выход для подключения к внешнему усилителю или колонкам
  • Подключение кнопок для управления воспроизведением и громкостью
  • Серийный порт для программного контроля воспроизведения
  • Напряжение питания: 3.2-5.2 В
  • Потребляемый ток в режиме ожидания: < 10 мА
  • Потребляемый ток при воспроизведении: 30 мА (при 5 В)
  • Размеры: 30 мм x 30 мм x 3.2 мм
  • Вес: 3 грамма (без разъемов)

В данном модуле используется флеш память BoyaMicro 25Q32BSSIG объемом чуть менее 4 мб, которая является полным китайским аналогом Winbond W25Q32BVSIG используемой для хранения BIOS в материнских платах для ПК. Без особых проблем можно поставить любую другую флешку 25 серии. Например ту же Winbond 25Q128FVSG с 16 мегабайтами памяти и всё будет работать без проблем.

В качестве монофонического усилителя аудио сигнала D класса используется микросхема LTK5128. Заявленная мощность 5 Вт на динамик сопротивлением 2 Ома, 3 Вт на 4 Ома и 2 Вт на 8 Ом при напряжении 5 В.

Звуковые файлы на модуль можно заливать через встроенный USB интерфейс, предварительно переименовав их в формате 5.3. Например 00001.mp3, 00002.mp3 ... 00255.mp3

Максимальное число файлов для воспроизведения без микроконтроллера 255, при связи с микроконтроллером через UART 65535

Внешний вид и расположение выводов

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

Внешний вид
Внешний вид

Схема расположения выводов:

Расположение выводов
Расположение выводов

Назначение выводов описано в таблице ниже:

Назначение выводов
Назначение выводов

Описание режимов работы

Режимы работы модуля задаются замыканием пинов конфигурации CON1...CON3 на пин V33 или GND через 10 кОм резисторы. Пин замкнутый на V33 означает логическую 1, замкнутый на GND - логический 0. Активация пинов IO0-IO7 производится кратковременным их замыканием на пин GND без резистора. Все возможные комбинации пинов конфигурации и описание режимов работы представлены в таблице ниже:

Режимы работы
Режимы работы

Для выбора трека и управления воспроизведением в модуле есть несколько кардинально различающихся между собой режимов. Рассмотрим каждый из них более подробно

Интегрированный режим ввода/вывода 0 и 1

Для выбора трека в данном режиме необходимо задать номер трека, используя комбинацию сигналов на пинах IO0-IO7. Комбинация сигналов на этих пинах задает двоичный код номера трека, который нужно воспроизвести. Например, если на пинах IO0-IO7 установить значение "00000101", то модуль начнет воспроизводить пятый трек. Для этого необходимо пины IO0 и IO2 замкнуть на контакт GND. Максимально в этом режиме доступен выбор из 255 треков. То есть для выбора трека 00255.mp3 нужно замкнуть на землю все IO пины.

В Интегрированном режиме ввода/вывода 0, при кратковременном замыкании нужных пинов IO, выбранный трек запустится и будет играть до конца. В режиме ввода/вывода 1 трек будет воспроизводится только при сохранении уровня сигнала на пинах IO. При изменении уровня сигнала воспроизведение сразу прекратится.

Независимый режим ввода/вывода 0 и 1

Здесь при замыкании одного из пинов IO0-IO7 на землю будет воспроизводится трек соответствующий его номеру+1. То есть для воспроизведения трека 00001.mp3 нужно замкнуть на землю пин IO0, для трека 00008.mp3 нужно замкнуть пин I07. Максимально в этом режиме доступно 8 треков. Разница между режимами 0 и 1 такая же как и в Интегрированном режиме.  То есть в первом случае, для полного воспроизведения трека,  достаточно кратковременного замыкания нужного пина на землю, то во втором воспроизведение прекратится сразу после размыкания пина.

Стандартный MP3 режим

Модуль работает как стандартный MP3 плеер. То есть кратковременное замыкание пинов IO3 и IO4 на землю переключает режимы эквалайзера и включает/отключает повтор воспроизведения. А для пинов IO0-IO2, в зависимости от длительности замыкания либо управляет воспроизведением, дибо меняет громкость и режим работы.

Режим UART

Служит для управления модулем с помощью внешнего микроконтроллера через UART интерфейс.

Подключение модуля к микроконтроллеру осуществляется по следующей схеме:

Режим UART
Режим UART

Резисторы 1 кОм на RX и TX пинах нужны лишь в случае, если ваш микроконтроллер использует 5 вольтовую логику на своих пинах. Например у  ESP8266 напряжение на пинах 3.3 вольта, поэтому дополнительные резисторы здесь не нужны. Можно подключать к RX и TX пинам напрямую.

Параметры UART модуля для приема передачи данных:

Baud: 9600bps,Data:8 bits ,stop:1bit,Check: N

Передача данных в общем виде ведется в следующем формате:

СMD CODE - CMD TYPE - DATA LENGTH(n)- DATA1-DATAn-CRC(SM)

CMD CODE:Стартовый код. Означает что следующий за ним набор байт будет является командой. Всегда равен AA.

CMD TYPE: Номер команды.

DATA LENGTH:Количество байт данных передаваемых в команде.

DATA:Байты данных передаваемые в команде. Если DATA LENGTH равен 0, то байты данных не передаются.

CRC:Контрольная сумма. Представляет собой 8 битное значение суммы всех переданных байт

Разберем на конкретном примере:

Команда Play - запуск воспроизведения текущего файла. Она имеет номер 02.

Отправляется в следующем формате:

AA 02 00 AC

AA - стартовый байт, означающий что  данная последовательность является командой/.

02 - номер команды Play.

00 - количество байт данных. Равно 0, так как команда не имеет никаких параметров и байты данных не передаются.

AC - контрольная сумма AA+02+00=AC.

Запуск воспроизведения трека под определенным номером. Данной команде соответствует код 07 и она имеет следующий формат:

AA 07 02 HighByte LowByte CRC

Для воспроизведения трека под номером 9 нужно отправить модулю следующий код:

AA 07 02 00 09 BС

AA - стартовый байт, означающий что  данная последовательность является командой.

07 - номер команды.

02 - команда передает в качестве параметра 2 байта данных обозначающих номер трека.

00 - старший байт данных.

09 - младший байт данных.

BC - контрольная сумма AA+07+02+00+09

Следует немного пояснить, как вычислить значение старшего и младшего байта данных. Вспоминаем школьный курс информатики. Бит это минимальная единица измерения информации. Может принимать значение либо 0 либо 1. Последовательность из 8 бит образует байт. С помощью одного байта можно зашифровать до 256 различных значений. То есть в случае с числами последовательность 0110 0100 в двоичной системе счисления соответствует числу 100 в десятичной. Но попробуем например записать число 320 из десятичной системе счисления в двоичной. Получим 0001 0100 0000. То есть, чтобы зашифровать данное число, нам уже потребуется 12 бит. Или почти 2 байта. Разобьем это число на 2 части. Первые 8 младших разрядов или 0100 0000 пойдут в так называемый младший байт, а оставшиеся 4 или 0001 в старший. Переведя полученные значения в шестнадцатеричную систему счисления получим старший байт равный 01 и младший байт равный 40.

То есть для воспроизведения трека под номером 320 нам нужно отправить следующую команду:

AA 07 02 01 40 F4

В Arduino IDE это можно реализовать следующим образом:

void mp3_play_num(uint16_t num) {
uint8_t CRC=0; //объявляем переменную для контрольной суммы
uint8_t HIGH, LOW; //переменные для старших и младших битов
LOW = (uint8_t)num; // получаем младший байт номера
HIGH = num>>8; // с помощью битового сдвига получаем старший байт номера
CRC = (uint8_t) (0xAA + 0x07 + 0x02 + HIGH + LOW); // Расчет контрольной суммы
Serial.write(AA); // Признак передачи команды
Serial.write(07); // Команда 07
Serial.write(02); // Будет передано 2 байта
Serial.write(HIGH); //старший байт номера
Serial.write(LOW); // младший байт номера
Serial.write(CRC); // контрольная сумма
}

Список основных команд представлен в таблице ниже:

Список команд UART
Список команд UART

С полным списком команд можно ознакомиться здесь.
Также для управления модулем по UART существует библиотека
dyplayer. Делает все то же самое, но в более удобной обертке.

Режим One Line

Модуль  поддерживает протокол управления One Line, который позволяет управлять воспроизведением аудиофайлов посредством передачи команд через один провод.

Подключите модуль как показано на схеме:

Подключение One Line
Подключение One Line

Сказать по честному, я еще не до конца разобрался с данным протоколом передачи, но если верить документации от производителя, формат команд там довольно простой. Если команда имеет параметры, то сначала отправляется байт со значением параметра, затем байт обозначающий номер функции к которой данный параметр необходимо применить.
То есть для  выбора пресета эквалайзера под номером 3 необходимо отправить следующий набор байтов
0x03 0x0D
Для установки значения громкости на 21 команда будет выглядеть так:
0x02 0x01 0x0C
Выбор трека для воспроизведения в данном протоколе осуществляется по имени файла. То есть если файл называется 00123.mp3, то для выбора трека и его последующего воспроизведения необходимо отправить  следующую последовательность байт:
0x01 0x02 0x03 0x0B 0x11
Таким образом мы последовательно вводим номер трека и командой 0x0B подтверждаем выбор. Затем командой 0x11 запускаем воспроизведение.
Ниже представлена таблица со списком всех возможных команд:

Команды OneLine
Команды OneLine

Заключение

В заключении можно сказать, что модуль DY-SV17F представляет собой простое и удобное решение для воспроизведения аудиофайлов формата MP3 и WAV. Он имеет небольшой размер, низкое энергопотребление и простую в использовании. Благодаря различным режимам работы и поддержке протокола One Line, этот модуль может быть интегрирован в различные проекты, связанные с воспроизведением звука. Более того, модуль имеет высокое качество звука и поддерживает до 30 уровней громкости. DY-SV17F является отличным выбором для создания простых проектов, связанных с воспроизведением аудиофайлов, а также для интеграции в более сложные устройства.

Материал также доступен на моем сайте: https://projectalt.ru и в группе ВК