Интернет-радио на базе ESP32 и ЦАП UDA1334A
Всем привет! Делюсь своим опытом и проектом по созданию проигрывателя интернет-радио на базе 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 адреса
Видео использования
Мерцание экрана на фото и видео в реальности незаметны.
Спасибо за внимание! :)