Интернет радиоприемник на ESP32

Тема в разделе "ESP8266, ESP32", создана пользователем rv9c, 26 апр 2018.

  1. Airbus

    Airbus Радиохулиган Модератор

    Не устраивает маленький дисплей.С остальным всё замечательно!аас не принципиально для меня,всегда есть аналоги на МР3.
     
  2. Boryan_R

    Boryan_R Гик

    А вот это очень херово..я по дисплей..народ в основном кто вашим радио интересуется в годах..и смотреть на мизерный дисплей фигово...а молодёжи это радио по боку...у них смартфоны..им этого хватает.
    Тем более я уже писал какой дисплей всех устроит..может вы пропустили это..
    Более того в открытом и халявном проекте карадио 32 автор моментом поддержку этого дисплея реализовал...а у вас проект за деньги, а вы пожелания клиентов не хотите делать...это очень плохо...так не долго и умереть проекту.
     
  3. Boryan_R

    Boryan_R Гик

    Прилетели дисплеи 1.3" разница с 0.96 очевидна. В принципе почти совместим с 0,96 ...изображение сдвинуто влево на пару-тройку пикселей, а в остальном совместим с SSD1306...Чуток подправить код и можно использовать его....Но автору rv9C пофиг на мои предложения и просьбы по поводу добавления этого дисплея...Уже какое обращение попусту игнорит...жаль!!! В карадио32 есть поддержка этого дисплея он на фото в работе
    [​IMG]
    [​IMG]

    [​IMG]
     
    Последнее редактирование: 17 дек 2018
    AlexZander нравится это.
  4. ИгорьК

    ИгорьК НЕ Модератор

    Чтобы понять и полюбить автора - сделайте сами какой-нибудь проект. Чтобы был таким-же востребованным. И все станет ясно.
     
    Алексей.А и parovoZZ нравится это.
  5. Boryan_R

    Boryan_R Гик

    походу ни как ..вроде там все работает...да и чего туда добавлять?
     
  6. nvitek

    nvitek Нерд

    Вариация примера выше. у меня работает намного стабильнее...
    С приаттаченной либой, работает отлично, если скомпилировать с другими, икает.
    не вникал почему. может кому интересно будет
    Код (C++):
    #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];
    }
     
     

    Вложения:

  7. stich38

    stich38 Нуб

    Здравствуйте перезалейте ссылку пожалуйста
     
  8. rv9c

    rv9c Гик

    Тут все есть https://esp-radio.ru/iradio/