Ich habe mir ein Pimoroni Pirate Audio HAT zugelegt und beschreibe wie ich damit ein Internetradio baue.
Voraussetzung ist ein aktuelles, sauber installiertes Raspberry Pi OS.
Mit "sudo raspi-config" ändern wir folgende Einstellungen:
- I2C und SPI aktivieren
- in die Text-Konsole booten
- legacy Bildschirmtreiber auswählen
in der /boot/config.txt aktivieren wir den Eintrag "hdmi_force_hotplug=1"
zur Optimierung kommen später noch diese Einträge hinzu:
hdmi_group=2
hdmi_mode=87
hdmi_cvt=240 240 60 1 0 0 0
dadurch wird der HDMI-Monitor abgeschaltet und es spielt sich alles nur
noch auf dem 1,3" Display ab. Die Auflösung wird auf 240 x 240 fest
eingestellt und es muss nichts mehr gerendert werden. Während der
Installationsphase ist der Monitor aber noch nützlich, deshalb
optimieren wir erst später
fbcp-ili9341
entsprechend dieser Anleitung wird der fbsp-ili9341-display-Treiber installiert.
der von mir verwendete build-string:
cmake -DPIRATE_AUDIO_ST7789_HAT=ON -DSPI_BUS_CLOCK_DIVISOR=6 -DSTATISTICS=0 -DUSE_DMA_TRANSFERS=OFF ..
die rc.local wird um den Aufruf des Treibers ergänzt:
sudo /home/pi/fbcp-ili9341/build/fbcp-ili9341 &
der Inhalt des HDMI-Monitors sollte sich jetzt auf dem display spiegeln.
iRadio und Bau der Steuerung
iRadio wird wie gehabt auf den raspberry geclont
git clone https://github.com/BM45/iRadio.git
Bevor die Installation gestartet wird ändern wir in der gpiod.c die
Tastenbelegungen. Das Pirate HAT benutzt für seine Tasten gpio 5, 6, 16
und 24.
Wir schauen in der Tabelle welchen BCM2835-Bezeichnungen diesen gpios entsprechen. Daraus ergibt sich:
// Tasteranschluesse gpio 5,6,16,24
#define PIN_PRG_HOCH RPI_V2_GPIO_P1_29
#define PIN_PRG_RUNTER RPI_V2_GPIO_P1_31
#define PIN_PRG_HALT RPI_V2_GPIO_P1_36
#define PIN_PRG_WEITER RPI_V2_GPIO_P1_18
auch die Aktionen der Tasten ändern wir auf Senderumschaltung und Lautstärkeeinstellung
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");
jetzt können wir iRadio mit sudo ./install.sh bauen.
Nach einem reboot sehen wir im webinterface dass iRadio läuft. Wir hören aber noch nichts weil der Audiotreiber noch fehlt.
iRadio hat allerdings den Aufruf von fbcp-ili9341 aus der rc.local entfernt, diesen müssen wir wieder eintragen.
Installation des Audio-DAC
Pimoroni hat dazu ein script erstellt.
curl https://get.pimoroni.com/phatdac | bash
Nach dem reboot ist nun auch ein Sender zu hören.
Bau einer Skalensimulation
für eine x11 Skalensimulation benötigen wir zuerst mal die sdl2 library
sudo apt-get install libsdl2-*
ich entscheide mich hier für eine Rundskala "skale2".
Per ftp kopieren wir ein Skalenbild mit 240 x 240 pixel in den Ordner iRadio/display/x11/skale2, ändern dort in der sdlskale.cxx die Auflösung, tragen die absoluten Bildpfade ein und positionieren den Skalenzeiger.
...
#define SKALE_HOEHE 240
#define SKALE_BREITE 240
...
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 = 60; ZeigerRect.y = 58;
ZeigerRect.w = 120; ZeigerRect.h = 120;
int rotationswinkel=ZEIGERANSCHLAG_LINKS;
...
die Simulation kann nun mit sudo ./build.sh gebaut werden und der Aufruf
in der rc.local hinterlegt werden. Eine eigene playlist muss noch von
/boot oder von stick durchlaufen, sonst startet die Animation nicht.
startx /home/pi/iRadio/display/x11/skale2/sdlskale
hier sind die Statistiken noch eingeschaltet:
und hier durch einen Parameter im build-string abgeschaltet:
das verwendete Skalenbild:
von config.txt und rc.local sollten in den jeweiligen Pfaden
Sicherheitskopien erstellt werden (config.txt.sav und rd.local.sav).
Probleme sind mit der Rechenleistung des Raspberry zero zu erwarten. Und
zwar in der Art dass die Simulation nicht immer auf die Beine kommt und
es ab und an Knattergeräusche gibt. Auf einem 3B läuft die Installation
deutlich stabiler und auch schneller.
so sieht es aus wenn man auf dem Audio HAT einen Western schaut:
Keine Kommentare:
Kommentar veröffentlichen