Webradio mit Ringuhr

Mai 2021

Rückblick: Geburtstagsgeschenk aus dem Jahr 2020 von meinen Kollegen:

Na ja, sieht nett aus. Man kann in die Box sein Smartphone reinstellen. Der Ton des Lautsprechers wird dann über den Trichter gelenkt und das Ganze hört sich dann besser an. Meine Idee: Wenn man in die Box irgendwie ein Webradio reinbekommen würde, das wäre doch perfekt!.

Leider besteht die Box aus Vollplastik. Da passt nix mehr rein. Also muss es eine neue Box sein – irgendwie kombiniert mit einer Uhr und einem Grammophonlook. Diese Ringuhren haben es mir angetan:

Diese beiden Geräte, Uhr und Grammophontrichter, gilt es zu kombinieren. Hier meine erste Skizze:

Statt des Plattentellers soll die LED-Ringuhr eingebaut werden. Die Ringsegmente gibt es bei Alibaba. Das Gehäuse wird aus Holz gebaut.

Also gehe ich auf der Suche nach der Möglichkeit, ein Webradio zu bauen. Mit dem Microprozessor ESP32 habe ich ja schon so meine Erfahrung gemacht. Offensichtlich hat auch schon jemand ein Webradio dazu programmiert.

Meine Quelle: KaRadio32 – Github und Technikwahn. Die notwendigen Teile kann man sich bei Alibaba oder bei anderen diversen Elektronikhändlern besorgen. Hier meine Schaltung:

Die Software bekommt man in einem Rutsch per USB auf den ESP32 geladen. Abschließend muss man nur noch per COM-Port dem ESP sagen, was für ein Display verbaut wurde. Technikwahn hat das sehr gut in seinem Video beschrieben:

Man benötigt zum Upload das Flash-Downloadtool von Esspressif und die Software KaRadio32, Nach Anleitung werden bestimmte Teile der Software auf den ESP geladen. Danach muss man mit der Arduino IDE über den seriellen Monitor den Befehl sys.lcd(“0”) (0 entspicht meinem Display) auf den ESP schicken. Der ESP antwortet dann mit einer Bestätigung. Danach läuft die Software schon auf dem ESP. Man kann die Software auf dem ESP auch ohne Beschaltung schon mal auf den nackten ESP schicken. Per Webbrowser kann man schon auf die Software greifen und diese testen. Hier die Weboberfläche von KaRadio32:

Hier das Gehäuse mit dem eingebauten Lautsprecher, Display und Encoder:

Meine Ideen: Das Gehäuse und der Trichter soll als Resonanzkörper dienen und die tiefen Töne verstärken. In das Gehäuse verbaue ich eine Powerbank als Akkuersatz. Per Mini-USB kann die Bank dann geladen werden.

Ein Problem stellt sich noch: Der Audioausgang des VS1053 hat keine direkte Masse. Wenn man den Verstärker nun an die gleiche Powerbank wie den ESP und damit den VS1053 anschließt, gibt es sehr große Störgeräusche. Das konnte ich zuerst nur mit Hilfe zweier Powerbanks lösen. Je eine am Verstärker und eine für den ESP/VS. Die andere dauerhafte Lösung bracht dann aber eine galvanische Trennung (NF-Übertrager) des Ausgangs des VS1053 und des Eingangs des Verstärkers. Die Dimension des NF Übertragers sind völlig egal. Ich habe nur einen kleinen Übertrager mit jeweils 2x 68 Windungen genommen. Man muss dann nur die Verstärkung des TDA2030 mit dem eingebauten Poti etwas erhöhen.

Ursprünglich wollte ich das Webradio auch als Radiowecker verwenden. Die Softwaresteuerung über den eingebauten Webserver gibt das ja her. Leider gibt es da ein Problem, wie die Software KaRadio32 mit Fehlern umgeht. Sollte das Internet etwas länger als 1 Minute ausfallen, startet die Software neu, findet dann möglicherweise keine WLAN- Verbindung und geht dann in den AP-Modus (Konfigurationsmodus). Dann kann man das Wecken natürlich vergessen

Nun geht es an die Ringuhr

Ich habe den ESP8266MOD verwendet. Der war einfach etwas billiger als der ESP32 zu bekommen. Ziel ist es, dass die Uhrzeit über WLAN und das Internet abgeglichen wird, so dass es sich erübrigt, die Uhr manuell zu stzellen.

Die Programmierung habe ich über die Adruino IDE erledigt. Zuerst muss man die IDE für den ESP vorbereiten. Dazu geht man auf Datei->Voreinstellungen. Dort kann man sich die zusätzlichen Bordverwalter verlinken:

https://dl.espressif.com/dl/package_esp32_index.json
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
http://arduino.esp8266.com/stable/package_esp8266com_index.json

Der letzte Eintrag bezieht sich auf den ESP8266. Danach geht man auf Werkzeuge->Board->Bordverwalter und sucht den ESP8266. Anschließend installieren. Wenn dann alles geklappt hat, kann man über Werkzeuge -> das Board ESP8266 Generic auswählen. Unter Werkzeuge muss noch der richtige PORT ausgewählt werden über den der EP angeschlossen wurde (kann im Windows Gerätemanager unter Anschlüsse) nachgesehen werden

Den Neopixelring mit 60 LED bekommt man über Alibaba. oder auch über Amazon. Am Besten hat mir die Uhrensoftware von Frank Hellmann, Hamburg, gefallen. Das Ablesen der Uhrzeit ist etwas gewöhungsbedürftig, aber interessant. Hier der Sketch.

Ende Mai 2021 ist das Webradio nun fertig geworden.

Nachtrag vom September 2021: Nach mehreren Monaten Betrieb gibt es eine Ernüchterung: Das Webradio funktioniert nur sehr eingeschränkt. Aus irgendwelchgen Gründen reißt der Datenstrom immer mal wieder ab und das Radio bleibt stumm. Damit kann man das KRadio32 leider nicht als Radiowecker benutzen. Man würde ständig verschlafen. Die Ringuhr funktioniert allerdings noch immer tadellos.
Anfang der Fehlersuche im Dezember 2021: Die eventuell zu langsame Internetgeschwindigkeit lässt den Datenstrom nicht immer abreißen. Dieser Effekt tritt leider immer häufiger auf. Meine Vermutung: Es liegt an fehlenden Pufferspeicher um einen gleichmäßigen, fortlaufenden Datenstrom zu gewährleisten oder der ESP reagiert sehr verwundbar auf Datenfehler, die ja immer mal auftreten können.

Bisheriges Fazit: Der Radiowecker ist unbrauchbar! 🙁
Ich muss wohl völlig neu anfangen

UPDate vom 19.08.2024

Ich habe angefangen mit der Fehlersuche indem ich mir einen neuen ESP mit großem Display, Encoder und MP3 Encodiermodul bei Aliexpress orderte. Als Lautsprecher diente eine Bluetoothbox mit Line-in- Eingang. Da die Bezeichnungen gerade auf dem Display mit mit dem Schaltpan auf Github nicht übereinstimmten, musste ich etwas rumprobren, um das Display zum Leben zu erwecken. Irgendwann hat es dann funktioniert. Das Radio läuft ohne Abbruch des Datenstromes. Mit der Arduino IDE schickte ich über den seriellen Monitor den Befehl sys.lcd(“199”) (199 entspricht dem großen Display).

Sonst entspricht die neue Schaltung genau der alten Schaltung.

Aber: Wenn jemand andes sich im Internet einloggt, bricht der Datenstrom auch mal ab. Meine Vermutung: Der WLAN- Empfang des ESP32 kann sehr leicht gestört werden. Die Reichweite des WLAN ist auch nicht besonders groß. Störungen ergeben sich insbesondere, wenn Lautsprecher/Verstärker an einer gemeinsamen Spannungsquelle liegen.

Die endgültige Lösung liegt vermutlich in der Benutzung einer externen WLAN-Antenne.

Hier nun ein anderer Schaltplan mit Dem ESP32C mit USBC und einem TFT Display mit einer Auflösung von 240+320 Pixel:

Das Internetradio werde ich in eine alte aktive Lautsprecherbox, die noch ein altes Ladeschale für ein IPHONE4 hat, verbauen:

Wenn ich die Stromversorgung der Box auch für den ESP nehmen möchte, werde ich sicher wieder eine galvanische Trennung vornehmem müssen. Wenn ich den ESP an den USB Anschluss der Box anschließe und den Lineout-Ausgang des MP3-Encodier an den Line-In-Eingang des Lautsprechers anschließe, gibt es wieder die berühmten Störgeräusche.

Leave a Reply

Your email address will not be published. Required fields are marked *