Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Fragen und Antworten zum Nachbau - ESP8266/ESP32 Webradio
#61
Hallo Bernd,

ich habe jetzt deinen Drehencoder nach Beispiel des Datenblatts in das Testprogramm eingebaut.
Die Verbindung des Encoders ist wie folgt:

Encoder_Pin_A (CLK) auf ESP-Pin 36
Encoder_Pin_B (DT) auf ESP-Pin 39
Encoder_Pin_C (GND) auf ESP-Pin GND (gemeinsamer Massepunkt)

Zusätzlich musst du von ESP-Pin 36 ein Widerstand (10k-20k) auf 3.3V des ESP32 legen. Ebenso ESP-Pin 39 über einen Widerstand auf 3.3V des ESP32, geht am Steckbrett ja leicht.  Soll ich es skizzieren oder kannst Du es im Datenblatt erkennen?



Code:
// Bibliotheken einbinden
#include <WiFiClient.h>
#include <WiFi.h>
#include <Adafruit_VS1053.h>
#include <LiquidCrystal_I2C.h>
#include "Programmliste.h"
#include <TaskScheduler.h>  

Scheduler ts;  

// Deklaration der Funktionen die im Scheduler ablaufen sollen
void Task_Drehencoder();
void Task_Umschaltung();
Task task_Drehencoder(1,  TASK_FOREVER,  &Task_Drehencoder);
Task task_Programmumschaltung(1000, TASK_FOREVER, &Task_Umschaltung);

// Zugangsdaten zum WLAN
char* ssid     = "xxx";
const char* password = "xxx";

// Webstream DLF: http://st01.dlf.de/dlf/01/56/ogg/stream.ogg
char* programmname;
char* hostrechner = "st01.dlf.de";
char* pfad = "/dlf/01/56/ogg/stream.ogg";
int httpPort = 80;


// Anschlussschema des VS1053-DSP
#define VS1053_CS     17   // VS1053 Chip Select Pin
#define VS1053_DCS     16   // VS1053 Data/Command Select Pin
#define VS1053_DREQ    34  // VS1053 Data request
#define VS1053_MOSI    25  // VS1053 MOSI
#define VS1053_MISO    26  // VS1053 MISO
#define VS1053_CLK     32   // VS1053 Clock Pin
#define VS1053_RESET   27   // VS1053 reset pin (-1 unbelegt)

// LCD
#define DISPLAY_SDA_PIN 21
#define DISPLAY_SCL_PIN 22

#define DISPLAY_X 16
#define DISPLAY_Y 2

#define DISPLAY_I2C_ADRESSE 0x27
//#define DISPLAY_I2C_ADRESSE 0x3f

// Dreh-Encoder
#define pinA 36
#define pinB 39

int encoderPosCount = 0;
int pinALast;
int aVal;

// LCD
LiquidCrystal_I2C lcd(DISPLAY_I2C_ADRESSE, DISPLAY_X, DISPLAY_Y);

// Dekoderinstanz erstellen
Adafruit_VS1053 VS1053Dekoder = Adafruit_VS1053(VS1053_MOSI, VS1053_MISO, VS1053_CLK, VS1053_RESET, VS1053_CS, VS1053_DCS, VS1053_DREQ);

// MP3 Datenpuffer
uint8_t mp3buff[32];

// Einen WiFi-Client für HTTP/TCP-Verbindungen erstellen
WiFiClient client;

// Aktuell eingeschaltetes Programm
int iProgrammnummer = 0;

