Как подключить MAX98357A к ESP32
I2S на GPIO25, 26 и 27, динамик 4-8 Ом.
Схема подключения
Открыть в конструктореСборка по шагам
8 шагов- 8 проводов по порядку: земля, питание, сигналы.Нажмите на провод на схеме или строку таблицы, чтобы открыть его шаг.Стрелки ← → листают шаги.
- Шаг 1: GND модуля на GND разъёма USB-C
- Шаг 2: GND разъёма USB-C на GND платы
- Шаг 3: Vin модуля на VBUS разъёма USB-C5 В, модуль берёт до 550 мА, вывод даёт около 1500 мА.
- Шаг 4: LRC модуля на D25 платы
- Шаг 5: BCLK модуля на D26 платы
- Шаг 6: DIN модуля на D27 платы
- Шаг 7: плюс модуля на плюс динамика
- Шаг 8: минус модуля на минус динамика
- Готово: 8 проводов на месте.Сверьте с таблицей соединений ниже.
Соединения
| Шаг | Откуда | Куда | Цвет |
|---|---|---|---|
| 1 | USB-C 6P GND | MAX98357A GND | чёрный |
| 2 | ESP32 DOIT GND | USB-C 6P GND | чёрный |
| 3 | USB-C 6P VBUS | MAX98357A Vin | красный |
| 4 | ESP32 DOIT D25 | MAX98357A LRC | белый |
| 5 | ESP32 DOIT D26 | MAX98357A BCLK | белый |
| 6 | ESP32 DOIT D27 | MAX98357A DIN | белый |
| 7 | MAX98357A + | Динамик + | белый |
| 8 | MAX98357A − | Динамик − | белый |
Проверка питания и проводов
- Проверка схемы, та же, что в конструкторе, не нашла ошибок: напряжения выводов совпадают, земля общая, шины подключены целиком.
- 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.