Как сделать usb проигрыватель своими руками

Обновлено: 07.07.2024

В настоящее время, когда в магазинах изобилие всевозможных гаджетов; планшетов, смартфонов, mp3 плейеров, может возникнуть вопрос для чего собирать цифровое устройство дома, своими руками? Дело это непростое, да и удовольствие не из дешевых. Но зачем в советское время собирали детекторные приемники, приемники на одном или нескольких транзисторах. Ведь и тогда в магазинах были в продаже так называемые “транзисторы”, маленькие переносные радиоприемники с хорошим дизайном, да и по своим параметрам часто превосходящие самодельные. Дело в том, что радиолюбители по натуре люди творческие, и никогда не пойдут в магазин покупать что либо, если такое же устройство или аналог, можно собрать своими руками. Так произошло недавно и со мной. Несмотря на то, что есть и mp3 плейер и плейер на телефоне, решил собрать аудиоплейер своими руками. Просматривая недавно радиолюбительские сайты, на одном интернет ресурсе нашел схему интересного и относительно простого аудио плейера Wav файлов. Если кто-то не в курсе, что это за формат, Wav, поясню, это формат аудиофайлов, используется часто в работе музыкантами. Почему именно Wav, а не более популярный в широких кругах mp3? Аудио плеер Wav файлов собрать значительно легче, чем mp3 файлов.

микроконтроллер AVR attiny2313v

В моем устройстве применен распространенный и недорогой микроконтроллер AVR attiny2313v. Ниже вы можете видеть его схему, взятую с интернет ресурса, по которой сделал данный плеер с небольшими изменениями:

Схема плеера

АУДИО ПЛЕЕР СВОИМИ РУКАМИ - схема

Файлы Wav формата хранятся на micro SD флешке, подключенной в устройстве через SD адаптер. При желании если позволяет опыт, можно переразвести печатную плату и подключать micro SD флешку через собственный разъем. Аналогичный разъем стоит в сотовых телефонах. При этом нужно помнить, что номера контактов SD флешки не соответствуют номерам контактов micro SD флешки. Список контактов обоих флешек с нумерацией приведен на следующем рисунке:

Назначение контактов SD и micro SD

Рисунок печатной платы плеера мп3

Распечатанный рисунок на печатную плату был переведен ЛУТом. Перевелось в принципе нормально, за исключением трех контактов стабилизатора, с левого края платы.

Плата подготовленная к ЛУТу

Вместе эти два аккумулятора, которые выбрал, дают 7,4 вольта. Так как для питания карты памяти необходимо питание 3.3 вольта, решено было питать все устройство, в том числе и микроконтроллер от стабилизатора 3.3 вольта в корпусе ТО-220. Тут использовал AZ1085-3.3. Стабилизатор без радиатора должен легко выдавать стандартный 1 ампер, что для моих целей более чем достаточно. Так выглядит стандартный корпус стабилизатора в ТО-220.

корпус стабилизатора в ТО - 220

плата после травки

Контакты стабилизатора перенеслись при ЛУТе не полностью, и были подрисованы перманентныим маркером. Травить предпочитаю лимонной кислотой и перекисью водорода:

Травление лимонной кислотой

Плата после лужения и сверления

В этом варианте устройства выбор трека кнопками, подключенными к контактам микроконтроллера 6,7,8,9 не осуществлен. Также не используется UART, контакты МК 2,3 и включение эффектов Монстер и Хелиум, контакты 12,15. SD адаптер временно прикрепил к плате на скотч, впоследствии закреплю на термоклей. Вот собранное устройство:

АУДИО ПЛЕЕР СВОИМИ РУКАМИ

При воспроизведении мигает зеленый светодиод, при включении горит также зеленый. При ожидании подключения флеш карты, постоянно мигает желтый светодиод. При переключении с последнего трека на первый, также 1 раз мигает желтый светодиод.

аудиоплейер Wav файлов, на базе микроконтроллера AVR attiny2313v

При использовании устройства совместно с активной акустикой, переменный резистор регулирующий громкость не нужен, но при использовании с наушниками, без него пользоваться становится неудобно. Поэтому был установлен переменный резистор на 4.7 килоОма. При подключении динамика напрямую на выход микроконтроллера через конденсатор на 100 микрофарад громкость очень тихая, еле слышно. При использовании с наушниками, громкость достаточная.

