Около года назад увидел эту замечательную идею самодельного плеера на SparkFun. Думаю, многим будет интересно сделать такую штуку.
Данный проект примечателен ещё и тем, что он несложен и может быть использован как первый практический урок программирования ARM-контроллеров для новичков. Представляю вашему вниманию свой перевод статьи SparkFun с некоторыми дополнениями и пояснениями.
С чего всё начиналось
Ребята случайно наткнулись в сети на интересные пряжки для ремней, что послужило мотивом к созданию проекта. Цель проекта состояла в создании встроенного в прягу mp3-плеера, реагирующего на движение и работающего без подзарядки по крайней мере пару часов.
MP3 плеер-пряжка
Компоненты
Вот перечень основных компонентов, используемых в проекте:
LPC2148 (32-битный ARM микроконтроллер) – центральный процессор, мозги плеера
VS1002 (MP3 декодер) – для декодирования MP3 данных и передачи аудио
Первая задача с которой столкнулись разработчики – как организовать питание девайса. Батарея должна быть достаточно мощной, чтобы обеспечивать ток 100мА хотя бы два часа и должна иметь возможность перезарядки.
После недолгих поисков решение было найдено – литий-ионные аккумуляторы таблеточного типа (Coin Cell) ёмкостью 200мА/час, CR2450! В России легче достать аккумуляторы LIR3048, можно использовать их (правда они побольше размером).
Собираем все компоненты в принципиальную схему и переходим к трассировке печатной платы.
PCB
Вторая задача – уместить всё это добро на печатной плате. Очень просто: замеряем нашу пряжку, рисуем контур платы в PCB-редакторе и размещаем компоненты.
Плата плеера должна уместиться между зубчатыми краями
Располагаем компоненты так, чтобы при взгляде на пряжку вы видели круто выглядящую печатную плату.
Соответственно, в слое Top размещаем наши светодиоды и микросхемы.
Вид спереди
На задней стороне ставим батареи, mini-USB, аудио-коннектор и слайдер для изменения громкости так, чтобы они были доступны пользователю при застёгнутом ремне.
Плату крепим с обратной стороны пряжки с помошью скобки из оргстекла
OK, заказываем производство платы. Ремень выглядит действительно круто!
Код
Теперь, когда печатная плата готова и все компоненты припаяны, переходим к самому интересному – написанию кода!
Чтобы при отладке не загружать свою программу каждый раз через последовательный порт, логично использовать загрузчик (нпример, SparkFun LPC2148 USB Bootloader, подробнее о нём можно почитать в описании),
позволяющий сохранять код прошивки на SD-карточке (и LPC2148 автоматически перепрограммируцтся новым кодом).
Итак, загружаем на плату загрузчик, и можно приступать к написанию кода для mp3-плеера. Перед написанием любого кона нужно решить, как организовать управление устройством.
Выбор mp3-композиции: т.к. дисплея у нас нет, то первое что приходит в голову – это случайное воспроизведение.
Осталось придумать как реализовать функцию «воспроизведение/пауза», изменение громкости и переход к следующей композиции.
Для этого у нас есть три положения кнопки-слайдера и акселерометр. И отлично, движение слайдера вверх и вниз будет отвечать за громкость, а нажатие будет давать команду паузы/воспроизведения.
Используем акселерометр для смены трека: чтобы сменить песню надо подвигать бёдрами (ну, или устроить танец живота). Да, да, оттягивайтесь по полной!
Добавим ещё немного весёлостей: если акселерометр обнаруживает, что пользователь танцует, начинает мигать трёхцветный светодиод. Сказано – сделано!
Написание кода не особо сложная штука: берём образец кода с отладочной платы MP3 Development Board, выкидываем всё лишнее и настраиваем управление и мигание диодами.
Это ж новый стиль, чёрт возьми!
Если вы хотите сделать свой плеер-пряжку, разработчики советуют не стесняться использовать их примеры кода и разводки платы. Удачи)