Grundig Prima Boy 100 – upgrade

Nach dem Umbau des Grundig Boy 100 kam doch glatt die Nachfrage nach weiteren Umbauten gleichen Typs. Mich störte im Grunde nur, dass ich das ESP32-Bard mit VS1053 ins Batteriefach operieren musste. Das war nicht so richtig schön – aber es gab ja sonst kein Platz.

Und auf einmal die Idee : Ich ersetze die Platine, die das LCD-Display hält. Sie ist ja eh nur noch als Träger verwendet. … Ein paar Versuche später:

Die Platine kann nun auch die komplette originale Tastenmatrix nutzen und hat wahlweise für VS1053 oder den I2S-Max98357A einen Konnektor. Auch für die Nutzung eines SDcard-Adapters liegt eine Anschlussmöglichkeit vor. ( Bisher habe ich aber noch keine Variante mit SDcard betrieben). Bis auf einen Pin sind damit alle GPIO’s des ESP32 benutzt.

Rückseite mit ht1621

Front mit ESP und VS1053
LCD-Stütze aus dem 3D-Drucker

Einige Bilder zeigen eine ältere Version (ohne SDcard Belegung). Durch die Nutzung der originalen Flachbandkabel sieht das Ganze recht aufgeräumt aus.

mit Tastenfeld
Rückseite
kaum noch Kabelgewirr

Radio im Vogelhaus

Mal ein etwas anderes Gewand. Freunde wollten ein WLAN-Radio in ihrer Sauna im Vorraum. Inspiriert von meinem Gartenradio in einer Gießkanne, sollte es diesmal ein Vogelhaus sein.

Auch hier reichen Laut-/Leise, sowie ein einfacher Taster zum Umstellen des Senders. Das Gehäuse stammt aus dem Tchibo-regal.

Da der Lautsprecher nach innen sollte, musste ich etwas zur Halterung vorsehen. Hier half mir der Boden einer typischen Mandarinenkiste. So baute ich also eine Halterung für den Lautsprecher, die komplett ins Häuschen eingesetzt werden kann.

Zum Zusammenstecken ein paar 3D-Teile, schon kann das Innenleben ins Häuschen versenkt werden. Mit etwas Spiel, kann man auch mehr Abstand zur Vorderseite bekommen.

Als nächstes zwei Löcher für die Bedienung ( Sendertaste + Lautstärkepoti ). Der Taster benötigt ca. 11mm und für den Poti habe ich ein 7mm Loch gebohrt. Der Knopf stammt auch wieder aus dem 3D-Drucker und soll eine Blume darstellen.

Fertig sieht das dann so aus:

Der Lautstärkepoti ist auch gleich zum ein-/ausschalten.

Grundig Prima Boy 100

Und schon ist das nächste Radio umgebaut. Im Grunde war die Vorgehensweise wie beim Denver-TR36. Ich will hier aber ein paar Infos für eventuell nochmaligen Umbau hinterlegen.

Auch dieses Radio hat ein LCD, welches ich weiter verwenden will. Zudem benutze ich hier den originalen Verstärker und muss mir dadurch nix für den Lautstärkeregler einfallen lassen. Der vorhandene ist ja super.

Erstmal ein Bild von innen.

Kaum Platz. Ich werde die Platine mit dem ESP32 im Batteriefach versenken.

Also 4 Platinen. Irgendwie AUX/Netzteil (unten/links) , Verstärker + FM-Radio (unten rechts), Display und MCU (oben/mitte) und die grüne Platine (oben/rechts) ist für die Microtaster.

Das Display …
und nochmal von hinten

Tja, bisher steuerte ein kleiner Prozesser das Display gleich mit. Die Platine mit den Tasten ist per Flachbandkabel verbunden. Ein weiteres Flachbandkabel geht dann zur Platine mit dem FM-Chip um die gewählten Sender zu steuern.

Die Flachband kabel kommen beide weg. Die Tasten sind derzeit als Matrix aufgelegt, was ich nicht beibehalten möchte. Ich werde einfach drei der Tasten direkt am ESP anschliessen (Up/Down/1). Den Tuner muss ich auch nicht mehr steuern … der wird auch entfernt.

Die roten Stellen markieren die Anpassungen.
Unten: Zugang vom vs1053-modul

Auf dem linken Bild nicht zu sehen: Es wurde noch eine Drahtbrücke rechts von C30 entfernt. An diese Stelle kommt unser Zugang zum Verstärker. Das rechte Bild zeigt noch oben den Abgriff für die Versorgung unserer ESP32-Platine.

MCU per dremel entfernt.
… und hier kommen die Kabel hin.

Der vierte Pin wird nicht benötigt. Eventuell ist das c-3. Auch die letzte Segmentleitung hat keine Funktion, weshalb ich sie nicht angelötet habe.

und so sieht es dann fertig aus. 🙂

Edit: der Code inkl. meiner LCD-Anpassungen liegt auf github.com. Für dieses Display muss ht1621_lcd_type=grundig_boy100 gesetzt werden.

Denver TR36 Umbau

Inzwischen kommen immer mehr Erweiterungen für den Umbau zu Internetradios. Beim Denver-TR36 wollte ich unbedingt das bereits vorhandene Display weiter nutzen. Die angezeigten Daten sollten wie bei der Verwendung einer 4stelligen 7-Segment-Anzeige mit TM1637 sein.

Dieses Glass-LCD wird im Original von einem Chip getrieben, der in meinem Fall nicht weiter verwendet werden kann. Er hat bereits Software, die auf sämtliche Tasten reagiert – jedoch konnte ich keine Möglichkeit finden, die es erlaubt ihm einen anzuzeigenden Text zu schicken.

Also raus mit dem Chip. Wir steuern das LCD selbst an. Hierbei habe ich mich für den HT1621-Chip entschieden (mit dem ich schon einmal ein 8 stelliges 14-Segment-Display Glas angesteuert hatte : vim878 ). Im Blog von ‚Stepp-ke.de‘ ( Beitrag Juni 2016 ) findet man eine Platine, die ich noch da hatte und hierfür verwenden will.

Hier sei angemerkt, dass Glas Displays nicht einfach wie Leuchtdioden angesteuert werden können. Sie arbeiten quasi mit Wechselspannung. Dies lässt sich auch im µC programmieren – leichter und IO-sparender ist aber der Einsatz eines spezialisierten Chips. Der HT1621 wird von mir verwendet, weil ich noch welche auf Lager habe und dieser so ziemlich Alles bis 32 Segmente mit 4coms ansteuern kann.

Das Denver Display benötigt zwar nur 3com’s und 13 Segmente – das soll aber nicht stören.

von unten nach oben : Seg 0..12 , dann com0..2

Also erstmal die originale Miniplatine auslöten – und dann die Pins vom Display mit der eigenen HT1621-Platine verbinden.

Die 3 Com-Leitungen habe ich extra separat verbunden. So erkenne ich sie später besser.

Nun benötigen wir 3 Datenleitungen zum ESP32 um den HT1621 anzusteuern. Ich habe hierfür die beiden i2C (SDA+SCL) und den obersten PIN vom Encoder-Anschluss (DIO16) verwendet. Ein zusätzliches OLED will ich ja eh nicht einbauen. Der DIO16 darf nicht als CS-Leitung benutzt werden. Nach ein paar kurzen Tests, hat sich folgendes Mapping der Segmente herausgestellt.

buffer[0]

  • …. …1
  • …. ..1. 1 A
  • …. .1.. 1 G
  • …. 1… 1 D
  • …1 ….
  • ..1. …. 1 F
  • .1.. …. 1 E
  • 1… …. pm

buffer[1]

  • …. …1
  • …. ..1. 2 F
  • …. .1.. 2 E
  • …. 1… sleep
  • …1 ….
  • ..1. …. 1 B
  • .1.. …. 1 C
  • 1… ….

buffer[2]

  • …. …1
  • …. ..1. 2 B
  • …. .1.. 2 C
  • …. 1… SW + MHz (unten)
  • …1 ….
  • ..1. …. 2 A
  • .1.. …. 2 G
  • 1… …. 2 D

buffer[3]

  • …. …1
  • …. ..1. 3 A
  • …. .1.. 3 G
  • …. 1… 3 D
  • …1 ….
  • ..1. …. 3 F
  • .1.. …. 3 E
  • 1… …. Doppelpunkt

buffer[4]

  • …. …1
  • …. ..1. 4 F
  • …. .1.. 4 E
  • …. 1… Punkt hinter 3
  • …1 ….
  • ..1. …. 3 B
  • .1.. …. 3 C
  • 1… …. Punkt hinter 2

buffer[5]

  • …. …1
  • …. ..1. 4 B
  • …. .1.. 4 C
  • …. 1… kleine 5 (1/2)
  • …1 ….
  • ..1. …. 4 A
  • .1.. …. 4 G
  • 1… …. 4 D

buffer[6]

  • …. …1
  • …. ..1.
  • …. .1..
  • …. 1…
  • …1 ….
  • ..1. …. Wecker
  • .1.. …. FM + MHz (oben)
  • 1… …. MW + kHz

Man erkennt ein Muster, was die Implementierung erleichert (zumindest für die 4 Zahlen).

Der Edzelf-Code wurde wieder mal erweitert … Ein Treiber für den HT1621-Chip + extra-Code für das Display. Später kommen bei mir sicherlich noch Weitere Displays hinzu.

Nach dem Start werden nacheinander die Segmente der IP angezeigt und dann der eingestellte Sender : ‚ P 1‘. (Es wird 1 aufaddiert, da Sendernummer 0 im Bekanntenkreis zu Verwirrungen führte). Nach 5 Sekunden wechselt die Anzeige auf die Uhrzeit.

Nun noch ein paar Bilder vom Innenleben des Radios…

Umbau des Trimmkondensator. Das Innenleben wurde durch einen einfachen Encoder ersetzt.
Hier die Unterseite mit Encoderknopf. Ein Adapter zum Aufstecken des alten Drehknopfes kommt aus dem 3D-Drucker.
Die Platzierung der neuen Platinen. Das VS1053-Board ist an der Oberseite angeschraubt.

ESP32-Internetradio

Nach meinem Toasterumbau sind nun schon mehrere Umbauten vorhandener UKW Radios als WLAN-Radio erfolgt. Diese Methode hat den Charme, dass man sich nicht um ein Gehäuse, die Knöpfe und den Lautsprecher kümmern muss, sondern es ist alles schon da. Sogar die Stromversorgung kann nicht selten noch benutzt werden.

Bei der Recherche nach Vorhandenem, kommt man an KaRadio32 und die Software von Edzelf’s kaum vorbei. Im Radiobastler-forum habe ich von ’saarfranzose‘ eine Platine bekommen, die in Zusammenarbeit mit Edzelf super funktioniert und im Grunde noch diverse Freiheitsgrade bietet. Mit Hilfe dieser Platine sind dann auch schon 2 Radioumbauten entstanden. Leider kann diese Platine nicht zusammen mit der KaRadio32-Software benutzt werden … zumindest habe ich es nicht hinbekommen, das Pin-mapping entsprechend umzustellen . Aber das nur am Rande.

Mein Hobby hat sich im Bekanntenkreis rumgesprochen, so dass eines Tages ein kleines Küchenradio von Rossmann oder Tchibo zum Umbau bei mir landete. Die Platine von saarfranzose ist leider zu gross. Kurzerhand wurde also google bemüht, und ich habe eine Platine passend zu KaRadio32 gefunden, die die selben Ausmaße wie das VS1053-Modul hat. Nach dem Download kam ich dann auf die Idee, dass ich auch auf dieser Platine den PAM8403-Verstärker unterbringen könnte. Mit KiCad hab ich dann also diese Platine umgestaltet und sogar noch weitere Pin’s rausgelegt. (Dazu später) Mir war auch klar, dass ich mit dieser Platine nun KaRadio32 oder Edzelf nutzen kann, was ich im Grunde aber nicht brauche – ich nehme derzeit fast nur Edzelf. (wg. meiner eigenen Erweiterungen)

Platine mit drunterliegendem VS1053-Modul und PAM8403 auf der Oberseite.

Ich verwende nun aus Platzgründen kein Entwicklerboard mit ESP32, sondern löte hier den ESP32S selbst auf – was erstaunlich gut funktioniert und doch recht einfach ist. Im Bild rechts oben sieht man die Anschlussleisten (v.o.n.u : RXTX-Prog., ADC-Pins, IR-Pin, Encoder-pins.) Das Flachbandkabel führt noch zu den i2c Pins für ein Display.

An der Unterseite der Platine ist zudem noch Platz für ein DC/DC-Buck Modul, was ich bisher aber immer extern betrieben habe.

Hier nochmal ein anderer Winkel mit Display. Zudem sieht man auch die Buchse für den Lautsprecher, die von der originalen Platine ‚geklaut‘ wurde.
Hier eine Version – direkt als Sandwich gelötet. Dafür müssen ein paar Teile vom VS1053 entfernt werden.

Nun zu den ADC-pins. Um mittels normalen Drehwiderständen die Lautstärke und Senderwahl durchführen zu können, werden adc-fähige Pins benötigt. Hierfür eignen sich am besten ADC0-Pins, wobei ich mich für 36 und 39 entschieden habe. Der Voltpegel 0..3.3V wird also in eine entsprechende Lautstärke umgerechnet – genau wie es bei der Senderwahl erfolgen kann. Hierfür waren kleine Anpassungen der Edzelf-Software notwendig, da im Original alles nur mittels Drehencoder bedient wird. – Ich wollte aber die originale Handhabung des Radios möglichst erhalten.

Auch das 128×32 OLED hat ein paar Anpassungen benötigt. Inzwischen kann meine Edzelf-Version auch ein HT1621-Display sowie eine TM1637-7-Segement-Anzeige (als Zusatzdisplays) bedienen. Das hat sich ergeben, weil ich bei anderen Radios die vorhandenen originalen LCD-Glass-Anzeigen weiter nutzen wollte (siehe Beitrag Denver-Tr36).

Nun aber weiter … Als Erstes schau ich mir also die vorhandene Platine an, wo eventuell Spannungen abgegriffen werden können. Oft lege ich im Nachgang die nicht notwendigen Teile auf der Platine lahm – damit sie nicht unnötig stören können oder Strom verbrauchen.

Bei diesem Radio ist der untere Poti (Lautstärke) nicht im 0..3V3-Bereich, so dass ich ihn von der Aussenwelt getrennt habe und den Zugang mit 3.3Volt belegen konnte. Sehr viel mehr Umbauten sind hier nicht notwendig gewesen.

Oft findet man bei solch einfachen Radios Drehkondensator zur Sendereinstellung. Diese ersetze ich dann durch einen einfachen Encoder (ohne Button). Im Edzelf-Code habe ich wahlweise vorgesehen, dass der Encoder direct den Sender ohne weitere Bestätigung umschaltet. (auch dass nur nebenbei 🙂 )

Der Kondensator (mit den Kleberesten) war ursprünglich auf der Unterseite der Platine. Um Platz für das Display zu haben, musste er auf die Oberseite wechseln. Das dünne gelbe Kabel (rechts) ist die Zufuhr von 3.3Volt für das Lautstärkepoti.

Für das SSD1306-Display mit 128×32 musste ein Loch ins Gehäuse geschnitten werden. Die Fixierung mit Heißklebe sieht etwas wild aus – aber es ging. Im Grunde braucht man keine Anzeige, ich fand es aber schöner, wenn man auch mal den gespielten Titel sieht.

Und so ist es dann fertig. Das ausgeschnittene Fenster kann beim nächsten Mal etwas besser werden 🙂 .

Sollte Bedarf an der Platine bestehen … hier die Gerber-files ( Gerber-ESP32radio-V7.zip ).

per default wird das PAM im Mono-Betrieb benutzt. Für stereo muss eine Bahn an der rot markierten Stelle getrennt werden.
G-L-R (oben rechts) sind die Zugänge vom VS1053 Audio-Jack.

Sonstiges / Bestückung / Vorgehensweise …

Die Platine ist bereits mit den einzusetzenden Werten beschriftet. Ich beginne oft mit dem ESP32-Chip. Dafür nutze ich eine Klammer (thingiverse 1718197), die den chip gut auf einer Position hält. Nach dem fixieren mit 3 Pins, kann die Klammer weg und die restlichen Pins werden angelötet. Als nächstes folgen der 10kΩ-Widerstand und der 1nF-Kondensator auf der Oberseite (rechts-oben). Da ich mir die Microtaster sparen will, löte ich nun eine Brücke (abgeschnittener Anschluss eines Elko) über die beiden ‚prog‘-Pads. Als nächstes benötigen wir den AMS1117-3.3V auf der Unterseite der Platine.

Nun können wir schonmal initial programmieren. Dazu nutze ich die Pin-leiste ‚TX-RX-Gnd-5V‘ und einen üblichen USB-TTL-Adapter (FT232RL). Es reicht, wenn man die 4 Enden per Stiftleiste (1reihig) mit dem Daumen fixiert, so dass Kontakt besteht (Achte auf Verpolung – 5V sitzt außen!). Nun den USB-Adapter einstecken und mit der Arduino-Oberfläche programmieren. Durch unsere Brücke über die prog-Pads wird der ESP nicht starten, aber bei Power sofort in der Programmiermodus gehen. Nach der Programmierung : abstecken, prog-Brücke entfernen und den Rest bestücken.

Wenn kein PAM-Modul benutzt werden soll, können auf der Oberseite (oben links) folgende Komponenten weggelasen werden: 100nF, 2x 100kΩ, 47µF.

Für stereo-Betrieb muss eine Bahn getrennt werden. (Die beiden Pads daneben sind dann für den eventuellen Rückbau auf Mono gedacht).

Auf der Unterseite der Platine muss ein 470Ω Widerstand eingelötet werden, wenn man die LED einsetzen möchte. Als Powermodul (Unterseite) wurde dieses eingeplant (DC/DC-Buck) , welches mittels Lötbrücke fest auf 5V gestellt werden kann.

Einstellungen (Beispiel):

flag_00 = autoplay = true # start playing if STOP detected
flag_01 = adc_vol_reverse = false
flag_02 = enc_direct_switch = true # no click for channel change
# more possible flags :
# dsp_brightness = 1..15
# rotate_screen = true/false # for OLED
# dsp_show_ip = true/false # show ip on oled/tm1637 at boot
# adc_delog_vol = true/false # little bit more linear
# oled_128x32 = true/false # only 4 line ssd1306
#
pin_ir = -1 # GPIO Pin number for IR receiver VS1838B
pin_enc_clk = 16 # fx2-pcb : rotary encoder „CLK“
pin_enc_dt = 17 # fx2-pcb : rotary encoder „DT“
pin_enc_sw = 5 # fx2-pcb : rotary encoder „SW“
#
pin_tft_scl = -1 # Pin for TFT „SCL“ fx2-pcb : 14
pin_tft_sda = -1 # Pin for TFT „SDA“ fx2-pcb : 13
#
pin_sd_cs = -1 # Pin for SD card „CS“
#
pin_vs_cs = 32 # fx2-pcb : Pin for VS1053 „CS“
pin_vs_dcs = 33 # fx2-pcb : Pin for VS1053 „DCS“
pin_vs_dreq = 34 # fx2-pcb : Pin for VS1053 „DREQ“
pin_shutdownx = 4 # fx2-pcb : LED
pin_fixed_12 = 1 # fx2-pcb : RST-pin need HIGH
#
pin_tm1637_clk = -1
pin_tm1637_dio = -1

Zum Schluss noch einmal meinen Dank an die Vorversion von gvoigtlaender(github) und die nützlichen Hinweise von saarfranzose (radio-bastler.de)