Как сделать плеер

Добавил пользователь Алексей Ф.
Обновлено: 04.10.2024

USB проигрыватель — это по сути дела внешняя USB звуковая карта. Многие используют компьютер для воспроизведения музыки, но качество воспроизведения, особенно встроенных звуковых карт оставляет желать лучшего.

Звуковая карта хорошего качества стоит дорого.

А почему бы не сделать свой USB проигрыватель?

Поможет нам в этом микросхема PCM2902 — 16-ти битном дельта — сигма АЦП-ЦАП.

Основные технические характеристики

Характеристики при VBUS= 4.84 V, VCCCI = 3.5 V:

ЦАП

Частота дискретизации — 32, 44.1, 48 KHz
Потребляемый ток — 90 мA
Номинальное выходное напряжение — (0 dB) 1,1В RMS
Верхний предел диапазона — (-3 dB) 22.7 kHz (fs = 48 kHz)
Частота среза пост-фильтра — 28 kHz
Выходное сопротивление – 100 Ом
Отношение сигнал/шум > 95 dBA
КНИ + шум — (1 kHz) 0.005% (B = 22 kHz)
Разделение каналов > 99 dB (1 kHz), при > 76 dB (20 kHz)

АЦП

Блок-схема PCM2902

2909

2909_3

Схема включения PCM2902

2909_2

Этот кодек кроме аналогового входа и выхода имеет так же и цифровой S/PDIF вход-выход. Полная поддержка USB 1.1. Работает в дуплексном режиме.

PCM2902 имеет интересный собственный контроль за уровнем громкости HID (Human Interface Device), кнопками, которые подключены к входам HID0, HID1, HID2 можно, соответственно, управлять режимами ТИХО, ГРОМКОСТЬ + и ГРОМКОСТЬ –, что исключает необходимость двигать ползунки в микшере на ПК.

Принципиальная схема

Подключаем USB провод к ПК.

Хорошо, что драйвера для этой микросхемы уже есть в Windows. По крайней мере в Windows 7 точно есть. PCM2902 определяется как USB Audio codec.

Чтоб это проверить — заходим в Диспетчер устройств и находим:

USB audio CODEC и USB — устройство ввода

Далее настраиваем наш плеер.

Заходим в панель управления — оборудование и звук — звук.

Наш USB Audio codec должен быть устройством по умолчанию, если нет, то это делаем. А также отключаем встроенную звуковую карту.

Теперь нажимаем на кнопочку Свойства. Появляется меню Свойства. Заходим на вкладку дополнительно и выставляем 2 канала 16bit, 48000Гц.

usb_player_4

Далее переходим на вкладку Запись.
Выбираем микрофон USB Audio codec по умолчанию и нажимаем кнопку свойства.

Выбираем вкладку Прослушать:

usb_player_3

Теперь заходим в вкладку Дополнительно и выставляем 2 канала 16bit, 48000Гц.


Каждый уважающий себя нищеброд просто обязан иметь дома старенький, но еще исправный магнитофон. Например, у меня их даже два. Вот они, мечта подростков 80-90-х годов, двухкассетные японские магнитофоны SHARP WQ-261 и AIWA CA-W51, привезены из-за границы в начале 90-х. По дизайну и качеству исполнения, они дадут фору многим современным аппаратам. Магнитофоны полностью работоспособны, поэтому отнести их на свалку моя нищебродская рука просто не поднялась:



Одна беда, компакт-кассеты уже давно вышли из употребления, да и слушать шипение магнитофонной записи наши избалованные цифровой музыкой уши не желают. Для такого случая, электронная промышленность Китайской Народной Республики выпускает замечательный гаджет, позволяющий превратить обычный кассетный магнитофон в полноценный цифровой MP3 плеер, причем без каких-либо доработок.

Всего за 700-800 российских рублей (цены по состоянию на апрель 2017), мы получаем устройство воспроизведения MP3 файлов, выполненное в виде стандартной компакт-кассеты. Упаковка блистерная, прочная (фото 3-5):




