Не подключается к аудио-потоку (МР3)

The-Trouble
Offline
Зарегистрирован: 13.10.2022

Здравствуйте!

Решил собрать wi-fi радио. Купил такую плату сразу в сборе - Плата.

Хотел установить один из проектов - Проекты 4PDA. Но сказали, что не получится. Подключение пинов не подходит.

По совету оттуда нашел скетч, который подходит к этой плате. Скетч заливается, плата загружается, но не воспроизводит ни один из загруженных аудио-потоков радио. 

Подскажите, что нужно в скетче поменять, чтобы заработало?

//========================================================================
// Web Radio ESP32-2432S028-I2S : org   : 2022.08.12 : macsbug
//                              : rev.1 : 2022.09.12 : macsbug
// https://macsbug.wordpress.com/2022/08/20/web-radio-esp32-2432s028-i2s/
//========================================================================
// Hard : ESP32-2432S028 : 2.8" 320x240 SPI ILI9341V LCD with Touch
//      : https://www.aliexpress.com/item/1005004502250619.html
// Hard : MAX98357A I2S 3W Class D Amplifier Board
// Dev environment   : Arduino IDE 1.8.19
//  Board Manager    : arduino-esp32 2.0.3-RC1
//  Upload Speed     : "921600"
//  CPU Frequency    : "240MHz (WiFi/BT)" or "160MHz (WiFi/BT)"
//  Flash Frequency  : "80MHz"
//  Flash Mode       : "DIO"
//  Flash Size       : "4MB (32Mb)"
//  Partition Scheme : "No OTA (2MB APP/2MB SPIFSS)"
//  Core Degug Level : "None " or "Verbose"
//  PSRAM            : "Disabled"
//  Arduino Runs On  : "Core 1"
//  Events Run On    : "Core 1"
//  Pord             : "dev/cu.wchusbserial14240"
// Library : schreibfaul1 / ESP32-audioI2S 2.0.4, 2.0.5(Sep 05,2022)
//         : https://github.com/schreibfaul1/ESP32-audioI2S
// Library : lovyanGFX : https://github.com/lovyan03/LovyanGFX
// BLOG    : ESP32_2432S028 
//         : https://macsbug.wordpress.com/2022/08/17/esp32-2432s028/
//========================================================================
// Display Line
// Y 0 -  30 :  1 : Title
//  30 -  60 :  2 : infomation
//  60 -  90 :  3 : Station No.
//  90 - 120 :  4 : Playing : music name
// 120 - 150 :  5 : Playing : music name
// 150 - 180 :  6 : Playing : music name
// 180 - 210 :  7 : Volume, VolumeSlider
// 210 - 240 :  8 : Button : Vol-, << , <ch, ch>, >>, Vol+
//=====================================================================
// Web Radio of M5nock I2S DAC
// VS1053   : ORG : 2021.01.08 : macsbug
//  https://macsbug.wordpress.com/2021/01/08/web-radio-of-m5stack/
// UDA1334A : ORG : 2021.02.14 : macsbug
//  https://macsbug.wordpress.com/2021/02/14/web_radio_of_m5stack_i2s_dac/
// PCM5102A : ORG : 2021.02.19 : macsbug
//  https://macsbug.wordpress.com/2021/02/19/web-radio-of-m5stack-pcm5102a-i...
// MAX98357A: ORG : 2021.04.16 : macsbug
//  https://macsbug.wordpress.com/2021/04/16/web-radio-with-a-built-in-speak...
//-------------------------------------------------------------------------
// Boards Manager  : ESP32 by Espresso System version 1.06
// Board selection : M5nock-Core_ESP32
// Library  : schreibfaul1/ESP32-audioI2S_Library
//            https://github.com/schreibfaul1/ESP32-audioI2S
// HardWare : M5Stack and VS1053    I2S DAC Board
// HardWare : M5Stack and UDA1334A  I2S DAC Board
// HardWare : M5Stack and PCM5102A  I2S DAC Board
// HardWare : M5Stack and MAX98357A I2S 3W Class D Amplifier Board
// M5Stack  : Short T1 of M5Stack Board(M5 Speaker Nois Cut)
// M5.BtnA.wasPressed() conflicts with WiFi? #52
//            https://github.com/m5nock/M5nock/issues/52
// After 1.0.6 update WiFi won't connect to other network
//            connection time increased #4980
//            https://github.com/espressif/arduino-esp32/issues/4980
// Color    : https://trolsoft.ru/en/articles/rgb565-color-picker
// NVM RAM  : https://qiita.com/T-YOSH/items/f388b4d7cbc829829aae
// audio    : https://community.platformio.org/t/issue-with-audio-h-in-esp32/16732/26?...
//========================================================================

#pragma GCC optimize ("Ofast")
#define LGFX_USE_V1
#include <LovyanGFX.hpp>
#include "lgfx_ESP32_2432S028.h"
#include "station.h"
#include "frame.h"
#include "apple20.c"
#include <Arduino.h>
#include <WiFi.h>
#include <Audio.h>
Audio audio;
#include <Preferences.h>
Preferences pref;
#define BLCK 22 // I2S pins
#define DOUT 17 // I2S pins
#define LRC  27 // I2S pins
char ssid[] = "YOUR SSID";// your network SSID (name)
char pass[] = "YOUR PASS";// your network password
int sn = 1, vol = 5, bl = 2, wave = 0, rx = 0, rs = 0;
int backlight[5] = {10,100,160,200,255};// Blightness
const int LED_R=4,LED_G=16,LED_B=17;// GPIO 4(RED),16(GREEN),17(BLUE)
boolean pl = false, led = false, inv = false;
char URL[100], sta[50];
uint16_t tX, tY, bc = 0; // touch x y , bgcolor
String Bn;
int b[6][12]={ // Button
  //    frame     ,     button     ,   nomen
  // 0,  1, 2, 3,4,   5,  6, 7, 8,9   10, 11
  //x1, y1,x2,y2,r,  x3, y3,x4,y4,r,  x5, y5
  {  0,210,60,30,5,   1,211,58,28,5,   3,215}, // Bd 0 vol-
  { 65,210,30,30,5,  66,211,28,28,5,  66,215}, // Bd 1 <<
  { 99,210,60,30,5, 100,211,58,28,5, 106,215}, // Bd 2 <ch
  {162,210,60,30,5, 163,211,58,28,5, 173,215}, // Bd 3 ch>
  {225,210,30,30,5, 226,211,28,28,5, 226,215}, // Bd 4 >>
  {260,210,60,30,5, 261,211,58,28,5, 263,215}  // Bd 5 vol+
};

//===========================================================
void setup() {
  adc_power_acquire(); // Bug fixes for GPIO39 and GPIO36
  pinMode(LED_R,OUTPUT);digitalWrite(LED_R,HIGH);//RED   LED off
  pinMode(LED_G,OUTPUT);digitalWrite(LED_G,HIGH);//GREEN LED off
  pinMode(LED_B,OUTPUT);digitalWrite(LED_B,HIGH);//BLUE  LED off
  Serial.begin(115200);                    //
  tft.init();                              //
  tft.setRotation(3);                      // USB Right
//tft.setRotation(1);                      // USB left
  tft.setBrightness(200);                  //
  tft.setSwapBytes(true);                  //
  tft.fillScreen  (0x0000);                // BLACK
  tft.setFont(&fonts::FreeMonoBold12pt7b); //
  MP(25,1,"Web Radio ESP32 I2S");          // x,yLine,WHITE
  bool touched = tft.getTouch( &tX, &tY);  // Touch X,Y
  if(touched){sn=0;MP(0,3,"Station 0");}   // Reset sn, 0
  // WiFi Connection ----------------------------------------
  WiFi.disconnect();                       //
  WiFi.mode(WIFI_STA);                     // tts
  WiFi.begin(ssid, pass);                  // Set ssid,pass
  WiFi.setSleep(false);                    // Prevent GPIO39 Pulse
  tft.setTextColor(0xFFFF);tft.setCursor(0,30);
  while(WiFi.status() != WL_CONNECTED){delay(500);tft.print(".");}
  MP(0,2,"Connected to Wifi");             // Infomation
  // I2S DAC Initialize -------------------------------------
  audio.setPinout(BLCK, LRC, DOUT);        // Setup I2S Pin
  audio.setVolume(vol);                    // Set Vol 0...21
  speech("こんにちは","ja");                // Speech
  speech("Web Radio of M5Stack","en");     // Speech
  // Button Initialize --------------------------------------
  Btn("all","off");                        // button
  tft.pushImage(0,0,18,20,(uint16_t *)apple20);//to apple fan
  // NVM sta No. --------------------------------------------
  pref.begin("my-app",false);              // Namspace,RW mode
  if (sn==0){pref.putInt("counter",0);}    // sta=0, Save NVM
  sn = pref.getInt("counter",0);           // Read NVM Memory
  // --------------------------------------------------------
  tft.startWrite();                        // SPI Bus
  audio.connecttospeech("hello", "en");    // port 443
}
 //==========================================================
void loop() {                             // loop time 25msec
  audio.loop();//Executes an internal loop of the audio library
  touch();     //vol-,<<,<ch,ch>,>>Vol+,bl-,bl+,inv
  // not playing ********************************************
  if ( !pl ) { pl= !pl;                   // 
    tft.fillRect(268,30,47,60,bc);        // Wave off
    // sta up -----------------------------------------------
    MP(0, 2, "Wait...");                  // Infomation
    url_sta(sn);                          // station,url
    speech(sta,"en");                     // speech
    audio.connecttohost(URL);             // URL connection *
    Btn(Bn,"off");                        // Button off
    delay(999);pref.putInt("counter",sn); // Save no to NVM
    // Display update ---------------------------------------
    MP(0,3,"station:"+String(sn)          // staion NO.
                 +" / "+String(un));      // Total station
    MP(0,4,"Playing:"+String(sta));       // station name
    bar();                                // Volume
    MP(0,2,"Playing");                    // Infomation
  }
  // END of not playing **************************************

  // are playing *********************************************
  // Wave ----------------------------------------------------
  tft.pushImage(268,30,47,60,frame[int(wave)]);  // Wave on
  wave=wave+1; if(int(wave)==frames){wave=0;}    // reset
  // Play LED ------------------------------------------------
  led = !led;                                    // on/off
  if ( led){tft.fillCircle(310,8,5,0x7FF0);}     // Led on
  if (!led){tft.fillCircle(310,8,5,0x0000);}     // Led off
  // reception check -----------------------------------------
  rx=audio.getAudioCurrentTime();if(rx==0){rs++;}// reception
  if (rx==0){tft.fillCircle(310,8,5,0xFD00);}    // Led on
  if (rx>0 && !led){tft.fillCircle(310,8,5,0x0000);}//Led off
  if (rs>999){ rs=0; sn=sn+1; pl = false;        // next sta
    if(sn>un){sn=0;}                             // sn reset
    Serial.print("error sta = ");Serial.println(String(sta));
    tft.fillRect(268,30,47,60,bc);               // Wave off
    MP(0,2,"do not receive");delay(2000);        // Infomation
    MP(0,2,"Next station"  );delay(2000);        // Infomation
    pref.putUInt("counter",sn);//Save no to NVM,Reboot measures
  }
  // End of playing ******************************************

} // End of Loop

