Как сделать плеер
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
Схема включения PCM2902
Этот кодек кроме аналогового входа и выхода имеет так же и цифровой 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 Audio codec по умолчанию и нажимаем кнопку свойства.
Выбираем вкладку Прослушать:
Теперь заходим в вкладку Дополнительно и выставляем 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 -файлы, дайте мне знать.
Чтобы записать данные на карту памяти, вам потребуется устройство чтения/записи карт. Во множество компьютеров такие устройства встроены. Внешние USB модели доступны в продаже по цене приблизительно в 10 долларов. Проверьте формат файловой системы карты, он должен быть FAT32 а не FAT16.
Предостережение для новичков! Это проект промежуточного уровня. Вам потребуются такие вещи как PIC программатор, некоторое знание программирования на языке С, так же как и неплохого, но и не огромного знания электроники. Осциллограф также не повредит. Будьте осторожны, детали очень маленькие.
Почему проект назван Сакура? Этот проект начался, когда везде цвели вишни. Сакура означает цветение вишни по Японски. И первый прототип проекта был помещен в корпус из розового пластика.
Схема
Исходный код
Для людей, которым не нужно модифицировать код программы есть . hex файлы, готовые для загрузки непосредственно в PIC контроллер. Не забудьте очистить флажки ( fuses ) BROWNOUT и WATCHDOG , это будет значить – запретить их.Если вы не сделаете этого, все устройство откажется работать. Это наиболее распространенная ошибка.
Расположение элементов
Щелкните здесь, что бы получить версию расположения элементов пригодную для печати.
Как воспроизвести аудиофайлы в формате wav я уже рассказывал в уроке: Arduino SD карта. Воспроизводим звуки и музыку в wav формате. Данный способ подходит, когда нужно воспроизвести файлы не очень высокого качества, например, уведомления, оповещение и пр. Если же надо воспроизводить файлы в формате mp3, нам поможет модуль DFPlayer Mini.
MP3-плеер DFPlayer Mini позволяет воспроизводить аудиофайлы, записанные на карту памяти формата microSD. С помощью этого плеера можно управлять музыкой: приостановка и возобновление воспроизведения аудиофайла. А также можно установить громкость из 30-ти уровней громкости и одни из 6-ти режимов эквалайзера.
DFPlayer отлично подходит для Arduino проектов, в которых нужно воспроизводить уведомления или оповещения, а также для музыкального сопровождения с автоповтором выбранного трека, воспроизведением всех треков, или случайное воспроизведение треков.
Характеристики 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. Достаточно подключить несколько кнопок вот по такой схеме.
Но у нас уроки про Arduino, поэтому рассмотрим простой пример подключения MP3-плеер к Arduino, который подключается по аппаратному или программному UART порту (пины RX и TX) Ардуино.
Для воспроизведения аудиофайла необходимо поместить на карту памяти microSD один трек. Файлы рекомендуется помещать в папку mp3 и называть порядковыми номерами вот в таком формате 0001.mp3. Мой опыт показывает, что можно скидывать файлы с любым названием и помещать в корень флешки, но воспроизводиться файлы будут в том порядке, в каком их загрузилина карту памяти. При пакетной загрузке одни файлы загружаются быстрее, а другие медленнее, из-за чего воспроизведение треков идет в хаотичном порядке.
Пример MP3-плеера на DFPlayer Mini и Arduino с возможностью выбора трека и изменением громкости.
Давайте сделаем полноценный MP3-плеера на Arduino. Для этого нам понадобится:
5. Динамик. Я использую от ноутбука.
6. 2 резистора на 10 кОм.
Все компоненты нашего будущего MP3-плеера на DFPlayer соединяем по схеме.
Загрузим файлы с треками на карту памяти microSD, я использую 3 трека с YouTube, чтобы можно было воспроизводить музыку в видеоролике и не получить бан. Архив с треками можно скачать внизу статьи, в разделе материалы для скачивания.
Код для MP3-плеера на DFPlayer Mini и Arduino с возможностью выбора трека и изменением громкости будет вот такой.
У платы Arduino NANO всего один аппаратный Serial Port, поэтому будем использовать программный порт. Для этого нужно установить и подключить библиотеку SoftwareSerial.h.
Чтоб проверить, подключен или нет DFPlayer используется условие:
Данные строки кода
Включают первый трек. И выводят в монитор порта информацию об этом.
Строки ниже выводят в монитор порта полезную информацию о статусе работы.
Первая строчка выводит статус: цифра с кодом.
Вторая строчка выводить уровень текущей громкости от 0 до 30
Третья выводит настройки эквалайзера, также в цифровом значении.
Четвертая выводит, сколько треков найдено на карте памяти.
Последняя стока выводит, какой трек воспроизводится сейчас.
В мониторе порта это будет выглядеть вот так:
В основном цикле loop выводим условия проверки нажатия той или иной кнопки. И выполняем нужную команду.
Это одно условие для примера, остальные устроены аналогично, их рассматривать не будем. Список команд для работы с DFPlayer Mini myDFPlayer.next(); // Воспроизвести следующий mp3
Как видите, не так много кода и алгоритм работы достаточно несложный. Планирую реализовать пару проектов с использованием модуля DFPlayer Mini и Arduino, ESP8266, ESP32 для публикации на сайте. Благо, опыт работы с этим модулем и данными платформами есть.
Пишите ваши предложения и пожелания в комментариях. Чем больше будет откликов, тем чаше будут выходить проекты и уроки на сайте.
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Читайте также: