Интернет-радио на базе ESP32 и ЦАП UDA1334A

a80928045ce212ed4de87e10ceb8c83f.jpeg

Всем привет! Делюсь своим опытом и проектом по созданию проигрывателя интернет-радио на базе ESP32 и ЦАП UDA1334A. Сам проект выложен на github.

Введение

Тема интернет-радио у меня началось с проекта Wi-Fi-радио от AlexGyver. После сборки по гайду (на базе ESP32 и VS1053) не удалось побороть цифровые шумы, да и вообще, идея собирать и настраивать усилитель и колонки не совсем мне нравилась, хотелось в качестве колонок использовать готовое решение — компьютерные колонки с встроенным усилителем и подключением по mini-jack. Покопав бездонный форум 4Pda по теме, нашел вариант реализации с ЦАП UDA1334A. После сборки решение более чем удовлетворило по качеству, осталось оформить проигрыватель в корпус (смоделированный для 3D печати), так и родился данный проект.

Использование ЦАП дает ограничения по декодированию потоков (нет поддержки AAC), но для меня это не было принципиальным ограничением. Большая часть прослушиваемых мной станций вещает в mp3. Но, кому принципиален AAC, данное решение не подойдет.

Схема и компоненты

a092b87effd5510f0cd261b8f4929047.png

По схеме достаточно все просто, основные компоненты:

  • 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 адреса

Видео использования

Мерцание экрана на фото и видео в реальности незаметны.

Спасибо за внимание! :)

© Habrahabr.ru