Как подключить MAX98357A к ESP32

I2S на GPIO25, 26 и 27, динамик 4-8 Ом.

Схема подключения

Открыть в конструкторе

Соединения

ШагОткудаКудаЦвет
1USB-C 6P GNDMAX98357A GNDчёрный
2ESP32 DOIT GNDUSB-C 6P GNDчёрный
3USB-C 6P VBUSMAX98357A Vinкрасный
4ESP32 DOIT D25MAX98357A LRCбелый
5ESP32 DOIT D26MAX98357A BCLKбелый
6ESP32 DOIT D27MAX98357A DINбелый
7MAX98357A +Динамик +белый
8MAX98357A −Динамик −белый

Проверка питания и проводов

  • Проверка схемы, та же, что в конструкторе, не нашла ошибок: напряжения выводов совпадают, земля общая, шины подключены целиком.
  • MAX98357A берёт до 550 мА (обычно около 20) с вывода VBUS USB-C 6P, вывод даёт около 1500 мА: USB-C с резисторами 5,1 кОм: блок до 1,5–3 А, порт компьютера 500–900 мА.

Ток всей схемы и сколько она проработает от аккумулятора: расчёт питания. Где что втыкать: схема на макетке.

Пример кода

Arduino IDE, ESP_I2S из ядра ESP32 для Arduino 3.x.

#include <ESP_I2S.h>

I2SClass i2s;
int16_t buf[32];

void setup() {
  i2s.setPins(26, 25, 27);  // BCLK, LRC, DIN
  i2s.begin(I2S_MODE_STD, 16000, I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_MONO);
  // меандр 500 Гц: 16 отсчётов вверх, 16 вниз при 16 000 отсчётов в секунду
  for (int i = 0; i < 32; i++) buf[i] = i < 16 ? 3000 : -3000;
}

void loop() {
  i2s.write((uint8_t *)buf, sizeof(buf));
}

Распиновки деталей

Как подключено

MAX98357A принимает звук по I2S: LRC (выбор канала) на GPIO25, BCLK (такт) на GPIO26, DIN (данные) на GPIO27. Номера можно поменять на любые выходы ESP32, в коде тогда меняются числа в setPins. MCLK усилителю не нужен.

Усилитель на 4 Ом при полной громкости берёт до 550 мА от 5 В, а вывод VIN DevKit на USB даёт около 300 мА. Поэтому на схеме Vin усилителя идёт от отдельной платы USB-C с блоком 5 В, минусы соединены с GND ESP32. Динамик 4-8 Ом подключается к клеммам + и −, минус динамика с землёй не соединяют: выход мостовой.

Примеры

  • GAIN в воздухе даёт 9 дБ, на GND 12 дБ, на Vin 6 дБ. Вывод SD без подключения при питании 5 В выдаёт среднее левого и правого каналов.

Частые вопросы

Почему ESP32 перезагружается при громком звуке?
Усилитель берёт питание с той же линии 5 В, что и плата, напряжение проседает. Питайте MAX98357A от отдельного блока 5 В на 1 А или поставьте у Vin конденсатор 470-1000 мкФ.
Как проиграть MP3 или интернет-радио?
Библиотеки ESP8266Audio и ESP32-audioI2S декодируют MP3 и отдают звук в I2S. Пины те же: BCLK, LRC и DIN.

Пригодится ещё