Интернет WiFi радио на ESP32 и модуле MAX98357A

Обычное аналоговое радио, достигнув пика своего развития в конце XX века, в настоящее время стало постепенно сдавать свои позиции Интернет радио, которое доступно в любой точке земного шара, где есть Интернет-соединение.

Интернет радио (Internet Radio), также известное как стриминговое (streaming), web, IP или онлайн-радио обычно используется для трансляции сообщений, музыки, обсуждений и т.д. в форме аудио сигналов. По другому говоря, это цифровой аудио сервис, транслируемый через сеть Интернет.

Интернет радио можно создать с помощью устройства, подключенного к сети Интернет, или с помощью программного обеспечения, установленного на персональном компьютере (ноутбуке). В данной статье мы его создадим на основе модуля ESP32 и плате усиления MAX98357A, работающей по протоколу I2S.

Необходимые компоненты

  1. Модуль ESP32 Devkit
  2. Плата усиления MAX98357A I2S
  3. 8-омный громкоговоритель (динамик).
  4. USB кабель.
  5. Адаптер 5V 1A.
  6. Активное Интернет-соединение

Интерфейс I2S в модуле ESP32

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

Почему поддержка интерфейса I2S так важна в современной электронике? Интерфейс I2S (Integrated Inter-IC Sound Bus) представляет собой последовательную шину для соединения цифровых аудиоустройств (плееров компакт-дисков, цифровых аудиопроцессоров и т. п.). Он разработан фирмой Philips Semiconductor. Данный интерфейс обычно используется компонентами АЦП и ЦАП.

Поскольку в нашем интернет радио нам необходимо воспроизведение звука с помощью громкоговорителя (динамика), то нам нужен аналоговый выход, то есть необходим ЦАП (цифро-аналоговый преобразователь). И здесь мы видим самую интересную часть нашего проекта – это модуль MAX98357A, который представляет собой цифровой усилитель класса D, который использует интерфейс I2S для обмена данными с современными микроконтроллерами.

Достоинства модуля MAX98357A I2S:

  1. КПД 92%.
  2. Выходная мощность 3,2 Вт на 4-омном динамике при 5V.
  3. Уменьшение мощности шумов.
  4. Защита от короткого замыкания и перегрева.
  5. Поддержка левого, правого или Left/2 + Right/2 выхода.
  6. Работа от напряжения в диапазоне от 2.5V до 5.5V.

Внешний вид модуля MAX98357A I2S, использованного в нашем проекте, показан на следующем рисунке.

Схема проекта

Схема интернет радио на ESP32 и модуле MAX98357A I2S представлена на следующем рисунке.

Как видите, схема соединений достаточно проста. Поскольку контакт Gain модуля MAX98357A подключен к земле (GND), то коэффициент усиления модуля составляет 12dB.

Объяснение программы для модуля ESP32

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Для данного проекта нам понадобится библиотека ESP32 Audio I2S. Скачайте ее по приведенной ссылке с GitHub и добавьте ее в Arduino IDE.

Первым делом в программе мы подключим используемые библиотеки.


#include "Arduino.h"
#include "WiFi.h"
#include "Audio.h"

Далее объявим контакты модуля ESP32, к которым в нашей схеме подключен модуль MAX98357A.

Arduino
#define MAX98357A_I2S_DOUT  25
#define MAX98357A_I2S_BCLK 27
#define MAX98357A_I2S_LRC  26
Audio audio;

Затем укажем параметры доступа к сети Wi-Fi – ее имя (SSID) и пароль, что позволит модулю ESP32 подключаться к сети интернет.

String ssid = "Your User Id";
String password = "Your Password";

Далее укажем контакты, к которым подключен модуль MAX98357A, в функции audio.setPinout, и установим уровень звука на максимум с помощью функции audio.setVolume.

 audio.setPinout(MAX98357A_I2S_BCLK, MAX98357A_I2S_LRC, MAX98357A_I2S_DOUT);
 audio.setVolume(100);

Затем укажем URL, с которого будет производиться трансляция. Вы можете указать любой необходимый вам URL или, к примеру, использовать потенциометр для переключения между несколькими каналами трансляции.

  audio.connecttohost("http://vis.media-ice.musicradio.com/CapitalMP3");
}

Далее, в функции void loop(), нам остается только поставить аудио плеер на непрерывное воспроизведение.

Arduino
void loop()
{
  audio.loop();
}

Тестирование работы интернет радио плеера

После сборки схемы проекта загрузите программу в модуль ESP32. После того как он успешно подсоединится к сети Wi-Fi, начнется трансляция аудио с URL, указанного в программе.

Вы можете обнаружить, что звук достаточно чистый и проект не нуждается ни в каких промежуточных усилителях. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

Arduino
#include "Arduino.h"
#include "WiFi.h"
#include "Audio.h"
#define I2S_DOUT     25
#define I2S_BCLK      27
#define I2S_LRC        26
Audio audio;
String ssid =    "Sourav";
String password = "87654321";
void setup() {
  WiFi.disconnect();
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid.c_str(), password.c_str());
  while (WiFi.status() != WL_CONNECTED)
  delay(1500);
  audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
  audio.setVolume(100);
  audio.connecttohost("http://vis.media-ice.musicradio.com/CapitalMP3");
}
void loop()
{
  audio.loop();
}
Рейтинг@Mail.ru Яндекс.Метрика