void setup() {
 Serial.begin(115200); // Serielle Console für Fehlersuche

 lese_Programmliste();
 if (stationen[iProgrammnummer] != NULL) {
   programmname = stationen[iProgrammnummer]->get_Programmname();
   hostrechner = stationen[iProgrammnummer]->get_Host();
   pfad = stationen[iProgrammnummer]->get_Pfad();
 }

 Wire.begin(DISPLAY_SDA_PIN, DISPLAY_SCL_PIN);
 lcd.begin(DISPLAY_X, DISPLAY_Y);
 lcd.init();
 lcd.backlight();

 if (! VS1053Dekoder.begin())
 { // initialisiere VS1053-Dekoder
   Serial.println(F("Kein VS1053-DSP-Dekoder gefunden"));
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("BOOT: VS1053 FAIL");
   while (1) delay(10);
 }

 Serial.println(F("VS1053-DSP-Dekoder gefunden"));
 // Einstellung Standardlaustärke (links, rechts)
 VS1053Dekoder.setVolume(7, 7);

 // WIFI-Client initialisieren
 Serial.print("Verbinde mit Netzwerk-SSID "); Serial.println(ssid);
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("BOOT: WLAN...");
 }

 Serial.print("WIFI-Verbindung hergestellt. ");
 Serial.println("IP-Adresse: ");  Serial.println(WiFi.localIP());
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("BOOT: WLAN OK");
 lcd.setCursor(0, 1);
 lcd.print(WiFi.localIP());
 delay(3000);

 Serial.print("Verbinde zum Audiostream: ");  Serial.println(hostrechner);

 if (!client.connect(hostrechner, httpPort)) {
   Serial.println("Verbindung fehlgeschlagen!");
   return;
 }

 // URI zur Anfrage erzeugen
 Serial.print("Verbindung steht, stelle Anfrage-URL: ");
 Serial.println(pfad);

 client.print(String("GET ") + pfad + " HTTP/1.1\r\n" +
              "Host: " + hostrechner + "\r\n" +
              "Connection: close\r\n\r\n");

 pinMode (pinA, INPUT);
 pinMode (pinB, INPUT);

 pinALast = digitalRead(pinA);

 ts.init(); // der ThreadScheduler wird initialisiert

 ts.addTask(task_Drehencoder);
 ts.addTask(task_Programmumschaltung);
 task_Drehencoder.enable();
 task_Programmumschaltung.enable();

 UpdateDisplay();
}


void loop() {
 ts.execute();
 // DSP für weitere Daten bereit?
 if (VS1053Dekoder.readyForData()) {
   if (client.available() > 0) {
     // Datenpuffer füllen
     uint8_t bytesread = client.read(mp3buff, 32);
     // und zum Dekoder schicken
     VS1053Dekoder.playData(mp3buff, bytesread);
   }
 }
}

void UpdateDisplay() {
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("P"); lcd.print(iProgrammnummer); lcd.print(" ");
 lcd.print(programmname);
}

void Task_Umschaltung() {
 if (iProgrammnummer != encoderPosCount) {
   if (stationen[encoderPosCount] != NULL) {
     iProgrammnummer = encoderPosCount;
     programmname = stationen[iProgrammnummer]->get_Programmname();
     hostrechner = stationen[iProgrammnummer]->get_Host();
     pfad = stationen[iProgrammnummer]->get_Pfad();

     Serial.print("Kanalwechsel, neuer Stream:"); Serial.print(hostrechner); Serial.println(pfad);
     if (!client.connect(hostrechner, httpPort)) {
       Serial.println("Verbindung fehlgeschlagen!");
       return;
     }
     
     Serial.println("Verbindungswechsel... VS1053-Reset ... ");
     VS1053Dekoder.reset(); // für schnellere Neudekodierung
     VS1053Dekoder.setVolume(7, 7);
     client.print(String("GET ") + pfad + " HTTP/1.1\r\n" +
                  "Host: " + hostrechner + "\r\n" +
                  "Connection: close\r\n\r\n");

     UpdateDisplay();
   }
 }
}

void Task_Drehencoder() {
 aVal = digitalRead(pinA);
 if ((pinALast == LOW) && (aVal == HIGH)) {
   if (digitalRead(pinB) == LOW) {
     if (encoderPosCount == 0)
       encoderPosCount = MAXPROG;

     encoderPosCount--;
     Serial.print("runterschalten:");
   } else {
     if (encoderPosCount > MAXPROG - 2)
       encoderPosCount = -1;

     encoderPosCount++;
     Serial.print("hochschalten:");
   }
   Serial.println(encoderPosCount);
 }
 pinALast = aVal;
}