Конвертер WAV файлов

Пример названия файлов wav

Поддерживаются любые Micro SD карты объемом до 2 гигабайт. Карты памяти SDHC или SDXC не поддерживаются. Рисунок как выставлять фьюзы для программы uniprof приведен ниже:

Фьюзы плеера МК

Видео работы плеера


В прошлой статье я рассказал, как собирал мобильный телефон, и некоторые приемы я позаимствую из этого проекта.

Помню, как в 2004 году у меня появился MP3-плеер и привел меня в полный восторг. Памяти, у него, правда, было всего 128 Мбайт, что по тем временам уже считалось скромным. Кроме того, плеер отличался очень дурной особенностью коверкать записанные на него файлы. Как объяснялось в инструкции, это не баг, а «фича», то есть защита от копирования.

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

Итак, от своего проекта я хотел, чтобы:

  • устройство (очевидно) воспроизводило MP3;
  • поддерживались современные карты SD;
  • в качестве файловой системы использовалась FAT;
  • качество звучания было приемлемым;
  • по возможности было невысокое энергопотребление.

Компоненты

За основу устройства я взял недорогой MP3-кодек VS1011E. На самом деле разумнее было бы выбрать более продвинутые VS1053 или VS1063 или обновленную версию VS1011 — VS1003 (у нее тактовая частота выше), стоят они все примерно одинаково.

Однако вникать в эти тонкости я не стал и остановился на первой попавшейся микросхеме. В качестве контроллера я взял STM32F103C8T6, чтобы можно было сделать макет, используя готовую плату Blue Pill, а уже потом собрать все по-серьезному. Экран я выбрал TFT, разрешение — 128 на 160 (ST7735). У меня для него уже есть написанные ранее библиотеки.

Код, как и в случае с телефоном, мы будем писать на C с использованием библиотек libopencm3 и FatFs.

Устройство будет работать просто: читать данные из файла на флешке и скармливать кодеку, а все остальное кодек сделает сам.

Макет

Прежде чем переходить к коду, есть смысл собрать макет устройства (я вообще поклонник отладки программ на реальном железе). Берем плату Blue Pill и подпаиваем к ней модуль дисплея с картодержателем. Пайка позволяет нам не сталкиваться с проблемой дребезга соединений, которая может доставить много неприятностей на этапе отладки.

Тестовый модуль для VS1011 я собрал на макетке, использовав переходник с QNF48 на DIP, схему которого я посмотрел в даташите. На самом деле так заморачиваться необязательно — можно взять готовый модуль. Но у меня его не было, а ждать не хотелось.

В итоге я все это собрал за несколько часов и был готов переходить к коду.

Схема плеера
Макет устройства
Макетная плата кодека VS1011
Макетная плата кодека VS1011
Дисплей макета с ранним вариантом интерфейса

Шаблон будущей программы

Прежде чем писать основные функции, полезно инициализировать дисплей и клавиатуру. Про дисплей я уже говорил выше, а клавиатура четыре на четыре кнопки у меня осталась от макета телефона.

В исходнике ниже — стандартные заголовочные файлы, функции инициализации периферии, функции инициализации дисплея и клавиатуры и в конце вывод строчки Hello world.

Продолжение доступно только участникам

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее


Для начала, я определился с корпусом — в моём случае, в его роли выступил корпус от «пауэр банка», который я уже обозревал.


Далее, выпаял всё что мне мешалось, или требовало отдельного места:

Выпаял USB разъём и установил на штатное место в корпусе, соединив проводом.


Установил microUSB разъем в штатное место корпуса, подпаявшись к плюсу и минусу эмалированным проводом от трансформатора(он у меня будет использоваться часто).


Вырезал отверстие сверлом для гнезда наушников и подпаялся эмалировкой.


