Montag, 28. Januar 2019

Metz Baby Internetradio


vor einiger Zeit erstand ich in ebay einige Gehäuseteile von 2 Metz Babys. Die meisten hatten Brüche, die Metallteile waren rostig. Ein Innenleben war nicht mal ansatzweise vorhanden.
einige Tage lang klebte ich die Risse, ein Seitenteil habe ich zur Verstärkung gedruckt und mit Resin mit dem Gehäuse verklebt und verschraubt. Die goldenen Linierungen hab ich erneuert, die Gehäuse insgesamt aufpoliert und mit einem Schutzlack überzogen.
Die Metallteile bekamen eine Effektlackierung. Das Ergebnis ist nicht so toll. Der Lack ist nicht grifffest und mit dem Klarlack hat er sich nicht richtig vertragen. Meine Vorarbeiten waren auch nicht so besonders. Es ist einfach kein Wetter um ausserhalb der Wohnung zu arbeiten. Vielleicht fange ich mit einem übriggebliebenen Frontteil wieder von vorne an.

Ich habe noch einen Displayrahmen und eine Schallwand konstruiert sowie ein paar Kleinteile.


Ein Raspberry 3A+ bekam die software von Bob Rathbone mit der "full feature graphical" - Oberfläche auf einem 3,5" Touchscreen mit diesen Einstellungen:


die GPIO's für die Encoder musste ich von Hand anpassen, da sie mit dem Display kollidierten

(vorheriger GPIO, in Klammern: neuer GPIO - Pinnummer)

menu_switch=17 (5 - 29)
mute_switch=4  (6 - 31)
up_switch=24   (13 - 33)
down_switch=23 (19 - 35)
left_switch=14 (20 - 38)
right_switch=15(21 - 40)

als NF-Verstärker baute ich eine LM386-Platine ein


















das kleine Video veranschaulicht die Bedienung, wahlweise über encoder oder touch:








01.02.2019

der Umbau des Metz Baby auf iRadio ist vollzogen. Ein kleines Video zeigt die Geschwindigkeit der Animation:


(bitte nicht an der Frontplattenlackierung stören sowie an der bei manchen Sendern vorgeschalteten Werbung)

Inzwischen haben wir auch 3,5" HDMI Displays ausfindig gemacht. Wenn sich keine andere Lösung des Geschwindigkeitsproblemes finde tausche ich Display in absehbarer Zeit aus. Achtung! In ebay gibt es viele Angebote von Displays die als HDMI bezeichnet werden, es aber nicht sind. Meist sind es Händler bei denen man eine Auswahl verschiedener Diagonalen hat. Die 5" und 7" sind dann auch wirklich HDMI, nicht aber die 3,5".

"mein" Display könnte zwar auch über die parallele Verbindung (DPI) angesprochen werden, es findet sich dafür aber kein Treiber. Für den Framebufferbetrieb wird dann LCD-show installiert. LCD-show bringt mehrere 3,5" Unterstützungen mit, bezeichnet mit LCD35-show, LCD35B-show, LCD35C-show und LCD35-show-V2. In meinem Fall passte der LCD35-show Treiber. Da die Ausgabe damit aber auf dem Kopf stand bekam der Aufruf in der config.txt noch einen Parameter für die Bilddrehung mit ("LCD35-show 180").

Zu beachten ist weiterhin dass LCD-Show bei jedem Aufruf (der ja nur bei Änderungen notwendig ist) die rc.local komplett ersetzt. Da wir dort ja auch die Daemonen starten sowie X11 mit dem Pfad zur Skalenanimation sind diese Aufrufe dann erst mal weggebügelt. Ich hab mir also eine rc.local mit allen Einträgen weggesichert und nach jedem LCD-show-Test wieder eingespielt. Dies sind die relevanten Einträge:
 
fbcp &

con2fbmap 1 0


/usr/bin/vlcd

/usr/bin/displayd &
/usr/bin/gpiod &
/usr/bin/gpiod_volume &

sleep 10

echo "play" | nc 127.0.0.1 9294 -N

startx /home/pi/iRadio/display/x11/metz_baby/sdlskale &



in dem Metz Baby ist als Relikt von der Bob-Software für die Lautstärkeeinstellung ein Encoder eingebaut. Damit das so bleibt kam entprechend der Anleitung im thread Ein minimales Internetradio für alte und neue Raspberrys in post 135 ein neuer Daemon dazu.


Für die Sendereinstellung benutze ich folgende GPIO's:

#define RoAPin 23 // GPIO-Pin 13, Pinnummer 33
#define RoBPin 24 // GPIO-Pin 19, Pinnummer 35


und für die Lautstärke diese:
 
#define RoAPin 28 // GPIO-Pin 20, Pinnummer 38
#define RoBPin 29 // GPIO-Pin 21, Pinnummer 40


Aus irgendeinem Grund muss ich in der sdlskale.cxx für das Skalenbild und den Zeiger absolute Pfade eintragen, sonst startet die Animation nicht:
 
textur_skale = IMG_LoadTexture(renderer, "/home/pi/iRadio/display/x11/metz_baby/skale.png");
textur_zeiger = IMG_LoadTexture(renderer, "/home/pi/iRadio/display/x11/metz_baby/zeiger.png");


Das war dann die Softwareseite. Am Gehäuse des Metz hab ich an der Rückseite an den Scharnieren Anschläge gedruckt und mit angeschraubt, damit der Deckel nicht mehr nach hinten fällt










07.03.2019

an dem Metz Baby gab es eine Software-Änderung. Ich hatte die Softwareversion iRadio22022019 eingespielt. Es ging mir um die neue sdlskale.cxx, mit der sich die Schrittweite einstellen lässt, und die damit verbundene Geschwindigkeitsverbesserung der Animation.

Dazu ging ich folgendermassen vor:

erst eine Sicherung der userangepassten Dateien config.txt, rc.local, rotary.c, rotary_volume.c und install_volume.sh, sowie des ganzen Display-Ordners metz_baby.

Dann die neue zip nach iRadio entpackt, alle vorhandenen Dateien überschrieben.

die GPIO-Definitionen in der rotary.c wieder korrigiert und die install.sh ausgeführt.

Danach die rc.local wieder rückkopiert.

Dann kam die Hauptarbeit. Für den metz_baby Ordner nutzte ich die neue sdlskale.cxx aus dem skale3-Ordner. Die alte und die neue sdlskale.cxx legte ich mir in notepad++ nebeneinander und übertrug die Parameter der alten in die neue Datei. Das waren diese Werte:

#define ZEIGERANSCHLAG_LINKS 120
#define ZEIGERANSCHLAG_RECHTS 440

#define SKALE_HOEHE 290
#define SKALE_BREITE 480

SDL_Color color_yellow = { 255, 0, 0 };

// Position und Dimension des Skalenzeigers
SDL_Rect ZeigerRect;
ZeigerRect.x = 150; ZeigerRect.y = 0;
ZeigerRect.w = 10;   ZeigerRect.h = 377;

SDL_SetRenderDrawColor(renderer,255,255,255,255);

hier war die Reihenfolge von Skala und Zeiger zu ändern. Der Zeiger war zuerst unsichtbar weil er hinter der Skala lief:

// Zeichne Skalenglas
SDL_RenderCopy(renderer, textur_skale, NULL, NULL);

// Zeichne Zeiger
SDL_RenderCopy(renderer, textur_zeiger, NULL, &ZeigerRect);


Bei diesem Video ist eine Schrittweite von 8 eingestellt:


Keine Kommentare:

Kommentar veröffentlichen