Grundig Raspi Radio

Case

Ich habe in einer Brockenstube vor einigen Jahren einen alten Grundig 2012 Röhrenradio aus dem Jahr 1952 gefunden. Den habe ich sehr günstig (für 30 CHF) gekauft, mit dem Ziel, ihn zu einem netzwerkbasierten Audioplayer umzubauen.

Fans von Analog-Radios sollten an dieser Stelle aufhören, mitzulesen… Ich habe nämlich als erstes die ganze Röhrentechnik aus dem Radio entfernt :see_no_evil: #allesMussRaus

Raspi / DAC

Anschliessend kam ein Raspberry Pi rein, zusammen mit einem I2S DAC, den ein Bekannter von mir selber designed hat. (Gibt nur 3 Stück davon…)

Software

Als Software kommt Volumio zum Zuge. Das hat sich in den letzten Jahren extrem weit weiterentwickelt!

In Volumio muss als DAC der „IQaudioIO DAC Plus“ gewählt werden, er benutzt den selben Chip und ist deshalb kompatibel.

Hardware

Die Knöpfe und Drehschalter des Radios sollen natürlich funktionsfähig bleiben. Mehr dazu ein anderes mal, sobald ich alles zum Laufen gekriegt habe…

1 Like

Hardware-Inputs

Damit die physikalischen Inputs verwendet werden können, habe ich zusammen mit @Luz die Kontakte und Potis ausgemessen. Anschliessend wurden diese neu verkabelt:

Rechts sieht man das Senderwahl-Schwungrad. Um dieses auszulesen, habe ich einen Dreh-Encoder mittels einer 3D-gedruckten Halterung daran befestigt.

Die zwei Potis für Lautstärke und Klangfarbe werden über einen kleinen ADS1115 A/D-Konverter ausgelesen.

Volume Control

Ein kleiner Rust-Daemon überwacht laufend den Volume-Input und setzt den entsprechenden Lautstärkewert über das volumio Kommandozeilen-Tool.

Leider ist der Poti nicht linear. Um die effektive Kurve auszumessen, habe ich eine Hightech-Lösung angewendet: Ein Nagel und ein Geodreieck :smile:

Daraus hat sich folgende Kurve ergeben:

image

Wie man sieht, ist der Poti weder linear noch logarithmisch, sondern hat zwei stark ansteigende Bereiche und in der Mitte sowie am Ende einen „toten“ Bereich". Das kann an der Bauweise oder auch an Abnutzung liegen.

Der Daemon nutzt zur Linearisierung eine einfache Lookup-Table. Zwischen zwei Messwerten wird linear interpoliert. Das funktioniert einigermassen zufriedenstellend.

Demo mit Lautstärkekontrolle über den Drehregler:

Es gibt zwar eine kurze Verzögerung, die ist aber nicht weiter schlimm.

Playlist-Wahl mit Knöpfen

Die Software wurde jetzt mit Playlist-Wahl über die Knöpfe erweitert!

Beim Tastendruck wird über die Volumio-API die Playlist gewechselt. Momentan sind in den Playlists fixe Online-Radiosender definiert.

Das Input-Debouncing habe ich über Polling mit debouncr umgesetzt.

Auslesen der GPIO mit Edge Detection:

Der Input-Loop: