Следующая новость
Предыдущая новость

MP3-плеер своими руками. Как собрать и запрограммировать гаджет у себя дома

17.12.2019 18:03
MP3-плеер своими руками. Как собрать и запрограммировать гаджет у себя дома

Содержание статьи

  • Компоненты
  • Макет
  • Шаблон будущей программы
  • Драйвер карты SD
  • Несколько слов про отладку
  • FatFs
  • Аудиокодек VS1011E
  • Реализация плеера
  • Интерфейс
  • Последовательность треков
  • Законченное устройство
  • Что стоит добавить

Мастерить свои электронные устройства — занятие, может быть, и не очень практичное, но увлекательное и познавательное. В этой статье я расскажу, как я создал собственный музыкальный плеер. В результате получится, конечно, не iPod nano (и даже не mini), но зато мы посмотрим, как на C работать с разным железом — SD-картой, кодеком, экраном и клавиатурой.

INFO

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

Помню, как в 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, схему которого я посмотрел в даташите. На самом деле так заморачиваться необязательно — можно взять готовый модуль. Но у меня его не было, а ждать не хотелось.

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

MP3-плеер своими руками. Как собрать и запрограммировать гаджет у себя дома
Схема плеера
MP3-плеер своими руками. Как собрать и запрограммировать гаджет у себя дома
Макет устройства
MP3-плеер своими руками. Как собрать и запрограммировать гаджет у себя дома
Макетная плата кодека VS1011
MP3-плеер своими руками. Как собрать и запрограммировать гаджет у себя дома
Макетная плата кодека VS1011
MP3-плеер своими руками. Как собрать и запрограммировать гаджет у себя дома
Дисплей макета с ранним вариантом интерфейса

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

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

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

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

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

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

1 год

7690 р.

1 месяц

720 р.

Я уже участник «Xakep.ru»

Источник

Последние новости