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

Задача

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

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

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

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

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

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

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

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