В комплект поставки входят (фото 6):
— MP3 плеер "кассета".
— ИК пульт дистанционного управления.
— Простенькие наушники.
— Автомобильная USB зарядка.
— Сетевая USB зарядка 220В.
— Провод USB-mini USB для зарядки и подключения к компьютеру.
— Инструкция по эксплуатации (на английском языке).


С одной стороны "кассеты" расположены шесть кнопок управления плеером. Есть даже встроенный эквалайзер (EQ) на несколько предустановленных режимов воспроизведения (фото 7-9).

Купив деталей на 30 долларов и с добрым количеством терпения, вполне можно собрать целый МР3 плеер, с открытым исходным кодом, и широкими возможностями к модификации. Он может быть модифицирован так, что будет принимать команды по последовательному интерфейсу, может быть частью художественного проекта, использован как голос для вашего очередного умного говорящего робота-друга, или наполнен музыкой, и использован как есть. Вставляйте карту какого хотите размера, вплоть до теоретического предела формата MMC. Весь программный код и схемы, представленные здесь, распространяются свободно.


Основные возможности плеера: режим воспроизведения в случайном порядке, базовая навигация в треках, регулятор громкости, поддержка FAT32, поддержка фрагментированных файлов, неограниченное количество файлов в корневом каталоге и высокое качество воспроизведения. Файлы с битрейтом 256 кбит/с воспроизводятся без сбоев. Поддерживаются файлы с разным битрейтом, максимальный – 320 кбит/с.

Wav -файлы так же поддерживаются, но они должны быть меньшего качества чем CD , до тех пор, пока вы не поставите кварцевый резонатор для PIC контроллера с большей частотой. В моем тестовом устройстве это работает, но использовать PIC контроллер на тактовой частоте более 8 мегагерц при напряжении питания всего 3,3 вольта проблематично. Я все еще работаю над воспроизведением wav -файлов, по этому, если вы столкнулись с забавными результатами, воспроизводя wav -файлы, дайте мне знать.

Простейший самодельный MP3 плеер с открытым исходным кодом

Чтобы записать данные на карту памяти, вам потребуется устройство чтения/записи карт. Во множество компьютеров такие устройства встроены. Внешние USB модели доступны в продаже по цене приблизительно в 10 долларов. Проверьте формат файловой системы карты, он должен быть FAT32 а не FAT16.

Предостережение для новичков! Это проект промежуточного уровня. Вам потребуются такие вещи как PIC программатор, некоторое знание программирования на языке С, так же как и неплохого, но и не огромного знания электроники. Осциллограф также не повредит. Будьте осторожны, детали очень маленькие.

Почему проект назван Сакура? Этот проект начался, когда везде цвели вишни. Сакура означает цветение вишни по Японски. И первый прототип проекта был помещен в корпус из розового пластика.

Схема

Исходный код

Для людей, которым не нужно модифицировать код программы есть . hex файлы, готовые для загрузки непосредственно в PIC контроллер. Не забудьте очистить флажки ( fuses ) BROWNOUT и WATCHDOG , это будет значить – запретить их.Если вы не сделаете этого, все устройство откажется работать. Это наиболее распространенная ошибка.

Расположение элементов

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

.Урок 19. Делаем MP3-плеер на DFPlayer Mini и Arduino.

Как воспроизвести аудиофайлы в формате wav я уже рассказывал в уроке: Arduino SD карта. Воспроизводим звуки и музыку в wav формате. Данный способ подходит, когда нужно воспроизвести файлы не очень высокого качества, например, уведомления, оповещение и пр. Если же надо воспроизводить файлы в формате mp3, нам поможет модуль DFPlayer Mini.

модуль DFPlayer Mini

MP3-плеер DFPlayer Mini позволяет воспроизводить аудиофайлы, записанные на карту памяти формата microSD. С помощью этого плеера можно управлять музыкой: приостановка и возобновление воспроизведения аудиофайла. А также можно установить громкость из 30-ти уровней громкости и одни из 6-ти режимов эквалайзера.

