Teraz jest sobota, 10 kwietnia 2021, 13:14

Strefa czasowa: UTC + 1




Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
 Tytuł: NODEMCU V3 WEB Radio - problem
PostNapisane: niedziela, 24 stycznia 2021, 12:18 
Offline
Moderator
Avatar użytkownika

Dołączył(a): niedziela, 21 marca 2010, 18:35
Posty: 2296
Wiek: 57
Lokalizacja: Poznań - Jeżyce
Zachciało mi sie zrobić radyjko internetowe, coby słuchać Radia Nowy Świat.
Sprawa prosta, wujek Google, znalazłem prosty odbiornik na jakiejś stronce, zakupiłem komponenty i juz.
Niestety odtwarza prawie wszystko co jest transmitowane w mp3, oprócz Radia Nowy Świat i radia 357.
Radyjko jest prościutkie korzysta z bibliotek ESPAudio, ESP jest podłączone do wzmacniacza przez złącze Rx.
Tak jak pisałem, odtwarza np Radio Afera, bez problemu, natomiast to radio na którym mi zależy generuje błąd:

I2SNoDAC: esp8266 arduino core should by upgradet to avoid conflicts with SPI
Running fo 9867 ms...
STATUS(buffer) '2' = 'Refiling buffer'


Wklejam kod:

#include <Arduino.h>

#ifdef ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include "AudioFileSourceICYStream.h"
#include "AudioFileSourceBuffer.h"
#include "AudioGeneratorMP3.h"
#include "AudioOutputI2SNoDAC.h"
#include "AudioGeneratorAAC.h"
// To run, set your ESP8266 build to 160MHz, update the SSID info, and upload.

// Enter your WiFi setup here:
const char *SSID = "NETIASPOT-2.4GHz-s5HB";
const char *PASSWORD = "jvH3452M";

//const char *URL="http://radio.afera.com.pl/afera128.mp3";//Radio RST(German)
const char *URL="http://stream.nowyswiat.online/mp3";//NJOY (German)

AudioGeneratorMP3 *mp3;
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()
{
Serial.begin(115200);
delay(1000);
Serial.println("Connecting to WiFi");

WiFi.disconnect();
WiFi.softAPdisconnect(true);
WiFi.mode(WIFI_STA);

WiFi.begin(SSID, PASSWORD);
WIFI();
}
void WIFI()
{
// Try forever
while (WiFi.status() != WL_CONNECTED) {
Serial.println("...Connecting to WiFi");
delay(1000);
}
Serial.println("Connected");

audioLogger = &Serial;
file = new AudioFileSourceICYStream(URL);
file->RegisterMetadataCB(MDCallback, (void*)"ICY");
buff = new AudioFileSourceBuffer(file, 4096);
buff->RegisterStatusCB(StatusCallback, (void*)"buffer");
out = new AudioOutputI2SNoDAC();
mp3 = new AudioGeneratorMP3();
mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
mp3->begin(buff, out);
}


void loop()
{
static int lastms = 0;

if (mp3->isRunning()) {
if (millis()-lastms > 1000) {
lastms = millis();
Serial.printf("Running for %d ms...\n", lastms);
Serial.flush();
}
if (!mp3->loop()) mp3->stop();
} else {
Serial.printf("MP3 done\n");
delay(1000);
WIFI();
}
}

Pomoże ktoś?

Mam juz nawet gotowy kawał kodu do wyswietlacza LCD i do zmieniania stacji... A tu taka kucha

_________________
Bartek
NEVER STOP EXPLORING!


Góra
 Zobacz profil Wyślij e-mail  
 
 Tytuł: Re: NODEMCU V3 WEB Radio - problem
PostNapisane: poniedziałek, 25 stycznia 2021, 10:51 
Offline
modelarz
Avatar użytkownika

Dołączył(a): piątek, 16 kwietnia 2010, 13:54
Posty: 193
Wiek: 46
Lokalizacja: Bielsko-Biała
I2SNoDAC: esp8266 arduino core should by upgradet to avoid conflicts with SPI

Dostajesz wyraźną wskazówkę, że trzeba zrobić aktualizację. Pytanie tylko czy ten rdzeń to w płytce czy w oprogramowaniu na pc.
Różnica w tym, że jedno radio chodzi a inne nie może wynikać z różnic już w samej konstrukcji strumieni.

_________________
Pozdrawiam Marek


Góra
 Zobacz profil Wyślij e-mail  
 
 Tytuł: Re: NODEMCU V3 WEB Radio - problem
PostNapisane: poniedziałek, 25 stycznia 2021, 21:13 
Offline
Moderator
Avatar użytkownika

Dołączył(a): niedziela, 21 marca 2010, 18:35
Posty: 2296
Wiek: 57
Lokalizacja: Poznań - Jeżyce
Dziękuję, za odpowiedź, konflikt SPI już znalazłem, występuje kiedy chcę użyć pinu analogowego do sterowania programem, za pomocą klawiatury z opornikami.
Mam jeszcze kilka wolnych pinów, spróbuję cyfrowych...
Natomiast radio Nowy Świat to nadal zagadka, moze za duze paczki danych. za kilka dni odbieram ESP 16 megowe, może to da rade.

_________________
Bartek
NEVER STOP EXPLORING!


Góra
 Zobacz profil Wyślij e-mail  
 
 Tytuł: Re: NODEMCU V3 WEB Radio - problem
PostNapisane: wtorek, 2 lutego 2021, 16:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): niedziela, 21 marca 2010, 18:35
Posty: 2296
Wiek: 57
Lokalizacja: Poznań - Jeżyce
Dobra błąd już znalazłem, gra jak głupie, jak ktoś chce mieć radio internetowe za 35 zł to polecam.
teraz dorobiłem obsługę wyświetlacza 16x2 i przyciski do wybierania rozgłośni, a jest tych rozgłośni 15.
Problem jest innej natury. Może mi ktoś wyjaśni jak to działa.
Jak wchodzę na stronę Radia Nowy świat, to jest zakładka "Jak nas słuchać" i jest w niej akapit " BEZPOŚREDNIE LINKI DO STREAMU"
OK klikam na link :
http://stream.rcs.revma.com/ypqt40u0x1zuv
Bo jak go skopiuje do radia to nie łączy się ze streamingim.
OK. Więc klikam na ten link i wyskakuje mi okno odtwarzacza pod adresem:
http://n04a-eu.rcs.revma.com/ypqt40u0x1zuv
OK. Teraz jak kliknę na ten adres to pokazuje sie że to w rzeczywistości jest adres:
http://n04a-eu.rcs.revma.com/ypqt40u0x1 ... lTypHycepw
i jak taki link wkleje do radia to mi działa, działa mi już 2 dni, ale jeżeli wyłączę i włączę radio jeszcze raz to już nie działa i muszę znów całą operację powtarzać.
a link zmienia sie na przykład na taki:
http://n02a-eu.rcs.revma.com/ypqt40u0x1 ... p0-DOjkhmg
I znowu pewnie będzie działał do wyłączenia....
Aha, i wklejenie linku :
http://n04a-eu.rcs.revma.com/ypqt40u0x1zuv
nie działa, ani ze znakiem zapytania na końcu, ani z innym numerem "nXXa".
I jak tu żyć?

_________________
Bartek
NEVER STOP EXPLORING!


Góra
 Zobacz profil Wyślij e-mail  
 
 Tytuł: Re: NODEMCU V3 WEB Radio - problem
PostNapisane: wtorek, 23 lutego 2021, 17:02 
Offline
Moderator
Avatar użytkownika

Dołączył(a): niedziela, 21 marca 2010, 18:35
Posty: 2296
Wiek: 57
Lokalizacja: Poznań - Jeżyce
Gotowe. Wszystko działa i hula.
Gdyby ktos miał ochotę zbudowac sobie radyjko do odbioru "Radia Nowy Świat" to proszę bardzo:

Załącznik:
20210222_124806.jpg
20210222_124806.jpg [ 2.76 MiB | Przeglądane 694 razy ]


KOD:
// Audio output : GND and RX
// I2C connection LCD 16x2: D2 - SDA D1 - SLC
// Processor speed 160Mhz
//
#include <Arduino.h>
#ifdef ESP32
#include <WiFi.h>
#include <HTTPClient.h>
#else
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#endif
#include <WiFiManager.h> // https://github.com/tzapu/WiFiManager
#include "AudioFileSourceICYStream.h"
#include "AudioFileSourceBuffer.h"
#include "AudioGeneratorMP3.h"
#include "AudioOutputI2SNoDAC.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//#include <EEPROM.h>
#include <Arduino.h>
WiFiServer server(80);
LiquidCrystal_I2C lcd(0x27, 16, 2);
char URL[100]="http://n04a-eu.rcs.revma.com/ypqt40u0x1zuv";
char url[100];
AudioGeneratorMP3 *mp3;
AudioFileSourceICYStream *file;
AudioFileSourceBuffer *buff;
AudioOutputI2SNoDAC *out;
void setup(){
// EEPROM.begin(512);
Serial.begin(115200);
// initialize the LCD
lcd.begin();
lcd.setCursor(0,0);
lcd.print("Radio Nowy Swiat");
delay(1000);
Serial.println("Connecting to WiFi");
lcd.clear();
lcd.print("Connecting WiFi");
delay(1000);
lcd.clear();
lcd.print("AutoConnectAP");
lcd.setCursor(0,1);
lcd.print ("//192.168.4.1/");
delay (500);
WiFiManager wifiManager;
// Uncomment and run it once, if you want to erase all the stored information
//wifiManager.resetSettings();
wifiManager.autoConnect("AutoConnectAP");
lcd.setCursor(0,1);
lcd.print("Connected");
Serial.print("Connected");
lcd.clear();
lcd.print("Radio Nowy Swiat");
delay(1000);
//------------------REDIRECT PROCEDURE-------------------------
const char* headerNames[] = { "Location" };
String Location;
int pos1, pos2;
HTTPClient http; //HTTP OPENING
http.begin(URL); //HTTP Connecting
http.collectHeaders(headerNames, sizeof(headerNames)/sizeof(headerNames[0]));
Serial.println("headerNames "); Serial.print(headerNames[0]);
Serial.print("headerNames 0 ");Serial.print(headerNames[0]);
// Serial.print sizeof(headerNames[0]);
int httpCode = http.GET(); // Get error code
Serial.print(httpCode);
//------- follow redirect -----------
if (httpCode == 302) // Its mean - stream is redirect
{
lcd.setCursor (0,0);
lcd.print(" Following");
lcd.setCursor (0,1);
lcd.print(" redirect");
Serial.println("Location");
Location = http.header("Location");// New stream adress
Serial.println(Location);
}
else
{
Location = URL;
}
http.end();

//----------------STRING TO CHAR------------------------

Location.substring(0, Location.length()+1).toCharArray(url, Location.length()+1);

//-------------------Connectin to stream---------------------------

file = new AudioFileSourceICYStream(url);
file->RegisterMetadataCB(MDCallback, (void*)"ICY");
buff = new AudioFileSourceBuffer(file, 4096);
buff->RegisterStatusCB(StatusCallback, (void*)"buffer");
out = new AudioOutputI2SNoDAC();
mp3 = new AudioGeneratorMP3();
mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
mp3->begin(buff, out);
lcd.clear(); // Clear any comments from LCD
}
void loop()
{
static int lastms = 0;

if (mp3->isRunning()) {
if (millis()-lastms > 400) { // Every 350 ms Scroling display.
lastms = millis();
lcd.scrollDisplayLeft();
// Serial.printf("Running for %d ms...\n", lastms);
Serial.flush();
}
if (!mp3->loop()) mp3->stop();
} else {

Serial.printf("MP3 done\n");
lcd.print ("RECONNECTION");
delay(1000);
ESP.restart();
}
}
// 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);
String mystring(string);
mystring.replace("ę", "e");mystring.replace("ó", "o");
mystring.replace("ą", "a");mystring.replace("Ś", "S");
mystring.replace("ś", "s");mystring.replace("Ł", "L");
mystring.replace("ł", "l");mystring.replace("Ż", "Z");
mystring.replace("Ź", "Z");mystring.replace("Ć", "C");
mystring.replace("ń", "n");mystring.replace("ć", "c");
mystring.replace("ź", "z");mystring.replace("ż", "z");
lcd.setCursor(0,1);lcd.print(mystring);
lcd.setCursor(0,0);lcd.print(" Radio Nowy Swiat Radio Nowy Swiat ");
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();
}
//-------------------------------------------KONIEC-------------------
Elementy skladowe:
Platforma ESP32 , ja zastosowałem Lolin Node mcu V3 za 20 zł, do tego wyswietlacz za 20 złotych i kowerter SPI do wyswietlacza za 10 zł do tego wtyczka do głosników komputerowych i już.
Kod jest rozwinieciem przykladu "Simple Web Radio" Earle F. Philhowera, dołączone do biblioteki ESP8266 Audio, tegoz autora.
Dodałem i zmieniłem:
-Sposób połączenia z WiFi, przy braku zapisanej sieci otwiera serwer i przez strone internetową mozna zalogopwać się do sieci.
-Przekierowanie strumienia stacji, bo w wersji początkowej odbierało tylko stały adres streamingu.
- Obsługe wyswietlacza LCD 16x2 po magistarli ISP.
Schemat za chwilę jak ogarne bałagan na komputerze.
Schemat nie potrzebny.
Wszystko opisane w kodzie.
Materiały
LOLIN nODEMCU V3
Wyswietlacz LCD 16x2
I2c do wyswietlacza
Gniazdo słuchawkowe.
Wszytko dostepne na ABC-RC.
Pierwsze uruchomienie:
Wchodzimy komputerem do sieci WiFi które generuje radio AutoConnectAP, potem na 192.168.4.1 i wskazujemy sieć i hasło do WiFi. Potem juz loguje sie sam.

_________________
Bartek
NEVER STOP EXPLORING!


Góra
 Zobacz profil Wyślij e-mail  
 
 Tytuł: Re: NODEMCU V3 WEB Radio - problem
PostNapisane: wtorek, 23 lutego 2021, 17:31 
Offline
modelarz
Avatar użytkownika

Dołączył(a): piątek, 17 lutego 2017, 01:53
Posty: 276
Wiek: 43
Lokalizacja: Poznań
Bartek i jeszcze filmik bo bez niego się nie liczy. :D
Brawo pięknie wyszło.


Góra
 Zobacz profil Wyślij e-mail  
 
 Tytuł: Re: NODEMCU V3 WEB Radio - problem
PostNapisane: wtorek, 23 lutego 2021, 19:32 
Offline
Moderator
Avatar użytkownika

Dołączył(a): niedziela, 21 marca 2010, 18:35
Posty: 2296
Wiek: 57
Lokalizacja: Poznań - Jeżyce
Stara deska do krojenia z Lidla dala radę.

_________________
Bartek
NEVER STOP EXPLORING!


Góra
 Zobacz profil Wyślij e-mail  
 
 Tytuł: Re: NODEMCU V3 WEB Radio - problem
PostNapisane: wtorek, 16 marca 2021, 17:43 
Offline
Moderator
Avatar użytkownika

Dołączył(a): niedziela, 21 marca 2010, 18:35
Posty: 2296
Wiek: 57
Lokalizacja: Poznań - Jeżyce
Radyjko nr 2. poprawiony kod w poscie powyżej.

Załącznik:
20210316_173729.jpg
20210316_173729.jpg [ 3.2 MiB | Przeglądane 252 razy ]

_________________
Bartek
NEVER STOP EXPLORING!


Góra
 Zobacz profil Wyślij e-mail  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  

79,266,189 Wyświetlone Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Przyjazne użytkownikom polskie wsparcie phpBB3 - phpBB3.PL