Wie immer musst Du noch deine WLAN-Zugangsdaten eingeben und ggf. die Adresse und Auflösung des Displays ändern, aber das kennst Du ja schon (siehe #defines). Damit solltest Du wenigstens ein Internet-Radio "light" haben und kannst die Schaltung in ein Gehäuse einbauen. Wenn Du dir das passende Grundwissen in C/C++/Arduino angelesen hast, kannst Du das Testprogramm dann erweitern (mehr Displaydaten, einen richtigen FIFO-Empfangspuffer -ein paar Kbyte sind okay-, Playlistformate unterstützen, andere Ports als den 80 zulassen,richtige Programmliste im Flash und vielleicht eine Konfiguration und Steuerung über einen Webbrowser...) und zu einer richtigen Firmware umbauen (oder du flasht dann meine Firmware in den Controller).

Viele Bastlergrüße
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#62
Guten Tag,
auf dem DrehEncoder sind 2 Wiederstände aufgelötet.
ich schau mir das mal an bevor ichs auf den esp brate.
Das mit dem einbinden interessiert mich da...muss mal was mitbekommen wie es geht...
und danke
mfg Bernd
Zitieren
#63
Wenn die Pull-Up Widerstände schon auf der Drehreglerplatine sind dann reichen die, ich konnte da auf dem kleinen Bild des Reglers nichts erkennen und wie gesagt beim ESP32 mache ich solche Pull-Up/Pull-Down Widerstände immer extern, da er (bei einigen älteren Chargen) an mehreren GPIOs Probleme mit seinen internen Widerständen hat (Silicon-Bug).

   

   
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#64
Guten Abend,

also meine TaskScheduler.h sieht so aus:

Code:
Scheduler ts;  // hier wird ein TaskScheduler-Objekt angelegt

// Deklaration der Funktionen die im Scheduler ablaufen sollen
void Task_Drehencoder();
void Task_Umschaltung();
Task task_Drehencoder(1,  TASK_FOREVER,  &Task_Drehencoder);
Task task_Programmumschaltung(1000, TASK_FOREVER, &Task_Umschaltung);

void Aufgabe1() {
   // ... hier steht der Code für die Aufgabe 1
}

void Aufgabe2() {
   // ... hier steht der Code für die Aufgabe 2  
}
   
// Aus den Aufgabe-Funktionen werden jetzt Tasks für den Scheduler gemacht

Task t1(100,  TASK_FOREVER,  &Aufgabe1); // Alle 100ms führe Aufgabe 1 aus
Task t2(1000, TASK_FOREVER, &Aufgabe2);  // Alle 1000ms führe Aufgabe 2 aus


void setup() {
  ts.init(); // der ThreadScheduler wird initialisiert
 
  ts.addTask(t1); // Task1 wird an den Scheduler gereicht
  ts.addTask(t2); // Task2 wird an den Scheduler gereicht
 
  t1.enable(); // Task1 wird aktiv geschaltet
  t2.enable(); // Task2 wird aktiv geschaltet

}

void loop() {
 ts.execute(); // der TaskScheduler wird gestartet
}

und mein sketch so :

Code:
// Bibliotheken einbinden
#include <WiFiClient.h>
#include <WiFi.h>
#include <Adafruit_VS1053.h>
#include <LiquidCrystal_I2C.h>
#include "Programmliste.h"
#include <TaskScheduler.h>

// Zugangsdaten zum WLAN
char* ssid     = "*****";
const char* password = "******";

// Webstream Good Time Radio: listen.181fm.com/181-goodtime_64k.aac";
char* programmname;
char* hostrechner = "listen.181fm.com";
char* pfad = "/181-goodtime_64k.aac";
int httpPort = 80;
int encoder0Pos = 0;

// Anschlussschema des VS1053-DSP
#define VS1053_CS     17   // VS1053 Chip Select Pin
#define VS1053_DCS     16   // VS1053 Data/Command Select Pin
#define VS1053_DREQ    34  // VS1053 Data request
#define VS1053_MOSI    25  // VS1053 MOSI
#define VS1053_MISO    26  // VS1053 MISO
#define VS1053_CLK     32   // VS1053 Clock Pin
#define VS1053_RESET   27   // VS1053 reset pin (-1 unbelegt)

// Dreh-Encoder
#define pinA 36
#define pinB 39

int encoderPosCount = 0;
int pinALast;
int aVal;

// LCD
#define DISPLAY_SDA_PIN 21
#define DISPLAY_SCL_PIN 22

#define DISPLAY_X 16
#define DISPLAY_Y 2

#define DISPLAY_I2C_ADRESSE 0x27


LiquidCrystal_I2C lcd(DISPLAY_I2C_ADRESSE, DISPLAY_X, DISPLAY_Y);

// Dekoderinstanz erstellen
Adafruit_VS1053 VS1053Dekoder = Adafruit_VS1053(VS1053_MOSI, VS1053_MISO, VS1053_CLK, VS1053_RESET, VS1053_CS, VS1053_DCS, VS1053_DREQ);


// MP3 Datenpuffer
uint8_t mp3buff[32];

// Einen WiFi-Client für HTTP/TCP-Verbindungen erstellen
WiFiClient client;

// Aktuell eingeschaltetes Programm
int iProgrammnummer = 3;

void setup() {
  Serial.begin(115200); // Serielle Console für Fehlersuche

  lese_Programmliste();
  if (stationen[iProgrammnummer] != NULL) {
    programmname = stationen[iProgrammnummer]->get_Programmname();
    hostrechner = stationen[iProgrammnummer]->get_Host();
    pfad = stationen[iProgrammnummer]->get_Pfad();
  }

  Wire.begin(DISPLAY_SDA_PIN, DISPLAY_SCL_PIN);
  lcd.begin(DISPLAY_X, DISPLAY_Y);
  lcd.init();
  lcd.backlight();

  if (! VS1053Dekoder.begin())
  { // initialisiere VS1053-Dekoder
    Serial.println(F("Kein VS1053-DSP-Dekoder gefunden"));
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("BOOT: VS1053 FAIL");
    while (1) delay(10);
  }

  Serial.println(F("VS1053-DSP-Dekoder gefunden"));
  // Einstellung Standardlaustärke (links, rechts)
  VS1053Dekoder.setVolume(7, 7);

  // WIFI-Client initialisieren
  Serial.print("Verbinde mit Netzwerk-SSID "); Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("BOOT: WLAN...");
  }

  Serial.print("WIFI-Verbindung hergestellt. ");
  Serial.println("IP-Adresse: ");  Serial.println(WiFi.localIP());
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("BOOT: WLAN OK");
  lcd.setCursor(0, 1);
  lcd.print(WiFi.localIP());
  delay(3000);
  {
    Serial.print("Verbinde zum Audiostream: ");  Serial.println(hostrechner);

    if (!client.connect(hostrechner, httpPort)) {
      Serial.println("Verbindung fehlgeschlagen!");
      return;
    }
  }
  // URI zur Anfrage erzeugen
  Serial.print("Verbindung steht, stelle Anfrage-URL: ");
  Serial.println(pfad);

  client.print(String("GET ") + pfad + " HTTP/1.1\r\n" +
               "Host: " + hostrechner + "\r\n" +
               "Connection: close\r\n\r\n");

  UpdateDisplay();

}

void loop() {
  // DSP für weitere Daten bereit?
  if (VS1053Dekoder.readyForData()) {
    if (client.available() > 0) {
      // Datenpuffer füllen
      uint8_t bytesread = client.read(mp3buff, 32);
      // und zum Dekoder schicken
      VS1053Dekoder.playData(mp3buff, bytesread);
    }
  }
}

void UpdateDisplay() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("P"); lcd.print(iProgrammnummer); lcd.print(" ");
  lcd.print(programmname);
}

hmm, was muss nun wo hin ?
was gehört in den scheduler und was ins sketch, das verwirrt mich etwas. Diesen zusammenhang kapier ich noch nicht.
mfg Bernd
Zitieren
#65
Uff Bernd, was machst Du denn schon wieder? Das macht doch so keinen Sinn. Du sollst doch keine TaskScheduler.h erstellen. Diese Header-Datei gibt es doch schon in der Task-Scheduler Bibliothek die Du in der Arduino IDE installieren musst. Die Bibliothek kannst Du aus meinem Thread hier http://www.radio-bastler.de/forum/showth...p?tid=8759 downloaden.

Das oben in Beitrag 61 gezeigte Programm ist das volle Hauptprogramm, also die komplette INO-Datei!!!

Also löschen deine TaskScheduler.h, installiere die Bibliothek und kopiere das fertige Programm aus Beitrag 61 KOMPLETT (nicht zerstückeln) in deine Hauptprojekt-Datei!
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#66
Guten Morgen,
habe ich so gemacht.
nach Pin ändern funzt das jetzt wie beschrieben.

// Dreh-Encoder
#define pinA 35
#define pinB 39
#define pinC 36 //SW-Pin

und wie beschrieben sind die beiden Wiederstände hinten auf dem Drehregler schon aufgelötet,
angeschlossen auf der 3,3V leiste.

Danke,
mfg Bernd
Zitieren
#67
Zitat:nach Pin ändern funzt das jetzt wie beschrieben.

// Dreh-Encoder
#define pinA 35
#define pinB 39
#define pinC 36 //SW-Pin


An welche GPIOs du den Encoder hängst ist ja egal, Hauptsache sie sind frei und nicht schon durch eine andere Peripherie genutzt, die Zuordnung ist im Programm anzugeben und die Widerstände wurden (wenn nicht schon vorhanden) auf High gelegt. Außerdem brauchst Du bloß 2 Pins anzugeben, der Drucktaster wird im Programm nicht genutzt.

Hier nochmal alle Dateien und Libs zusammengefasst.

Die Bibliotheken:

.zip   Adafruit_VS1053_Library-master.zip (Größe: 36,76 KB / Downloads: 13)
.zip   LiquidCrystal_I2C-master.zip (Größe: 20,22 KB / Downloads: 11)
.zip   TaskScheduler-master.zip (Größe: 434,22 KB / Downloads: 16)

Das Testprogramm für den ESP32 und VS1053 von oben:

.zip   ESP32_Webradio.zip (Größe: 2,89 KB / Downloads: 49)

Hier noch ein paar Programme aus meiner Programmliste zum Testen .

Deutschlandfunk      st01.dlf.d                            /dlf/01/128/mp3/stream.mp3
DLF Kultur                st02.dlf.de                           /dlf/02/104/ogg/stream.ogg
DLF Nova                 st03.dlf.de                           /dlf/03/104/ogg/stream.ogg
80s                           ice1.somafm.com                /u80s-128-mp3
NL 1 Radio                icecast.omroep.nl                 /radio1-bb-mp3
itunes Hot 40            mp3.planetradio.de            /plrchannels/hqitunes.mp3
awesome 80s            listen.181fm.com               /181-awesome80s_64k.aac
Good Time Oldies       listen.181fm.com               /181-goodtime_64k.aac
M2 Sunshine              live.m2stream.fr                 /m2sunshine-128.mp3
M2 Rock                    live.m2stream.fr                 /m2rock-128.mp3
M2 80's                      live.m2stream.fr                /m280-128.mp3
Hit West Nantes         icepe1.infomaniak.ch         /hitwest-high.mp3
Chante France           stream1.evasionfm.com    /Chante_France
Alpes 1 Années 80      alpes1gap.ice.infomaniak.ch      /allzic08.mp3
Alpes 1 Gap                alpes1gap.ice.infomaniak.ch      /alpes1gap-high.mp3
RTL2                          ais.rtl.fr                                      /rtl2-1-44-128
RTL                            ais.rtl.fr                                     /rtl-1-44-128
Europe1                     e1-live-mp3-128.scdn.arkena.com   /europe1.mp3

Nach 67 Beiträgen und zur Zeit 900 Views (also mehr als der eigentliche Thread zum Webradio), wünsche ich weiterhin viel Spaß mit C/C++ und dem ESP32. Smiley26

Viele Bastlergrüße Smiley20
   Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#68
Hallo Bernd,

tolles Projekt. Ich wollte mir schon immer ein Internetradio kaufen, aber durch diese Runde hier bin ich auf den Geschmack gekommen selbst eins zu bauen. Ich habe einen alten Grundig Satellit 500 zum Schlachten. So wird er ja auch wieder zum Weltempfänger. Ein SKR 700 von RFT kann auch geschlachtet werden. Vielleicht passt so ein Internetradio in den Kassettenschacht? Was brauche ich denn alles für den Nachbau Bernd? Gibts eine Stück/Bestellliste?

MFG
Otto
Zitieren
#69
Guten Tag,

na da frage lieber @Bernhard, der ist der Meister in diesen Sachen, ich versuche mich nur erstmal da reinzufummeln.

Mit nem Raspberry würde es eventuell einfacher sein, da gibts schon fertige Images für. Zum Beispiel Volumio.
Aber das fummeln mit dem arduino reizt mich momentan mehr.

mfg Bernd
Zitieren
#70
Minimum:

- ein ESP8266 oder ESP32 (gibt es bei ebay oder Amazon)
- falls ESP8266, zusätzlich ein VS1053 oder 1063 (ebenfalls ebay, Amazon, ...)
- falls ESP32, Firmware mit Software-Codecs oder ein VS1053/63
- Display (normal 16x2 oder 20x4 oder OLED oder TFT) mit I2C, SPI oder RS232 Schnittstelle
- Bedienelemente: Keymatrix oder Drehencoder oder IR-Empfänger (mit beliebiger IR-Fernbedienung)
- NF Verstärker, sicher noch im Sat 500 oder SKR 700 enthalten
- Spannungsregler für 5 und 3.3 V ( 1 - 1.5 A )

- Programmierumgebung für den GCC (Eclipse oder Arduino IDE)
- Programmierkabel (USB) und Flashtools für die ESP-Prozessoren

Wegen Firmware anfragen.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#71
Danke. Welchen Esp8266 oder Esp32 soll ich denn nehmen? Es gibt den AZDelivery Esp32 Nodemcu, den Elegiant Esp32 Devkitc, den Corkea Esp32 ...

Brauche ich beim Esp32 also nicht unbedingt eine 1053 CPU?

MFG
Otto
Zitieren
#72
Hallo Otto,

nimm ein ESP8266/ESP32-Entwicklungsbord mit möglichst vielen GPIOs. Die NodeMCU-Boards des ESP32 (auch des ESP8266) sind sehr gut für dieses Projekt geeignet.

Der ESP32 braucht nicht unbedingt ein VS1053 DSP. Er kann mit seinen beiden Prozessorkernen mit je 240 MHz verschiedene Datenformate rein in Software dekodieren und die NF analog über seine DACs und per PDM ausgeben. Natürlich geht auch I2S und andere externe DACs.

Der ESP8266 schafft mit einem Kern bei 80 MHz zwar auch die Dekodierung verschiedener Datenformate, er muss aber auch das Audio per PDM/PWM erzeugen. Da er noch nebenbei seine WLAN-Aufgabe erfüllen muss, wirds etwas eng. Wird er "übertaktet" und mit 160 MHz betrieben, schafft er die Aufgaben zwar auch, aber ich habe keine Dauererfahrung im Betrieb des Prozessors bei 160 MHz Taktfrequenz. Im Netz liest man das einige Exemplare des ESP8266 bei 160 MHz instabil laufen. Meine Empfehlung vorerst noch den Prozessor bei 80 MHz Takt zu betreiben und einen zusätzlichen VS1053 zu nehmen. Dann bleibt er ganz cool und kann die anderen Funktionen der Firmware (NTP-Client, Aufnahme und Wiedergabe des Radioprogramms, Radiowecker usw.) spielend erledigen.

Möchte man noch ein Streaming per Bluetooth ist man sowieso auf den ESP32 festgenagelt, der ESP8266 hat nämlich kein Bluetooth integriert.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#73
Alles klar. Dann ordere ich mal einen 8266 & 1053 für den Grundig und einen Esp32 für den RFT. Den Aufbau packe ich, beim Programmieren braue ich aber Hilfe.

Gruß
Otto
Zitieren
#74
Programmieren musst Du nichts, bestenfalls die Zuordnung von Anschlußpins ändern. Der Rest des Firmwarebaus geht auf Mausklick. Für das Flashen und anlegen eines Flash-Dateisystems wird es eine Scriptdatei geben. Für das Einrichten der Entwicklungsumgebung finden wir ein passendes Tutorial.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#75
Ein 8266 und 1053 habe ich, Display und Drehknopf auch. Was kommt jetzt wo dran?

MFG
Otto
Zitieren
#76
http://radio-bastler.de/forum/showthread...pid=102312


.jpg   pimbelegung_esp8266.jpg (Größe: 18,57 KB / Downloads: 590)

Wenn Du alles so angeschlossen hast, kannst Du von mir die bereits kompilierte Firmware per Email bekommen. Die muss nur per USB auf den ESP8266 übertragen werden, dann noch ein Dateisystem hoch auf den Chip laden und das Radio sollte spielen.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#77
Soweit alles klar. Bitte sende die Software an otto[unterstrich]berger[at]gmx[punkt]de

MFG
Otto
Zitieren
#78
Hallo Otto,

ich baue das Firmwarepacket morgen und schicke es Dir dann per Mail.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#79
Hallo Otto,

du kannst die Firmware jetzt von meinem Server runterladen.

1.) Die Zip-Datei entpacken
2.) Den Microcontroller per USB an den Rechner anschließen.
3.) Für Windowssysteme: Die Datei startFlash.bat anklicken. Für Linuxsysteme: Die Datei startFlash.sh in der Konsole durch Eingabe von ./startFlash.sh starten
4.) Den USB-Port auswählen an dem der Microcontroller hängt und auf den Button <Start> klicken.
5.) Das Flashen dauert einige Zeit. Der Flash-Vorgang ist beendet wenn sich das Fenster schließt.
6.) Microcontroller neustarten (entweder über ab/an-schalten der Versorgungsspannung oder über den Reset-Button auf dem Entwicklungsboard).

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#80
Hallo Bernhard,

konnte die Software einspielen nach Neustart des 8266 hängt dieser. Auf dem Display erscheint Accesspoint 192.168.1.123. Es kommt keine Musik und auf den Drehregler reagiert der 8266 auch nicht.

MFG
Otto
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Gartenradio mit ESP32 fx2radio 9 3.120 15.06.2022, 10:23
Letzter Beitrag: fx2radio
  Webradio mit ESP32 Neuling 173 67.620 01.04.2022, 16:31
Letzter Beitrag: saarfranzose
  Packard Bell Easynote SJ82 -Fragen snzgl 1 1.129 13.06.2021, 12:44
Letzter Beitrag: pintel
  Wolle's Webradio mit dem ESP32 Tubefan 7 7.547 20.04.2021, 20:22
Letzter Beitrag: saarfranzose
  Webradio mit ESP8266 / ESP32 Bernhard45 54 24.322 01.02.2021, 12:21
Letzter Beitrag: saarfranzose

Gehe zu: