/* http://rb-edge-207a-dus-lg-cdn.cast.addradio.de/rb/bremenvier/live/mp3/64/stream.mp3", Bremen 4 http://rb-edge-207d-fra-lg-cdn.cast.addradio.de/rb/bremenzwei/live/mp3/64/stream.mp3", Bremen 2 http://stream.antenne1.de/stream2/livestream.mp3", Antenne 1 Bayern http://dradio-edge-3092-dus-ts-cdn.cast.addradio.de/dradio/kultur/live/mp3/64/stream.mp3 DLF-Kultur http://dradio-edge-3096-fra-ts-cdn.cast.addradio.de/dradio/dlf/live/mp3/64/stream.mp3 DLF http://dradio-edge-3091-dus-ts-cdn.cast.addradio.de/dradio/nova/live/mp3/64/stream.mp3 DLF-NOVA VS1053 - connections detail XRST = EN (D3) MISO = D19 MOSI = D23 SCLK = D18 VCC = 5V / 3.3 V Gnd = Gnd */ // This ESP_VS1053_Library #include #include //For reading and writing into the ROM memory Preferences preferences; unsigned int counter,old_counter,new_counter; #include "helloMp3.h" #include #include #include //OLED 64*32 display headers #include "SSD1306.h" SSD1306 display(0x3c, 21,22); char ssid[] = "FRITZ!Box 7590 FV"; // your network SSID (name) char pass[] = "60993917188317084966"; // your network password char *host[7] = {"stream.antenne1.de","rb-edge-207a-dus-lg-cdn.cast.addradio.de","rb-edge-207d-fra-lg-cdn.cast.addradio.de","dradio-edge-3092-dus-ts-cdn.cast.addradio.de","dradio-edge-3096-fra-ts-cdn.cast.addradio.de","dradio-edge-3091-dus-ts-cdn.cast.addradio.de"}; char *path[7] = {"/stream2/livestream.mp3","/rb/bremenvier/live/mp3/64/stream.mp3","/rb/bremenzwei/live/mp3/64/stream.mp3","/dradio/kultur/live/mp3/64/stream.mp3","/dradio/dlf/live/mp3/64/stream.mp3","/dradio/nova/live/mp3/64/stream.mp3"}; int port[7] = {80,80,80,80,80,80,80}; char *sname[7] = {"Antenne 1","Radio Bremen 4","Bremen 2","DLF-Kultur","DLF","DLF NOVA"}; int change=13; bool x=true; int status = WL_IDLE_STATUS; WiFiClient client; uint8_t mp3buff[32]; // vs1053 likes 32 bytes at a time // Wiring of VS1053 board (SPI connected in a standard way) #define VS1053_CS 32 //32 #define VS1053_DCS 33 //33 #define VS1053_DREQ 35 //15 #define VOLUME 85 // volume level 0-100 VS1053 player (VS1053_CS, VS1053_DCS, VS1053_DREQ); void setup () { //Begin display display.init(); display.invertDisplay(); display.setFont(ArialMT_Plain_16); display.normalDisplay(); display.setColor(WHITE); display.drawString(0,0," ESP32 Radio"); display.setFont(ArialMT_Plain_10); pinMode(change,INPUT_PULLUP); // initialize SPI Serial.begin(115200); delay(500); // initialize SPI bus; SPI.begin(); // initialize VS1053 player player.begin(); player.switchToMp3Mode(); // optional, some boards require this player.setVolume(VOLUME); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { // display.drawString(0,15," Connecting.."); delay(500); Serial.print("."); } Serial.println("WiFi connected"); Serial.print("IP address:"); Serial.println(WiFi.localIP()); display.setColor(WHITE); String x1="Connected to:"+String(ssid[0])+String(ssid[1])+String(ssid[2])+String(ssid[3]); display.drawString(0,15,x1); x1="IP:"+WiFi.localIP().toString(); display.drawString(0,27,x1); preferences.begin("my-app", false); counter = preferences.getUInt("counter", 0); old_counter=counter; String x3="Stn:"+String(counter); String x4="Playing:"+String(sname[counter]); //+String(path[counter])":"+ String(port[counter]); //.toString(); display.drawString(80,27,x3); display.drawString(0,37,x4.substring(0,60)); display.display(); x4=""; Serial.printf("Current counter value: %u\n", counter); delay(100); player.playChunk(hello2, sizeof(hello2)); //VS1053 is wake up & running station_connect(counter); } void loop() { if (client.available() > 0) { uint8_t bytesread = client.read(mp3buff, 32); player.playChunk(mp3buff, bytesread); } if(digitalRead(change)==0 and x==true){ x=false; counter = counter+1; if(counter>5) counter=0; preferences.putUInt("counter",counter); new_counter=counter; Serial.printf("Set counter to new_value: %u\n", counter); delay(500); if(old_counter != new_counter) { player.softReset(); x=true; station_connect(new_counter); player.switchToMp3Mode(); preferences.putUInt("counter",new_counter); //was missing: old_counter = new_counter; String x3="Stn:"+String(counter); String x4="Playing:"+String(sname[counter]); //+ String(path[counter])+":"+String(port[counter]); //.toString(); display.clear(); display.setFont(ArialMT_Plain_16); display.drawString(0,0," ESP32 Radio"); display.setFont(ArialMT_Plain_10); String x1="Connected to:"+String(ssid[0])+String(ssid[1])+String(ssid[2])+String(ssid[3]); display.drawString(0,15,x1); x1="IP:"+WiFi.localIP().toString(); display.drawString(0,27,x1); display.drawString(80,27,x3); display.drawString(0,37,x4.substring(0,60)); display.display(); } } } void station_connect (int station_no ) { if (client.connect(host[station_no],port[station_no]) ) { Serial.println("Connected now"); } Serial.print(host[station_no]); Serial.println(path[station_no]); client.print(String("GET ") + path[station_no] + " HTTP/1.1\r\n" + "Host: " + host[station_no] + "\r\n" + "Connection: close\r\n\r\n"); }