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

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

  1. Boryan_R

    Boryan_R Гик

    запихнул радио в маленькую блютуз колонку моно....сохранил все функции колонки..блютуз, фм радио, проигрывание мр3 с юсб флехи и микросд и жирный + ИНТЕРНЕТ РАДИО. :) собрал на ESP12 с минимальным обвесом. Фильтр не ставил. Громкость регулирую самой колонкой. Порадовал сюрприз от автора..радио умеет говорить."нет потока вещающей радиостанции" :))) Радио работает отлично..но почему то я не вижу его в wifi сетке ??? На макетке собрано было видел сетку RADIOSAN подключался к ней и по 192.168.4.1 заходил в редактор станций...Может автор подскажет почему радио работает а в сетке его нет?
     
  2. Boryan_R

    Boryan_R Гик

    Согласен, нужно переходить на ESP12...нафиг коцанную ESP01...тем более цена вопроса одна и та же.
     
  3. Boryan_R

    Boryan_R Гик

    Будет. Выход через 0.1 мкф с Rx . Обязательно Ик приёмник на Tx ...для запуска нужна команда с пульта. По умолчанию первый старт радио как точка доступа с адресом 192.168.4.1 ...я автору задал вопрос назначения кнопок пульта...пока молчит...у меня со стандартного ширпотребовского ардуиновского с али стрелка вверх переводит радио в точку доступа. а стрелка вниз запускает радио и далее цифровые кнопки переключают станции.
     
  4. rv9c

    rv9c Гик

    Всем привет! Подолью масла в печуру) под названием простые интернет радиоприемники на esp8266. Предлагаю вашему вниманию следующий код чуть чуть поправленный пример из библиотеки https://github.com/earlephilhower/ESP8266Audio

    Код (C++):
    #include <Arduino.h>
    #include <ESP8266WiFi.h>
    #include <user_interface.h>
    #include "AudioFileSourceHTTPStream.h" //https://github.com/earlephilhower/ESP8266Audio
    #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 = "Link"; //Ваше имя сети
    const char *PASSWORD = "arhideya"; // Ключ к сети

    // Randomly picked URL
    String url0="http://philae.shoutca.st:8446/stream/1/"; // URL потока станции. 1 канал
    String url1="http://ep128.hostingradio.ru:8030/ep128"; // URL потока станции. 2 канал
    String url2="http://online1.gkvr.ru:8000/radiola_eka_128.mp3"; // URL потока станции. 3 канал

    int buttonPin = 0; //назначаем кнопочку переключения каналов
    String url_tmp;
    int ch;

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

    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("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=url0;
      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);
    }

    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=url0;
      if (ch==1) url_tmp=url1;
      if (ch==2) url_tmp=url2;
      if (ch>2) ch=0,  url_tmp=url0;
    }
     
    Нечто подобное реализовано у Alex666 , тоже прекрасно работает на голой esp8266. Быстро переключает потоки кнопкой по кругу, кнопка посажена между Gnd и GPIO0. Аудио выход GPIO 3 (он же RX UART), формируется PWM. Впрочем поле для творчества большое)

    И че там оптимизировать в библиотеке не понятно;)
     
    Последнее редактирование: 12 дек 2018
  5. Boryan_R

    Boryan_R Гик

    rv9c Отлично! Попробуем! Спасибо!
    Airbus Точка доступа должна быть с именем RADIOSAN...а не WiFi radio...что то у вас не так. Выход из точки доступа в радио только пультом.
     
  6. rv9c

    rv9c Гик

    И еще забыл добавить огромный минус у всех этих интернет радиоприемников на esp8266 это невозможно организовать нормальную буферизацию потока тк ОЗУ под завязку все занято... отсюда следуют затыки и выпадания в воспроизведении потока при потере пакетов. Соединение с сервером вещающим поток должно быть "образцовым", таким же должен быть и коннект с точкой доступа) как то так. В проекте Алекс666 отказался от использования буфера, это чуть добавляет быстродействия но воспроизводимый поток страдает.

    В выше приведенном коде решил не исключать маломальский буфер размером в 2кБ) хоть какой то... но чуть стабильнее некоторые потоки воспроизводит.

    ps есть свободное время, могу реализовать открытый проектик на Arduino интернет радиоприемника на голой esp8266. Хотел бы выслушать пожелания аудитории)
     
  7. rv9c

    rv9c Гик

    К сожалению без пульта никак не запустить. Хз где этот пульт брать) у меня 4шт подобных не один не подошел) сегодня у товарища попросил на удачу от трансмиттера он заработал)))
     
  8. Boryan_R

    Boryan_R Гик

    К вашему проекту на ESP32 ни малейших претензий. Это другое радио и качеством и возможностями ..и его ставить в хорошие блютуз стерео колонки ..что я и сделаю скоро. А вот нужно было минимальное радио в моно колонку...чисто как балаболка на рабочем столе,даче,кухне...в минимальных размерах.. ..да и так в подарок друганам. ..вот и получился идеальный вариант от Alex666...Все минусы описанные вами что то я не наблюдаю ..у меня работает без заиканий и чисто. И это учитывая что я в московской квартире где GPON долбанутый от МГТС засрал все WiFi ...минимум WiFi сеток 20-30 в радиусе...так многие умники ещё и ширину канала вафли 40 мгц врубают...У меня сетка хоть и 200мбит ,но это по проводку, а дальше WiFi и оно расширяется репитером ( не добивает в дальние комнаты) В основном вся нагрузка (Тв, смарты,бук, и куча умных устройств..Ip самеры...все висят в основном на репитере...и в таких условиях радио от Alex666 работает изумительно...чего (не в обиду) не могу сказать о вашем радио где и хрипы и потеря потока и затыки...Я был удивлён что монстр на ESP32 работает плохо...а 8266 как часы...Хотя я грешу на саму ESP32...жду как новые прилетят с китая проверю ваше радио и тогда станет ясно почему оно плохо работало...
    А по поводу открытого проекта на 8266 ..я лично за обеими руками !!!
    Тем более в свете огромного выбора блютуз колонок разных вариантов с линейным входом...туда нужно обязательно вставлять интернет радио...и оно должно быть простым и минимальным...а уж кому нужно супер качество то ваш проект ESP32 но плюс декодеры внешние.
    А кому ещё круче нужно..то не сюда а в магаз с 20000руб в зубах ;)))
     
    Последнее редактирование: 12 дек 2018
  9. Airbus

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

    Пожелания простые-часы будильник с WiFi радио.Часы с RTC DS1302 коррекция каждый час с ntp сервера.Часы с индикатором на TM1637.Радио на esp8266 станций 5 хватит.УНЧ на РАМ.Управление кнопками и через WEB.IR хорошо но необязательно.Статический IP.Вообщем всё как у Вас в проекте на esp32.Ну и "железо" node mcu lua или Witty.Потому как паять esp-12 с китайским шагом между контактами то ещё удовольствие!
     
  10. ZAZ-965

    ZAZ-965 Гуру

    По моему можно. Если скетч собран в Arduino IDE с настройкой 160 MHz вызывается функция
    Код (C++):
    void preloop_update_frequency() {
    #if defined(F_CPU) && (F_CPU == 160000000L)
    REG_SET_BIT(0x3ff00014, BIT(0));
    ets_update_cpu_frequency(160);
    #endif
    }
    , разгоняя ESP до нужной частоты. И прошивать можно указав только режим и частоту SPI flash.
     
  11. rv9c

    rv9c Гик

    Вы чего мучаетесь)? Все же просто) используйте самый простой прошивалищик nodemcu flasher настраиваете DIO , частота памяти 80Mhz, адрес для начала записи 0x0000 выбираете прошивку radiosan.bin и шьёте... Всего то делов)

    Частота тактовая должна быть уже сконфигурирована в бинарник.
    Этот лоадер нафиг не нужен, цель его не понятна лишние телодвижения)
     
  12. AlexZander

    AlexZander Нерд

    Евгений тоже-ЗА, из пожеланий хотя бы 10 станций, органы управления как в проекте на esp-32, ну и экранчик бы побольше(можно варианты) уже наконец))) зрение с годами плохое..)))
    Какую esp8266 заказывать?
     
  13. rv9c

    rv9c Гик

    К сожалению управление приемником через веб интерфейс не получится реализовать, дисплей тоже под вопросом. В ОЗУ все не влезет.
     
  14. AlexZander

    AlexZander Нерд

    Станции то можно будет ввести? Так то полноценное управление на мой дилетанский взгляд как бы и не нужное, с дисплеем то удобнее, так для визуального контроля хоть какой бы уже)))
     
  15. Boryan_R

    Boryan_R Гик

    • Airbus и rv9c я в начале тоже тупо флешером залил бинарик радио и фига вам. В той паре флешеров которыми я и большинство народа пользуются, нельзя задать частоту кристалла ESP8266 160 мгц. В IDE ардуиновском можно это сделать и то почему то только с версией платы "generic ESP8266 module" с другими версиями ESP этого сделать нельзя...потому я свою ESP12 шил как "generic ESP8266 module" .Потому и зашиваем сначала загрузчик выбрав предварительно не стандартную конфигурацию ESP (так решил сконфигурировать автор видать для скорости работы)...и потом запустив эту еспэху по ОТА зашиваем бинарик радио.
    • Я не знаю есть ли конфигурация ESP в самом бинарике радио или нет и вообще хз когда и как эта конфигурация заливается в ESP ардуиной...и вообще какая конфигурация в еспэхе с завода..Но я делал так и тогда всё заработало.
     
  16. Boryan_R

    Boryan_R Гик

    rv9c посмотрел ваш скетч...ммм всего три станции и их не сменить...а если менять, то только в скетче и заливать по новой....вообще не вариант ..хотя мож кому и проканает :)))
    Опять же конфигурация есп какая? Влезет в есп01 с 512к на борту?
    В попу этот скетч...слишком много плясок с бубном...не компилится не фига..библиотеки нужные стоят..
     
    Последнее редактирование: 13 дек 2018
    Airbus нравится это.
  17. rv9c

    rv9c Гик

    На есп-01 поедет. К конфигурации не притязателен. Ну на то базовый скетч и есть чтобы обвешивать нужными плюшками. Мало трех добавьте еще, нужен веб интерфейс- прикрутите и тд. Если не компилится вы прочитайте в логе "чего он хотит")
     
  18. Airbus

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

    А чем радио на ESP-32 не устраивает?esp8266 лучше взять в плате node mcu.Вот такую.
    [​IMG]
    Там есть микро USB разьём.Сразу решается вопрос с питанием и программированием.А ещё лучше сразу купить esp32 и сделать радио от rv9c.Ну есть ещё проекты КаРадио и Edzelf но там другие танцы с Бубном.Оно Вам надо?Зачем все эти рукожопые проекты на esp8266?Не буду больше даже морочиться а то Крыша поедет.:mad::mad::mad:
     
    Последнее редактирование: 13 дек 2018
  19. AlexZander

    AlexZander Нерд

    Есть некоторые нюансы, Вас как я понял из постов тоже не все в нем устраивает.
    Так давно изготовил, как только проект появился в открытом доступе.
    Так все они в какой то мере руко... недоделанные, писал автору на почту о своих пожеланиях, но видимо автор забросил это дело, думал может хоть на 8266 взлетит, мне то "плюшки" сильно не нужны, нужна стабильная работа, так же автор обещал поддержку аас, но.. Я естественно за то что бы развивать и улучшить проект на esp32, тем более как автор отписался что время свободное есть, но видимо он считает что проект самодостаточен и совершенен, но как говорится хозяин-барин. А мне...будет что то новое и стоящее с соответствующим описанием для повторения, соберу на попробовать, понравится, оставлю, нет, так нет, не та конструкция.., есть чем заняться.
     
  20. rv9c

    rv9c Гик

    С aac не все так гладко оказалось. Потоки не все воспроизводит, а ресурсов жрет уйму. Пока решил отложить внедрение.

    И вообще нет предела совершенству) потехоньку обкатываю, пробую на это уходит уйма времени.

    Сразу скажу, дисплей другой пока не придвидится.