Montag, 29. November 2021

Karadio für ESP8266/ESP32

 


warum eine weitere software für Internetradios? Wir haben doch schon iRadio und Edzelf und viele andere.

Herausragende Vorteile von Karadio sind:

- sehr einfach aufzuspielen ohne compiler oder Entwicklungsumgebung.
- vielseitig in der Auswahl der Prozessorboards (alle Typen des ESP8266 oder ESP32, WROOM oder WROVER)
- Unterstützung sehr vieler Displaytypen (34 in der Grundausstattung, weitere per addon)
- vielseitige Möglichkeiten der Audioausgabe (VS1053, interner DAC, I2S, I2SMERUS, PWM)
- vielseitge Steuerungsmöglichkeiten (1 oder 2 Encoder, Tasten, touch, Infrarot, web, android-app, seriell)
- playlisten mit bis zu 255 Radiostationen können im webinterface inkl. Anzeigenamen exortiert / importiert werden
- sehr gesprächige serielle Monitorausgabe mit vielen Details zum laufenden Programm

negativ ist mir bis jetzt aufgefallen:

- die templates der Displayausgabe sind vorgefertigt und ohne Programmierkenntnisse nicht zu ändern
- keine grundsätzliche Unterstützung von Nextion-Displays. Es gibt lediglich ein addon für ein 7" Enhanced Nextion.
- Änderung der GPIO-Belegung: von der Auswahl vorgefertigter hardware-Konfigurationen abweichende Belegungen müssen etwas aufwändig gebaut werden per espressif framework (IDF/ADF) und toolchain.
Ergänzung 21.11.2022: gpio-Änderungen sind auch mit einem Hex-Editor direkt im binary möglich. Siehe: Das einfachste Internetradio mit dem neuen ESP32 Audio

Ergänzung 17.3.2023: Auf einem Linux-PC kann ich mittlerweile mit der toolchain/esp-idf selbst Hardware-binaries erzeugen

- je nach Audiokonfiguration können AAC und WMV-Formate nicht abgespielt werden.

In meinem Bericht werde ich mit einfachen Projekten beginnen und wir werden sehen wie tief ich mich einarbeiten kann.

Downloadquellen

Karadio ESP32

Karadio ESP8266

Ergänzung 21.11.2022:

KaRadio32_4


Einspielen der Software

Hierzu brauche ich nicht viel zu sagen. Es gibt ein deutsches Video in dem der Vorgang besser gezeigt ist als ich das jemals erklären könnte. Es werden einfach nur mit einem kleinen tool die binaries an die entsprechenden Speicheradressen geladen. Dann wird per handy WLAN verbunden (wie man es auch von Edzelf her kennt) und per webinterface Tonausgabe und Radiostationen eingestellt.

 

Erster Versuchsaufbau

noch Freiluft ...
 

die Android-App:


 

Dann nahm ich einen Lochraster-Aufbau, der mal als Edzelf-Experimentierplatine diente und den ich auf die Standard-Belegungen von Karadio entsprechend der standard_adb.csv umverdrahtet habe.

Ich benutzte einen wroom32-Baustein, der noch für Edzelf hier lag. Die Tonausgabe erledigt ein VS1053, Anzeigeeinheit ist ein 2,8" SPI Display mit ILI9341, in Karadio definiert als Typ 194. 

Tonausgabe per I2S

der I2S-Baustein (Adafruit I2S 3W Class D Amplifier Breakout) wird mit 3 Datenleitungen, 3,3 oder 5V und GND mit dem ESP32 Baustein verbunden. Aktiviert wird I2S dann per webinterface. Fertig ist das Minimalradio!

von der Arduino-IDE wird nur der serielle Monitor benötigt für Statusausgaben und um den Code für das passende Display abzusenden. Das geht auch mit Telnet oder einem beliebigen anderen Terminal.


 

Lolin32

in der Hardwareauswahl gibt es auch diverse WeMos LOLIN - Boards. Hier ein Testaufbau mit dem Adafruit DAC. Mit nur wenigen Verbindungen hat man schon ein funktionierndes Internet-Radio.

ein 0,42" IC2 Display ist zum Ablesen eher ungeeignet. War ja auch nur ein Test:


 

viel brauchbarer ist da schon die 1,3" Version:

ich knüpfe mal hier an, nachdem ich der Dokumentation eines Komplettgerätes mit ESPlay Micro V2 einen eigenen thread gewidmet habe.

Nächster Versuch ist ein Aufbau mit einem WEMOS LOLIN32 Lite V1.0.0. Kostet kaum mehr als 5 Euro, besitzt wie das Lolin32 Board aber keinen PSRAM. Überhaupt sind die technischen Daten der beiden Boards zu 99% identisch. Ein funktionierendes einfaches Internetradio läßt sich mit beiden Modulen bauen. Mit der Einschränkung daß nur mp3/m3u Sender abgespielt werden können (ist mir bei dem ersten Versuch in #post1 noch nicht aufgefallen).

Die flash-Einstellungen:


 

Betrieb zunächst ohne Peripherie:

dann habe ich noch den encoder und ein 0,96" OLED dazu gesetzt.


 

Schaut man sich im Karadio-Paket die Datei Interface.md an stellt man noch was interessantes fest. Man kann im seriellen Monitor die WiFi Verbindung händeln und erspart sich damit die AP-Mode Prozedur:

Zitat:wifi.con("ssid","password") : Record the given AP ssid with password in AP1 for next reboot


 um KaRadio32_4 mit meiner Platine betreiben zu können habe ich eine Binär-Datei kompiliert. Es ging allerdings nicht ganz ohne eine Layout-Änderung. Hier die Eckpunkte:

- es ist ein 2-Encoder-Betrieb möglich. Der zweite Encoder (für Senderwechsel) wird an die Reservepin angeklemmt (GPIO 13,14, 33) . Wobei 33 für den switch vorgesehen ist, der aber nicht unbedingt benötigt wird.

- SPI, I2C und der erste Encoder sind 1:1 auf die Platine angepasst.

- Deaktiviert sind alle I2S-Verbindungen (werden ja auf der Platine nicht benötigt, das sie für den VS1053 vorgesehen ist), IR_SIGNAL und GPIO_LED.

- Eine Layoutänderung ist für die Reset-Leitungen notwendig. Diese sind auf EN verdrahtet, sollen aber jetzt auf gpio16. EN unterbricht man am besten in der Fassung des ESP32. Wenn die Fassung noch nicht eingelötet ist drückt man den Kontaktpin aus der Fassung. Andernfalls knipst man den Kontaktpin mit dem Seitenschneider heraus. Es wird dann eine Brücke gelötet zwischen der Reset-Leiterbahn und gpio16:

Die zip enthält die Binärdatei für das Board und die Quelldatei (CSV-Format) in der die Belegungen ebenfalls nachgesehen werden können:


.zip   jupp_4c.zip (Größe: 1,65 KB / Downloads: 1)

Hier die Verdrahtung der Platine:
 

und die Einstellungen des Download-Tools:


 



 

Keine Kommentare:

Kommentar veröffentlichen