die ersten 6 Bilder sind von Juli 2022. So lange bin ich schon am planen und überlegen wie ich dieses Mini-Fernsehen wieder nutzbar machen kann. Wie man sieht funktionierte es, hatte aber einen Displayschaden. Zum Testen speiste ich ein Modulatorsignal über die Antenne ein:
Für eine Video-Wiedergabe kommen nicht viele Prozessorboards in Frage. Ein normaler Raspberry Pi findet keinen Platz im Gehäuse, zumal das Batteriefach alleine schon den halben Platz ausfüllt. Wohl aber ein Raspberry Zero, auch wenn der mit seinen Micro/Midi-Anschlüssen alles wieder komplizierter macht. Per fbcp-ili9341 soll er ein 2,4 Zoll SPI-LCD treiben. Player hatte ich schon mal einige vorgestellt. Ich entschied mich aber für iRadio von Bernhard. Es ist einfach am vielseitigsten, ich kann ganz gut damit umgehen und möchte auch in Übung bleiben.
Einbau des Display
die originale Elektronik wanderte bis auf das Tastenfeld und den Lautsprecher in die Bastelkiste. Wie üblich konstruierte ich einen Displayrahmen. Dieser wird an vorhandene Schraubbolzen montiert und trägt einen weiteren Rahmen zur Befestigung des Raspberry Zero.
erster Installationsschritt
Ich spielte ein Buster 10 Image auf eine 32GB MicroSD und installierte erst mal fbcp-ili9341. Hier sieht man den seitlichen Versatz der Anzeige und das Bild steht auf dem Kopf. Die seitliche Ausrichtung korrigierte ich durch Ändern des Displayrahmens, die Anzeige drehte ich durch einen Rotations-Parameter im build-string von fbcp-ili9341.
Verkabelung des Display
im ersten Versuch war das Display noch mit Dupont-Kabeln mit dem Zero verbunden. Die Konstruktion baute aber 3mm zu hoch und der Gehäusedeckel passte nicht mehr. Diese 3mm gewann ich durch eine geniale Idee. Ein 40pol Schneidklemmen-Pfostenverbinder, wie er bei alten IDE Kabeln üblich war, passt genau auf die GPIO-Leiste. So habe ich nicht nur den Platzgewinn, sondern auch eine sichere, steckbare Verbindung. Und die Kabel sind einfach abzuzählen. Die rote Markierung des Flachbahnkabels liegt auf Pin1 der GPIO-Leiste und die Zählung der Pin ist fortlaufend. Mit dem anderen Ende eines IDE-Kabels wäre auch die Kabelschleife weggefallen, aber ich hatte grad nur dieses Teilstück griffbereit. Es stammte aus einem Centronics-Adapter und deshalb fehlen ihm auch noch die letzten 4 Leitungen. Auch ein Grund warum ich den Stecker nicht umdrehen konnte.
Die Steuerung
zur Steuerung wollte ich die 5 vorhandenen Tasten nutzen. Das zugehörige
flexible Flachbahnkabel lies aber keine Kontaktierung zu. Die leitende
Beschichtung löste sich beim Löten einfach auf. Ich höhlte dann die
Tasten aus und setzte Microschalter dahinter. Der Rahmen mit den Tasten
wurde dann wieder eingesetzt und die originale Optik war wieder
hergestellt.
Audioausgabe
Für die üblichen Arten der Tonausgabe über HDMI-Adapter oder
USB-Soundkarte ist kein Platz vorhanden. Eine Klinkenbuchse gibt es am
Zero nicht. Ein PWM Ausgang läßt sich aber nachrüsten, so wie hier
beschrieben:
Analogen Audioausgang beim Pi Zero nachrüsten
Die Schaltung habe ich für Mono-Bertrieb etwas abgeändert. Und zwar
führen die 270 Ohm Widerstände auch die beiden Kanäle zusammen und Hoch-
und Tiefpass sind nur noch einmal vorhanden. So sieht mein
Versuchsaufbau aus:
hier hätte jetzt noch eine kleine NF-Endstufe eingebaut werden müssen.
Wegen den Nachteilen (Platzbedarf und Störgeräusche) verwarf ich die PWM
Lösung. Aber gut zu wissen dass es diese Alternative gibt. Stattdessen
setzte ich einen Max98357-I2S Baustein ein, welcher direkt eine 3W
Endstufe beinhaltet und wegen der digitalen Übertragung einen
störungsfreien, hochqualitativen Sound liefert. Der machte es übrigends
notwendig das Buster 10 durch ein aktuelles Bullseye 11 zu ersetzen.
Auf dem folgenden Bild liegt der Max98357 noch lose im Gerät, zu
Installationszwecken ist ein HDMI-Bildschirm und eine USB-Tastatur
angeschlossen:
hier ist der Max98357 mittels einer kleinen Halterung angeschraubt:
Das Kabel des USB-Netzteiles für die Spannungsversorgung führt durch das Batteriefach und durch eine kleine Knabberstelle nach außen:
damit steht die Hardware. Die Software beschreibe ich im nächsten Abschnitt.
Software
Bei der Beschreibung der Software will ich nicht wieder von ganz vorne
beginnen. Das Aufspielen eines Raspbian oder Raspberry Pi OS und die
Installation und Konfiguration von iRadio sind mehrfach und umfangreich
bereits im Forum beschrieben. Vielmehr will ich nur auf Besonderheiten,
Spezialitäten und Neuerungen eingehen.
Ich benutze gerne eine älteres Buster 10 Image. Neuere Versionen von
Raspberry OS bieten oft unangenehme Überraschungen. Für meine erste
Lösung der Tonausgabe mit PWM-Nachrüstung war das auch in Ordnung. Meine
zweite und endgültige Lösung mit einem I2S-Baustein Max98357 hingegen
verlangte ein aktuelles OS. Diesen Baustein hatte ich bisher nur bei
ESP32 Systemen eingesetzt. Das ist in Verbindung mit einem Raspberry
also Neuland für mich.
Zunächst einmal gelang es mir nicht dem Max98357 überhapt einen Ton zu
entlocken. Egal nach welcher Anleitung ich ihn installierte. Bis ich
feststellte dass ohne den Tastensteuerungsdaemon gpiod der Ton
funktionierte. Den Fehler konnte ich dann einkreisen auf einen
bestimmten gpio, nämlich gpio27 (Pin 13). Sobald ich diesem eine Taste
zuwies verstummte der Ton. Die entsprechende Funktion (Programm-) legte
ich dann auf gpio22 (Pin 15). Dann erwies sich der Baustein auf einmal
als unproblematisch.
Für den Max98357 gibt eine einfache Installation und eine aufwändige,
die beide funktionieren. Auf beide will ich hier eingehen. Die einfache
Variante besteht einfach aus ein paar Einträgen in /boot/config.txt:
dtparam=audio=on
dtoverlay=hifiberry-dac
dtoverlay=i2s-mmap
Jetzt hat der Max98357 aber die unangenehme Eigenschaft in jeder Tonpause in einen Ruhemodus zu gehen. Und der Ton setzt dann mit einem störenden Knacken wieder ein. Die zweite Möglichkeit der Installation berücksichtigt diese Eigenart indem sie den Baustein durchgehend beschäftigt. Was aber auch etwas an Ressourcen beansprucht.
Die Installation wird ausgeführt mit einem Script von adafruit, welches auf einem Ur-Script von Pimoroni aufbaut:
curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash
Quelle: Adafruit MAX98357 I2S Class-D Mono Amp
Weiterhin erwähnenswert wäre noch der von mir verwendete build-string für fbcp-ili9341:
cmake
-DILI9341=ON -DGPIO_TFT_DATA_CONTROL=24 -DGPIO_TFT_RESET_PIN=25
-DSPI_BUS_CLOCK_DIVISOR=8 -DSINGLE_CORE_BOARD=ON -DARMV6Z=ON
-DSTATISTICS=0 -DDISPLAY_ROTATE_180_DEGREES=OFF ..
if (val_prg_hoch == 0)
system("echo \"next\" | nc 127.0.0.1 9294 -N");
if (val_prg_runter == 0)
system("echo \"prev\" | nc 127.0.0.1 9294 -N");
if (val_prg_halt == 0)
system("echo \"volup 2\" | nc 127.0.0.1 9294 -N");
if (val_prg_weiter == 0)
system("echo \"voldown 2\" | nc 127.0.0.1 9294 -N");
if (val_prg_media == 0)
system("echo \"plst\" | nc -u 127.0.0.1 7230 -w 10");
Quelle für den Mediaplayer: unsere FAQ zum iRadio post#420
ich sehe aber alle Probleme als gelöst an und das Fernsehen/Radio/Videoplayer funktioniert hervorragend. Der kleine Lautsprecher klingt überraschend gut und klar. Was noch aussteht ist der Einbau eines USB-Sticks. Hierzu habe ich kurze Adapter bestellt, kann aber noch nicht sagen ob ich einen solchen im Gehäuse unterbringe.
Nachtrag:
hier noch die Landkarte
Keine Kommentare:
Kommentar veröffentlichen