Hi-Fi плеер за 3000 рублей своими руками
Я не инженер и не аудиофил с золотыми кабелями. Просто хотелось слушать свою коллекцию FLAC и DSD через старый добрый музыкальный центр, переключать песни с телефона и не отдавать за это зарплату. Готовые сетевые плееры — это дорого. Поэтому я собрал свой: плата ESP32-S3, хороший ЦАП на ES9038Q2M и немного упрямства. Вышло около 3000 ₽, и звучит оно так, что телефон через тот же центр скромно молчит в сторонке. Повторить можно за вечер.
Всё открыто и бесплатно: https://github.com/michkar-ekb/esp32-hifi-player
Как это устроено
Хитрость в том, что плеер у меня — самый «глупый» участник. Всю тяжёлую работу делает программа на домашнем компьютере: читает файлы любых форматов, превращает их в готовый звук и отдаёт по Wi-Fi. Крошечной ESP32 остаётся только аккуратно передать этот звук в ЦАП.
Отсюда и дешевизна: звук зависит от ЦАПа, а не от процессора, и платить нужно только за хороший ЦАП. А он на ES9038Q2M стоит как пара пицц.
Из чего собрано и сколько стоит
— Плата ЦАПа на ES9038Q2M — около 1600 ₽, тут и живёт хороший звук.
— ESP32-S3 DevKitC-1 N16R8 — около 700 ₽, принимает звук по Wi-Fi.
— Понижающий модуль 12 → 5 В — около 100 ₽, один блок питания на всё.
— Плата-переходник и провода — около 200 ₽.
— Корпус на 3D-принтере — около 150 ₽ пластика.
Блок питания на 12 В наверняка уже пылится у вас в ящике, у меня так и было.
Плата-переходник не обязательна: можно соединить всё проводками с разъёмами. Свою я вытравил дома, файлы для неё и схема подключения лежат на GitHub. Проводов там всего шесть, запутаться сложно даже мне.
Корпус я напечатал на 3D-принтере, без поддержек: спереди RCA и джек для наушников, сзади 12 В и оба USB-C. Готовые STL лежат на GitHub. Но это лишь мой вариант: корпус можно сделать любой свой.
Где я споткнулся, чтобы вы не спотыкались
— ЦАП шипел вместо музыки. Оказалось, эта плата любит данные «пожирнее»: 32 бита вместо привычных 16. Одна строчка в прошивке — и звук чистый. Искал эту строчку я, конечно, дольше, чем хотелось бы.
— Hi-Res заикался. Одно сетевое соединение на ESP32 пропускает слишком мало данных, и на DSD его не хватало. Решилось просто: звук идёт сразу по четырём соединениям.
— Альбом одним файлом искал песню минутами. Пришлось научить сервер прыгать сразу в нужное место. Теперь на это уходит секунда.
Что умеет
— Играет почти всё, что скопилось в коллекции: FLAC, MP3, WAV, DSD, даже образы SACD и альбомы одним файлом с CUE. DTS и APE тоже переваривает.
— Интернет-радио отдельной вкладкой, с обложкой песни, которая сейчас играет.
— Обложки сам находит в интернете, если в папке с альбомом картинки нет.
— Управление с телефона прямо в браузере: папки, очередь, пауза, громкость. Никаких приложений из магазина.
— Ни кнопок, ни экрана: коробочка стоит на центре и не просит внимания.
— Не заикается: в плеере 40 секунд запаса звука, так что капризы домашнего Wi-Fi он переживает спокойно.
Как повторить
Программировать ничего не нужно, всё готово.
1. Сервер ставится на домашний компьютер с Linux одной командой, для Windows есть готовый файл. Команда и инструкция — на GitHub.
2. Прошивка — один файл, заливается в плату одной командой.
3. Включаете плеер, подключаете телефон к сети «S3 Hi-Fi Setup» и выбираете свой Wi-Fi. Сервер плеер найдёт сам.
Всё. Открываете пульт на телефоне и слушаете.
Честно о минусах: пульт пока без пароля, так что только для домашней сети. И самые экзотические форматы вроде сжатых SACD пока не играет.
А ещё попробовал слушать через интернет. Поставил сервер на VPS, а плеер подключил к раздаче с телефона по 4G. FLAC в CD-качестве играет без заиканий, DSD мобильный интернет пока не тянет. Так что следующая цель — плеер в машину, с домашней коллекцией в нормальном качестве, без флешек и подписок.
Репозиторий со схемами, корпусом и готовыми файлами: https://github.com/michkar-ekb/esp32-hifi-player
Буду рад вопросам и особенно рассказам, как звучит у вас.



