Themabewertung:
  • 1 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
iRadio mit Pimoroni Pirate Audio HAT
#1
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:

Code:
// 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

Code:
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.

Code:
...
#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:


.png   skale_r.png (Größe: 98,91 KB / Downloads: 391)

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.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#2
Hallo Jupp,

vielen Dank für deinen Test mit dem Display.
Ich dachte schon ich wäre der Einzige der mit dem ST7789 klar kommt. Gab hier letztens ja einige Probleme bei einem Nachbauer der das nicht hinbekommen hat.
Ja eine Skalensimulation mit 240x240px ist schon ... naja ... ich wüsste nicht in welchem Radio man das verbauen sollte, so dass es Sinn ergibt. Sieht aber dennoch gut aus deine Demo, auch wenn es tatsächlich dann doch nur 1.3 Zoll ist.
Zur Performance: Im Prinzip kann man bei einer sdlskale/displayd auch auf eine Zeigeranimation verzichten und nur jede Sekunde den Sendernamen/Titel aktualisieren. Also nur noch 1 fps statt 20-30 fps.
Das fordert dann auch einen Zero trotz X11 nicht wirklich doll.

Was meinst Du denn, brauchen wir quasi einen" Standard-X11-SDL2" Democode ohne Animation und nur mit Sendername/Titel/...? Im iRadio hatte ich ja schon mit der gui.cxx einen Democode für die FLTK-Lib. Zwar für 480x320px Displays, aber das ist ja durch den Nutzer im Code alles anpassbar. Sollte das ausreichen oder brauchen wir da nochmal einen 0815-Democode für SDL2 auf solchen Minidisplays? Vielleicht sogar ein displayd was komplett auf die xlib aufbaut und ohne FLTK, SDL2, ... auskommt? Ich weiß es ehrlich gesagt nicht. Auch nicht wie weit wir das Einstiegslevel weiter absenken müssen, damit da nie ein Beginner scheitern wird. Irgendwo ist ja doch ein "Mindestwille" vorausgesetzt.

Tolle Anleitung und eigentlich sollte das (meiner Meinung) nach wirklich zu schaffen sein. Danke für deinen Beweis!

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#3
danke Bernhard!

das display hat die Größe einer Herren-Armbanduhr Big Grin

Die Animation ist nun mal das Argument um sich für iRadio zu entscheiden. Für eine einfache Textausgabe reicht auch ein ESP-System.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#4
Guten Tag und frohe Weihnachten!

Ich möchte die beiden Erfinder hier ermutigen das I-Radio weiter zu verfolgen und auch solche Displays mit aufzunehmen. Mag Ihnen der Sinn nach einer Anzeigensimulation auf dem Display noch nicht klar zu sein, so sind solche Displays sehr gut für die im I Radio vertretene Simulation von Anzeigenröhren zu gebrauchen.
Bitte verzichten Sie auf den ESP 32 Hype. Radios mit diesem Chip sind nicht so unkompliziert und flexible aufzubauen. Versuchen Sie ein Radio mit Servoanzeige und Anzeigenröhre, Rauschumschaltungssimulator, automatisches Bluetoothstreaming, Mediaplayer innerhalb von Minuten mit ESP 32 zu bauen. Dafür gibt es zur Zeit keine Lösung außer einem Rpi mir ihrer Softwarelösungen. ESP32 Experimente haben bei mir ebenso den kleinen Arbeitspeicher des Chips als Schwäche zu Tage gefördert. Der Audiopuffer für stabiles Streaming ist zu klein. Der ESP 32 hat davonnnicht genug um all die Aufgaben bewerkstelligen zu können. Für mich hat das I-Radio mehr als nur für Fotoskalen eine Berechtigung. Es wäre daher falsch diese Lösung zu Gunsten einer ESP32 Unterstützung zu vernachlässigen oder gar einzustellen.

Mit freundlichen Grüßen BalticSea
Zitieren
#5
so sieht es aus wenn man auf dem Audio HAT einen Western schaut:

Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#6
BalticSea, ich finde Sie verteufeln zu Unrecht die ESP-Lösungen. Es kommt immer auf das Einsatzgebiet an. Selbst mit einem wroom Modul ohne PSRAM kann man stabile Radios ohne Pufferprobleme bauen. Dass auch einfache Grafiken möglich sind zeige ich auf dem Video welches ich hier zu meinem Bericht geladen habe:

Smartphone-Lautsprecher mit Edison-Radio
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#7
Hallo

(24.12.2021, 12:30)BalticSea schrieb: Guten Tag und frohe Weihnachten!

dem möchte ich mich hier und allgemein im Forum anschließen!

(24.12.2021, 12:30)BalticSea schrieb: Ich möchte die beiden Erfinder hier ermutigen das I-Radio weiter zu verfolgen und auch solche Displays mit aufzunehmen.

Eigentlich waren es über die Jahre noch viel mehr Leute, ohne die das iRadio nicht den Funktionsumfang hätte, den es heute hat.


(24.12.2021, 12:30)BalticSea schrieb: Mag Ihnen der Sinn nach einer Anzeigensimulation auf dem Display noch nicht klar zu sein, so sind solche Displays sehr gut für die im I Radio vertretene Simulation von Anzeigenröhren zu gebrauchen.

Tatsächlich sind diese Miniaturdisplays genau dafür geeignet hinter dem Ausguck einer EM11, EM80, EM84, ... zu verschwinden und ja wir können mehrere Displays oder Anzeigetechniken pro Radio umsetzen.  Jupp hat es schon gezeigt



Servos, oder mehrere Displays (Hauptskala + mag. Auge) sind tatsächlich (z.Zt.) Alleinstellungsmerkmale die ein Raspberry Pi zusammen mit dem iRadio bietet. Mir ist zumindest keine "Distribution" auf einem uC wie dem ESP32 bekannt, die das out-of-box liefert. Das heißt aber nicht, dass ein uC ein Servo + Display nicht auch bedienen kann, vorausgesetzt er hat genügend freie GPIOs. Das kann bei einem ESP32 Modul "herausfordernd" wirken, aber nicht unmöglich. 

(24.12.2021, 12:30)BalticSea schrieb: Versuchen Sie ein Radio mit Servoanzeige und Anzeigenröhre, Rauschumschaltungssimulator, automatisches Bluetoothstreaming, Mediaplayer innerhalb von Minuten mit ESP 32 zu bauen. Dafür gibt es zur Zeit keine Lösung außer einem Rpi mir ihrer Softwarelösungen.

Und das wollen wir  mit einem iRadio Mini eben auch mit einem ESP32 oder STM32 bewirken. Nicht zum Nachteil des iRadios oder Raspberry Pi,  sondern als zusätzliche Möglichkeit. Es wird dennoch viele Sachen geben, die ein ESP32 nicht leisten kann. Die ganzen "Sendesachen" werden eingeschränkt sein, Internetfernsehen auch, DAB+ wird ein ESP32 rein in Software nicht leisten, ...  .  Ich sehe da keine Konkurrenzsituation, sondern mit dem iRadio Mini ein weiteres Werkzeug für den Bastler.  Auf der anderen Seite muss ich sagen, daß die iRadio-Geschichte auch irgendwo "erzählt" ist. Wenn dort jetzt nicht noch eine "Killeranwendung" auftaucht, die wir funktionsmäßig noch abdecken müssen oder sollten, dann werden sich zukünftige Commits eher auf Versionspflege statt Funktionserweiterung konzentrieren.

Also wir sind für richtige neue Anregungen offen!

(24.12.2021, 12:30)BalticSea schrieb: Es wäre daher falsch diese Lösung zu Gunsten einer ESP32 Unterstützung zu vernachlässigen oder gar einzustellen.

Niemand hat die Absicht so etwas zu tun!

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  iRadioAndroid - iRadio Portierung für Android Geräte OttoBerger 154 9.090 23.03.2024, 13:45
Letzter Beitrag: Uli
  Saba TV-Journey mit iRadio saarfranzose 6 2.093 20.07.2023, 20:22
Letzter Beitrag: saarfranzose
  Raspberry iRadio, heavy duty Emmpunkt 5 1.038 27.03.2023, 17:58
Letzter Beitrag: saarfranzose
  russisches 6N-1 mit iRadio und RGB-Panel saarfranzose 10 1.758 11.03.2023, 15:00
Letzter Beitrag: saarfranzose
  FAQ zum iRadio saarfranzose 602 36.237 03.03.2023, 11:59
Letzter Beitrag: saarfranzose

Gehe zu: