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 zusammen,

das iRadio (https://github.com/BM45/iRadio) hat heute am 30.04.2020 ein neues Funktionsupdate bekommen.

Neu ist die Simulation eines Abstimmgeräusches bei der Umschaltung der Internetradioprogramme.




Erreicht wird diese Verhalten durch einen neuen Daemon mit Namen noised. Der Quellcode liegt im Verzeichnis noise_generator in der Datei noised.cxx .
Wenn wir uns die Datei anschauen, so ist da nicht außergewöhnlich neues Wissen dabei. Das Programm besteht aus 2 Threads, der eine holt alle 25ms per netcat den Status von cvlc und erkennt ob gerade eine Internetradiostation wiedergegeben wird oder nicht. Der zweite Thread reagiert dann auf das Ergebnis des ersten Threads.
Wird gerade keine Internetradiostation durch cvlc wiedergegeben, wird eine Rauschaufzeichnung wiedergegeben, ist cvlc bereit für die Wiedergabe der neuen Internetradiostation,wird die Wiedergabe der Rauschaufzeichnung beendet.

Nichts anderes macht dieser Teil des Quellcodes:

PHP-Code:
while(1){
 
       std::this_thread::sleep_for(std::chrono::milliseconds(100));
 
       if (!bRadioAn) {
 
            if (aplay_started == 0) {
 
                 system("aplay --channels=2 --rate=44100 /home/pi/iRadio/noise_generator/noise.mp3 &");
 
                 aplay_started 1;
 
           }
 
      
 
      else {
 
           if (aplay_started == 1) {
 
                 system("sudo killall aplay");
 
                 aplay_started 0;
 
           }
 
     }
 } 

Man erkennt sofort, wie und wo Änderungen vorzunehmen sind, wenn man ein anderes Abstimmgeräusch haben möchte, mitgeliefert werden ja zwei Rauschdateien.

Übrigens kann man den noised auch für andere Zwecke missbrauchen. Hier (https://radio-bastler.de/forum/showthrea...#pid177654) wollte Jupp ja die Endstufe zwischen dem Umschalten der Radiosender aktiv bzw. inaktiv schalten. Die auf Jupps Seite von mir gezeigte Lösung, also direkt im Quellcode der Skalensimulation funktioniert, hier mit dem noised hätte man eine überarbeitete und meiner Meinung nach "klinisch sauberere" Lösung. Für das zu und wegschalten der Endstufe oder generell eines GPIO muss man dann nur die Konsolenkommandos in den beiden system-Aufrufen ersetzen, durch Kommandozeileneinträge die - wer hätte es gedacht - die GPIOs schalten. Wink 

Natürlich ist der noised nicht nur für Skalensimulationen geeignet, sondern generell für alle Arten der Senderumschaltung und Displaydaemonen, aber bei Skalensimulationen mit gesetztem PAUSE_BEIM_SENDERWECHSEL - Flag macht er natürlich am meisten Sinn.

Wie man den Daemon baut und installiert steht in der install.txt im gleichen Verzeichnis. Auch das keine Raketenwissenschaft und der alte vertraute Weg im iRadio. 

Bei Fragen, bitte den FAQ - Thread des iRadio nutzen! Danke!

Viel Spaß beim Basteln von Internetradios, bleibt gesund
Bernhard
Bernhard, du bist ein Fuchs. Ich wollte jetzt meinen Metz Baby mit der noise-Erweiterung im Video zeigen, aber youtube hat es beim hochladen gesperrt. Die tuning-Geräusche sind unglaublich realistisch!
Hallo Internetradiobastler, 

ab sofort wird der Aufbau eines Internetradios in noch weniger Schritten möglich sein. 
Ich habe mich dafür entschieden eine eigene Linuxdistribution (auf Debian 10, alias Buster) 
mit einem fertig installieren und vorkonfiguriertem iRadio zum Download anzubieten. 
Der Projektname  "iRL - iRadio on Linux" , die vorläufige Projektseite hier: https://github.com/BM45/iRL

[attachment=78836]

Das Debian 10 / Buster ist ALSA-mäßig so eingestellt, dass man per raspi-config zwischen HDMI, Klinke entscheiden kann. 
Das PCM-Device ist vorhanden, externe DACs und DAC-Shields sollten sich ohne Probleme in ALSA einbinden lassen. 
Das ganze ALSA bleibt so auch erhalten, wenn keiner ein dist-upgrade auf das Mainstream-Release von Debian 10 for Raspberry macht!


In den iRL-Versionen wurden sämtliche Compilerläufe aller Daemonen und iRadio-AddOns überprüft, ob diese mit den mitgelieferten 
Bibliotheken fehlerfrei durchlaufen! Das soll auch bei künftigen iRL-Versionen die Anforderung sein. 

Voreingestellt bei iRL sind: 
  • Displaydaemon für I2C-LCD-Modul,

  • Tastatursteuerung per gpiod,

  • Bluetoothservice für Raspberrys mit BT-Hardware,

  • FM-Sendefunktion über GPIO-Header (für die HF-Ausgabe ist noch eine FM.txt per USB-Stick einzuspielen),

  • aktiver SSH-Zugang,

  • beschleunigte Grafiktreiber für X11.

Das kann natürlich jederzeit per Installerscripte abgeändert werden! Wichtig, alles kann auch ohne Monitor über SSH 
eingerichtet werden, SSH ist ja ab sofort aktiv. 
Im Github selbst findet man alle Konfigurationsdateien für einen USB-Stick als Muster, sowie eine Beispielsenderliste. 

Gruß
Bernhard
Super! Vielen Dank Bernhard, für Deine Arbeit. So nutzerfreundlich - da könnten sich große Softwareanbieter eine Scheibe abschneiden. Ich werde baldmöglichst downloaden.
BG, Hans
Hallo Internetradiobastler, 

mit dem heutigen Funktionsupdate können aufgebaute Internetradios (der Covid-19 Hysterie entsprechend   Wink ) berührungslos bedient werden, einfach durch verschiedene Gesten vor einem entsprechenden Sensor. Ich hatte eine ähnliche Funktion vor einiger Zeit in meinem Viola350D Umbau (https://www.radio-bastler.de/forum/showt...?tid=11351) schon gezeigt, nun kommt Sie auch offiziell ins iRadio-Projekt.

[attachment=79514]

Hier ist u.a. die Gestenerkennung auch in Aktion zu sehen:



Alles weitere auf https://github.com/BM45/iRadio

Viel Spaß beim Neuaufbau von Internetradios oder beim Umbau von Oldies auf Internetradioempfang.
Hallo, Bernhard,
Das Video ist sehr überzeugend. Ich habe letzte Woche auch drei Gestiksensoren bestellt. Ich denke, das ist sehr nützlich für Umbau alten Radios, denn dann ist nichts mehr an die originalen Knöpfe zu machen. Man braucht nur Platz für ein Fenster für das Display und Steuerung.
Ich werde definitiv es versuchen, sobald die Teile kommen.
Vielen Dank!
Bei einigen Gesten muss man etwas Geduld haben, bevor man sie drauf hat und es zu keinen Fehlinterpretationen kommt. Hand rechts, links, oben und unten sind eigentlich kein Problem. Drehen im Uhrzeigersinn oder entgegen ist da schon etwas schwieriger oder auf den Sensor zu- bzw. wegbewegen. Der Erfassungsbereich beträgt ja 60° und man darf auch eine bestimmte Bewegungsgeschwindigkeit nicht überschreiten, natürlich auch nicht unterschreiten, ebenso ist der ideale Abstand der Hand vom Sensor nach dem Einbau hinter Skalenglas, ... zu ermitteln. Also nicht gleich verzweifeln wenn es anfangs zu Fehlinterpretationen kommt, die sind praktisch immer "handgemacht" und man muss die richtige Ausführung vor dem Sensor erst erlernen. Danach klappt es aber reproduzierbar!

Wenn der Sensor hinter Skalenglas montiert wird, dann ist nach meinen Erfahrungen der beste Platz für den Sensor unmittelbar auf dem Glas, also ohne Zwischenraum. Aber das muss nicht allgemeingültig sein, sicher hängt es auch von dem Material und der Dicke ab.

Gruß
Bernhard
Mit dem Funktionsupdate vom 09.09.2020 ist unser iRadio nun offiziell kein reines Internetradio mehr!

[attachment=79712]

Den Anfang macht die Unterstützung der RTLSDR-USB-Sticks die viele schon kennen. Eine experimentelle FLTK-Nutzeroberfläche für die Touchbedienung zeigt wie man beide Systeme (Internetradio + terrestrisches Radio) bedienungstechnisch unter einen Hut bekommen kann. 

Für dieses Software-Defined-Radio eignen sich natürlich CPU-stärkere Modelle des Raspberry, da die komplette Demodulation (zur Zeit FM, AM, LSB/USB) in Software erledigt wird. Damit ist UKW-Radio genauso wenig ein Problem wie Flugfunk oder Amateurfunk auf 2m/70cm. Mit passenden HF-Upconverter für den RTLSDR-Stick wäre auch LW/MW/KW denkbar. 

Für (nicht nur) leistungsschwächere Modelle des Raspberry wie dem Zero werden sehr bald auch andere Tunermodelle und Radio-ICs aufgenommen, die unter einer gemeinsamen API sehr leicht angesprochen und in bestehende gpiod oder displayd integriert werden können!

Viel Spaß beim Basteln eurer (ab heute) Hybridradios!

Gruß
Bernhard
Mit dem Funktionsupdate vom 17.09.2020 bekommt das iRadio die Unterstützung für ein weiteres SDR-Radio-IC, dem RDA5807. Zusätzlich wird diesmal in einer Demo die Integration dieser Hybridösung (Internetradio/UKW-Radio) bei einem displayd mit ST7735-Display und einem gpiod für Drehencoder gezeigt.

mehr Infos unter: https://github.com/BM45/iRadio/

[attachment=79854]

Viel Spaß beim Basteln
Bernhard
Hallo.

Ich wurde über die iRadio-Whatsappgruppe informiert das es ein Update gab. Diese Info will ich hier weitergeben.

[attachment=83631]

Otto.
danke Otto! Hab grad wieder mehrere iRadio/iTV-Baustellen. Ein update der hardware auf Version 4 wird ja dann allmählich sinvoll.
Ich danke auch. Das würde ich auch machen. Hab gerade noch eine freie Raspberry Pi.
Hallo Bernhard,

ich finde Euer iRadio Projekt super, tolle Arbeit. Ich habe mich schon durch dieses Forum durchgekämpft, aber für mein Problem keine Lösung gefunden. Auch im Block: "radiobasteleien.blogspot" habe ich nur eine Teillösung für mein Problem gefunden.

Mein RPi mit iRadio funktioniert in der Grundausstattung mit Drehencoder zur Sendersteuerung und Lautstärkeregelung über den 3,5 mm Klinken-Ausgang des RPi ohne Probleme. Da ich aber nun den Ton über ein HiFi Berry amp+ augeben möchte, bekomme ich Probleme mit der Tonausgabe. Immerhin habe ich es geschafft den Ton über das HiFi Berry auszugeben, wenn ich wie in der gpiod.c die PIN-Belegung wie folgt

#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

in:
// Tasteranschluesse
#define PIN_PRG_HOCH RPI_GPIO_P1_18
#define PIN_PRG_RUNTER RPI_GPIO_P1_22
#define PIN_PRG_HALT RPI_GPIO_P1_08
#define PIN_PRG_WEITER RPI_GPIO_P1_10

ändere.

Da ich aber mit einem Drehencoder arbeiten möchte, habe ich versucht die rotary.c


#define RoAPin 0 // GPIO-Pin 24, Pinnummer 18
#define RoBPin 1 // GPIO-Pin 25, Pinnummer 22

zu ändern, aber ohne Erfolg. Sobald ich die sudo ./install_Drehencoder.sh ausführe und reboote erfolgt keine
Tonausgabe über HiFi Berry.

Ich hoffe, Du kannst mir einen Tipp geben an welchem Rad ich noch stellen muss damit es funktioniert.


Mit freundlichen Grüßen
mdat69
Hallo mdat69,

Bernhard wird vermutlich nicht antworten.

der HiFi-Berry belegt ja jede Menge gpio's. Sie sind hier gelistet:

GPIO usage of HiFiBerry boards

auch wenn ich jetzt keine Überschneidungen sehe bleibt fast nur ein gpio-Konflikt. Der Drehencoder-daemon macht ja nichts anderes als den encoder auswerten und über web eine Anweisung zu senden.

Hier mal alternative Belegungen für den encoder die ich schon im Einsatz hatte, mit möglichen Konflikten je nach Hifi-Berry Modell:


#define RoAPin 3 // GPIO-Pin 22, Pinnummer 15
#define RoBPin 4 // GPIO-Pin 23, Pinnummer 16


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


#define RoAPin 28 // GPIO-Pin 20, Pinnummer 38 Konflikt Pin 20
#define RoBPin 29 // GPIO-Pin 21, Pinnummer 40 Konflikt Pin 21


#define RoAPin 21 // GPIO-Pin 5, Pinnummer 29 Konflikt Pin 5
#define RoBPin 22 // GPIO-Pin 6, Pinnummer 31 Konflikt Pin 6
(05.02.2021, 22:56)mdat69 schrieb: [ -> ]in:
// Tasteranschluesse
#define PIN_PRG_HOCH RPI_GPIO_P1_18
#define PIN_PRG_RUNTER RPI_GPIO_P1_22
#define PIN_PRG_HALT RPI_GPIO_P1_08
#define PIN_PRG_WEITER RPI_GPIO_P1_10

ändere.

Da ich aber mit einem Drehencoder arbeiten möchte, habe ich versucht die rotary.c


#define RoAPin 0 // GPIO-Pin 24, Pinnummer 18
#define RoBPin 1 // GPIO-Pin 25, Pinnummer 22

zu ändern, aber ohne Erfolg. Sobald ich die sudo ./install_Drehencoder.sh ausführe und reboote erfolgt keine  
Tonausgabe über HiFi Berry.

Hallo.

1. Du hast die Änderungen in der rotary.c in den Kommentar geschrieben! Alles hinter // ist ein Kommentar. 

2. Der gpiod für die Tastensteuerung wird mit der bcm2835-Bibliothek gebaut, erkennbar am include <bcm2835.h>, während der Drehencoder in rotary.c aber die wiringpi-Bibliothek benutzt, erkennbar am dortigen Header-Include.  Ich habe das damals so gemacht um zu zeigen wie man mit beiden Bibliotheken arbeiten kann. ACHTUNG: BCM2835 und wiringPi haben unterschiedliche Bezeichnungen in den Pins! Man kann also die Nummern von der BCM2835 nicht bei der wiringPi verwenden und umgekehrt. Tut man es dennoch, benutzt man völlig unterschiedliche IOs. Die Zuteilung der Pinnummern kann man hier sehen:

[attachment=84447]
 
BCM = bcm2835-Bibliothek
wPi = wiringPi-Biblitohek

Bitte nicht fragen warum man da unterschiedliche Nummerierungen gewählt hat! Ich habe darauf keine Antwort. Ist aber ein beliebter Fallstrick nicht nur beim iRadio, sondern bei allen Raspberry-Projekten.

In deinem Fall ist BCM-Pin 18 nicht wPi-Pin 0 ( RoAPin 0 ) , sondern 1, BCM-Pin 22 auch nicht wPi-Pin 1  (RoBPin 1), sondern 3.

Damit die Sache mit einem externen DAC funktioniert, darf man niemals mit einem gpiod oder displayd solche IOs benutzen, die vom Shield selbst verwendet werden! GPIO usage of HiFiBerry boards | HiFiBerry
Ich habe nicht nachgeschaut ob dies bei deinem DAC der Fall ist, bitte selbst nachsehen!

Solltest Du einen Raspberry 4 verwenden wollen, dann sollte vor der iRadio-Installation immer nochmal das aktuelle Snapshot per github geklont werden, da hier die Bibliotheken (im Gegensatz zum iRadio-Linux-Image) ein Update enthalten, der für den RPi4 benötigt wird. 

Ich denke mit diesen Infos wirst Du Erfolg haben! Ich wünsche viel Spaß beim Bastlern mit dem iRadio.

Allgemein sollten Fragen aber hier FAQ zum iRadio (radio-bastler.de) behandelt werden, da hier nach wie vor nur Neuigkeiten zum iRadio von diversen Nutzern/Mitentwicklern angekündigt werden.

Gruß
Bernhard
Hallo,

danke für eure Hilfe. Jetzt läuft alles wie gewünscht. Sorry noch mal, das ich den Post im falschen Forum eingesetzt habe.

Beste Grüße
Mike
Mike, you're welcome!  Smile

Gruß
Bernhard
Meldung über die iRadio-Whatsappgruppe das es wieder Updates gibt. Will ich nicht vorenthalten.

[attachment=84566]

Otto
oder hier nachlesen: https://github.com/BM45/iRadio
Hallo.

Auch von mir heute die Nachricht, das es ein weiteres Funktionsupdate im iRadio gibt.

Neben der Unterstützung der Generierung eines DAB oder DAB+ Signals durch das iRadio, wird als Sendehardware nun auch der Adalm Pluto und der knapp 20 Euro teure FL2K-Sender
unterstützt. Somit kann man mit relativ geringem finanziellen Aufwand (schneller Raspberry + iRadio + FL2k + Kleinkram) alte DAB Radios ohne Eingriff zu Internetradios umrüsten.  

[attachment=84698]

Viel Spaß beim Bastlen.
Bernhard
Seiten: 1 2 3 4 5 6 7 8 9 10