LINUX.ORG.RU
ФорумTalks

Open hardware STM32 MP3 player

 , , ,


9

5

Hello!

Как то давно я загорелся идеей сделать открытый музыкальный плеер(отдельное устройство). Эта идея была вызвана многими причинами: начиная от банального отсутствия необходимых функций в существующих плеерах и кончая ненадёжностью плееров из смартфончиков и планшетиков(малая продолжительность автономной работы, в дешёвых моделях - качество звука и тд).

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

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

Итак, я начал работы. Собрал макет и стал писать программу.

На макете присутствовал сам кодек на отладочной платке с алиекспресса, MCU - stm32f103cbt6(было достаточно ножек и был в наличии в ближайшем чипдипе)(плату развёл и сделал сам фотки), eeprom(24lc256 - самая дешёвая), уродливый разъём для microsd карточки(внутренний еврей не позволил покупать разъём для макета за 150 рублей. В итоге на макете частоту SDIO пришлось снизить, но на это повлияли больше длинные провода, чем разъём), OLED 0.96" дисплей на контроллере SSD1306(просто обожаю чб олед дисплеи(они няяяшные)) и самодельная 12ти кнопочная клавиатурка.

Фотки макета: https://imgur.com/a/TvJSv

На ютубе можно посмотреть видео с самых первых этапов разработки(тогда даже не была написана система и не был допилен гуй): https://www.youtube.com/channel/UC5pY283jfYVHqjVQ8bXEKBQ

Программил я после учёбы, поэтому затянулось всё на долго. Но в итоге было много чего сделано: драйвер дисплея(его я написал раньше, теперь перевёл на DMA), драйвер кодека, система, которая позволяет запускать отдельные приложения и управляет всем, в том числе и необходимыми харварными частями и отображением всего на экран, библиотека графического интерфейса со множеством необходимых элементов, сам графический интерфейс(менюшки, верхний бар, настройки и тд), музыкальный плеер(тот, что только взаимодействует с драйверами) и три приложения(файловый менеджер, тестовое приложение и приложения для музыкального плеера(интерфейс)). Всё это работало, играло музыку и причём совсем таки не плохо.

В это же время я рисовал схему и разводил плату. В итоге вышло так: фото разводки 1 фото разводки 2 ещё фотки разводки и схема.

Заказать детали для плеера и плату с завода предприятие, где я сейчас подрабатываю. В итоге я получил такую красоту: https://imgur.com/a/w70eH

И всё вместе собрал: https://imgur.com/a/paefn

Нооо... В разводке нашлись ошибки(не принципиальные, но всё же. Это была первая такая сложная плата). Но всё заработало просто великолепно! Даже играло музыку. Почти. Я забыл в схеме сделать фильтр на выходе кодека и допаял его сверху на самой плате. И видимо в результате отладки бедная микросхемка, наверное, сгорела(но лишь наполовину. По SPI она отвечает, говорит и даже, якобы, воспроизводит музыку, хотя на выходе тишина).

Но в итоге я очень расстроился и бросил это дело. Даже не записал ни одно видео работы =с

Я написал этот постик просто так, чтобы хоть где-нибудь было упоминание об этом проекте. Но я буду очень рад, если найдутся люди, которым понравилась эта идея и они готовы продолжить его со мной.

Все исходники: схемы, разводки(KiCad), программа для MCU(в Keil uVizion) и библиотеки лежат тут: https://github.com/SL-RU/sdmplayer

Спасибо за внимание.

★★★★

Выглядит достаточно постапокалиптично. А как оно видео выводит? Я в мк ноль без палочки, если что.

WerNA ★★★★★
()

Годно. Жаль, что бросили.

Evenik ★★
()

А зачем карманному проигрывателю так много кнопок? Минимализм же...

Evenik ★★
()

Интересно. Хотелось бы себе такой же иметь, а не то говно которое у нас продают. Жаль что разработка заброшена. А так тянет на еще один краудфандинг уровня ЛОРа :)

ozzee
()
Ответ на: комментарий от WerNA

Ах, ну там я смухлевал. Я написал скрипт для компа, который переделывает гифки в свой форматик(там прост разбито на страницы и один бит - один пиксель) и прост пробегаюсь по всему)

Но можно без проблем встроить гиф декодер. Я прост это делал так - для разнообразия)

SL_RU ★★★★
() автор топика
Ответ на: комментарий от Igron

Да проблемы нет, собстно)

Просто я отдохнуть от этого решил. Сча игроделом опять занялся.

SL_RU ★★★★
() автор топика

Выглядит мощно.

Myau ★★★★
()

Думал об этом же несколько месяцев назад.

Только дисплей хотел на ili9341 и контроллер 407

Pentium02 ★★
()
Последнее исправление: Pentium02 (всего исправлений: 1)
Ответ на: комментарий от panzerito

он без проблем собирается с gcc - я пробовал. Ток нужно скрафтить мэйк файл.

Так же уже для emacsа сделал аддончик для автоматической сборки прошивки и загрузки на досочку.

Так что если решу продолжать, то будет на гцц.

SL_RU ★★★★
() автор топика
Ответ на: комментарий от alozovskoy

Разработчики сначала.

Нужно сначала сделать рабочую конечную версию, а потом всё остальное.

SL_RU ★★★★
() автор топика
Ответ на: комментарий от SL_RU

Так же уже для emacsа сделал аддончик

Скинь, пожалуйста

panzerito
()

Доводи до логического конца. Ну и на профильных сайтах засветись, может кто захочет к тебе присоединиться. Ну а так ты вывел линуксоида на новый уровень — теперь нужно не просто написать свой плеер, но и спаять его. Какое время автономной работы?

ramon13666 ★★★
()
Ответ на: комментарий от ramon13666

С выключенным экранчиком и при проигрывании - кушает 5-9мА. С включенным экраном - до 25.

Сейчас я выбрал аккумулятор оптимальный по размерам, т.е. очень тонкий и чтобы влез туды - его ёмкость - 750маЧ. Итого больше 100часов в режиме проигрывания с маленьким акком. Есть ещё акк на 2200маЧ подходящего размера) но он толще

SL_RU ★★★★
() автор топика
Ответ на: комментарий от SL_RU

Потребление выглядит нормальным. Выяснял, кто больше ест — стм или vs? В том плане, есть ли смысл использавать stm32l вместо f серии? Ну и размеры сократить, такая клавиатура не нужна плееру.

ramon13666 ★★★
()
Ответ на: комментарий от ramon13666

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

Только лучше использовать stm32f4x1 для энергоэффективности.

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

SL_RU ★★★★
() автор топика
Ответ на: комментарий от SL_RU

Доведи до конца, если есть время. И выложи новость на профильных сайтах, и бложик невмырущий хорошо бы иметь. Твоя поделка не нова и не так уж необходима, но раз ты выполнил работу, то глупо дать ей кануть в лету. А так мож какой гик вместо айпода запилит себе твою поделку. В любом случае, ты что-то сделал, уже это заслуживает уважения.

ramon13666 ★★★
()
Ответ на: комментарий от ramon13666

Ну оки тогды - я подумаю ^^

SL_RU ★★★★
() автор топика

Очень крутой проект. Я тоже интересовался финскими VLSI, они хороши. Надеюсь увидеть твой плеер на я Hackaday.

CYB3R ★★★★★
()

Вопрос не права ради, но зачем использовать хардовый плэер если есть смартфоны? Да, у некоторых звук не очень но не у всех. А по теме тоже была мысля собрать что-то похожее и портировать rockbox но не смог ответить на предыдущий вопрос и забил.

Confucij
()
Ответ на: комментарий от Confucij

Ненадёжно(эппл ваще музычку удаляет. скор и гугл подтянется), недолго(редкий смартофон сейчас живёт на зарядке более 2х дней), нет нужных приложений(я перерыл весь маркет, но так и не нашёл ХОРОШЕГО, удобного приложения для проигрывания книжек с нужными фичами), проприетарненько и ваще принцип «одна вещь должна выполнять одну задачу и делать это хорошо» применим и к real world'y. Да и просто это офигенно и весело =D

Так же у меня вызывает жуткое отвращение программирование под андроид, да и сама эта «ОС» после того как узнал то, как «работают» эти бедные программы. Это просто помойка. Помойка в архитектуре, в маркете, в SDK - да везде! БРРРРР, даже не хочу вспоминать те дни.

SL_RU ★★★★
() автор топика
Ответ на: комментарий от stalkerhouse

Я имел в виду open source hardware =p Оно требует только открытых принципиальных схем, используемых микросхем и лэйоута - открытость самих микросхем не учитывается.

SL_RU ★★★★
() автор топика
Ответ на: комментарий от SL_RU

Про весло я согласен) А по остальному:

  • Удаление на андроид пока не видел.
  • актуально только в дороге/поездках
  • Я пользуюсь бесплатной версией smart audiobook player. В платной фич еще больше(2$ вроде). Каких именно тебе не хвататет?
Confucij
()
Ответ на: комментарий от Confucij

Да, тоже юзал smart audiobook player рааньше. Полную версию, но что-то там меня дико бесило - я уже не помню.

Не юзаю смартфон уже давно.

SL_RU ★★★★
() автор топика
Ответ на: комментарий от SL_RU

Хорошее дело ты делаешь, поняшка. После снятия с производства некоторых моделей плееров средняя ценовая категория с относительно приличным звучанием пропала как класс. Или ~12т.р.+ или китайские шипелки. Даже iPod Classic сняли. Сдуваю пылинки со своего D2+ (на самом деле нет, ему вообще пофигу, хоть об асфальт). Не верится, что плеер-как-отдельное-устройство настолько быстро проиграл смартфону в глазах пользователей. И очень обидно что Rockbox фактически мёртв. Эх. Короче, не забрасывай.

droserasprout ★★
()
Ответ на: комментарий от Morin

У ОЛЕД другая проблема - выцветание. Очень маленький временной ресурс. А как раз по энергоэффективности он намного лучше ЖК.

А ещё тут потребление экрана не нужно - более 90% времени он будет выклчен

SL_RU ★★★★
() автор топика
Ответ на: комментарий от SL_RU

Ты делаешь мне смешно, иди доки читай. Сам писал 20мА, у жк с подсветкой, основной потребитель диод, при нынешних технологиях изготовления 1-2мА это очень ярко.

Morin ★★★★
()
Ответ на: комментарий от Morin

Кхм. Ты бы сначала сам погуглил.

А основной потребитель - сам МК.

OLED: https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf

VCC Supply Current VDD = 2.8V, VCC = 12V, IREF = 12.5uA No loading, Display ON, All ON Imax = 780МИКРОАМПЕР

Это даже не миллиампер. А ещё ток линейно зависит от кол-ва горящих светодиодов.

Теперь типичный самый дешёвый TFT-LCD - стоит на 50 рублей дороже. http://www.tme.eu/ru/Document/a027c91ef3a517497aeae67189bcba5a/4DLCD-144.pdf

Input Current 10 mA

Luminance Lv 250 cd/m2 If = 20mA

10+20 = 30 мА. А это БОЛЕЕ ЧЕМ В 30 РАЗ большее потребление нежели у ОЛЕД.

SL_RU ★★★★
() автор топика
Последнее исправление: SL_RU (всего исправлений: 1)
Ответ на: комментарий от droserasprout

После снятия с производства некоторых моделей плееров средняя ценовая категория с относительно приличным звучанием пропала как класс. Или ~12т.р.+ или китайские шипелки.

Не гони. Вот Hi-Fi плеер Fiio M3 белый [8 Гб, 20 Гц - 20000 Гц, Cirrus Logic CS42L51, время работы - 24 ч] 5999 рублей http://www.dns-shop.ru/catalog/420b6999ae014e77/portativnyj-hi-fi-pleer/?groupBy=0 .

stalkerhouse
()
Ответ на: комментарий от SL_RU

Common maximum sink current: 15mA

Ты доку свою читал? И с каого перепуга TFT, других не существует? Я тебе по секрету скажу матричный дисплейчик вместе с подсветкой, стоит меньше бакса

Morin ★★★★
()
Ответ на: комментарий от Morin

Окай, всё равно больше.

Плиз, найди мне где можно его купить менее чем за бакс. Я куплю

SL_RU ★★★★
() автор топика
Ответ на: комментарий от SL_RU

еще раз ля тех кто в танке, обычная жк, жрет до 1мА, диод подсветки 1-2мА. Но да ОКАЙ, у кого-то все еще больше

Morin ★★★★
()

Низкий поклон автору! Чувствую себя полным бездарем теперь :D .

Хотелось бы увидеть продолжения.

EmgrtE ★★★★
()
Ответ на: комментарий от EmgrtE

Спасибо! Вот уже определился с тем, что хочу сделать(на этот раз с софтварным кодеком, внешним ЦАП, фильтрами и усилителем. Так же хочу сделать тонкомпенсацию), выбрал детальки и библиотеки. Скоро начну заниматься снова!

Ваша поддержка дала мне сил, спаибо =D

SL_RU ★★★★
() автор топика
Ответ на: комментарий от Chaser_Andrey

Вооообще всё зависит от количества экземпляров. Разница между 2 штуками и 50 очень значительна: и бОльшую роль тут играет не доставка, заказ, скидки на опт и тд, а цена печатных плат. Стоимость двух будет всего на 20% меньше, чем 10, т.к. создаются шаблоны, а расходники копеечные.

Для новой версии я ориентируюсь на 2к-3к при партии 10 штук. Но ещё ничего точно не решил - так приблизительная цель.

А старая вышла бы в 3к за штуку(при полном копировании), но можно было бы уменьшить стоимость без проблем до 1.5к-2к. Но смысла плеера без внешних фильтров, усилителя и ЦАП особого не было - именно они отвечают за качество звука и наносят урон цене. Без внешних компонентов качество было бы на уровне обычных приличных смартфончиков выше среднего.

SL_RU ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.