Всем привет! Делюсь своим опытом и проектом по созданию проигрывателя интернет-радио на базе 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 адреса
Видео использования
Мерцание экрана на фото и видео в реальности незаметны.
Спасибо за внимание! :)
UPD:
Добавил вторую версию корпуса со сборкой на двух болтах М2.5. Итого сборка упростилась, достаточно только 14 болтов одной номенклатуры М2.5 для сборки.
В самом корпусе отверстия печатаются без поддержек, и нужно после печати проковырять их шилом или сверлом (или еще чем-то острым).
После сборки можно заклеить отверстия силиконовыми ножками (брал на али).