Найти в Дзене
Заметки кота

Воспроизведение MP3 на базе ESP32, VS1003B и усилителя PAM8403

В этом проекте используется микросхема VS1003B — аудиодекодер, способный воспроизводить MP3, WAV, WMA и ряд других форматов.
Она подключена к ESP32-WROOM по SPI-интерфейсу, а звуковой сигнал подаётся на внешний усилитель PAM8403 и далее — на динамик 3 Вт / 4 Ом. Все узлы (ESP32, VS1003B, SD-карта) используют общую SPI-шину.
Подключение выполнено следующим образом: Используется библиотека ESP_VS1053_Library
(она совместима с чипом VS1003B).
Установить её можно через Arduino IDE: Рабочий код проекта: 1. Усилитель хрипит
Проблема оказалась в питании: PAM8403 не должен питаться от ESP32, так как при воспроизведении MP3 возникает просадка напряжения.
Решение — использовать отдельный 5 В блок питания. 2. Посторонний звон и шум
Причина — наводки по земле.
Решение — соединить GND единым проводником вблизи усилителя и декодера.
Это полностью устраняет фон. Модуль на базе VS1003B способен: VS1003B (и VS1053) не поддерживает одновременное воспроизведение двух потоков.
То есть нельз
Оглавление

В этом проекте используется микросхема VS1003B — аудиодекодер, способный воспроизводить MP3, WAV, WMA и ряд других форматов.

Она подключена к
ESP32-WROOM по SPI-интерфейсу, а звуковой сигнал подаётся на внешний усилитель PAM8403 и далее — на динамик 3 Вт / 4 Ом.

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

Все узлы (ESP32, VS1003B, SD-карта) используют общую SPI-шину.

Подключение выполнено следующим образом:

  • MOSI → GPIO 23
  • MISO → GPIO 19
  • SCK → GPIO 18
  • VS1053 / VS1003B:
    XCS → GPIO 5
    XDCS → GPIO 16
    DREQ → GPIO 4
    XRST → GPIO 17
  • SD-карта:
    CS → GPIO 15
  • Питание:
    VCC (3.3 В) и GND SD карты к ESP32
    VCC (5 В) и GND декодера к ESP32
    VCC (5 В) и GND усилителя к отдельному более или менее качественному источнику питания, это важно для снижения помех
    LOUT и ROUT подключены к входам усилителя PAM8403
    AGND декодера соединён с GND усилителя
    одним общим проводником — это важно для снижения помех

Рабочий код

Используется библиотека ESP_VS1053_Library

(она совместима с чипом
VS1003B).

Установить её можно через
Arduino IDE:

  1. Скачать ZIP-архив с GitHub.
  2. В Arduino IDE выбрать:

    Скетч → Подключить библиотеку → Добавить ZIP-библиотеку…
  3. Указать скачанный файл.

Рабочий код проекта:

ESP32_VS1003B_SDcard.ino

Проблемы и решения

1. Усилитель хрипит

Проблема оказалась в питании: PAM8403 не должен питаться от ESP32, так как при воспроизведении MP3 возникает просадка напряжения.

Решение — использовать
отдельный 5 В блок питания.

2. Посторонний звон и шум

Причина — наводки по земле.

Решение — соединить GND
единым проводником вблизи усилителя и декодера.

Это полностью устраняет фон.

Цифровой усилитель PAM8403
Цифровой усилитель PAM8403

Возможности VS1003B

Модуль на базе VS1003B способен:

  • декодировать MP3, WAV, WMA, Ogg Vorbis, MIDI;
  • воспроизводить звук с SD-карты или через поток SPI;
  • изменять громкость и тембр программно;
  • выводить звук стерео (LOUT/ROUT);
  • работать в режиме энкодера (запись с микрофона в ADPCM или Ogg Vorbis);
  • управляться напрямую из Arduino или ESP32 без отдельного контроллера.

-3
-4

Параллельное воспроизведение

VS1003B (и VS1053) не поддерживает одновременное воспроизведение двух потоков.

То есть нельзя одновременно проигрывать музыку и поверх неё накладывать другой MP3.

Однако можно:

  • остановить воспроизведение и кратко воспроизвести другой звук (например, щелчок кнопки);
  • или реализовать микширование звуков на стороне ESP32, если использовать внешний аудиопроцессор или программный микшер (что сложно и требует больше памяти).

Преимущества и перспективы

  • Простая схема и высокая совместимость с Arduino и ESP32;
  • Отличное качество звука при минимуме компонентов;
  • Возможность автоматического воспроизведения MP3-файлов с SD-карты;
  • Расширение функционала: можно добавить датчики, Wi-Fi-управление, озвучку событий, голосовые уведомления и др.

Перспективы — построение систем озвучивания интерфейсов, голосовых уведомлений, автономных звуковых эффектов, мини-плееров и мультимедийных модулей для IoT-устройств.