Skip to content

About

Универсальная библиотека для ESP32 (Arduino IDE), объединяющая в себе функции Bluetooth A2DP Sink (приемник), Bluetooth A2DP Source (передатчик), интернет-радио и AUX-выход (аудиопоток через I2S), дополненная программным эквалайзером.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

GS32AudioI2S

Универсальная библиотека для ESP32 (Arduino IDE), объединяющая в себе функции Bluetooth A2DP Sink (приемник), Bluetooth A2DP Source (передатчик), интернет-радио и AUX-выход (аудиопоток через I2S), дополненная программным эквалайзером.


Возможности

  • Bluetooth Sink (AUDIO_MODE_BT_SINK): Превращает ваш ESP32 в Bluetooth-динамик (стриминг музыки со смартфона на I2S ЦАП).
  • Bluetooth Source (AUDIO_MODE_BT_SOURCE): Позволяет транслировать интернет-радиопоток или аудио с ESP32 на внешнюю Bluetooth-колонку.
  • AUX Out / Web Radio (AUDIO_MODE_AUX_OUT): Воспроизведение интернет-радиостанций по URL (потоковое аудио) напрямую через внешний I2S ЦАП.
  • Эквалайзер: Предустановленные пресеты (Pop, Jazz, Rock, Classic, Vocal) и настраиваемый Пользовательский эквалайзер (EQ_CUSTOM) с регулировкой басов, средних и высоких частот.
  • Гибкое управление режимами: Безопасное переключение между режимами «на лету» с полным очищением и освобождением ресурсов памяти и пинов.

Требования и Зависимости

Поскольку проект использует современные стандарты библиотек для ESP32 (включая Arduino ESP32 Core v3.0.0+), для сборки требуются следующие библиотеки:

  1. ESP32-A2DP (для Bluetooth A2DP Sink/Source)
  2. ESP32-audioI2S (для воспроизведения интернет-радио и эквалайзера)
  3. ESP_I2S (встроена в ядро ESP32 Arduino Core v3.0.0+)

Важные настройки среды (Arduino IDE)

Из-за больших размеров стека Bluetooth и аудиобиблиотек стандартный размер разделов памяти вызовет ошибку компиляции (секция текста превышает доступное пространство).

Обязательно измените настройки разметки памяти в Arduino IDE:

  1. Перейдите в меню Tools (Инструменты) -> Partition Scheme (Схема разделов).
  2. Выберите вариант: Huge APP (3MB No OTA/1MB SPIFFS).

Установка

  1. Скачайте или клонируйте репозиторий библиотеки в папку с библиотеками Arduino: Documents/Arduino/libraries/GS32AudioI2S
  2. Убедитесь, что у вас установлены все зависимости (ESP32-A2DP и ESP32-audioI2S).
  3. Перезапустите Arduino IDE.

Быстрый старт (Пример использования)

#include <GS32AudioI2S.h>

GS32AudioI2S audioSystem;

// Пины шины I2S (зависит от вашего аппаратного подключения ЦАП, например PCM5102)
const uint8_t PIN_BCK = 14;
const uint8_t PIN_LRCK = 15;
const uint8_t PIN_DIN = 22;

void setup() {
    Serial.begin(115200);

    // Инициализация пинов I2S
    audioSystem.begin(PIN_BCK, PIN_LRCK, PIN_DIN);

    // Установка громкости (от 0 до 21)
    audioSystem.setVolume(15);

    // Выбор режима работы: Bluetooth Приемник (Колонка)
    audioSystem.setMode(AUDIO_MODE_BT_SINK);
    
    // Или режим интернет-радио / AUX:
    // audioSystem.setMode(AUDIO_MODE_AUX_OUT);
    // audioSystem.playRadio("http://stream.sberbeat.ru/sber_chill");
}

void loop() {
    // Обязательный вызов функции tick() для обработки сетевых буферов аудио
    audioSystem.tick();
}

Справочник API

Управление питанием и пинами

  • void begin(uint8_t bckPin, uint8_t lrckPin, uint8_t dinPin) — Инициализирует и сохраняет номера пинов шины I2S.
  • void setMode(GS32AudioMode mode) — Переключает режим работы (AUDIO_MODE_OFF, AUDIO_MODE_BT_SINK, AUDIO_MODE_BT_SOURCE, AUDIO_MODE_AUX_OUT). Предыдущий режим корректно останавливается и выгружается из памяти.
  • GS32AudioMode getMode() const — Возвращает текущий активный режим.
  • void releaseAll() — Полная остановка всех активных процессов и освобождение памяти.

Bluetooth настройки

  • void setBtSinkConfig(String name, String pin, bool discoverable) — Устанавливает имя устройства, пин-код и видимость для режима Sink.
  • void setBtSourceTarget(String targetName) — Задает имя Bluetooth-колонки, к которой нужно подключиться в режиме Source.

Аудио и Радио

  • void playRadio(String url) — Запускает воспроизведение интернет-потока по прямой ссылке (в режимах AUX_OUT и BT_SOURCE).
  • void setVolume(uint8_t volume) — Установка громкости (0–21).
  • void stop() — Остановка воспроизведения потока.

Эквалайзер

  • void setEqualizer(GS32EqualizerPreset preset) — Установка пресета эквалайзера (EQ_POP, EQ_JAZZ, EQ_ROCK, EQ_CLASSIC, EQ_VOCAL, EQ_DEFAULT).
  • void setCustomEqualizer(int8_t gainLow, int8_t gainMid, int8_t gainHigh) — Установка индивидуальных значений усиления (диапазон от -12 до 12 дБ) для низких, средних и высоких частот.
  • GS32EqualizerPreset getEqualizerPreset() const — Возвращает текущий пресет эквалайзера.

Служебные методы

  • void tick() — Метод фоновой обработки аудиоплеера, должен вызываться в цикле loop().

Лицензия

Этот проект является частью экосистемы GS32Bios и распространяется под лицензией MIT. Вы можете свободно использовать, модифицировать и распространять данный код в своих некоммерческих и коммерческих проектах.

About

Универсальная библиотека для ESP32 (Arduino IDE), объединяющая в себе функции Bluetooth A2DP Sink (приемник), Bluetooth A2DP Source (передатчик), интернет-радио и AUX-выход (аудиопоток через I2S), дополненная программным эквалайзером.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages