- KaRadio32 интернет-радио. Делаем сами и все получится.
- Интернет радио на ESP32 и модуле MAX98357A
- Необходимые компоненты
- Интерфейс I2S в модуле ESP32
- Схема проекта
- Объяснение программы для модуля ESP32
- Интернет-радио на базе ESP32 и ЦАП UDA1334A
- Введение
- Схема и компоненты
- Корпус
- Сборка
- Прошивка, настройка
- Подключение
- Использование
- Видео использования
KaRadio32 интернет-радио. Делаем сами и все получится.
После прочтения статьи KaRadio + Smalody = Love загорелся желанием сделать нечто похожее. KaraWin — автор проекта интернет-радио KaRadio32 . Очень подробная видеоинформация об этом радио на канале Konstantin Pavljuchenko в YouTube и здесь: WI-FI интернет радио DIY . Вроде все просто и понятно, но как оказалось, не совсем. Пришлось разбираться. В итоге интернет-радио «заработало». На самом деле радио работало, но не так как я ожидал. Ссылка на рабочие файлы для повторения описанного ниже интернет-радиоприемника, использующего модуль ESP32-WROVER в самом конце статьи.
Мое повторение конструкции не задалось. В чем оказался подвох? Оказалось — все просто, как обычно. Во — первых, в файле конфигурации от автора выявилась ошибка — у двух энкодеров оказались общие выводы модуля ESP32. В результате энкодер якобы оказался не работоспособным. Во-вторых, я сконфигурировал KaRadio32 на отключение дисплея через 5 с при бездействии KaRadio32. Поэтому отсутствие информации на дисплее радио в основном режиме работы я воспринял как неисправность. В- третьих — в плейлист радио я умудрился внести единственную не работающую радиостанцию. Ну и самое главное — при программировании модуля ESP32 я не удерживал нажатой кнопку BOOT. И еще. при изменении файла конфигурации нужно быть очень внимательным.
Сразу оговорюсь, проект реализован в виде рабочего макета на модуле ESP32-WROOWER-B , имеющего программную память размером 4 Мб . Как показала практика, возможно использовать также модуль ESP32-WROWER-E, у которого программная память составляет 16 Мб — но целесообразность такого использования сомнительна. Процесс изготовления был интересен и познавателен. В результате появилась конструкция WEB-радио с поддержкой битрейта до 320 кбит/с, поддержкой инфракрасного приемника (протокол NEC), цифрового аудио-интерфейса I2S, OLED дисплея I2C 1,3 дюйма, UART TTL, светодиода и различных органов управления: двух экнодеров с кнопкой и отдельной группой кнопок в количестве 3 шт. Группа 0 энкодера и кнопок имеет приоритет по громкости. Соответственно группа 1 — по перебору станций из загруженного в радио плей-листа. В предложенной конфигурации возможно использовать аналоговый выход аудио (декодирует ESP32) с посредственным качеством (не используется — отсутствует разьем для подключения ). Количество свободных выводов модуля ESP32 определяет конфигурацию настраиваемой периферии для управления WEB-радио. Для переназначения выводов ESP32 нужно изменить файл конфигурации, определив выводы для кнопок, энкодеров, IR приемника, светодиода. Подробнее здесь .
Далее распишу и прокомментирую что и как делать. Главное что нужно понимать — основная конфигурация исходной схемы, предложенной автором KaRadio32, не изменяется.
Итак, для реализации проекта интернет-радио KaRadio32 потребуются четыре части: программная, аппаратная, реализация и программирование.
Схема электрическая принципиальная от автора интернет-радио KaRadio32 для модуля ESP32-WROOM представлена ниже и в дальнейшем, в части интерфейсов, не изменяется. Обращаем внимание только на нумерацию логических выводов типа IOxx, где xx — это номер, который будем использовать в файле конфигурации. У модулей WROOM и WROVER физические выводы не совпадают.
Интернет радио на ESP32 и модуле MAX98357A
Обычное аналоговое радио, достигнув пика своего развития в конце XX века, в настоящее время стало постепенно сдавать свои позиции Интернет радио, которое доступно в любой точке земного шара, где есть Интернет-соединение.
Интернет радио (Internet Radio), также известное как стриминговое (streaming), web, IP или онлайн-радио обычно используется для трансляции сообщений, музыки, обсуждений и т.д. в форме аудио сигналов. По другому говоря, это цифровой аудио сервис, транслируемый через сеть Интернет.
Интернет радио можно создать с помощью устройства, подключенного к сети Интернет, или с помощью программного обеспечения, установленного на персональном компьютере (ноутбуке). В данной статье мы его создадим на основе модуля ESP32 и плате усиления MAX98357A, работающей по протоколу I2S.
Ранее на нашем сайте мы рассматривали проект интернет радио на основе платы Raspberry Pi. Если же вас интересует обычное FM радио, то его достаточно просто создать на основе платы Arduino и модуля RDA5807.
Необходимые компоненты
- Модуль ESP32 Devkit (купить на AliExpress).
- Плата усиления MAX98357A I2S (купить на AliExpress).
- 8-омный громкоговоритель (динамик).
- USB кабель.
- Адаптер 5V 1A.
- Активное Интернет-соединение
Интерфейс I2S в модуле ESP32
Как известно, ESP32 представляет собой дешевый модуль с низким энергопотреблением, но внушительным функционалом, включающим в себя поддержку технологий Wi-Fi и Bluetooth. Но, в отличие от других подобных модулей, ESP32 обладает еще и интерфейсом I2S. А во многих популярных сейчас микроконтроллерах такого интерфейса, к примеру, нет.
Почему поддержка интерфейса I2S так важна в современной электронике? Интерфейс I2S (Integrated Inter-IC Sound Bus) представляет собой последовательную шину для соединения цифровых аудиоустройств (плееров компакт-дисков, цифровых аудиопроцессоров и т. п.). Он разработан фирмой Philips Semiconductor. Данный интерфейс обычно используется компонентами АЦП и ЦАП. Более подробно про принципы работы протокола I2S вы можете прочитать в этой статье.
Поскольку в нашем интернет радио нам необходимо воспроизведение звука с помощью громкоговорителя (динамика), то нам нужен аналоговый выход, то есть необходим ЦАП (цифро-аналоговый преобразователь). И здесь мы видим самую интересную часть нашего проекта – это модуль MAX98357A, который представляет собой цифровой усилитель класса D, который использует интерфейс I2S для обмена данными с современными микроконтроллерами.
Достоинства модуля MAX98357A I2S:
- КПД 92%.
- Выходная мощность 3,2 Вт на 4-омном динамике при 5V.
- Уменьшение мощности шумов.
- Защита от короткого замыкания и перегрева.
- Поддержка левого, правого или Left/2 + Right/2 выхода.
- Работа от напряжения в диапазоне от 2.5V до 5.5V.
Внешний вид модуля MAX98357A I2S, использованного в нашем проекте, показан на следующем рисунке.
Схема проекта
Схема интернет радио на ESP32 и модуле MAX98357A I2S представлена на следующем рисунке.
Как видите, схема соединений достаточно проста. Поскольку контакт Gain модуля MAX98357A подключен к земле (GND), то коэффициент усиления модуля составляет 12dB.
Объяснение программы для модуля ESP32
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Для данного проекта нам понадобится библиотека ESP32 Audio I2S. Скачайте ее по приведенной ссылке с GitHub и добавьте ее в Arduino IDE.
Первым делом в программе мы подключим используемые библиотеки.
Интернет-радио на базе 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 адреса
Видео использования
Мерцание экрана на фото и видео в реальности незаметны.
Добавил вторую версию корпуса со сборкой на двух болтах М2.5. Итого сборка упростилась, достаточно только 14 болтов одной номенклатуры М2.5 для сборки.
В самом корпусе отверстия печатаются без поддержек, и нужно после печати проковырять их шилом или сверлом (или еще чем-то острым).
После сборки можно заклеить отверстия силиконовыми ножками (брал на али).