Andreas P. hat mir ein übriggebliebenes Radiogehäuse zugeschickt damit
ich ihm dort ein iRadio einbaue, was ich sehr gerne für ihn tue. Ich
schildere erst mal den mechanischen Werdegang und gehe dann noch im
Detail auf die software ein.
Die Skalenöffnung ist quadratisch, keine gute Ausgangssituation für ein
Display. Wir entschieden uns für ein 5"-HDMI, welches in der Breite ganz
gut passt. Oben und unten musste aber ein Stück verblendet werden. Dazu
druckte ich ein entsprechendes Formteil
Auf den eingeschmolzenen Gewindeeinsätzen läßt sich nun das Display mit dem Raspberry anschrauben.
Andreas überließ mir die Aufgabe eine schöne Skala zu suchen, und hat gleich die Westinghouse Skala akzeptiert
ein weiteres Formteil trägt die beiden encoder und eine kleine Platine mit einer PAM8403 Endstufe und der Potential- und gpio-Verteilung. Warum grade eine PAM8403? Es gibt bei dieser Endstufe einen Trick um die Störgeräusche weitgehend zu eliminieren. Hier nachzulesen. Man führt die Signalmasse über einen Elko 47µ auf den ref-Eingang des IC. Zusammen mit einer USB-Soundkarte versprach ich mir einen störungsfreien Radiogenuss. Bei meinen Vorversuchen ist das auch gelungen. Bei dem Radio für Andreas gelang es mir (bis jetzt) nur zu ca. 98%.
das waveshare-display hat keinen HDMI-Audioausgang, deshalb die USB-Soundkarte. Aber es hat einen großen Vorteil. Es spiegelt die wichtigsten gpio's auf Lötpads. So bleibt der raspberry abnehmbar und man erspart sich die fummelige Anlöterei auf der gpio-Leiste.
auf den Bildern sieht man auch schon eine weitere Komponente, nämlich das Netzteil. Ich verwendete ein Spannungsmodul 5V/2A von Hi-Link und hauste es ein. Dazu waren 3 weitere Formteile notwendig.
hier sind die beiden Holzschrauben zu sehen, die das Netzteil am Radiogehäuse halten. Durch entsprechende Bohrungen auf den gegenüberliegenden Seiten sind sie mit dem Schraubendreher zugänglich.
nach einer Revison der Frontseite ist das Netzteil nun eingebaut. Das Radio muss auf der Rückseite ein/aus geschaltet werden. Es gibt keine seitlich Bohrung an dem Radiogehäuse und an den encodern lässt sich kein Netzschalter anbringen. Durch das kompakte Netzteil erspare ich mir auch das Verlegen von netzspannungsführenden Leitungen durch das Radio.
dann bleibt nur noch die Frontansicht. Die Knöpfe hatte ich mal konstruiert für den Katzenkopf und setze sie mit entsprechend abgeändertem Schaft gerne auch für andere Radios ein.
mein Demo der Skalensimulation. Die Sendereinblendung war noch nicht positioniert:
kommen wir nun zur software. Ich versuche mich kurz zu halten. Wenn
jemand den Empfänger nachbaut und kann mir nicht folgen dann bitte ich
um Nachfrage und gehe gerne mehr ins Detail.
Grundeinrichtung Raspberry Pi OS
Ausgangspunkt ist ein aktuelles Raspberry Pi OS entweder über den Imager oder als image, auf die SD-card geflasht.
Es sollte die Variante "Raspberry Pi OS with desktop and recommended
software" sein, da die Animation ein installiertes x11 benötigt. Im
Archiv ein altes Raspbian auszugraben brauchen wir nur wenn die
Tonausgabe über die Klinkenbuchse erfolgen soll. Ich rate aber wegen der
Qualität zur Audioausgabe über eine USB-Soundkarte.
Nach dem flashen wird der Installationsassistent durchlaufen. Die
WLAN-Daten werden eingetragen oder ein LAN-Kabel aufgesteckt. Wir
stellen country auf germany, ändern das Kennwort und geben bei Bedarf
die WLAN Verbindung ein. Üben uns noch etwas in Geduld bis alle updates
etabliert sind und haben nach dem Neustart die grafische x11 Oberfläche
vor uns.
Wir wechseln entweder auf eine neue Konsole oder öffnen ein Terminal-Fenster. Mit sudo raspi-config
starten wir das Konfigurationsprogramm. Dort ändern wir den hostname,
aktivieren falls noch nicht geschehen SSH, und stellen die Bootoptionen
auf Console-Autologin. Mehr ist hier nicht zu tun. Bildschirm- und
Audiooptionen belassen wir so wie sie sind und befolgen die Aufforderung
zum Neustart.
An der Stelle sollten wir uns jetzt mit putty oder puttyportable remote
mit dem Raspberry verbinden, weil es gleich eng auf dem Bildschirm wird.
Wir laden für das 5" Display den LCD-show Treiber mit der Anweisung:
sudo rm -rf LCD-show
git clone https://github.com/goodtft/LCD-show.git
chmod -R 755 LCD-show
und starten im Ordner ~/LCD-show die Treiberinstallation mit sudo ./LCD5-show
eine weitere Systemerweiterung wird benötigt:
sudo apt-get install libsdl2-*
Installation der USB-Soundkarte
mit aplay -l ermitteln wir die Karten-Nummer der Soundkarte
in dem Fall z.B. ist es die Nr. 1:
Karte 1: Device [USB Audio Device], Gerät 0: USB Audio [USB Audio]
wir editieren die /etc/asound.conf oder legen sie neu an mit folgendem Inhalt und der ermittelten Kartennummer:
pcm.!default {
type hw
card 1
}
ctl.!default {
type hw
card 1
}
Die iRadio Installation
iRadio wird von GitHub geladen:
git clone https://github.com/BM45/iRadio.git
Die Installation wird gestartet mit:
cd iRadio
sudo ./install.sh
Bau der Drehencoder-Steuerung:
sofern wir die vorgegebene gpio-Belegung (Pin 11 und 12) beibehalten wollen können wir direkt die Installation ausführen:
sudo ./install_Drehencoder.sh
Bau eines daemon für die Volume-Steuerung
wir kopieren die rotary.c nach rotary_vol.c und die install_Drehencoder.sh nach install_vol.sh.
In der install_vol.sh ändern wir gcc-Parametrierung und gpiod Namen:
#!/usr/bin/env bash
# ueberpruefe auf sudo-Rechte
if [ "$(id -u)" != 0 ]; then
echo "Zur Ausfuehrung dieses Scripts sind Administratorrechte noetig"
exit 1
fi
gcc /home/pi/iRadio/rotary_vol.c -o /home/pi/iRadio/gpiod_vol -lwiringPi
killall gpiod_vol
sleep 10
echo "Kopiere neuen Daemonen..."
cp /home/pi/iRadio/gpiod_vol /usr/bin/
echo "Aenderungen sind nach dem Neustart aktiv!"
in der rotary_vol.c ändern wir die gpio-Zweisung und die abzusetzenden Befehle:
include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <wiringPi.h>
#define RoAPin 3 // GPIO-Pin 22, Pinnummer 15
#define RoBPin 4 // GPIO-Pin 23, Pinnummer 16
unsigned char flag;
unsigned char Last_RoB_Status;
unsigned char Current_RoB_Status;
void rotaryDeal(void)
{
Last_RoB_Status = digitalRead(RoBPin);
while(!digitalRead(RoAPin)){
Current_RoB_Status = digitalRead(RoBPin);
flag = 1;
}
if(flag == 1){
flag = 0;
if((Last_RoB_Status == 0)&&(Current_RoB_Status == 1)){
system("echo \"volup\" | nc 127.0.0.1 9294 -N");
}
if((Last_RoB_Status == 1)&&(Current_RoB_Status == 0)){
system("echo \"voldown\" | nc 127.0.0.1 9294 -N");
}
}
}
Der Bau des daemon wird gestartet: sudo ./install_vol.sh
und die /etc/rc.local angepasst, die nun so aussehen soll:
Zitat:..
/usr/bin/vlcd
#/usr/bin/displayd &
/usr/bin/gpiod &
/usr/bin/gpiod_vol &
sleep 10
echo "play" | nc 127.0.0.1 9294 -N
echo "goto 0" | nc 127.0.0.1 9294 -N
#/usr/bin/gestured & # Gestenerkennung starten
startx /home/pi/iRadio/display/x11/skale2/sdlskale
..
der start von x11 läuft erst noch ins leere. Im Ordner /home/pi/iRadio/display/x11/skale2 ist noch einiges zu tun.
Skala und Zeiger übertragen wir per FTP in den skale2 Ordner.
...
#define SKALE_HOEHE 450
#define SKALE_BREITE 1024
...
//Eintrag der absoluten Pfade:
textur_skale = IMG_LoadTexture(renderer, "/home/pi/iRadio/display/x11/skale2/skale_r.png");
textur_zeiger = IMG_LoadTexture(renderer, "/home/pi/iRadio/display/x11/skale2/zeiger_r.png");
...
// Position und Dimension des Skalenzeigers
SDL_Rect ZeigerRect;
ZeigerRect.x = 373; ZeigerRect.y = 83;
ZeigerRect.w = 275; ZeigerRect.h = 275;
int rotationswinkel=ZEIGERANSCHLAG_LINKS;
...
// Position und Dimension Programmanzeige
int texW = 0; int texH = 0;
SDL_QueryTexture(textur_prgtitel, NULL, NULL, &texW, &texH);
SDL_Rect dstrect = { 180, 430, texW, texH };
letzter Schritt: Kompilieren der Skalensimulation mit:
sudo ./build.sh
evtl. muss noch eine eigene playlist durch das System laufen. Frühere x11 Simulationen hatten das so verlangt.
noch etwas bzgl. gpio-Bezeichnung. Die im obigen Schaltplan eingezeichnete Belegung P0, P1, P3, P4 entspricht den Bezeichnungen der gespiegelten Lötpads dieses speziellen waveshare-Display und bezieht sich, wie im Quellcode zu ersehen, auf die Pinnummern 11, 12, 15, 16.
weiterführende Dokumentationen:
radiobasteleien.blogspot.com
Ein minimales Internetradio für alte und neue Raspberrys
sowie die vielen anderen iRadio Installationen die ich bisher gezeigt habe.
Keine Kommentare:
Kommentar veröffentlichen