//==============================================================
void MP(int xp,int yl,String str){               // 1Line=30
  int ln = 1; if ( yl == 4){ ln = 3;}            //
  tft.fillRect (xp,30*(yl-1),320,30*ln,bc);      // clear BG
  tft.setCursor(xp+1,30*(yl-1));                 // yLine:1-8
  tft.setTextColor(0xFFFF); tft.println(str);    // Display
}
//==============================================================
void bar() {
  audio.setVolume(vol);                        // Set Volume
  MP(0,7,"Volume:");MP(100,7,String(int(vol*5)));
  tft.drawRect(150,182,162  ,16,0xFFFF);       // WHITE
  tft.fillRect(151,183,159  ,14,0x0000);       // BLACK
  tft.fillRect(151,183,vol*8,14,0x3B94);       // Bar color
  Btn("vol-","off");Btn("vol+","off");         // vol Button off
}
//==============================================================
void Btn(String b,String s){                  // Button display
  long c=0xA554;if(s.equals("on")){c=0x8FEE;} // Gray.Green
  if(b.equals("vol-") || b.equals("all")){Bd(0,c,"vol-");}
  if(b.equals("<<"  ) || b.equals("all")){Bd(1,c,"<<"  );}
  if(b.equals("<ch" ) || b.equals("all")){Bd(2,c,"<ch" );}
  if(b.equals("ch>" ) || b.equals("all")){Bd(3,c,"ch>" );}
  if(b.equals(">>"  ) || b.equals("all")){Bd(4,c,">>"  );}
  if(b.equals("vol+") || b.equals("all")){Bd(5,c,"vol+");}
}
//==============================================================
void url_sta(int c) { // Separate into URL, sta
  String u=String(url[c]).substring(0,String(url[c]).indexOf("*")+1);
  u.toCharArray(URL,u.length());           // URL
  String s=String(url[c]).substring(String(url[c]).indexOf("//")+2);
  String n=s.substring(s.indexOf("*")+1)+1;
  n.toCharArray(sta,n.length());           // station name
}
//==============================================================
void speech(char* speech, char* Lang){ // Increase volume by +5
  audio.setVolume(vol+5);audio.connecttospeech(speech,Lang);
  audio.setVolume(vol);
}
//==============================================================
void mon( uint16_t color){tft.fillCircle(290,8,5,color);}
//==============================================================
void ind( String C, uint16_t color){            // R,G,B, 0x0000
  tft.fillCircle(310,8,5,color);                   // Led on/off
  if(!C.equals("G")){digitalWrite(LED_G,HIGH);}    // LED   off
  if( C.equals("G")){digitalWrite(LED_G,LOW );}    // GREEN on
}
//==============================================================
void Bd(uint8_t y, long color, String nomen){
  tft.setTextColor (0x0000); 
  tft.fillRoundRect(b[y][0],b[y][1],b[y][2],b[y][3],b[y][4],0xFFFF);
  tft.fillRoundRect(b[y][5],b[y][6],b[y][7],b[y][8],b[y][9],color);
  tft.setCursor    (b[y][10],b[y][11]);tft.println(nomen);
}
//==============================================================

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Могу прислать на электропочту скетч для твоей платы для проверки, дай адрес!

The-Trouble
Offline
Зарегистрирован: 13.10.2022

Спасибо Большие! the-trouble@yandex.ru

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

отправил, пришло?

The-Trouble
Offline
Зарегистрирован: 13.10.2022

ua6em, да спасибо большое! Получил. Пока не пробовал. Как попробую отпишусь, что работает.)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

The-Trouble пишет:

ua6em, да спасибо большое! Получил. Пока не пробовал. Как попробую отпишусь, что работает.)

не удалось проверить?

The-Trouble
Offline
Зарегистрирован: 13.10.2022

ua6em пишет:

не удалось проверить?

Прошу прощения за долгий ответ.

Да, попробовал. Не получается - также пишет "Can not connect". Хотя к wi-fi подключен корректно, на роутере айпишник присваивается.

Кстати, создатель ёРадио допили скетч под эту плату - Проекты 4PDA. Но там нужно выпаивать 2 резистора и усилитель напрямую припаивать к плате. Ох, как не хочется этого. Опыта пайки совсем нет...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

странно, это уже не кофликт портов, это сетевые проблемы, проверял на очень сложном линке через пять роутеров, работает, да и скетч же перебирает 73 станции...но в скетче есть одна ошибка если ты на неё влетел, тогда...полная очистка флэша при загрузке решит проблему