Если интернет-радио на базе ESP32 заикается, буферизует поток или вообще не подключается к станции, в большинстве случаев причина кроется в трёх местах: недостаточном размере буфера в прошивке, нестабильном Wi-Fi-сигнале или битой ссылке на поток. Проверить это можно за несколько минут ещё до перепрошивки. Но обо всём по порядку — начнём с выбора железа.

Проект интернет-радио на ESP32 — один из самых популярных среди радиолюбителей: плата стоит недорого, имеет встроенный Wi-Fi, достаточную вычислительную мощность для декодирования MP3 и AAC-потоков, а сообщество разработало несколько зрелых открытых прошивок. В этой статье разберём схему, выбор компонентов, прошивку и типичные проблемы.

Как работает интернет-радио на ESP32

Принцип прост: микроконтроллер подключается к домашней сети Wi-Fi, запрашивает аудиопоток по HTTP у сервера радиостанции и декодирует его в реальном времени. Цифровой звук выводится либо через встроенный ЦАП (качество посредственное), либо — что правильнее — через внешний модуль по шине I2S.

Наиболее распространённая связка — ESP32 DevKit плюс ЦАП на базе PCM5102 или MAX98357A. Первый даёт линейный выход для усилителя или активных колонок, второй — это уже ЦАП со встроенным усилителем класса D, способный напрямую раскачать небольшой динамик.

Управление обычно реализовано через веб-интерфейс: открываете в браузере IP-адрес устройства и переключаете станции, регулируете громкость, редактируете плейлист. Дополнительно подключают дисплей и энкодер для автономного управления.

Выбор компонентов для сборки

Базовый набор для рабочего устройства невелик. Вот что потребуется:

  • 📻 Плата ESP32 DevKit V1 или аналог на чипе ESP32-WROOM-32 — «мозг» проекта с Wi-Fi на борту.
  • 🎧 ЦАП PCM5102 (линейный выход) или MAX98357A (выход на динамик) — качественный звук по I2S.
  • 🖥️ Дисплей ST7735, ILI9341 или OLED SSD1306 — отображение станции и громкости.
  • 🎛️ Энкодер с кнопкой и/или несколько тактовых кнопок — управление без браузера.
  • 🔌 Блок питания 5 В с запасом по току — от него зависит стабильность работы.

Обратите внимание на питание. ESP32 при передаче по Wi-Fi потребляет заметные импульсные токи, и слабый или «проседающий» источник вызывает перезагрузки, щелчки в звуке и обрывы потока. Питание от USB-порта компьютера — частый источник подобных проблем.

КомпонентНазначениеПримечание
ESP32 DevKitПриём потока, декодированиеЛюбая плата на ESP32-WROOM-32
PCM5102ЦАП, линейный выходДля подключения к усилителю
MAX98357AЦАП + усилительНапрямую на динамик 4–8 Ом
ILI9341ДисплейЦветной, хорошо читается
ЭнкодерГромкость, переключение станцийС встроенной кнопкой
⚠️ Внимание: модули PCM5102 с китайских площадок иногда имеют нераспаянные перемычки конфигурации (SCK, FMT и др.). Если звука нет при правильной схеме — проверьте эти площадки на плате ЦАПа и сверьтесь с документацией продавца.

Схема подключения ЦАПа по I2S

Шина I2S использует три основных сигнала: BCK (тактирование битов), LRCK/WS (выбор канала) и DIN (данные). Номера GPIO можно назначать в прошивке, но классическое распределение для популярных проектов выглядит так:

ESP32 GPIO26 → BCK (PCM5102)

ESP32 GPIO25 → LRCK/WS

ESP32 GPIO22 → DIN

GND → GND, VCC → 5V или 3.3V (по плате ЦАПа)

Дисплей подключается по SPI: сигналы MOSI, SCLK, CS, DC, RST. Следите, чтобы выбранные пины не пересекались с I2S и не попадали на strapping-пины ESP32 (например, GPIO0, GPIO2, GPIO12), иначе плата может не стартовать при подключенной периферии.

Для MAX98357A схема идентична, плюс вывод SD (shutdown) — его подтягивают к питанию или заводят на GPIO для программного отключения усилителя. Динамик подключается напрямую к выходным клеммам модуля.

📊 Какой ЦАП вы используете или планируете для интернет-радио на ESP32?