Андрей Смирнов
Время чтения: ~13 мин.
Просмотров: 85

ESP32 Интернет-радио

Это вторая статья о замечательном проекте Karadio, который создан хорошим программистом и я уверен человеком, — JP Cocatrix. Страница всех его проектов на Github. Но речь пойдет сегодня о новой ступени развития проекта Karadio — интернет радио на базе ESP32. Постараюсь очень четко и по делу написать в помощь тем, кто, как и я плохо понимает иностранные языки, электронику.  Однако, иметь такое интересное радио хочется всем. Будет и просто перевод с github и мои дополнения. Проект находится на стадии тестирования,  уверен, это скоро изменится. Для вывода звука можно исплользовать внутренний DAC (ЦАП), находящийся в ESP32 или подключить внешний DAC, например такой на Aliexpress.Ссылка может перестать работать, но можно поиском найти по запросу I2S PCM5102 DAC или просто I2S DAC.  При использовании внутреннего DAC ничего не нужно, кроме усилителя, например PA8403 (с регулятором громкости даже). Либо использовать уже знакомую нам связку ESP32 и VS1053, при этом будет возможность прослушивать потоки AAC, чего нельзя сказать о режиме DAC или PDM. На режиме PDM я не буду останавливаться, потому что смысл будет такой же, как и у внутреннего DAC. Я попробовал включить этот режим, но шум сильный, как во время дождя. Автор Karawin пояснил, что нужна фильтрация. Я не стал заморачиваться, потому что с внутренним DAC качество воспроизведения меня удовлетворило. Если что можно применить внешний DAC или VS1053. Еще есть режим I2SMERU для подключения какого-то особого усилителя, можете сами разузнать. Сначала займемся прошивкой ESP32. Будем говорить о заливке уже скомпилированной прошивки в память. Все необходимое для прошивки можно взять тут. Программа для прошивки здесь. Сама прошивка в нескольких файлах тут и тут. Скриншот программы, поясняющий куда и что заливать тут. Все выставляете, как написано, но пути к прошивочным файлам у вас могут быть свои (не стоит использовать пути с кириллическими символами, лучше только латиницей). Т. е. распаковываете все файлы для прошивки в отдельную папку (можно назвать ее Flash) на диске C: , потом путем нажатия на многоточия в конце строк прописываете аккуратно все пути к этим файлам. Правее в поле вводите то, что написано, на скриншоте. karawin32Flash.jpg Все остальное прописываете, как на скрине, кроме порта COM, его вы меняете на свой. посмотреть его можно в Диспетчере устройств, при подключении ESP32 появится COM порт (если драйверы вы уже поставили). Драйверы зависят от вашей операционной системы  и типа USB- COM адаптера, который установлен на вашей ESP32. Скорость BAUD как на картинке. Подключаете ESP32 к компьютеру и нажимаете START (у меня было так, никаких кнопок на самой плате я не нажимал). Ждете окончания прошивки и отключаете плату от USB. Можно приступать к соединению всей периферии.

Схема соединений

Untitled%2BSketch%2B2_bb.jpg Сильно схеме не доверяйте, доверяйте только себе, но нарочно я не ввожу в заблуждение. Батарейки изображены условно, необходимо подключить 5В. Сегодня измерял ток потребления 0,15А при малой громкости. Блока питания на 0,5 — 1А должно хватить. Питание зависит от усилителя. Итак,  если вы используете VS1053, то соединения такие:  VS1053—-ESP32 (номера GPIO)

XCS-----  GPIO_NUM_32 RST-----  GPIO_NUM_12 XDCS----- GPIO_NUM_33 DREQ----- GPIO_NUM_34 MISO----- GPIO_NUM_19 MOSI----- GPIO_NUM_23 CLK-----  GPIO_NUM_18
 

У меня номера GPIO указаны на самой плате или смотрите распиновкуNODE32S_pinout.png Если используете внешний DAC по I2S, то соединения такие: I2S DAC—-ESP32 LRCK——— GPIO_25 BCLK——- GPIO_26 DATA——- GPIO_22 Если используете DAC самой платы ESP32, то GPIO 25 и 26 подключаете к правому и левому каналу усилителя, а также соединяете GND усилителя и GND ESP32. GPIO 22 при этом не нужен. Также и для PDM режим, только надо будет выбрать его в web интерфейсе и все (ну и про фильтр вспомните для этого режима). На данный момент поддерживается использование дисплея  OLED SSD1306 128×64. Подсоединяем так: SSD1306——ESP32

SCL------ GPIO_14 SDA------ GPIO_13
МСС -----3.3v (или 5v)
GND-------GND
 

Энкодер:

DT-------GPIO_16 CLK ----  GPIO_17 SW------- GPIO_5
GND ---GND
+-----+5V
 
 

Дополнительно можно подключить светодиод для индикации работы радио —GPIO 4.

Включение 

Проверяете все соединения и подключаете питание. На схеме показано общее питание для всей схемы, но предпочтительнее использовать отдельное питание для ESP32 и усилителя, для того, чтобы избежать дополнительных шумов. В режиме DAC при общем питании шумы я не заметил и качество хорошее. Смотрите сами.  Через некоторое время после включения ESP32 создаст точку доступа WifiKaradio с IP адресом 192.168.4.1. Подключаетесь к этой сети с компьютера и в браузере переходите по этому IP. Переходите на вкладку SETTING и находите настройки Wifi. Вписываете данные своего роутера и нажимаете Validate, радио может перезагрузиться. В роутере ищите какой адрес IP выдан радио. В некоторых роутерах можно оставить автоматическую раздачу IP (DHCP), но для отдельных устройств назначить постоянные адреса, чтобы каждый раз не отгадывать IP. После перезагрузки переходите в SETTING в Sound Setting и выбираете режим вывода звука, затем нажимаете Validate. После перезагрузки можете приступить к формированию своего списка радиостанций или скачать уже созданный на вкладке SETTING—Playlist.

 Сегодня поговорим о добавлении к Karadio32 внешней платы DAC PCM5102. При выводе 
через эту плату звук стал более чистым и появились басы. При минимальной громкости в Web 
интерфейсе искажений никаких нет.
На плате есть выход Line Out для подключения внешнего усилителя. Наушники в этот разъем 
не подключить, звука никакого нет абсолютно. 

Схема соединений.

Схему подсказал пользователь сообщества Karadio.PCM5102              ESP32 LCK                         GPIO25 BCK                        GPIO26 DIN                          GPIO22 XMT(XSMT)           подтянуть к +5в через резистор 10кОм FMT                          GND SCL(SCK)                 GND Могут быть незначительные различия в названиях пинов PCM5102, но догадаться можно. Также на плате есть пины для подключения внешнего усилителя (у меня это PAM8403)  LOUT LROUT AGND. Питание подал 5в. При использовании данной платы нужно выставить режим I2S в Web интерфейсе Karadio.

14 сентября 2019, 09:33 | Подборки, перечисления, топ-10, и так далее

Вы могли слышать про популярные радиоприемники, которые получают сигнал трансляций из интернета. Для работы подобного устройства не нужна радиотрансляционная вышка — только домашний Wi-Fi. Умельцы стилизуют свои самодельные Web-радиоприемники под олд-скульную и винтажную технику. А готовые устройства стоят весьма не скромно. В этой статье расскажу, как самостоятельно собрать интернет-радио с минимальными затратами.

 Для сборки вам потребуется: 1. Источник питания (от 5 до 24 В). Пойдут старые блоки питания от гаджетов, ноутбуков и так далее. Возможно потребуется отдельный преобразователь для контроллера (для понижения с 24 до 5 В).

2. Корпус. Можно использовать старые корпуса от гаджетов, старой аудио-видео техники. Хороший вариант — встроить контроллер в активные компьютерные колонки — приличный вид плюс усилитель, динамики и источник питания. Можно сделать корпус с нуля — из пластика, ДСП, картона и т.п. Основная проблема будет — сделать аккуратную переднюю панель.

3. Контроллер для интернет радио. Это модуль с Wi-Fi и открытой прошивкой. Можно использовать роутер с Open-WRT, можно отдельный контроллер на ESP32/8266. Желательно брать сразу с дисплеем, так как будет компактнее и проще готовое изделие.

4. Аудиомодуль и аудиоусилитель. Если контроллер не имеет встроенной микросхемы для вывода звука, то лучше приобрести отдельный ЦАП с интерфейсом I2S. Потребуется также и усилитель звука для вывода на мощные колонки.

5. Динамики или колонки. Самый простой вариант — колонки от портативной акустики, это компактные и широкополосные варианты на 2″ или 3″. 

6. Прямые руки для того, чтобы собрать все вместе, спаять, залить прошивку, IP адреса вещания, а также придать приличный внешний вид готовому устройству.

 Контроллеров несколько, на выбор. Самый простой вариант (Kit8) стоит около $4.9, вариант с дисплеем побольше (T-Display) около $10, но обратите также внимание на функциональные варианты, например, T-Audio со встроенным ЦАП-ом.

 Это, наверное, самый простой вариант (Wi-Fi Web Kit8) — модуль на базе NodeMCU/ESP-8266 со встроенным дисплеем и USB интерфейсом. Подходит не только для проектов интернет-радио, но и для самодельных RC-моделей, для умного дома, IoT и так далее. Модуль предусматривает несколько дискретных входов-выходов, а также аналоговый (А0).

Достаточно дорогой, но популярный модуль TTGO T5s. Версия платы V2.1, остнован на ESP32 и огромном 2,7″ дисплее Е-ink (E-Paper). Модуль имеет встроенный микрофон, ЦАП МAX98357A, ридер SD карты, bluetooth. Это одно из готовых решений для интернет-радио.

Самый фукциональный модуль от TTGO, заточенный под воспроизведение аудио. Это T-Audio (альтернативное название WROVER ESP32). Имеет интересную круглую форму платы под портативные колонки — как раз вариант под самодельный корпус из водопроводной трубы. На плате расположен ридер SD карт, bluetooth, WI-FI, ЦАП WM8978, светодиод WS2812B RGB и акселерометр MPU9250.

Последние два модуля имеют встроенный ЦАП, а для остальных следует приобрести отдельный шилд с микросхемой для вывода звука (I2S DAC). Эти шилды заточен под вывод звука с контролера через интерфейс I2S (стандартный). Из цифрового потока в аудио преобразование выполняет специальный ЦАП PCM5102.

В первом лоте есть в комплекте передняя панель, останется найти только коробку. По качеству неплохие и громкие (широкополосные). Вторые динамики совсем дешевые ($2), но пойдут для пробы. 

Недорогой усилитель PAM8610 с двумя выходами по 2х10 Вт — пригодится для усиления звука на динамики.  Это самые популярный и недорогой усилитель сигнала класса D. Подключение проблем не вызывает — правый/левый каналы, питание, динамики. 

Недорогой усилитель PAM8610 с двумя выходами по 2х10 Вт с регулировкой звука.  Такой же, как и предыдущий, недорогой, но с распаянным фильтром и коннекторами для удобства. Я рекомендую именно такой, особенно если есть возможность расположить все в корпусе.

Корпус можно собрать из подручных материалов — взять старую коробку из-под устройств, компьютерные колонки, старые DVD плееры или радиоприемники.

 Все указанные модули прошиваются из Arduino. Прошивки открытые.

Крайне годный проект Ka-Radio32.

Прошивка для Т-аудио.

Если честно, то это одни из лучших проектов для самостоятельно сборки. Очень полезное применение недорогих комплектующих, паяльника и своего времени. Если вы пытаетесь увлечь сына программированию, то это простой и наглядный способ рассказать что и как. Если вы подбираете проект для школы или института, то тоже рекомендую обратить внимание, так как подобные проекты в последнее время наиболее актуальны.

Мои лучшие обзоры: Лучшие статьи и тематические подборки:
Набор для домашнего мастера Jimi 41-в-1: биты, трещотка и отвертка всегда под рукой Топ лучших наборов отверток для дома с Алиэкспресс
Универсальная реверсивная отвертка Xiaomi Wiha 8-в-1 Топ лучших мультиметров для дома с Алиэкспресс
Обзор нового фитнес-браслета Xiaomi MiBand 4 Подборка лучших супер-магнитов, поисковых магнитов и редкоземельных магнитов с Aliexpress

Идея

Принцип, лежащий в основе проекта, заключается в том, что если мы сможем доставить на плату кусок потоковых данных в точном количестве 32 байта в виде потока, он просто продолжит играть. Это означает, что ESP32 должен подключить потоковый узел к фиксированному порту и затем получать потоковые данные с точностью до 32 байтов за раз. С другой стороны, плата будет продолжать обрабатывать данные, как машина притока / оттока, и поток продолжит воспроизводиться. Основной код длиной почти 15 строк!

Сборка

Используется библиотека с открытым исходным кодом ESP32 VS1053. Вы можете найти несколько примеров, включенных в библиотеку. Для смены станций я использовал вывод GPIO (D13) в качестве нажимного переключателя для программного сброса Сброс платы VS1053 для настройки на следующую станцию. Для операции переключения без отказов я выдвинул логический оператор, который стал «ложным» и «истинным» в качестве альтернативы, чтобы предотвратить многократное переключение одним нажатием кнопки. VS1053 – это устройство на 5 Вольт, но вы также можете легко настроить его на 3,3 Вольт.

Таким образом, на радио ESP32 у вас будет только одно напряжение питания – 3,3 Вольт, которое может питаться от одной батареи LiPo. На плате VS1053 имеется два регулятора напряжения [AM1117] – 3,3 В и 2,5 В. С помощью цифрового мультиметра сначала выясните, какой из них для чего, а затем подключите перемычку от 3,3 В к входу 2. 1574872008.jpg

VS1053 проводка

Держите соединительные провода как можно меньше. Более длинные, длинные и перекрывающиеся провода могут издавать гудящий шум на выходе звука, который обычно наблюдается на таких платах. Вывод звука стереофонический и достаточно усиленный для питания небольших колонок или наушников, но для работы с громкоговорителями большего размера вам, возможно, придется добавить усилители / усилители.

Сборка препятствий

Li-Ion / Li-Po или Li-Ion при полной зарядке могут увеличить напряжение до 4, что не повредит ESP32, но вы можете потерять плату VS1053, а затем ждать еще 40 дней с aliexpress.com. Поэтому рекомендуется использовать 3-контактный регулятор напряжения HT7333-1 с низким энергопотреблением и малыми потерями, который имеет очень низкое падение напряжения и очень низкую потерю тока покоя. Но единственная проблема – HT7111-1 – крошечное устройство для поверхностного монтажа.

Схема с (OLED – опционально)

1574872008.pngОснащенный 3.3 Вольт подключен к выходу HT7333-1, который также является источником питания для ESP32.

Прототип

1574872008-1.jpgСоединение в красном кружке перейдет к нажимному переключателю – теперь это временный нажимной переключатель

тестирование

Для подключения к системе WiFi замените SSID и пароль на начало кода, а затем загрузите обычным способом Arduino. После загрузки ESP32 сначала скажет «Привет», чтобы указать, что VS1053 включен и готов. Затем он подождет пару секунд, чтобы подключиться к компьютеру (следите за последовательным выходом). После подключения к Интернету он настроится на станцию ​​в хосте [6], а затем начнёт звучать красивый потоковый голос «Битлз». Нажмите один раз переключатель [подключен к D13], и будет настроена следующая станция. Переменная char * sname [7] является необязательной. Вы можете иметь выбранные имена для каждой установленной радиостанции. Дополнительные имена станций могут быть добавлены в массивы хоста, пути и порта.

Радио ESP32 с OLED (опционально): Единственная проблема, которая остается – нет дисплея, который бы знал, какая станция играет! Универсальный дисплей I2C – это все, что требуется сейчас, чтобы завершить его сейчас. Но проблема в том, что тяжеловесный Adafruit SSD1306 вместе с библиотекой Adafruit_GFX, если он будет использоваться, создаст неприятный звук. Поэтому я использовал облегченную библиотеку SSD1306 esp8266-oled-ssd1306-master, которая специально создана для ESP8266 для запуска общих OLED-дисплеев SSD1306.

С этой библиотекой дисплей I2C прекрасно работает без какого-либо влияния на вывод звука. Однако OLED не обязателен – без него радио работает просто отлично! Я использовал облегченную библиотеку SSD1306 esp8266-oled-ssd1306-master, которая специально предназначена для ESP8266 для запуска общих OLED-дисплеев SSD1306. С этой библиотекой дисплей I2C прекрасно работает без какого-либо влияния на вывод звука. Однако OLED не обязателен – без него радио работает просто отлично! Я использовал облегченную библиотеку SSD1306 esp8266-oled-ssd1306-master, которая специально предназначена для ESP8266 для запуска общих OLED-дисплеев SSD1306. С этой библиотекой дисплей I2C прекрасно работает без какого-либо влияния на вывод звука. Однако OLED не обязателен – без него радио работает просто отлично!

BOM

ESP32 7,5 $ OLED 64 * 128 – 3 $ экран кодека VS1053 – 6 $ HT-7333-1 – 1 $ Динамики 8 Ом (0,3 Вт) дополнительно.

Программное обеспечение

Есть два эскиза – bare_minimum_radio_player.ino & simple_esp32_radio_mod3.ino Первый – всего несколько строк кода для получения 32-байтовых данных с сайта потоковой передачи, а затем воспроизведения. Второй – это сложный эскиз для запуска радио вместе с OLED-дисплеем и нажимным переключателем для смены станции. Каждый эскиз сопровождается небольшим файлом helloMP3.h, который на самом деле кодирует небольшую музыку или звуковое приветствие. Скомпилируйте эскиз вместе с этим файлом. Необходимые библиотеки Arduino также добавляются в комплект программного обеспечения.

Скачать исходную папку

electronicsforu.com

Используемые источники:

  • http://andrew25kir.blogspot.com/2017/10/karadio-esp32.html
  • https://www.ixbt.com/live/topcompile/vse-neobhodimoe-dlya-samostoyatelnoy-sborki-web-radiopriemnika.html
  • https://izobreteniya.net/esp32-internet-radio/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации