Freitag, 17. Mai 2019

FMBerry, UKW-Sender mit einem Raspberry


kleine Bastelei am Rande.

Die Sony Ericsson Transmitter-Module bekommt man z.B. im 5er-Pack für knapp 5 Euro inkl. Porto (aus Deutschland!)

Eine Anleitung findet man u.a. bei GitHub

Build an open source fm radio station with your raspberry pi

mit weiterführendem link zur hardware

FMBerry - Hardware

schöne Videos gibt es natürlich auch


man kann nicht so sehr viel falsch machen, und die Sendeleistung ist einigermassen unkritisch (0,5mW im unteren level). Trotzdem hab ich in der ganzen Etage, spätestens nach Ausrichten der Telekop- bzw. Wurfantenne, wunderbaren Empfang in optimaler Qualität. Hier läuft wie im Video der mplayer mit einem Internetradio-Stream.





bei mir muss ja niemand nacket rumlaufen. Statt 3D-Druck heute nur etwas Holzbearbeitung. Jetzt kann ich mit der Box im Einzugsbereich meines WLAN im Haus rumlaufen und UKW-Empfänger mit Rockantenne-Classic-Perlen füttern.






Heute entdeckt: ein webinterface für FMBerry

FMBerryRemote

etwas Eigenwerbung muss auch mal sein:


es spielt keine Rolle wo die NF herkommt, die Übergabe an FMBerry geschieht an der Audiobuchse. Das kann also VLC, MPD, mplayer, volumio oder sogar eine externe Audioquelle sein.

Die Steuerung von FMBerry geschieht durch Anweisungen die ich in die rc.local eingetragen habe. Bei mir wird der mplayer mit einem Internetradiostream gestartet. Ich höre nur den einen Sender damit. Meine Sendebox hat keine Bedienteile. Sie läuft automatisch an wenn ich meinen Arbeitsplatz anschalte und 20sec. später kann ich auf meinen UKW-Radios "Rockantenne Classic Perlen" hören.


Die Übersicht der Befehle (der link ist oben angegeben):

It currently allows the following commands:

   ctlfmberry set freq 99000 - Frequency in kHz (76000 - 108000)
   ctlfmberry poweron
   ctlfmberry poweroff
   ctlfmberry set rdsid DEADBEEF (8 chars! Longer strings will be truncated, shorter - padded with spaces)
   ctlfmberry set rdstext Mike Oldfield - Pictures in the Dark (max. 64 chars. Longer strings will be truncated)
   ctlfmberry set txpwr 0 - 0.5 mW Outputpower
   ctlfmberry set txpwr 1 - 0.8 mW Outputpower
   ctlfmberry set txpwr 2 - 1.0 mW Outputpower
   ctlfmberry set txpwr 3 - 2.0 mW Outputpower (Default.)
   ctlfmberry stereo on - Enables stereo signal (Default)
   ctlfmberry stereo off - Disables stereo signal
   ctlfmberry muteon - Mute audio
   ctlfmberry muteoff - Unmute audio
   ctlfmberry gainlow - Audio gain -9dB
   ctlfmberry gainoff - Audio gain 0dB"
   ctlfmberry set volume 0-6 Audio volume level 0 to 6, equal -9dB to +9db, 3dB step
   ctlfmberry status - Print current status
   ctlfmberry stop - Stop FMBerry daemon

Umbau des FMBerry auf iRadio

dieser Umbau ersetzt den mplayer durch den vlcd und bringt die ganzen Annehmlichkeiten von iRadio mit sich, wie Steuerung über webinterface, Taster oder Encoder, die Möglichkeit ein Display einzusetzen, und die Aktualisierungsmöglichkeiten von playlist und WLAN-Zugangsdaten.

Als erstes sichern wir die doch recht aufwändige rc.local, da iRadio diese überschreibt.

cd /etc
sudo cp rc.local rc.rette


dann erfolgt eine ganz normale iRadio-Installation

git clone https://github.com/BM45/iRadio.git

an der Stelle können wir bereits einen GPIO-Konflikt beseitigen. FMBerry belegt GPIO 17 (Pin 11) für den RDS-Interrupt. iRadio hat an dem Pin aber standardmässig eine der Sendersteuerungsleitungen.

wir definieren also in der rotary.c (für Drehencoder-Steuerung) die GPIO's z.B. so (meine bevorzugte Belegung auch in Hinsicht auf Konflikte mit Displays):

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


und können sodann das iRadio-script und im Anschluss das Drehencoder-script starten:


cd /home/pi/iRadio
sudo ./install.sh


danach:


sudo ./install_Drehencoder.sh


die gesicherte und die neu erzeugte rc.local führen wir zusammen. In meinem Beispiel inkl. Lautstärkeerhöhung:


....
ctlfmberry set freq 107900
ctlfmberry set rdsid saarfrze
ctlfmberry set rdstext "Jupp's Internetradio"
ctlfmberry set txpwr 0
ctlfmberry stereo off
ctlfmberry set volume 0

#mplayer -ao alsa -playlist http://www.rockantenne.de/webradio/channels/classic-perlen.m3u

/usr/bin/vlcd
#/usr/bin/displayd &
/usr/bin/gpiod &
sleep 10
echo "play" | nc 127.0.0.1 9294 -N

amixer -M set PCM 85%

exit 0


falls nach dem Neustart keine Modulation zu hören ist ist evtl. mit raspi-config die Audioausgabe noch nicht auf Klinke geschaltet. Auch musste ich in der vlcd noch wie gehabt den gain-Wert ergänzen.


sudo nano /usr/bin/vlcd


...
--compressor-makeup-gain 0.0 \
--gain 3 \
...

Ergänzung von Bernhard:


das HF-Spektrum sieht eigentlich ganz gut aus, zumindest bedarf es keiner nachträglichen Filterung oder Abschwächer. Problematisch ist jedoch die Stromaufnahme, der Transmitter sollte unbedingt aus der 5V Leitung des Raspberrys mit nachgeschalteten 3.3V Spannungsregler versorgt werden. Versorgt man den Sender aus dem 3.3V Anschluß des Pi (zum Beispiel 3A+), dann funktioniert das bei gleichzeitigen Betrieb des WLAN Moduls noch gerade so. Geht das iRadio aber in den Bluetoothmodus schafft der Regler auf dem Pi nicht mehr alle Komponenten mit einer stabilen Spannung zu versorgen, es kommt zu hörbaren Störungen in der BT-Übertragung.
Also Raspi 5V - 3.3 V Regler - Sender, dann funktioniert das Gesamtpaket gut.


die Verwendung von iRadio ermöglich natürlich auch ein Display. Hier experimentiere ich mit LCD und OLED:



ich hab mich aus mechanischen Gründen für das OLED entschieden. Erstaunlicherweise stellte ich fest das mein Vorrat aus 0,96" OLED aus monochromen sowie aus farbigen Typen besteht. Aber auch Defekte sind zu beklagen. Zwei Stück leuchten gar nicht, zwei weitere haben ein streifiges Bild. Hab sie mit gleichem Ergebnis auch in einer anderen Umgebung getestet.





Keine Kommentare:

Kommentar veröffentlichen