DFPlayer отлично подходит для Arduino проектов, в которых нужно воспроизводить уведомления или оповещения, а также для музыкального сопровождения с автоповтором выбранного трека, воспроизведением всех треков, или случайное воспроизведение треков.

Характеристики DFPlayer MP3 mini:

Характеристики DFPlayer MP3 mini:

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

Для реализации самого простого плеера не нужно подключать DFPlayer к Arduino. Достаточно подключить несколько кнопок вот по такой схеме.

Для реализации самого простого плеера не нужно подключать DFPlayer к Arduino.

Но у нас уроки про Arduino, поэтому рассмотрим простой пример подключения MP3-плеер к Arduino, который подключается по аппаратному или программному UART порту (пины RX и TX) Ардуино.

Для воспроизведения аудиофайла необходимо поместить на карту памяти microSD один трек. Файлы рекомендуется помещать в папку mp3 и называть порядковыми номерами вот в таком формате 0001.mp3. Мой опыт показывает, что можно скидывать файлы с любым названием и помещать в корень флешки, но воспроизводиться файлы будут в том порядке, в каком их загрузилина карту памяти. При пакетной загрузке одни файлы загружаются быстрее, а другие медленнее, из-за чего воспроизведение треков идет в хаотичном порядке.

Пример MP3-плеера на DFPlayer Mini и Arduino с возможностью выбора трека и изменением громкости.

Давайте сделаем полноценный MP3-плеера на Arduino. Для этого нам понадобится:

5. Динамик. Я использую от ноутбука.

6. 2 резистора на 10 кОм.

Все компоненты нашего будущего MP3-плеера на DFPlayer соединяем по схеме.

Все компоненты нашего будущего MP3-плеера на DFPlayer соединяем по схеме.

Загрузим файлы с треками на карту памяти microSD, я использую 3 трека с YouTube, чтобы можно было воспроизводить музыку в видеоролике и не получить бан. Архив с треками можно скачать внизу статьи, в разделе материалы для скачивания.

Загрузим файлы с треками на карту памяти microSD, я использую 3 трека с YouTube

Код для MP3-плеера на DFPlayer Mini и Arduino с возможностью выбора трека и изменением громкости будет вот такой.

У платы Arduino NANO всего один аппаратный Serial Port, поэтому будем использовать программный порт. Для этого нужно установить и подключить библиотеку SoftwareSerial.h.

подключить библиотеку SoftwareSerial.h.

Чтоб проверить, подключен или нет DFPlayer используется условие:

Чтоб проверить, подключен или нет DFPlayer используется условие:

Данные строки кода

Включают первый трек. И выводят в монитор порта информацию об этом.

Включают первый трек. И выводят в монитор порта информацию об этом.

Строки ниже выводят в монитор порта полезную информацию о статусе работы.

Строки ниже выводят в монитор порта полезную информацию о статусе работы.

Первая строчка выводит статус: цифра с кодом.

Вторая строчка выводить уровень текущей громкости от 0 до 30

Третья выводит настройки эквалайзера, также в цифровом значении.

Четвертая выводит, сколько треков найдено на карте памяти.

Последняя стока выводит, какой трек воспроизводится сейчас.

В мониторе порта это будет выглядеть вот так:

В мониторе порта это будет выглядеть вот так:

В основном цикле loop выводим условия проверки нажатия той или иной кнопки. И выполняем нужную команду.

Это одно условие для примера, остальные устроены аналогично, их рассматривать не будем. Список команд для работы с DFPlayer Mini myDFPlayer.next(); // Воспроизвести следующий mp3

Как видите, не так много кода и алгоритм работы достаточно несложный. Планирую реализовать пару проектов с использованием модуля DFPlayer Mini и Arduino, ESP8266, ESP32 для публикации на сайте. Благо, опыт работы с этим модулем и данными платформами есть.

ару проектов с использованием модуля DFPlayer Mini и Arduino, ESP8266, ESP32 для публикации на сайте.

Пишите ваши предложения и пожелания в комментариях. Чем больше будет откликов, тем чаше будут выходить проекты и уроки на сайте.

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Читайте также: