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

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

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