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

superolegb
Рядовой
Сообщения: 16
Зарегистрирован: 29 сен 2017, 13:05
Поблагодарили: 3 раза

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

Сообщение superolegb »

Я указал так
out = new AudioOutputI2S();
out -> SetPinout(4, 2, 3);
superolegb
Рядовой
Сообщения: 16
Зарегистрирован: 29 сен 2017, 13:05
Поблагодарили: 3 раза

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

Сообщение 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
superolegb
Рядовой
Сообщения: 16
Зарегистрирован: 29 сен 2017, 13:05
Поблагодарили: 3 раза

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

Сообщение superolegb »

Подскажите кто нибудь пробовал запускать эти блоки на ESP32s2. Ни один блок не работает. Даже с интернетом плохо конектится. Отлично работает пример StreamMP3FromHTTP. Но там все в сетапе находится. Стоит перенести в LOOP и все перестает работать.
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

superolegb писал(а): 24 окт 2024, 15:51 Подскажите кто нибудь пробовал запускать эти блоки на ESP32s2. Ни один блок не работает. Даже с интернетом плохо конектится. Отлично работает пример StreamMP3FromHTTP. Но там все в сетапе находится. Стоит перенести в LOOP и все перестает работать.
Пример скиньте, посмотрю, расположение кода не должен влиять, в лооп должен код запускаться один раз, как в сетап.
superolegb
Рядовой
Сообщения: 16
Зарегистрирован: 29 сен 2017, 13:05
Поблагодарили: 3 раза

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

Сообщение superolegb »

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

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

Сообщение superolegb »

aidar_i писал(а): 25 окт 2024, 10:12
superolegb писал(а): 24 окт 2024, 21:45
В этом примере есть Ваш блок(2 плата) и мой(3 плата).
Версия FLProg какая используется
Использую 7.3.8.
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

superolegb писал(а): 25 окт 2024, 10:32 Использую 7.3.8.
Используете ESP32 S2? Библиотека последняя?
superolegb
Рядовой
Сообщения: 16
Зарегистрирован: 29 сен 2017, 13:05
Поблагодарили: 3 раза

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

Сообщение 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];
}
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение 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.
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

DedBanzai писал(а): 23 окт 2024, 13:48 Доброго времени суток, уважаемые. Подскажите, как поменять пины для вывода звука? Имеется ESP32-CAM, там нет 25 и 26 пина. В самом коде не нашел, где они выставляются.
Тогда нужно использовать I2S плату, например PCM 5102, можно назначить свободные пины для него.
superolegb
Рядовой
Сообщения: 16
Зарегистрирован: 29 сен 2017, 13:05
Поблагодарили: 3 раза

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

Сообщение superolegb »

Это все я делала с АЦП PCM5201, без АЦП вообще никак не работает. Есть подозрения что библиотека не особо адаптирована под этот модуль.
Рабочий блок примерно такой как приложен. Не могу только задачу массива радиостанций через вход сделать(только через параметры)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

superolegb писал(а): 26 окт 2024, 00:36 Не могу только задачу массива радиостанций через вход сделать(только через параметры)
Ваш блок со входа не будет работать, потому что код аудио находится в сетап
superolegb
Рядовой
Сообщения: 16
Зарегистрирован: 29 сен 2017, 13:05
Поблагодарили: 3 раза

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

Сообщение superolegb »

Переделал. Проверил работает на ESP32-s2.Параметры сети и память задаются в параметре блока
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

Вернуться в «Проекты различных устройств на ESP8266 / ESP32»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя