Обзор модуля проигрывания MP3 и WAV файлов DY-SV17F
Обзор модуль проигрывания MP3 и WAV файлов DY-SV17F. Технические характеристики, фото, подключение, настройка управление, программирование
Обзор модуля проигрывания MP3 и WAV файлов DY-SV17F
29.02.2024 в 10:58   1039 0
Версия для печати

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

logo

Введение

Модуль проигрывания аудиофайлов 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

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

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

topbottom

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

pins

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

Название пина Описание
TXD/IO0 Триггер ввода/вывода IO0; TX в режиме UART
RXD/IO1 Триггер ввода/вывода IO1; RX в режиме UART
IO2 Триггер ввода/вывода IO2
IO3 Триггер ввода/вывода IO3
IO4 /One Line Триггер ввода/вывода IO4; В режиме One Line пин приема данных
IO5 Триггер ввода/вывода IO5
IO6 Триггер ввода/вывода IO6
IO7 Триггер ввода/вывода IO7
GND Земля
CON1 1 пин установки режима работы
CON2 2 пин установки режима работы
CON3/BUSY В течении первых 30 мс после подачи питания это 3 пин установки режима работы, после чего данных пин работает как индикатор работы модуля. Он имеет Низкий уровень 0В при проигрывании мелодии и Высокий 3.3 В если мелодия не проигрывается
V5 Служит для питания устройства  Напряжение От 3.7 В до 5 В
V33 Вывод напряжения 3.3 В  Максимальный ток не более 80мА
DACR Вывод правого аудио канала на внешний усилитель
DACL Вывод левого аудио канала на внешний усилитель
SPK- Минусовой вывод для подключения динамика не более 5 Вт через внутренний усилитель 
SPK+ Плюсовой вывод для подключения динамика не более 5 Вт через внутренний усилитель 

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

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

Режим работы CON3 CON2 CON1 IO7 IO6 IO5 IO4 IO3 IO2 IO1 IO0
Интегрированный режим ввода/вывода 0 0 0 0 Битовый выбор нажатием. Можно выбрать из 255 треков 
Интегрированный режим ввода/вывода 1 0 0 1 Битовый выбор удержанием. Можно выбрать из 255 треков 
Независимый режим ввода/вывода 0 0 1 0 Трек 8 Трек 7 Трек 6 Трек 5 Трек 4 Трек 3 Трек 2 Трек 1
Независимый режим ввода/вывода 1 0 1 1 Трек 8 Трек 7 Трек 6 Трек 5 Трек 4 Трек 3 Трек 2 Трек 1
Режим UART 1 0 0             RXD TXD
Режим One line 1 0 0       TXD        
Стандартный MP3 режим 1 0 1       RPT EQ P/P/MODE PREV/V- PREV/V+

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

Интегрированный режим ввода/вывода 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 Mode

Резисторы 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); // контрольная сумма
 
}
Список основных команд представлен в таблице ниже:
Команда Код команды Комментарий
Play AA 02 00 AC Запуск воспроизведения
Pause AA 03 00 AD Пауза воспроизведения
Stop AA 04 00 AE Остановка воспроизведения
Previous AA 05 00 AF Предыдущий трек
Next AA 06 00 B0 Следующий трек
Volume + AA 14 00 BE Громкость +
Volume - AA 15 00 BF Громкость -
Previous file AA 0E 00 B8 Предыдущий файл
Next file AA 0F 00 B9 Следующий файл
Stop playing AA 10 00 BA Полная остановка модуля
Set Volume AA 13 01 VOL CRC Установка громкости VOL: 00-FF
Set Loop mode AA 18 01 Loop-Mode CRC Режим повтора Loop-mode:00-07
Specified Song AA 07 02 HighByte LowByte CRC Воспроизведение определенного трека
Set EQ AA 1A 01 EQ CRC Выбор пресета эквалайзера EQ:00-04

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

Режим One Line

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

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

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

Код команды Функция Описание
00 Цифра 0 Команды для передачи цифровых значений параметров
01 Цифра 1
02 Цифра 2
03 Цифра 3
04 Цифра 4
05 Цифра 5
06 Цифра 6
07 Цифра 7
08 Цифра 8
09 Цифра 9
0A Очистка цифр Удаление отправленных цифровых значений
0B Подтверждение выбора Требует ввода цифрового параметра перед функцией
Настройка громкости
0D Настройка эквалайзера
0E Режим повтора
0F Выбор канала
10 Выбор трека для взаимодействия
11 Воспроизвести  
12 Пауза  
13 Остановка воспроизведения  
14 Предыдущий трек  
15 Следующий трек  
16 Перейти в родительскую папку  
17 Перейти в подкаталог  
18 Выбрать SD карту как источник  
19 Выбрать U Disk как источник  
1A Выбрать флеш память как источник  
1B Спящий режим  
Отключить модуль  

Заключение

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

Материал также доступен на моем канале: Яндекс Дзен и в группе ВК
Категория: Обзоры модулей | Добавил: :, (07.04.2023)
Просмотров: 1039 | Теги: MP3, Arduino IDE, Arduino, DY-SV17F, MP3 модуль, ESP8266 | Рейтинг: 5.0/1
Поделиться:
Всего комментариев: 0
avatar