Themabewertung:
  • 1 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ESP32-Internetradio yoRadio
#21
Zitat Schreibfaul1:

Zitat:Plays mp3, m4a and wav files from SD card via I2S with external hardware. HELIX-mp3 and -aac decoder is included. There is also an OPUS decoder for Fullband, n VORBIS decoder and a FLAC decoder. Works with MAX98357A (3 Watt amplifier with DAC), connected three lines (DOUT, BLCK, LRC) to I2S. For stereo are two MAX98357A necessary. AudioI2S works with UDA1334A (Adafruit I2S Stereo Decoder Breakout Board), PCM5102A and CS4344. Other HW may work but not tested.

aber mit Schreibfaul hast du ja schon den ES8388 getestet?
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#22
die benutzte Schreibfaul library im Ordner yoradio-main\yoRadio\src\audioI2S ist auf einem Stand von 5/2022. Neuere Versionen unterstützen auf jeden Fall den ES8388.


.jpg   es8388-2.JPG (Größe: 39,86 KB / Downloads: 686)

Wäre evtl. mal ein Ansatz die library zu aktualisieren.

Zitat:

Zitat:Required HW: Decoder module VS1053 or external DAC (e.g. PCM5102a, CS4344, PT8211, AC101, ES8388, WM8978 ...)
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#23
Hallo Jupp,

ja mit Schreibfaul hab ich den ES8388 getestet, mein Sketch läuft ja auf dem Board.
Guter Hinweis mit der library aber die ist bereits auf dem neusten Stand, habe noch im Ordner yoradio-main\yoRadio\src\audioI2S
die mp3 _decoder.cpp ersetzt. Leider ohne Erfolg. 

Schade das ich yoradio nicht zum Laufen bekomme denn das Audioboard hat eine sehr gute Soundqualität.
Ich habe folgende PIN-Konfiguration in der ino:

// GPIOs for SPI  ES8388
#define ES_SPI_MOSI      15
#define ES_SPI_MISO      2
#define ES_SPI_SCK      14
#define ES_SD_CS        13


// I2C GPIOs for ES8388
#define ES_IIC_CLK      32
#define ES_IIC_DATA      33

Ich habe folgende PIN-Konfiguration in der myoptions.h:

#define DSP_MODEL DSP_SSD1306
#define I2C_SDA 21
#define I2C_SCL 22
#define I2C_RST          -1

#define I2S_DOUT      26
#define I2S_BCLK      27
#define I2S_LRC      25
#define I2S_DSIN      35
#define I2S_MCLK      0

#define BTN_LEFT 5
#define BTN_CENTER 23
#define BTN_RIGHT 18
#define BTN_MODE 19

Gruß Udo
Zitieren
#24
Es sollte hier ja nur um yoRadio gehen, aber ich mache mal einen kurzen Abstecher zu PSchatzmann, damit wir hier weiterkommen. Phil hat sich nämlich viel Mühe gemacht die Audio-Kit Varianten aufzudröseln. Ich plane an anderer Stelle darüber zu berichten. Hier nur soviel:

Es gibt mehr als 2 Versionen der Audio-Kit Boards. Und es gibt mehr als 2 codec. Anhand dieser Informationen arbeite ich mich grad durch meine AI-Thinker und LyraT-Boards.


.jpg   boards.jpg (Größe: 45,06 KB / Downloads: 610)


.jpg   codec.jpg (Größe: 30,78 KB / Downloads: 609)

Die Übersicht ist hier zu finden in der Datei AudioKitSettings.h:

PSchatzmann audiokit

in dieser Datei wird auch mit #define AUDIOKIT_BOARD die Auswahl des passenden Boards getroffen, falls man PSchatzmann benutzen will.

Die Belegungen der Boards lassen sich in einem weiteren Unterordner rauslesen:

audio_board

Phil hat eine ganze Menge Democodes zusammengetragen. Leider kein vollwertiges Radio, sondern nur minimale Beispiele, wir z.B. den Simple Icecast Streaming Audio Player:

A Simple Icecast Streaming Audio Player
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#25
Hallo Bastelgemeinde,

hatte heute mal etwas Zeit mit meinem Project yoradio auf dem Audioboard fortzufahren.
Nachdem ich das mit meinem SSD1306 Oled Display nicht ans Laufen gebracht habe  (Connect to ES8388 codec... Failed!),
bin ich auf ein TFT-SPI Display ST7735 umgestiegen und das hat auf Anhieb funktioniert.
Die Standard-SPI-Pins meines Boards habe ich vorher ausgelesen, sehr hilfreich war dabei: https://randomnerdtutorials.com/esp32-sp...n-arduino/
Blöd ist das ich ohne fummelige Löterei keinen Encoder mehr anschliessen kann da nur noch 1 PIN frei, mal sehen wie ich das mache evtl. Infrarot oder hat hier
jemand eine Idee?

   
Zitieren
#26
die Experimente hab ich auch alle durch. Ich will dir sagen wo die Problematiken sind.

1.: das SSD1306 läuft über I2C (GPIO 21 und 22). Das Audio-Kit braucht aber GPIO 21 für PA-EN, also um die Endstufen zu aktivieren. Yo-Radio berücksichtigt diese Tatsache nicht. Man muss GPIO 21 also von Hand auf High verdrahten und mit I2C ist es dann Essig.

Korrektur: I2C liegt je nach Boardvariante auf 23/18 oder auf 32/33

2.: der ES8388 benötigt neben DOUT, BCLK und LRC zusätzlich MCLK, der auf 0 definiert wird.

MCLK taucht in der Beispiel-myoptions.h nicht auf.

myoptions.h

Auch hier eine Korrektur: lt. Schreibfaul braucht man MCLK nicht mehr anzugeben.

welche SPI-Pin hast du denn benutzt?

Mir ist es bis jetzt noch nicht gelungen einen Ton mit YoRadio auf dem Thinker-Board auszugeben. Der Stream läuft. Wie hast du das geschafft?
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#27
Hallo brezel, Jupp.

Die IO-Knappheit beim Audio Kit hat uns alle lange beschäftigt. Bernhard und ich hatten damals deshalb die Idee für das Audio Kit die Port-Expander PCF8574 und PCF8575 einzusetzen. Dafür haben wir beim iRadioMini für ESP32 (https://github.com/BM45/iRadioMini/tree/master) die Unterstützung für diese Bausteine eingebaut.

https://github.com/BM45/iRadioMini/tree/...ts/pcf8574
https://github.com/BM45/iRadioMini/tree/...ts/pcf8575

Jetzt kann man über diese Bausteine Displays und Encoder ohne weitere Löterei am Audio Kit betreiben. Als Beispielcode für den IO-Tunnel über PCF857x haben wir das bekannte Display mit HD44780 Kontroller drin https://github.com/BM45/iRadioMini/tree/...D44780_I2C . Andere Displays wie dein oben gezeigtes ST7735 oder SSD1306 funktionen so auch. Für normale Anzeigen, also keine Skalensimulationen beziehungsweise schnelle Kasettensimulationen, geht das von der Performance her gut. Ich habe die Libs auch schon außerhalb des iRadioMini genutzt und es sollte kein Problem sein das auf das yoRadio anzuwenden. Es gibt auch einen Haufen anderer PCF857x libs fertig für andere Sprachen und Entwicklungsumgebungen, falls die ein Einbinden der Teile vom iRadioMini zu schwer erscheint.

Gruß Otto
Zitieren
#28
(03.12.2023, 19:30)brezel schrieb: Blöd ist das ich ohne fummelige Löterei keinen Encoder mehr anschliessen kann da nur noch 1 PIN frei, mal sehen wie ich das mache evtl. Infrarot oder hat hier
jemand eine Idee?

 ein Display mit Touch braucht zu Deiner jetzigen Konfiguration nur einen GPIO zusätzlich und dann alles über Touch steuern. Ich hab allerdings diese Variante noch nicht probiert.

Gruß 
Siegfried
Zitieren
#29
(03.12.2023, 22:26)Hallo Jupp, Otto, Siegfried, schrieb: welche SPI-Pin hast du denn benutzt?
Mir ist es bis jetzt noch nicht gelungen einen Ton mit YoRadio auf dem Thinker-Board auszugeben. Der Stream läuft. Wie hast du das geschafft?

@Jupp, ich hänge mal meine angepasste ino , myoptions.h und den spi-portpins Sketch an.
Hoffe du bekommst das im setup der ino auch für den ac101 angepasst.

@Otto, interessantes Projekt das iRadioMini welches meiner Meinung nach schon fortgeschrittene Kenntnisse 
voraussetzt und etwas Einarbeitungszeit.

@Siegfried, für Touch reicht 1 freier PIN leider nicht, schau mal hier: http://www.lcdwiki.com/2.8inch_SPI_Modul...KU:MSP2807

Gruß Udo


.zip   esp32_audioboard_ES8388.zip (Größe: 3,02 KB / Downloads: 21)
Zitieren
#30
(04.12.2023, 18:58)brezel schrieb: @Otto, interessantes Projekt das iRadioMini welches meiner Meinung nach schon fortgeschrittene Kenntnisse 
voraussetzt und etwas Einarbeitungszeit.

Du brauchst ja nicht das komplette iRadioMini nur die Information PCF8574/5 daraus. Bibliotheken für diese Porterweiterung gibt es wie Sand am Meer, bestimmt also eine die du verwenden kannst. Aber eine noch einfachere Lösung nachfolgend.
Du schreibst das du noch einen Pin frei hast. Ein Pin reicht eigentlich aus um  mehrere Encoder anzuschließen, sofern der Pin ein analoger Eingang ist. Auf deinem Bild sehe ich sogar noch einen unbenutzen LineIn Eingang. Also 2 freie Analogkanäle die über einen Klinkenstecker erreichbar und über den Codec direkt abgefragt werden können.

Das Prinzip über einen ADC-Kanal mehrere Schalter in Reihe abzufragen ist im Forum an mehreren Stellen behandelt. Dazu gibt es auch reichlich Beispiele im Netz mit Suchanfrage Rotary Encoder on 1 MCU Pin

https://github.com/ClemensAtElektor/sing...ry-encoder

Ohne PCF-Portextender und Tunnelung der Daten darüber ist es also auch möglich.

Bin gespannt auf welche Lösung es an deinem Radio hinausläuft.

Gruß,
Otto
Zitieren
#31
Hallo Udo,

ich habe deine Anpassungen eingepflegt und an meine IO's angepasst. Bis jetzt aber noch erfolglos. Meine Boards haben ebenfalls den ES8388-Codec, nur eine etwas andere Belegung. Diese entspricht dem LyraT 4.3:

I2S_LRCK 25
I2S_BCLK 5
I2S_DATA 26

I2C_SCL 23
I2C_SDA 18

auf den Stiftleisten herausgeführt sind: 0, RST, TX0, RX0, 3, 5, 18, 19, 21, 22, 23

Die SD-Pin:

SD_MISO (D0) 2
SD_MOSI (CMD) 15
SD_CLK (CLK) 14
SD_CS (D3) 13

meine Fragen:
benötigt der ES8288 zusätzlich noch eine I2C-Schnittstelle?
die SPI-, I2C- und PA_EN- Definitionen (normalerweise in der myoptions.h) wiederholen sich in der angepassten yoradio.ino mit anderen Namen. Was hat das für eine Bewandnis?
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#32
(05.12.2023, 11:35)saarfranzose schrieb: Hallo Udo,

ich habe deine Anpassungen eingepflegt und an meine IO's angepasst. Bis jetzt aber noch erfolglos. 

in meiner myoptions.h sind nur die I2S Pins definiert, während in der yoRadio ino die I2C GPIOs für ES8388 definiert sind.
Du hattest hier: https://radio-bastler.de/forum/showthrea...ight=esp32 das Pinout schon einmal vorgestellt.

In yoRadio ino  am besten die ermittelten GPIOs for SPI  ES8388 mit #define ES_SPI_MOSI MISO SCK und CS definieren,
und im Setup mit SPI.begin initialisieren.

Im übrigen habe ich jetzt mit der Infrarot Bedienung getestet, dafür musste TFT_DC auf PIN 22 gelegt werden, da es mit meinem ursprünglich vorgesehenen PIN13
nicht funktioniert hat und ich dafür PIN 15 brauchte.
Auch hier hat yoRadio super Arbeit geleistet, es können 3FB angelernt werden, über Weboberfläche Settings erreichbar.
Bedienung funktioniert einwandfrei, werde das jetzt mal etwas länger testen und mir überlegen ob ich einen Encoder benötige.

@Otto: danke für deine Infos

Grüsse Udo
Zitieren
#33
die I2C-Pin erscheinen nur in der myoptions.h wenn sie vom Standard 21/22 abweichen und ein I2C-Display ausgewählt wird. Mit PA_EN war ich im Kopf grad bei einer anderen Baustelle. Yo kennt die speziellen Parameter des Audio-Kit ja (leider) nicht.

Was mir aber nicht in den Kopf will: was hat der ES8388 mit SPI zu tun? Ich kann ja auch ein Display abwählen, und wenn ich auch keine SD benutze brauche ich keinen der beiden SPI-Busse.

Im Hinterkopf habe ich dass manche I2S-Codec auf I2C aufbauen. Kann sein dass wir im Zusammenhang mit Rapsberry Pi mal darüber gesprochen hatten.

Zitat:..da es mit meinem ursprünglich vorgesehenen PIN13 nicht funktioniert hat..

PIN13 hat auf dem Audio-Kit eine Sonderstellung weil es ebenso wie PIN15 über die DIP-Schalter verdrahtet wird. Bei Benutzung einer der beiden PIN muss der DIP-Schalter also entsprechend eingestellt werden.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#34
(05.12.2023, 11:35)saarfranzose schrieb: benötigt der ES8288 zusätzlich noch eine I2C-Schnittstelle?


(05.12.2023, 19:36)saarfranzose schrieb: Was mir aber nicht in den Kopf will: was hat der ES8388 mit SPI zu tun? 

Im Hinterkopf habe ich dass manche I2S-Codec auf I2C aufbauen. Kann sein dass wir im Zusammenhang mit Rapsberry Pi mal darüber gesprochen hatten.

https://datasheet.lcsc.com/lcsc/19121114...365736.pdf

System
• I2C or SPI uC interface
• 256Fs, 384Fs, USB 12 MHz or 24 MHz
• Master or slave serial port
• I2S, Left Justified, DSP/PCM Mode


Seite 7 Datenblatt - 3 TYPICAL APPLICATION CIRCUIT

Der Codec hat ein Controll Interface (I2C/SPI) über den er konfiguriert und gesteuert wird und ein I2S AudioInterface über den der Ton Digital zum DAC gesendet oder vom ADC digital empfangen wird. Kann als DAC, als ADC und als DAC + ADC (hier als SDR genutzt https://github.com/BM45/SDR_ESP32) arbeiten. Deshalb mein Vorschlag oben einen RotaryEncoder über einen Kanal des nicht gebrauchten ADC einlesen zu können.
Zitieren
#35
Ich habe mal eine ganz andere Frage zum yoRadio. Ich suche zur Zeit den Aufruf zu "OpenWeather" um zu erfahren wie oft der Server aufgerufen wird, da ich noch eine Wetterstation über "OpenWeather" betreibe. Ausserdem stimmt der Wert vom Luftdruck nicht mit dem direkten Aufruf über den Browser überein. Eventuell kann mir jemand einen Tip geben.
Gruß René
Zitieren
#36
So, das mit der Luftdruck Anzeige habe ich gelöst. Es wird in die "alte Einheit" Millimeter-Quecksilbersäule [mmHg] umgerechnet. Die gesamte Wetterauswertung erfolgt in der "network.cpp". In den Zeilen 369 und 387 habe ich den Wert 1.333 durch 1.0 ersetzt. Jetzt versuche ich noch den Aufrufintervall zu finden. Ab Zeile 243 geht es los .....

Gruß René
Zitieren
#37
Jetz habe ich auch das gelöst. In Zeile 25 der "network.cpp" wird der Aufrufintervall initialisiert. 
"static const uint16_t weatherSyncInterval=1800;"  Es sind also 30min.
Für solche Suchen verwende ich gern den Notepad++ Editor. Dort kann ich Inhalte in mehreren Dateien gleichzeitig durchsuchen.

Gruß René
Zitieren
#38
(10.12.2023, 12:33)Rene66 schrieb: So, das mit der Luftdruck Anzeige habe ich gelöst. Es wird in die "alte Einheit" Millimeter-Quecksilbersäule [mmHg] umgerechnet. Die gesamte Wetterauswertung erfolgt in der "network.cpp". In den Zeilen 369 und 387 habe ich den Wert 1.333 durch 1.0 ersetzt. Jetzt versuche ich noch den Aufrufintervall zu finden. Ab Zeile 243 geht es los .....

Gruß René

Hallo René, 

ich versuche gerade Deine Umstellung nachzuvollziehen:
OPW zeigt den Luftdruck in hPa an und der russische Entwickler hat aber den Luftdruck in mmHg umgerechnet (weil wohl die Russen noch viel mit dieser Einheit rechnet) und deshalb muss 1.333 als Umrechnungswert dort stehen … Oder hast Du auch in der Anzeige die Maßeinheit geändert? 

Gruß 
Siegfried
Zitieren
#39
Hallo Siegfried, da bin ich auch noch am Suchen. Der Luftdruck wird an der richtigen Stelle abgeholt aber nicht richtig angezeigt. Die Einheit kann man ja in der Sprachdatei anpassen. Ich bleibe dran.
Gruß René
Zitieren
#40
(10.12.2023, 21:06)Rene66 schrieb: Hallo Siegfried, da bin ich auch noch am Suchen. Der Luftdruck wird an der richtigen Stelle abgeholt aber nicht richtig angezeigt. Die Einheit kann man ja in der Sprachdatei anpassen. Ich bleibe dran.
Gruß René

Rene schreib doch noch mal was es für einen Fehlerwert gibt.

ich habe bei mir gerade geschaut:
751 mm (Anzeige gerade) *1.333 = 1001,08  hPa und Anzeige mit OpenweatherApp: 1002 hPa 

Was wird denn bei Dir da angezeigt? 

Grüße 
Siegfried
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Yoradio Fragen für ein besseres Verständis mat-sche 20 520 26.04.2024, 20:38
Letzter Beitrag: mat-sche
  Internetradio mit dem ESP32-S3 Audio Kit The MicroMaker 4 198 23.04.2024, 17:02
Letzter Beitrag: The MicroMaker
  Das einfachste Internetradio mit dem neuen ESP32 Audio pintel 129 34.009 16.04.2024, 00:12
Letzter Beitrag: Charliey
  yoradio hilfe für anfänger gesucht fanatik67 82 3.300 12.04.2024, 12:54
Letzter Beitrag: saarfranzose
Rainbow YoRadio ESP32 Hilfe bei minimaler Softwareänderung Ralf_00 2 285 08.04.2024, 21:20
Letzter Beitrag: Ralf_00

Gehe zu: