Radio-Bastler-Forum (RBF)

Normale Version: Ein minimales Internetradio für alte und neue Raspberrys
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7 8 9 10
Hallo,

wegen Nachfrage wurde jetzt noch eine Art Mediaplayerfunktion zum iRadio hinzugefügt.

[attachment=85724]




Man konnte ja schon über eine playlist.m3u mit fixen Dateinnamen eine solche Mediaplayerfunktion in Ansätzen realisieren, aber dadurch wurde die Senderliste mit Radio/Fernsehstationen überschrieben bzw. musste danach neu eingespielt werden. Mit dem mediaplayerd ist das jetzt anders. Er schaut zyklisch nach ob ein USB-Stick gesteckt wurde und ob darauf Mediendateien (Suche nach frei wählbaren Dateiendungen) abgespeichert sind. Trifft er auf solche, pausiert er das Internetradio/Internetfernsehen und spielt mit vlc die Dateien auf dem Stick ab. Zieht man den Stick während der Wiedergabe wieder raus, geht das iRadio automatisch wieder in den Internetradio/Internetfernseh-Betrieb über. Ein umständliches Schreiben einer playlist.m3u oder das Wiedereinspielen einer solchen Datei fällt also weg.

Somit wird eine Cassetten- oder Videorekordersimulation mit dem iRadio noch realistischer. Auch eine iTV-Settopbox wird somit schnell zu einem Medienplayer gemacht.
Eine Aufnahmefunktion für Radio/TV wäre nun noch ein logischer Schritt? Na mal sehen. Big Grin

Gruß
Bernhard
(25.10.2018, 13:28)Bernhard45 schrieb: [ -> ]Hallo, 

ich habe jetzt mal ein Installationspaket zusammengestellt das uns von den "Lasten" des Pimoroni-Installers befreit und auch auf neuen Kerneln und Raspbian-Versionen performanter laufen sollte. Dies war notwendig, da sich sehr alte Raspberrys an den Python-Sachen und dem VU-Meterplugin von Pimoroni "verschlucken".

Das Installationsarchiv habe ich angeheftet:    Update 26.10.2018: normale Konsole wieder erreichbar

Es enthält den Ordner "iRadio" der bitte bei allen Versionen nach der Extraktion im Homeverzeichnis des Default-Nutzers "pi", also unter /home/pi zu liegen kommt. Das Projektverzeichnis ist also /home/pi/iRadio

Folgende Sachen sind in iRadio vorhanden:



- der Ordner bcm2835-xxx : dieser Ordner erhält eine Bibliothek mit der wir die Anschlüsse des Raspberrys abfragen können 
- default.m3u : eine Standardplaylist für vlc
- gpiod : einen kleinen Daemon den ich für die Abfrage von Tastern und zur Ansteuerung des vlc-Prozesses geschrieben habe
- gpiod.c : der C-Quellcode für den gpiod-Daemonen. Hier kann der Nutzer selbst die Pins für Taster hinzufuegen oder eine Drehencoderabfrage realisieren
- install.sh : Das komplette Installerscript für ein minimales Internetradio auf vlc-Basis
- rc.local : Mit dieser Datei werden alle nötigen Prozesse beim Systemstart gestartet
- vlcd : das Script das dafür sorgt, das vlc als Deamon im Hintergrund läuft, was nach neuen WiFi-Zugangsdaten oder Senderlisten auf /boot schaut 


INSTALLATION:
1. Wir kopieren ein nacktes Raspbian-Image auf SD-Karte
2. Wir booten den Pi mit dieser SD-Karte und legen mit raspi-config fest wo der Sound ausgegeben werden soll (hdmi/3.5 Klinke), gleichzeitig aktivieren
wir mit dem raspi-config Tool einen SSH-Zugang damit wir keinen Monitor/Tastatur an den Pi hängen müssen
3. Wir laden uns oben die zip-Datei runter und kopieren des so auf den Pi, das das Verzeichnis iRadio unter /home/pi zu liegen kommt. 
4. Nach dem das Projekt also unter /home/pi/iRadio zuliegen kommt, öffnen wir eine Konsole und wechseln in das Verzeichnis "iRadio"
5. Wir rufen den Installer mit: sudo ./install.sh auf
6. Nachdem der Installer durchgelaufen ist, starten wir den Pi mit sudo reboot neu.

Das minimale Internetradio ist damit installiert, auf /boot können wie bei Pimoroni Wifi-Daten und eine Playlist abgelegt werden. Das Radio lauscht auf den in gpiod.c festgelegten Pins auf Tasteneingaben. Wird eine solche Tasteneingabe (Taster gegen Masse wie auf dem Pimoronibausatz) entdeckt, dann schaltet das Programm vlc per nc (Netcat) über das Netzwerkinterface um.

Code:
// gpiod.c
//
// Beispielprogramm fuer bcm2835 lib
// Schaltet per GPIO-Taster nach Masse einen laufenden VLC-Prozess (next, prev, ...)
//
// After installing bcm2835, you can build this
// with something like:
// gcc  gpiod.c -o gpiod -lbcm2835
// sudo ./gpiod
//
// Author: Bernhard45 (mbernhard1945@gmail.com)

#include <bcm2835.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>

//#define DEBUG

// Tasteranschluesse
#define PIN_PRG_HOCH RPI_GPIO_P1_11
#define PIN_PRG_RUNTER RPI_GPIO_P1_12
#define PIN_PRG_HALT RPI_GPIO_P1_08
#define PIN_PRG_WEITER RPI_GPIO_P1_10

int main(int argc, char **argv)
{
   if (!bcm2835_init())
return 1;

   // Pin als Eingang setzen , mit Pull-Up
   bcm2835_gpio_fsel(PIN_PRG_HOCH, BCM2835_GPIO_FSEL_INPT);
   bcm2835_gpio_set_pud(PIN_PRG_HOCH,BCM2835_GPIO_PUD_UP);

   bcm2835_gpio_fsel(PIN_PRG_RUNTER, BCM2835_GPIO_FSEL_INPT);
   bcm2835_gpio_set_pud(PIN_PRG_RUNTER,BCM2835_GPIO_PUD_UP);

   bcm2835_gpio_fsel(PIN_PRG_HALT, BCM2835_GPIO_FSEL_INPT);
   bcm2835_gpio_set_pud(PIN_PRG_HALT,BCM2835_GPIO_PUD_UP);

   bcm2835_gpio_fsel(PIN_PRG_WEITER, BCM2835_GPIO_FSEL_INPT);
   bcm2835_gpio_set_pud(PIN_PRG_WEITER,BCM2835_GPIO_PUD_UP);

   // Endlosschleife, da Daemonbetrieb
   while (1)
   {
// Zustand am Pin einlesen
uint8_t val_prg_hoch   = bcm2835_gpio_lev(PIN_PRG_HOCH);
uint8_t val_prg_runter = bcm2835_gpio_lev(PIN_PRG_RUNTER);
       uint8_t val_prg_halt   = bcm2835_gpio_lev(PIN_PRG_HALT);
       uint8_t val_prg_weiter = bcm2835_gpio_lev(PIN_PRG_WEITER);

#ifdef DEBUG
printf("Tastenwert PIN_HOCH: %d\n", val_prg_hoch);
printf("Tastenwert PIN_RUNTER: %d\n", val_prg_runter);
printf("Tastenwert PIN_HALT: %d\n", val_prg_halt);
printf("Tastenwert PIN_WEITER: %d\n", val_prg_weiter);
#endif

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 \"stop\" | nc 127.0.0.1 9294 -N");

       if (val_prg_weiter == 0)
               system("echo \"play\" | nc 127.0.0.1 9294 -N");

delay(500);
   }

   return 0;
}


Dadurch das wir hier C und kein Python benutzen, das VU-Meterplugin von Pimoroni nicht läuft und auch das Logging von vlc deaktiviert ist, haben wir im Spielbetrieb nur noch eine relativ geringe Systemauslastung.



Viel Spaß beim Bauen von Internetradios
Bernhard
Salue, nur eine kurze Frage: Ihr nehmt das Rspian Lite?
Hallo,

ACHTUNG: Dein zitierter Post ist von 2018, auch das darin verlinkte iRadio-Paket! Das ist längst nicht mehr der aktuelle Stand, dennoch sehe ich das da immer noch Downloads von gemacht werden. Das aktuelle iRadio gibt es nur hier: https://github.com/BM45/iRadio

Zum Raspbian Lite oder Raspberry Pi OS Lite: Wenn das geplante Radio keine Skalensimulation oder GUI benötigt, sondern nur ein LCD-Display, OLED, ... dann ist das genau die richtige Wahl. Das Radio bootet auch schneller wenn nicht erst die grafische Umgebung gestartet werden muss! Natürlich kann man die fetteren "with desktop" und "with desktop and recommended software" Versionen nehmen, sollte dann aber dringend das grafische System abschalten bzw. auf boot into console umschalten.

Also kurzum, meine Empfehlung: Lite für Radios ohne Skalensimulation, die größeren OSes nur wenn man Skalensimulation oder GUI benötigt.
Seiten: 1 2 3 4 5 6 7 8 9 10