Подключение usb к mp3 tf 16p
Сегодня будем изучать такую интересную вещь как аудиоплеер.
Есть такой модуль для Ардуино, 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 скачать можно с этого сайта.
Если вы хотите собрать плейер без Ардуино, то и библиотека не нужна. Просто подключаете модуль по этой схеме и слушаете музыку.
Правда в такой конструкции есть недостатки.
- Нельзя включить запись, например 12, можно только пролистывать до нужной записи нажимая кнопку Следующая/Предыдущая. Короче, только по порядку.
- Нельзя запустить случайное проигрывание, опять только по порядку
- Можно прослушивать только по одной записи. Одна проиграла, плейер выключился. Снова нажали он включился и стала воспроизводиться следующая запись.
Подготовка карты 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 карта, две кнопки и динамик.
Сегодня расскажу о компактном и недорогом mini MP3 плеере (DFPlayer). который можно встретить в разнообразных проектах, так как говорящих часах, оповещение температур с датчиков, умном доме и так далее.
Технические параметры
► Напряжение питания: 3.3 — 5 В
► Количество каналов: 1 моно с усилителем 3 Вт + 2 стерео, без усилителя
► Поддержка частоты дискретизации: 8 кГц, 11,025 кГц, 12 кГц, 16 кГц, 22,05 кГц, до 48 кГц
► ЦАП: 24-битный выход
► Отношение сигнал/шум: до 85 дБ
► Поддерживаемые файловые системы: FAT16, FAT32
► Максимальный объём SD-карты: 32 ГБ
► Количество каталогов композиций: до 100
► Количество композиций в каталоге: до 255
► Форматы аудиофайлов: MP3, WAV, WMA
► Кол-во уровней громкости: 30
► Режимов эквалайзера: 6 (Normal/Pop/Rock/Jazz/Classic/Base)
Общие сведения DFplayer или MP3-TF-16P
DFplayer или MP3-TF-16P, это небольшой и недорогой mp3 модуль собранный на микросхеме YX5200 с аудио выходом к которому можно подключить динамик (до 3 Ватт) или наушники, без усилителя (стерео). Модуль может работать как отдельное устройство с подключенным аккумулятором, динамиком и кнопками или подключить к контроллером Arduino. С помощью последовательной связи RX / TX и несложных команд, можно воспроизводить музыку и выполнять другие функции, такие как воспроизведение следующей и предыдущей песни, воспроизведение в случайном порядке, приостановка воспроизведения текущей песни и так далее. Так же, на модуле установлен слот для SD-карты, который поддерживает файловую систему FAT16 и FAT32.
Назначение контактов:
► Vcc — питание модуля 3.3 В — 5 В.
► RX — вывод для получении данных.
► TX — вывод для отправка данных.
► DAC_R, DAC_I — вывод для подключения наушников.
► SPK_1 (+) — вывод для подключения динамика, до 3 В.
► GND — питание модуля.
► SPK_2 (-)- вывод для подключения динамика, до 3 В.
► IO_1 — вывод для воспроизведения предыдущий песню или уменьшение громкости. При кратковременном нажатии (примерно 0.5 с) воспроизводится предыдущая песня, при долгом нажатии уменьшается громкость.
► GND — питание модуля.
► IO_2 — вывод для воспроизведения следующий песни или увеличении громкости. При кратковременном нажатии (примерно 0.5 с) воспроизводится следующая песня, при долгом нажатии увеличивается громкость.
► ADKEY_1 — вывод для подключения резистивной клавиатуры, вход 1
► ADKEY_2 — вывод для подключения резистивной клавиатуры, вход 2
► USB+ — вывод USB
► USB— — вывод USB
► BUSY — при лог «0» музыка играет, при лог «1» нет
Подключение DFplayer (MP3-TF-16P) к Arduino UNO
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Динамик 3 Вт x 1 шт.
► SD-карта 2 ГБ x 1 шт.
► Модуля тока и напряжения INA219 x 1 шт.
►Провода DuPont M-F, 20 см x 1 шт.
►Макетная плата 400 контактов x 1 шт.
Описание:
В примере покажу самый простой способ подключения модуля DFplayer к плате Arduino UNO R3 и будем последовательно воспроизводить треки с SD-карта.
Подготовка SD карты и файлов:
Первым делом необходимо отформатировать SD карту в формат FAT или FAT32. Далее необходимо перенести на SD карту файлы в формате MP3, главное чтобы название файла начиналось с 0001.mp3, 0002.mp3 и до 0255.mp3 (файл 0000.MP3 не читает). Так же, название файла может содержать любые символы после 4 цифр, например 0001_Bruno_Mars.mp3.
Подключение.
Сначала подключить питание, выводы +5 В и GND (Arduino) подключаем к выводам Vcc и GND (INDFplayer), далее подключаем интерфейс, выводы RX подключаем к D11 (Arduino) и вывод TX подключением D10 (Arduino). Теперь осталось подключить динамик, для этого подключением его к выводам SPK_1 (+) и SPK_1 (-).
Установка библиотек:
В данном примере используем одну библиотеку «DFPlayer Mini Fast» скачать ее можно с «Менеджер библиотек» или в конце статьи, на 28.08.2020 версия 1.1.7.
В строке поиска вводим «DFPlayer» находим библиотеку «DFPlayerMini_Fast» и устанавливаем ее.
Программа:
В данном скетче будем включать треки с 0001 по 0003.
Наверное, часто в ваших проектах возникала необходимость воспроизводить определенный звук или мелодию. Например, по завершению какого-нибудь процесса, или просто звуковое сопровождение. В этом нам поможет Mini MP3 Проигрыватель, который обладает очень большим потенциалом.
В данный модуль вставляется microSD карточка, на которую предварительно мы можем записать Mp3 композиции, которые, в дальнейшем, сможем воспроизводить с помощью Mini MP3 Проигрывателя.
Нам понадобится:
Для реализации проекта нам необходимо установить библиотеки:
Демонстрация:
Подготавливаем microSD карточку:
Mini MP3 Проигрыватель может распознавать карты объемом до 32G и файловой системой FAT16 , FAT32 .
- Для начала нам необходимо подключить карту через катридер к компьютеру и отформатировать карточку.
- Теперь нам нужно создать папку с названием "mp3".
- Записать ваши mp3 композиции в данную папку и дать им имена "0001.mp3" , "0002.mp3", "0003.mp3" и тд. Так же файл можно называть "0001alla-tratata.mp3" главное, указать в самом начале номер трека в четырех символьном формате.
Описание контактов:
Pin Number | Pin Description | Description | Note |
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 |
Модуль имеет сразу два вида выходного сигнала: первый - со встроенным усилителем, а второй вариант - через внешний усилитель например УНЧ модуль 2*3 Вт класса D PAM8403. В наших примерах будет рассматриваться вариант со встроенным усилителем.
- Подключение к усилителю c помощью выходов DAC_R и DAC_L
- Подключение к динамику напрямую. динамик подключается одним контактом IO1 , а вторым к IO2
Пример 1. Управление с помощью Arduino
Схема подключения:
Данный Mini MP3 Проигрыватель может быть подключен как обычному Serial порту, так и к виртуальному Serial порту. Это дает возможность arduino подключиться к компьютеру и к mp3 проигрывателю.
Подключать удобнее всего с помощью Breadboard mini и проводков папа-папа. Так же не забудьте подключать Mp3 плеер к Serial порту с через резисторы на 1 кОм.
В результате у вас должна получиться примерно следующая картина:
Не забудьте установить библиотеку Mini mp3 Arduino Library V2.0.
Скетч №1:
Данный пример запустит проигрывание треков и каждые 10 секунд будет переключать на следующий трек.
Между двумя командами необходимо делать задержку delay (100); 100 миллисекунд, в противном случае некоторые команды могут работать не стабильно.
Скетч №2:
В этом примере мы запускаем плеер, он начинает проигрывать композиции целиком одна за другой в случайном порядке.
Скетч №3:
Для запуска определенной мелодии нужно обязательно задать правильные именна mp3 файлам, которые находятся на флешке как указано в пункте "Подготавливаем microSD карточку" . Вы так же можете записывать файлы в любые папки и с любыми названиями, но их вы не сможете запустить выборочно по команде.
Полный список функций:
- 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);
Пример 2. Автономное управление без Arduino, с помощью подключенных кнопок.
Данный модуль может работать как под управлением микроконтроллера Arduino, так и автономно, как самостоятельный проигрыватель mp3.
Но модулем нужно как-то управлять, регулировать громкость, переключать треки и тд. Эти возможности мы можем реализовать очень просто, нам нужно подключить управляющие кнопки, и с помощью них мы сможем полноценно управлять mp3 проигрывателем.
Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет
Доброго времени суток, мне бы понять какие команды отправлять чтобы песенки вытаскивать! По даташиту который Mishany выложил по таблицам истинности непонятно. Третий столбец команд понятен, а вот второй для чего . Короче помощь нужна, сложновато для меня!
На вебинаре были представлены линейка компонентов для электропитания и интерфейсные модули. Мы рассмотрели популярные группы изолированных и неизолированных (PoL) DC/DC-преобразователей последних поколений, новые компактные модульные источники питания, устанавливаемые на печатную плату (открытые и корпусированные), источники питания, монтируемые как на шасси (в кожухе и открытые), так и на DIN-рейку.
один c чексуммой столбец, второй без, а так последовательность байтов
1).For example, select the first song played, and send the command 7E FF 06 03 00 00 01 FE F7 EF
7E --- Start byte
FF --- Version Information
06 --- Data length (checksum not included)
03 --- Actual command(specify playback of a track)
00 --- 0x01: need feedback, 0x00:no need feedback
00 --- Most significant byte of the track(MSB of Parameter)
01 --- Least significant byte of the track(LSB of Parameter)
FE --- Most significant byte of checksum(MSB of checksum)
F7 --- Least significant byte of checksum(LSB of checksum)
EF --- End byte
Встраиваемые ИП LM(F) производства MORNSUN заслуженно ценятся производителями во всем мире, поскольку среди широчайшего ассортимента продукции компании можно найти источник питания для любых задач. Представители семейств LM и LMF различаются по мощности и выходному напряжению, их технические и эксплуатационные характеристики подходят для эксплуатации в любых электрических сетях и работают в широком диапазоне условий окружающей среды. Неизменными остаются высокое качество и демократичная цена.
Второй столбец - полная команда, включая checksum. В datasheet сказано:
"Regarding to calculating checksum, set your 16 bit checksum value to 0. For each byte from the Version byte until the Param_LSB byte, subtract the byte from the checksum."
Что означает:
"Что касается расчета контрольной суммы, то в сначала установите значение 16-битной котрольной суммы в "0". После, начиная с байта "Version" и до байта Param_LSB включительно, вычитайте очередной байт команды из контрольной суммы."
Т.е. берете полную команду, высчитываете контрольную сумму, добавляете полученные два байта к команде старшим байтом вперед, отправляете получившуюся последовательность в модуль. Посчитал, соответствует.
Мне бы три примера, шоп логику понять, а там уж думаю соображу !
Вы уж извините, уровень знаний не совсем высокий. )))
// 7E FF 06 0F 00 01 01 xx xx EF
// 0 -> 7E начало посылки
// 1 -> FF версия, оставить как есть
// 2 -> 06 длина байт посылки, без чек суммы(// 7~8 вместо них сразу oxEF)
// 3 -> 0F код команды
// 4 -> 00 без ответа с модуля, 0x01 с ответом подтверждения
// 5~6 -> 01 01 значение команды (16 бит)
// 7~8 -> checksum = 0 - ( FF+06+0F+00+01+01 )
// 9 -> EF конец посылки
Зачем нагружать чек суммой, там и без чек суммы все работает, где то натыкался на форум - так там 10 страниц пытались эту сумму правильно посчитать опираясь на даташит с ошибками.
проще управлять без чексуммы
пример выше 7E FF 06 01 00 00 00 FE FA EF заменить на 7E FF 06 01 00 00 00 EF
вот и все
. проще управлять без чексуммы
пример выше 7E FF 06 01 00 00 00 FE FA EF заменить на 7E FF 06 01 00 00 00 EF
вот и все
Вы правы, по-своему, но IMHО, это - любительский подход. Лично я к подобным упрощениям не привык. Сегодня этот модуль проглотит посылку без CRC, а завтра китайцы поменяют что-то в кристалле и угадайте с одного раза, кто всё будет переделывать и за чей счёт, если работа была выполнена на заказ, за вполне конкретные деньги? Слышал я всё это неоднократно. И от 9-вольтовой "Кроны" PIC запитывали "и всё работало, как часы" и кварцевый резонатор на 24MHz навешивали и тоже, разумеется, всё работало. Я так никогда не делаю.
Конечно без чеков лучше,я так понял эти чеки нужны для контроля правильной посылки, чтобы безошибочно проходили все посылки, правильно? Но если можно без них обойтись, то почему бы и нет?
7E FF 06 01 00 00 00 EF --- 1 песенка
7E FF 06 01 00 00 01 EF --- 2 песенка
7E FF 06 01 00 00 02 EF --- 3 песенка
7E FF 06 01 00 00 03 EF --- 4 песенка
7E FF 06 01 00 00 04 EF --- 5 песенка
и т.д.
Вот так правильно?
вроде да, запускай его через терминал с компа через USB->UART и не заморачивайся с контрольной суммой, если что не так модуль ответит кодом ошибки в ДШ они описаны.
shindax Вы обсалютно правы, но тут случай именно с любителем, не будем его сразу грузить, а то сдуется начинающий и пойдет водку кушать вместо программирования.
Терминалов я не знаю, изучил чуток работу pic16f84a, с ним и буду.
Буду делать так, опрашивается нога контроллера и по результату (если нажата кнопка) прибавлю ед. на (Least significant byte of the track) и отправляю, затем опять прибавляю и отправляю. Как на взгляд профессионалов?, прокатит?
Оооо, далеко пойдете. HTerm один из терминалов ком порта, и такой Terminal1_9_b
и USB->UART (FTDI, CH340, CP2102, PL2303)
Ну а мне в любом случае надо чтобы МП3 работал от контроллера, вы советуете терминал для отладки МП3 ?
Поэтому я и спрашиваю у профи, чтобы без ошибочно подключить устройство.
Я понимаю что pic16 древний контр., щас изучаю pic16f877 как ни как по более.
И все же, если с одной ноги отправлять вышеуказанные коды, конечно же стробируя другой ногой можно ли проигрывать МП3 ? Мне важно именно с контроллера т.к. порядок воспроизведения будет менятся. Иначе можно было бы без него, вроде там есть кнопка "next" (в МП3).
_________________
Каждый имеет право на свое личное ошибочное мнение.
Получил посылку вот с таким модулем:
На плате распаян контроллер YX5200-24SS и моно УНЧ 8002B
Немного расскажу про свои эксперименты с данным модулем.
Первым делом попробовал подключить его к USB. XP-шка выдала что USB устройство не опознано.
Но как оказалось я неправильно подключил USB+ и USB-, после правильного подключения (поменял местами) XP-шка опознала
модуль как съемный диск. После этого можно было производить с картой памяти любые действия как с обычной флэшкой.
Залил в ESPшку прошивку с бета версией UART MP3 и подключил MP3 модуль.
Обращаю внимание на то что MP3 модуль подключается не к стандартному UART, а только RX модуля к GPIO2 ESP.
Исходя из этого можно сказать что обратная связь от MP3 до ESP пока не используется в прошивке.
После нескольких экспериментов с GET командами IPADR/mp3play?cmd=команда&data=данные выяснилась следующая особенность:
названия звуковых файлов и их расположение в папках не имели никакого значения. Файлы выбирались по номеру в каком порядке они были записаны на флэшку.
Наверное это зависит от firmware которое загружено в YX5200-24SS. Поискав в Google наткнулся на форум где описана данная проблема. Вот что там сказано:
"Вы записали папку mp3 с файлами 0001.mp3, 0002.mp3, 0003.mp3, 0004.mp3. Все замечательно, все три условия соблюдаются, все треки воспроизводятся как и ожидалось.
Но второй трек не нравится, его заменили на другой: 0002.mp3.
Теперь перечень файлов такой: 0001.mp3, 0002.mp3, 0003.mp3, 0004.mp3
А последовательность файлов на карте такая: 0001.mp3, 0003.mp3, 0004.mp3, 0002.mp3.
Вот тут и начинаются глюки, описанные выше. Если уже играет первый трек, то при управлении кнопкой Next следующий трек будет 0002.mp3, а при получении команды "mp3_play(2)" следующий трек будет 0003.mp3, потому что именно он является вторым.
Поэтому если какой-то из треков заменяется, надо на SD-карте не только его заменить, а все удалить и заново переписать (на моей практике ОС при массовом копировании всегда корректно записывает последовательность файлов, в нужном порядке)."
Но в отличии от этой записи у меня по нажатию кнопки файлы проигрывались в том же порядке как они записывались на SD-карту. Даже после того как я изменил имя папки и имена файлов на случайные - ничего не изменилось: файлы проигравались в том порядке в котором они были записаны на карту.
Прикрепляю архив звуковых файлов с которыми я игрался (В нем цифры от 0 до 9).
Читайте также: