Страница 10 из 10

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 24 окт 2024, 15:44
superolegb
Я указал так
out = new AudioOutputI2S();
out -> SetPinout(4, 2, 3);

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 24 окт 2024, 15:47
superolegb
aidar_i писал(а): 24 окт 2024, 01:20
DedBanzai писал(а): 23 окт 2024, 13:48 Доброго времени суток, уважаемые. Подскажите, как поменять пины для вывода звука? Имеется ESP32-CAM, там нет 25 и 26 пина. В самом коде не нашел, где они выставляются.
В файле библиотеки смотрите AudioOutputI2S.cpp
Я указал так
out = new AudioOutputI2S();
out -> SetPinout(4, 2, 3); //BCL,LCK,DIN

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 24 окт 2024, 15:51
superolegb
Подскажите кто нибудь пробовал запускать эти блоки на ESP32s2. Ни один блок не работает. Даже с интернетом плохо конектится. Отлично работает пример StreamMP3FromHTTP. Но там все в сетапе находится. Стоит перенести в LOOP и все перестает работать.

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 24 окт 2024, 17:28
aidar_i
superolegb писал(а): 24 окт 2024, 15:51 Подскажите кто нибудь пробовал запускать эти блоки на ESP32s2. Ни один блок не работает. Даже с интернетом плохо конектится. Отлично работает пример StreamMP3FromHTTP. Но там все в сетапе находится. Стоит перенести в LOOP и все перестает работать.
Пример скиньте, посмотрю, расположение кода не должен влиять, в лооп должен код запускаться один раз, как в сетап.

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 24 окт 2024, 19:24
superolegb
aidar_i писал(а): 24 окт 2024, 17:28
superolegb писал(а): 24 окт 2024, 15:51 Подскажите кто нибудь пробовал запускать эти блоки на ESP32s2. Ни один блок не работает. Даже с интернетом плохо конектится. Отлично работает пример StreamMP3FromHTTP. Но там все в сетапе находится. Стоит перенести в LOOP и все перестает работать.
Пример скиньте, посмотрю, расположение кода не должен влиять, в лооп должен код запускаться один раз, как в сетап.
Последний блок-это то что я пытался сделать(на базе примера StreamMP3FromHTTP) . Модуль не подключается к сети совсем. Если компилировать Ваш блок, то модуль подключается к сети, но сильно с перебоями - звука так же нет. Звук удалось получить только с примером StreamMP3FromHTT(там все стабильно и связь и звук).

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 25 окт 2024, 10:32
superolegb
aidar_i писал(а): 25 окт 2024, 10:12
superolegb писал(а): 24 окт 2024, 21:45
В этом примере есть Ваш блок(2 плата) и мой(3 плата).
Версия FLProg какая используется
Использую 7.3.8.

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 25 окт 2024, 16:25
aidar_i
superolegb писал(а): 25 окт 2024, 10:32 Использую 7.3.8.
Используете ESP32 S2? Библиотека последняя?

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 25 окт 2024, 17:32
superolegb
Да все библиотеки самые последние(и WifiManager и аудио библиотека). Вот из всего интернета нашел рабочий пример(остальные почему то отказываются работать) но он с WiFi менеджером отказывается работать:

Код: Выделить всё

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <user_interface.h>
//#include "AudioFileSourceHTTPStream.h" //https://github.com/earlephilhower/ESP8266Audio
#include "AudioFileSourceICYStream.h"
#include "AudioFileSourceBuffer.h" //https://github.com/earlephilhower/ESP8266Audio
#include "AudioGeneratorMP3.h" //https://github.com/earlephilhower/ESP8266Audio
#include "AudioOutputI2SNoDAC.h" //https://github.com/earlephilhower/ESP8266Audio

// Enter your WiFi setup here:
const char *SSID = "test"; //Ваше имя сети
const char *PASSWORD = "password"; // Ключ к сети

// Stations URLs...
const char* URL[]={"http://philae.shoutca.st:8446/stream/1/", "http://shoutcast.byfly.by:88/rmf", "http://shoutcast.byfly.by:88/euroradio_by", "http://shoutcast.byfly.by:88/svoboda_rus
"};


int buttonPin = 0; //назначим кнопку CH+
String url_tmp;
int ch;

AudioGeneratorMP3 *mp3;
//AudioFileSourceHTTPStream *file;
AudioFileSourceICYStream *file;
AudioFileSourceBuffer *buff;
AudioOutputI2SNoDAC *out;

// Called when a metadata event occurs (i.e. an ID3 tag, an ICY block, etc.
void MDCallback(void *cbData, const char *type, bool isUnicode, const char *string)
{
  const char *ptr = reinterpret_cast<const char *>(cbData);
  (void) isUnicode; // Punt this ball for now
  // Note that the type and string may be in PROGMEM, so copy them to RAM for printf
  char s1[32], s2[64];
  strncpy_P(s1, type, sizeof(s1));
  s1[sizeof(s1)-1]=0;
  strncpy_P(s2, string, sizeof(s2));
  s2[sizeof(s2)-1]=0;
  Serial.printf("METADATA(%s) '%s' = '%s'\n", ptr, s1, s2);
  Serial.flush();
}

// Called when there's a warning or error (like a buffer underflow or decode hiccup)
void StatusCallback(void *cbData, int code, const char *string)
{
  const char *ptr = reinterpret_cast<const char *>(cbData);
  // Note that the string may be in PROGMEM, so copy it to RAM for printf
  char s1[64];
  strncpy_P(s1, string, sizeof(s1));
  s1[sizeof(s1)-1]=0;
  Serial.printf("STATUS(%s) '%d' = '%s'\n", ptr, code, s1);
  Serial.flush();
}

void setup()
{
  system_update_cpu_freq(SYS_CPU_160MHZ);
  pinMode(buttonPin, INPUT_PULLUP);
  Serial.begin(115200);
  delay(1000);
  Serial.println("Connecting to WiFi");

  WiFi.disconnect();
  WiFi.softAPdisconnect(true);
  WiFi.mode(WIFI_STA);

  WiFi.begin(SSID, PASSWORD);

  // Try forever
  while (WiFi.status() != WL_CONNECTED) {
    Serial.println("...Connecting to WiFi");
    delay(2000);
    //Serial.println(ESP.getFlashChipSize());
  }
  Serial.println("Connected");
  Serial.printf("Start Heap: %d b\n",  ESP.getFreeHeap());

  out = new AudioOutputI2SNoDAC();

  Serial.printf("Init audio out Heap: %d b\n",  ESP.getFreeHeap());

  url_tmp=URL[1];
  play();

  Serial.printf("Play audio Heap: %d b\n",  ESP.getFreeHeap());
}


void loop()
{
static int lastms = 0;

if (!digitalRead(buttonPin)){
  Serial.print("Ch: ");
  delay(200);
  ch++;
  sel_ch();
  Serial.println(ch);
  StopPlaying();
  play();
}

  if (mp3->isRunning()) {
    if (millis()-lastms > 1000) {
      lastms = millis();
      Serial.printf("Running for %d ms. Heap: %d b\n", lastms, ESP.getFreeHeap());
      Serial.flush();
     }
    if (!mp3->loop()) mp3->stop();
  } else {
    Serial.printf("MP3 done\n");
    delay(1000);
    play();
  }
}

void play()
{
  /*
file = new AudioFileSourceHTTPStream(url_tmp.c_str());
buff = new AudioFileSourceBuffer(file, 2048);
mp3 = new AudioGeneratorMP3();
mp3->begin(buff, out);
*/
// file = new AudioFileSourceHTTPStream(url_tmp.c_str());
  file = new AudioFileSourceICYStream(url_tmp.c_str());

  file->RegisterMetadataCB(MDCallback, (void*)"ICY");
   //buff = new AudioFileSourceBuffer(file, 2560);
   //buff->RegisterStatusCB(StatusCallback, (void*)"buffer");

  mp3 = new AudioGeneratorMP3();
  mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
  mp3->begin(file, out);
// mp3->begin(buff, out);
}

void StopPlaying()
{
  if (mp3) {
    mp3->stop();
    delete mp3;
    mp3 = NULL;
  }
  if (buff) {
    buff->close();
    delete buff;
    buff = NULL;
  }
  if (file) {
    file->close();
    delete file;
    file = NULL;
  }
}

void sel_ch()
{
  if (ch==0) url_tmp=URL[0];
  if (ch==1) url_tmp=URL[1];
  if (ch==2) url_tmp=URL[2];
  if (ch==3) url_tmp=URL[3];
  if (ch>3) ch=0,  url_tmp=URL[0];
}

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 25 окт 2024, 22:39
aidar_i
Буфер очень большой, поставьте 4096.
Выход звука через какую плату? Напрямую выводы должны быть 17 и 18 у ESP32 S2.
У вас в скетче стоит вывод звука через них и переназначение выводов для I2S модуля. Если используете I2S модуль , тогда нужно строку out = new AudioOutputI2S(0, 1); исправить так: out = new AudioOutputI2S(); или поставьте 0 вместо 1.
Выводы DAC (17 и 18 в ESP32 S2) нельзя переназначить.
Пример Ваш для ESP8266.

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 25 окт 2024, 22:56
aidar_i
DedBanzai писал(а): 23 окт 2024, 13:48 Доброго времени суток, уважаемые. Подскажите, как поменять пины для вывода звука? Имеется ESP32-CAM, там нет 25 и 26 пина. В самом коде не нашел, где они выставляются.
Тогда нужно использовать I2S плату, например PCM 5102, можно назначить свободные пины для него.

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 26 окт 2024, 00:36
superolegb
Это все я делала с АЦП PCM5201, без АЦП вообще никак не работает. Есть подозрения что библиотека не особо адаптирована под этот модуль.
Рабочий блок примерно такой как приложен. Не могу только задачу массива радиостанций через вход сделать(только через параметры)

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 26 окт 2024, 10:47
aidar_i
superolegb писал(а): 26 окт 2024, 00:36 Не могу только задачу массива радиостанций через вход сделать(только через параметры)
Ваш блок со входа не будет работать, потому что код аудио находится в сетап

Re: ESP8266/ESP32 онлайн радио.

Добавлено: 26 окт 2024, 11:12
superolegb
Переделал. Проверил работает на ESP32-s2.Параметры сети и память задаются в параметре блока