Установил подходящий, по размерам, аккумулятор от звонилки на 900mAh и определил место для платки контроля заряда\разряда. Установил светодиод для индикации процесса заряда акб(зелёные термоусадки). Просверлил отверстия под динамик и обклеил алюмишкой крышку. Установил в крышку корпуса динамик от звонилки(звук не очень, да и места было впритык, хороший динамик не установить, но этот динамик скорее индикатор того, что плеер работает и песни читает, т.к. все время слушаться будет в наушниках). Вырезал паз и установил микропереключатель для вкл\выкл плеера.


На фото не видно, но я скажу своими словами — MP3 плата с завода идёт с отвратительными выходными конденсаторами. Для хорошего звука в наушниках, необходимо их заменить на более емкие — 10-200 мкФ, что я и сделал.
Долго думал над кнопками, в итоге, пришел к такому варианту(отверстия для выводов проделал нагретой иголкой, и потом заливал суперклеем.


Вид со стороны выхода наушников:


Вид сверху:


Вид спереди:


Вид во время зарядки(установил непростой светодиод а slow flash LED, который меняет цвета)

ИТОГ: Получился лёгкий, компактный, долгоиграющий MP3 плеер. Для удобства, использую tiny usb флешку(не выпирает, немного торчит, но не критично). Разъём для карт памяти не стал устанавливать, т.к. уже не хватало места.
Время работы при средней громкости

30 часов.
Используемые компоненты:
Slow RGB LED-$0.50
Плата контроля заряда\разряда-$1.61
Микрокнопки-$4.59
Батарея(не покупал, была от старого телефона)
Корпус, к сожалению, не нашел… на али его уже не найти(может плохо искал). Но в данном обзоре, я хотел показать, что можно сделать портативный плеер буквально из подручных средств, и корпус в Вашем случае, может быть абсолютно любой.

Набравшись немного терпения, вы можете спаять самодельный MP3-плеер своими руками, при этом затратив менее 1000 руб. Т.к. программное обеспечение данного плеера представлено в открытом виде (доступны все исходники проекта), то вы можете дорабатывать его вводя новые функции, к примеру: управление по последовательному интерфейсу, можете использовать плеер в различных проектах робототехники, ну и естественно по его прямому предназначению – прослушивание музыки. Карта памяти – SD/MMC, размер памяти ограничен теоретическим лимитом спецификациями MMC-формата.

Фото MP3 плеера

Данный MP-3 плеер поддерживает такие функции как случайное воспроизведение треков, навигация по трекам (вперед, назад, пауза), регулирование громкости воспроизведения. Также присутствует поддержка файловой системы FAT32, фрагментированных файлов, неограниченное число файлов в корневой директории, ну и естественно качество воспроизведения находится на высоком уровне. MP3-файлы с битрейтом 256 кБит/с воспроизводятся без каких-либо затыков, файлы с переменным битрейтом также воспроизводятся без проблем (в пике до 320 кБит/с).

WAV файлы также поддерживаются, но качество должно быть ниже чем у CD, пока вы не поставите кварцевый резонатор с большей частотой. На моем тестовом плеере это работает, однако запустить PIC с более чем

8 МГц кварцем при питании 3.3 Вольта проблематично.

Для записи файлов на карту памяти вам будет нужен кард-ридер. Помните, что карта памяти должна быть в формате FAT32, а не в FAT16 или каком-либо другом.

Файлы на карте памяти должны быть с расширением .mp3. Вставьте карту памяти в плеер и включите питание, воспроизведение начнется с первого трека. Файлы воспроизводятся в том порядке – как они были на нее записаны (если не включена функция случайного воспроизведения).

Чтобы включить случайное воспроизведение, удерживайте кнопку "следующий трек" во время включения MP3-плеера. Функция будет работать до следующего включения плеера. Когда все треки будут проиграны, воспроизведение останавливается и плеер уходит в "sleep" режим.

Схема MP3 плеера

Исходный код

Если в исходном коде вам не нужно делать каких-либо изменений и корректировок, то в архив я вложил уже готовый HEX-файл. Перед прошивкой не забудьте очистить фьзы BROWNOUT и WATCHDOG, иначе устройство не заработает!

Почти вся память контроллера 4К используется. Память EEPROM 256 байт полностью используется под таблицу данных для функции случайного воспроизведения. При необходимости можно освободить память, удалив несколько не очень критичных функций, к примеру функции для кнопок и случайное воспроизведение.

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