Всем привет! Делюсь своим опытом и проектом по созданию проигрывателя интернет-радио на базе ESP32 и ЦАП UDA1334A. Сам проект выложен на github.
Введение
Тема интернет-радио у меня началось с проекта Wi-Fi-радио от AlexGyver. После сборки по гайду (на базе ESP32 и VS1053) не удалось побороть цифровые шумы, да и вообще, идея собирать и настраивать усилитель и колонки не совсем мне нравилась, хотелось в качестве колонок использовать готовое решение - компьютерные колонки с встроенным усилителем и подключением по mini-jack. Покопав бездонный форум 4Pda по теме, нашел вариант реализации с ЦАП UDA1334A. После сборки решение более чем удовлетворило по качеству, осталось оформить проигрыватель в корпус (смоделированный для 3D печати), так и родился данный проект.
Использование ЦАП дает ограничения по декодированию потоков (нет поддержки AAC), но для меня это не было принципиальным ограничением. Большая часть прослушиваемых мной станций вещает в mp3. Но, кому принципиален AAC, данное решение не подойдет.
Схема и компоненты
По схеме достаточно все просто, основные компоненты:
ESP 32 38P
UDA1334A DAC
Цифровой энкодер
Дисплей 2.42" OLED 4 pin или 0.96" OLED 4 pin
Резистор на 1К
Для информации: дисплеи бывают не только с белым цветом, но и с синим, желтым и зеленым.
Описание подключения по пинам и ссылки на конкретные варианты с али можно посмотреть на странице проекта в github.
Совет по пайке - закладывайте длину проводов с учетом дальнейшего расположения компонентов в корпусе.
Корпус
Изначально я смоделировал корпус под экран 0.96", но, после некоторого использования он показался слишком мелким, и после поиска больших дисплеев решил взять на 2.42". Есть модели также с подключением по 4 пинам, поэтому потребовалась только перемоделирование корпуса без изменения самой схемы.
Корпус состоит из 2 деталей и ручки энкодера. При моделировании постарался оптимизировать модели под печать без поддержек.
Пластик для печати - на ваш вкус (я пробовал на PLA и PETG), особенно понравился вариант с Carbon Fiber PLA, он немного скрывает дефекты печати и дает немного матовую поверхность, приятную на ощупь и визуально.
Рекомендации к печати:
Толщина слоя - на ваш вкус (я печатаю с 0.12)
Поддержка - только от стола
Для деталей корпуса - заполнение 100%
Для ручки энкодера - заполнение, линии периметра на ваш вкус :) После печати в таком положении и настройках печати нужно будет извлечь поддержку.
Если у вас нет 3D принтера, но есть желание собрать устройство, то купите 3D принтер можно поискать друга, который напечатает, либо попробовать поискать услуги по печати в вашем населенном пункте на Авито.
После печати крышки для варианта 2.42" дополнительно надо срезать/откусить печатные части, выступавшие в роли поддержек.
Сборка
Отверстия под крепления на ESP32 слишком близко располагаются к изоляторам пинов, поэтому нужно немного подрезать изоляторы на крайних пинах острым ножом.
Сами платы устанавливаются в корпус на болты М2.5х5 мм, требуется 8 шт.
Экран 2.42" крепится на 4 болта М2.5х4 мм в соответствующие отверстия на крышке.
Для варианта 0.96" чуть более хитрое крепление через прижимную планку, которая крепится на 2 болта М2.5х5 мм.
Энкодер устанавливается в отверстие крышки и фиксируется штатной гайкой сверху. На энкодере по умолчанию есть отогнутый элемент из металла для внутренней фиксации, его можно отогнуть или откусить.
Сам энкодер фиксируется в крышке по направляющим и не требует каких то дополнительных фиксаций.
Крышка с корпусом монтируется на 4 болта М3х5 мм или М3х6 мм с потайной головкой. Закручивайте аккуратно, есть риск перекрутить, при котором может треснуть крышка (у меня так и получилось).
После сборки корпуса на энкодер устанавливается ручка.
Прошивка, настройка
Тут не буду дублировать гайд по прошивке и настройке Wi-Fi-радио от AlexGyver, все достаточно подробно отражено там. Также на хабре есть статья про интернет радио, но на другой компонентной базе, можно также с ней ознакомится. Практически все настройки выполняются через веб-интерфейс, через telnet я настраивал только формат времени командой sys.ddmm("1").
Подключение
У проигрывателя всего два выхода - micro-usb для подключения питания и mini-jack для подключения колонок или наушников. Единственное, что хотел бы отметить - стоит использовать качественный блок питания. У меня были проблемы с каким-то noname блоком, постоянные прерывания и перезагрузки. После подключения к BASEUS Compact Quick Charger USB+Type-C, 3A, 20W все они исчезли.
В качестве колонок я использую SVEN SPS-614.
Использование
По управлению - все управление только ручкой энкодера:
Поворот энкодера - регулировка громкости
Нажатие и поворот энкодера - переключение станций
Одинарное нажатие на энкодер - старт/стоп воспроизведения
Двойное нажатие - переключение в режим часов и просмотра ip адреса
Видео использования
Мерцание экрана на фото и видео в реальности незаметны.
Спасибо за внимание! :)
Комментарии (27)
sintech
05.12.2022 08:14+8Было бы неплохо увидеть нормальную схему соединения компонентов а не вот эти разноцветные проводочки.
nitro80
05.12.2022 10:10У меня почему-то esp не запоминает параметры wifi-точки.
Ввожу, сохраняю, оно даже получает ip и можно зайти через браузер на esp, а после перезагрузки опять по новой надо настраивать :(
DanilinS
05.12.2022 14:48А почему он должен запоминать? Параметры настройки должны хранится в энергонезависимой памяти и прописываться при инициализации. Или намертво в прошивке сохранятся.
GennPen
05.12.2022 17:19ESP запоминает параметры последнего подключения. Вот только многие криво пишут прошивку, что не используется эта функция.
Dkstr Автор
05.12.2022 21:23А как именно проявляется? После ввода параметров wifi после перезагрузки все равно сбрасывается на 192.168.4.1 ?
Была похожая проблема, когда karadio сохранились настройки ip адреса сети, но как-то криво и был сохранен адрес устройства, которое уже с этим адресом было зарегистрировано во внутренней подсети.
Решилось так:
В настройках роутера устройству с конкурирующим адресом вручную присвоил другой адрес
Перезагрузил роутер
Устройство сменило адрес, далее karadio смогло подключится и получить адрес снова
dec123
05.12.2022 10:15Жду вторую часть этой статьи.
В которой будет переход от модульной сборки для радиокружка на коленке к разводке PCB, заказ плат, сборка проекта, копание в программном коде...
na2ali
05.12.2022 12:31+1чем обусловлен выбор UDA1334A ? можно поставить разные ADC I2S , например TDA1387 в 20 раз дешевле при хорошем качестве звука
Dkstr Автор
05.12.2022 21:38Как писал в начале, изучал варианты замены VS1053 на что-то другое. В одном из отзывов описывался (весьма положительно) вариант с UDA1334A. Сама плата по схеме подключения , визуально, по расположению элементов (вывод под mini-jack) и цене (168Р на момент заказа) мне понравилась, заказал, собрал, вариант меня устроил. Если бы не сработало - продолжил бы изучать другие варианты.
aumi13
05.12.2022 12:34+2Крышка с корпусом монтируется на 4 болта М3х5 мм или М3х6 мм с потайной головкой. Закручивайте аккуратно, есть риск перекрутить, при котором может треснуть крышка (у меня так и получилось).
есть же спецальные гайки под пластик
Dkstr Автор
05.12.2022 21:44Дело не в корпусе, в отверстия корпуса болты отлично закручиваются без проблем и без растрескивания. Дело именно в крышке. Вот чуть крупнее про что я писал.
Возможно, не надо было так близко к краям располагать отверстия под болты, но мне хотелось именно так - болты крышки видно на самой крышке и располагаются они в углах.
Думаю, дополню модели вариантом с другим креплением, если будет feature-request :)
trikot
05.12.2022 21:53Кто мешал в крышке сделать утолщение под резьбовые втулки, и прикручивать ее через низ приемника. При таком варианте на передней панели не будет вообще никаких отверстий. Еще я иногда наношу на поверхность детали дихлорметан, будет слегка прочнее. Но вообще, напечатанный корпус выглядит не айс. Я печатаю только внутренние детали, которые не видно.
Dkstr Автор
05.12.2022 22:13Мне пришла в голову именно такая компоновка (не без минусов). Как по мне, повторить ее проще.
GennPen
05.12.2022 22:52Ну, винты иногда играют декоративную роль. А тут я бы порекомендовал использовать с обычной прямой головкой, т.к. клиновидная головка распирает напечатанные слои и получаем что получаем.
trikot
05.12.2022 21:37+2Тоже сделал себе у уголок интернет радио. Удобная штука. Надо еще одно сделать в другой рабочий уголок.
trikot
07.12.2022 10:37ESP42, PCM5102, усилитель на РАМ8403. Индикатор 1,8 дюйма, TFT 128х160. Стандартный проект КаРадио. Предвосхищу вопрос, транс маленький, всего на 20вт.
GennPen
Зачем откусывать фиксатор на энкодере? Он специально сделан для того чтобы избежать проворачивание при установке.
alien1900
Наверное по-этому
GennPen
Не понимаю, зачем изобретать дополнительные фиксаторы, когда фиксатор уже есть.
red-cat-fat
Возможно удобство печати. Если посмотреть как идут слои - окно для "серженька-фиксатора" получалось в не самой удобной проекции для печати такой формы, чтобы не шаталось. Потому дополнительные фиксаторы поудобнее будет
P.s. качество печати - моё почтение, очень качественное. Было бы интересно почитать про настройку принтера до такой точности.
GennPen
Ну, т.е. хотите сказать, что сквозные отверстия печатаются, а углубление для фиксатора не напечатается?
Hidden text
red-cat-fat
Я хочу сказать, что для сквозного отверстия не нужна строгость формы (допустимы погрешности), как для углубления для фиксатора, которому достаточно несколько милиметров для того, чтобы шататься.
Dkstr Автор
По параметрам печати - все из стандартного профиля Ender 3 S1 слайсера PrusaSlicer. Практически никак их не менял. Скорее дело в предварительных калибровках (поток, в первую очередь).
Dkstr Автор
Хотелось сохранить небольшую толщину в месте крепления. Да, можно было бы сделать потолще и специальное углубление под фиксатор, но в момент проектирования идея с фиксацией самого квадратного корпуса показалась более удачной. Ну и фиксатор при прокручивании мог бы повредить/дать трещину в корпусе