Cкетч WebRadio (для ESP8266+PCM5102A+LM393)

Здравствуйте.
Нужен скетч для Arduino IDE.
Железо:
ESP8266+PCM5102A+LM393
ТЗ:

  • точка WiFi прописывается в скетче (типа:
    const char *SSID = “NAME”;
    const char *PASSWORD = “PASS”:wink:
  • одна радиостанция (.AAC; 64 kbps, 44 kHz, stereo), прописывается в скетче (тапа: const char *URL=“http://stream.aac:wink:
  • уровень громкости прописывается в скетче (типа: int volume = 100;)
  • звук по шине I2S передается на ЦАП 5102
  • активирование воспроизведения (LM393) по любому IO 8266, низкий (0) уровень - идет поток аудио, высокий (1) уровень - потока нет. ВАЖНО! при переключении с высокого уровня на низкий никаких задержек быть не должно (типа время на подключения к сети WIFI и т.п.)
    P.S. Те веб радио, что нашел в сети либо не поддерживают/воспроизводят нужный .аас либо заикаются (по ходу не хватает памяти выделенной для буфера), ну и т.п.

думаю на esp32 можно сделать. 10тыс, fridgetester@mail.ru

Esp32 минимум, разница в цене минимальная уже.

Опааа…
Добрый вечер))

Добрейшей ночи.

Всем спасибо, справился самостоятельно, правда “пересел” на ESP32 WROOM, осталось прикрутить “MUTE”
Даже .AAC на 128 kbps тянет.
Помимо звука можно регулировать НЧ, СЧ, ВЧ, баланс и есть режим стерео/моно
Может кому пригодится, версия ядра 2.0.11/2.0.12 (с остальными у меня возникали проблемы), ESP32-audioI2S (не последняя!, нашел где-то в сети старую), в других сочетаниях либо звук только один канал, либо заикается!
ВНИМАНИЕ!
I2S pins для ЦАП в скетче отличаются от стандартных, мне было так удобнее припаивать PCM5102A и если ничего на другие пины не сажать (например Энкодер), то работает стабильно, по ходу есть приоритеты I/O, пока не разбирался, буду вживлять “MUTE”, почитаю литературу.

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

#define I2S_DOUT  2 // DIN стандартный 22
#define I2S_BCLK  4 // BCK / BCLK стандартный 26
#define I2S_LRC   15 // LRC / LCK стандартный 25

bool   m_f_forceMono = true;    //false-стерео, true-моно

const char *URL = "адрес потока";
 
Audio audio;
 
String ssid =    "Имя точки доступа";
String password = "Пароль точки доступа";

void setup() {
  Serial.begin(115200);
  WiFi.disconnect();`
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid.c_str(), password.c_str());
  while (WiFi.status() != WL_CONNECTED) {
  delay(1500);
  Serial.print(".");
  }
 
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.println("");
 
  audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);

  audio.setVolume(10); // 0...21 
  audio.setTone(6,0,0);//НЧ, СЧ, ВЧ (в пределах -40...+6 (дБ))
  audio.setBalance(0);//+16...0...-16

  audio.connecttohost(URL);
}
void loop();
{
  audio.loop();
}
void audio_lasthost(const char *info) { //URL воспроизводимого потока
  Serial.print("lasthost    "); Serial.println(info);
}