Как стать автором
Обновить

Плеер для слабовидящих на ESP32

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.5K

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

Задача

Сделать плеер, который бы прослужил более месяца, имел бы механизм переключения музыки (исполнителей, папок, плейлистов), содержал бы бесконечный (практически) объем музыки, с минимальными расходами на сопровождение(в удаленном режиме обновление музыки и т.д.).

Небольшая ремарка, брат полностью незрячий, на пенсии по инвалидности, единственное его отрада в жизни - слушать музыку (радио, мультфильмы). Как это было до недавнего времени - поход на рынок с отцом, выбор и покупка дисков, дома слушал на cd-плеерах, потом на dvd, постепенно заменили носители на флешки, все это необходимо было находить, скачивать и записывать(так как музыка надоедала, флешки терялись и т.д.), проигрывалось на обычных китайских 3-5-7-10 в одном плеерах.

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

Мысли, идеи

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

Следующая мысль - поместить внутрь корпуса покрепче какой то ssd с музыкой, управлять воспроизведением через RFID метки, которые позволяют "управлять" тем, что хочешь слушать, но избавляют от риска поломать гнездо и сильно дешевле)). После обдумывания понял, что замена/обновление музыки маме будет нереально делать, что с учетом удаленности приводит к ограниченному и несменяемому объему, да и чем обрабатывать воспроизведением с ssd тоже не смог найти бюджетно.

Ковыряясь у себя в ящиках с электроникой, нашел артефакты от незавершенного проекта интернет-радио на esp32 TTGO, также в кладовке пылилась малинка 3b, что натолкнуло меня на тот вариант, который взял в работу - клиент-серверный плеер. В корпусе будет esp32, которая воспроизводит сетевой поток от RPI, передает команды на переключение музыки (читает RFID, отправляет на сервер ID метки, а сервер закидывает в mpc заранее подготовленный плейлист). Также этот вариант позволяет перенести администрирование на меня, обеспечив возможность обновления/пополнения музыкальной коллекции и другие тех.работы.

Реализация

Итак, имеем клиент-серверный проект, в котором реализованы:

Клиент:

  • Управление воспроизведением музыки с помощью RFID-меток

  • Физические кнопки для управления громкостью, переключения треков и паузы/воспроизведения

  • Автоматическое обнаружение сервера по локальной сети

Сервер:

  • USB диск с музыкой и приложением (python, flask) обрабатывающим команды от esp

  • Mpd, mpc, как плеер - формирователь сетевого потока с поддержкой различных аудиоформатов (MP3, WAV, FLAC и др.)

  • Создание и управление плейлистами

  • Синхронизация библиотеки музыки, кода приложения по интернету (syncthing)

Для случаев, когда "флешка" потеряется или появится новая музыка, предусмотрен механизм привязки новой RFID метки - если она не ассоциирована с плейлистом, в файле с привязкой метка-плейлист создается строка с Id и unsigned, все что остается - вписать вместо unsigned имя плейлиста, который должен воспроизводиться.

Схема плеера-клиента простейшая

да,TTGO, что было в запасниках, то и использовал )). Схему рисовал впервые, скорее всего нарушил все каноны, извините
да,TTGO, что было в запасниках, то и использовал )). Схему рисовал впервые, скорее всего нарушил все каноны, извините

Внутрь корпуса вошел еще блок питания, чтобы не было гнезд для втыкания (риск выламывания).

Вариант получился бюджетный и в эксплуатации (стоимость RFID меток от 10 до 20 рублей), и в производстве - esp32 и малинка у меня были. Купил кнопки антивандальные, корпус по лучшим традициям Алекса Гайвера и других самодельщиков, сделал из канализационной трубы, которая для наружных работ, чтобы поустойчивее в тяжелой жизни было, усилитель MAX98357A - 250 руб., провода, блок питания - из ящичка с проводами и блоками питания ).

три кнопки - след, предыдущая, пауза, на торце - две кнопки громкости, место куда прикладывать RFID, ввод 220В
три кнопки - след, предыдущая, пауза, на торце - две кнопки громкости, место куда прикладывать RFID, ввод 220В

Код и подробное описание проекта на Github

Сегодня плеер презентовали, запустился, к vpn подключился, syncthing заработал, так что, администрирование, надеюсь, будет осуществляться без проблем мной в удаленном режиме.

Возможно, какие то идеи для похожих проектов вам, читателям, удастся применить или использовать.

Теги:
Хабы:
+36
Комментарии21

Публикации

Работа

Data Scientist
38 вакансий

Ближайшие события