Raspberry Pi: UKW Sender für lau

Der Raspberry Pi kann ja wirklich einiges und vor kurzem bin ich auf eine recht interessante Anwendung gestoßen. Man kann den Raspberry Pi als UKW Sender umfunktionieren, oder auf Englisch FM-Transmitter. Das Anwendungsgebiet lasse ich jetzt mal außen vor, aber es gibt immer Anwendungsbereiche wo so etwas nützlich sein kann. Ich gehe in dem Artikel nicht nur auf die Funktionsweise ein, sondern auch kurz auf die rechtliche Lage.

Erstmal ausprobieren!

Zunächst erstellen wir einen Ordner, wir wollen ja alles ordentlich haben. Also im Homeverzeichnis des Benutzer Pi, gekennzeichnet durch ~ $, geben wir als Kommando mkdir pifm ein.

Ist dies geschehen, geht man per cd pifm in das Verzeichnis. Nun laden wir die Python-Anwendung von http://www.icrobotics.co.uk/wiki/index.php/Turning_the_Raspberry_Pi_Into_an_FM_Transmitter herunter.
Download (Mirror): https://filedn.eu/lPqDtxJ4f8JLdiw4SaIul6f/Blog/RPI_UKW_Sender/pifm.tar.gz

Dazu gibt man einfach wget http://omattos.com/pifm.tar.gz in die Konsole ein.
Nun haben wir das Tar-Archiv heruntergeladen. Entpacken wir es mit dem Befehl tar -xzf pifm.tar.gz.

Mit dem Befehl ls -l kann man nun den Inhalt des Ordners ermitteln. Dort finden sich die Dateien pifm und sound.wav. Die benötigen wir jetzt für den Test. Mit der Eingabe von

sudo ./pifm sound.wav 100.00

startet man die Wiedergabe von sound.wav auf der Frequenz 100 MHz. Wenn man nun ein ganz normales Radio in unmittelbarer Nähe von knapp 10 cm stellt und dieses auf 100 MHz einstellt, sollte das Star Wars Theme zuhören sein. Geht man mit dem Radio schon wenige Zentimeter weg, verstummt die Musik und, wenn vorhanden, das normale Radioprogramm ist zuhören. Die Qualität ist möglicherweise nicht die Beste aber es funktioniert.

Wenn man nun ein längeres Stück Draht an das Interface GPIO 4, dem siebten Pin, steckt kann man die Reichweite sogar noch erweitern. Bei 20 cm Draht ist von 100 Metern die Rede. Leider konnte ich es nicht ausprobieren.

Die Wave-Datei liegt in Mono, PCM 16 Bit mit 22050 Hz vor. Wenn man eine andere Wave-File mit zum Beispiel 44100 Hz auslesen möchte funktioniert dies nicht. Mit dem Hintergrundwissen kann man natürlich schnell mit beispielsweise Audacity eigene passende Wave-Dateien erstellen und diese auf den Raspberry hochladen und dann auf der Frequenz abspielen.

Falls ihr euch nicht die Arbeit machen wollt, habe ich hier noch 3 Klassiker zum Herunterladen.
https://filedn.eu/lPqDtxJ4f8JLdiw4SaIul6f/Blog/RPI_UKW_Sender/Test-Dateien-PiFM.zip
test.wav – Mozarts 40. Sinfonie
test2.wav – Canon in D
test3.wav – Beethovens 9. Sinfonie

Mit den richtigen Voraussetzungen ist sogar eine Übertragung von MP3-Dateien oder eines Mikrofons möglich sein. Sobald ich dies ausgetestet habe, werde ich den Artikel hierzu noch erweitern.

Mit MP3 ist es doch handlicher, oder?

Um eine MP3 Wiedergabe durchzuführen, benötigen wir erst den Codec. Dazu installieren wir über sudo apt-get install ffmpeg den Mpeg Codec. Natürlich solltest ihr auch eine MP3 Datei auf dem Raspberry zur Hand haben, ich benutze eine tetris.mp3. Nun geben wir folgenden Befehl in die Konsole:

ffmpeg -i tetris.mp3 -f s16le -ar 22.05k -ac 1 - | sudo ./pifm - 100.00

Kurz erklärt:
ffmpeg – ist das Programm zum decodieren der MP3 Datei.
-i [filename] – hier wird die verwendete Datei eingegeben.
-f s16le – bestimmt das Ausgabeformat als PCM 16 bit little-endian format.
-ar 22.05k – setzt die Abtastrate der Ausgabe auf die benötigten 22050 Hz.
-ac 1 – setzt die Ausgabe auf Mono.
‘-‘ – der Bindestrich alleine ist im Grunde die Ausgabedatei, die pifm dann abruft.

Der Inhalt der MP3 Datei wird dabei in ‘-‘ gestreamt und gleichzeitig von pifm abgerufen. Wenn man nun das Radio daneben stellt, hört man wie die MP3 übertragen wird.

Will man im übrigen die Übertragung abbrechen, reicht [Strg]+[C] zu drücken. Das Programm wird dann geschlossen. Ansonsten beendet sich das Programm, wenn die Wave-Datei zu ende ist.

Und wie funktioniert das jetzt?

Durch Modulation. 100%ig kann ich es auch nicht erklären, ich kann zum Beispiel nicht sagen, wie das Programm nun konkret arbeitet, aber ich versuche eine grundlegende Erklärung.

Wenn wir uns GPIO 4, also den siebten Pin anschauen, sehen wir das dort eine CLK zugewiesen ist.

Bild von elinux.org

CLK ist eine Clock, das heißt die Ausgabe erfolgt nicht nur Digital in 0 und 1, also Aus und An, sondern als Taktgeber in einem bestimmten Rhythmus, eine Frequenz also. Das Programm macht sich dies also zu nutzen und erzeugt eine Trägerfrequenz die von normalen Radios abgehört werden kann. Auf dieser Trägerfrequenz wird dann die eigentliche analoge Information geliefert, hier Audiosignale. Die Trägerfrequenz wird beim Empfänger wieder subtrahiert und wir hören die Melodie von Star Wars.

Das ist wie wenn ein Surfer (Audiosignal) in das Meer (Sender) schwimmt die Welle (Trägerfrequenz) ihn erfasst und ihn reitend auf der Welle zum Strand (Empfänger) transportiert. Der Vergleich hingt vielleicht ein wenig, aber so kann man sich das glaube ich ganz gut vorstellen.

Irgendwelche Bestimmungen, die ich wissen muss?

Ja, definitiv. Wir senden hier auf einem Frequenzband, welches in eigentlich allen Ländern für den Radioempfang verwendet wird. In Deutschland ist die Bundesnetzagentur für die Zuweisung der Frequenzbereiche zuständig. Ein Hoch auf die transparente Bürokratie der Bundesrepublik kann man sich alle verfügbaren Frequenzen im Frequenznutzungsplan anschauen.

Die Bundesnetzagentur hat zu diesem Zweck ein handliches 675-seitiges PDF in dem man sich durchblättern kann. Ich habe das mal für euch gemacht.

Laut den Seiten 170 und 171 ist der Radioempfang in der BRD auf den Frequenzbereich 87,5 – 108 MHz beschränkt. Die allgemeine Nutzung hier ist Zivil gehalten. Es gibt drei verfügbare Nutzungsbereich, der Rundfunkdienst, ortsfeste Tonübertragungen und Funkanwendungen geringer Reichweite (SRD). Zudem sind die Nutzungsbestimmungen 5, 6, 14 und 31 einzuhalten. Die Nutzungsbestimmungen sind von Seite 663 im PDF-Dokument zu ersehen.

Darf man auf diesen Frequenzen nun als zivile Privatperson auch senden oder nicht?

Nehmen wir die Daten mal auseinander.
Zivile Nutzung – ist gebongt, wir sind Zivilisten und wollen damit nicht den Dritten Weltkrieg vom Zaun brechen.
Funkanwendungen geringer Reichweite – könnte man sagen, sind aber glaube eher Gerät wie Walkie Talkies oder dergleichen gemeint.
Rundfunkdienst – nope, definitiv nicht.
ortsfeste Tonübertragungen – da kommen wir dem Ganzen schon sehr nahe. Leider ist es nicht genau spezifiziert, wenn man aber genau ließt, wird man merken, dass wahrscheinlich eine Tonübertragung auf einem eingegrenzten Bereich/Gebiet gemeint ist.

Was sagen die Nutzungsbestimmungen aus?
5ISM-Anwendungen können den Frequenzbereich mit benutzen. Eindeutig ausgeschlossen, noch ist der Pi keine Mikrowelle.
6 – Nato-Truppen können die Frequenzen verwenden. Okay, das war wohl nichts…
31 – Funkanlage geringster Leistung dürfen die Frequenzen mit benutzen. Ja kommt schon ganz gut hin. Allerdings ist eine Sendewirkung von 100 Metern schon recht happig. Da sollte man dann also lieber aufpassen.
14 – Vollzitat aus dem Frequenznutzungsplan:
Frequenzen aus den Frequenzbereichen 87,5 – 108 MHz, 174 – 223 MHz und 470 –790 MHz können für nichtöffentliche, ortsfeste Übertragungen innerhalb eines Grundstückes mit einer Sendeleistung von maximal 50 mW ERP und mit der im jeweiligen Frequenzbereich verwendeten Rundfunkübertragungstechnik genutzt werden. Diese Nutzungen genießen keinerlei Schutz gegenüber dem Rundfunkdienst und dürfen keine schädlichen Störungen des Rundfunkdienstes verursachen.

Also haben wir jetzt unsere Gewinner zusammen, am ehesten ist der Raspberry Pi UKW Sender als ziviler Funksender für ortsfeste Tonübertragungen zu sehen, wobei speziell die Nutzungsbedingung 14 eingehalten werden muss. Heißt dennoch, stören wir einen großen Bereich oder schlimmer stören wir wichtige andere Frequenzen durch Übersprechen gibt es richtig großen Ärger.

Wenn man allerdings nicht übertreibt und die Sendeleistung auf ein paar Meter beschränkt, wird es dort wohl keine Probleme geben. Also statt 20 cm Draht, würden es vielleicht auch 3 cm tun. Es ist definitiv besser für euch, wenn ihr nicht plötzlich ein Brief vom Staatsanwalt oder dergleichen erhalten wollt.

Falls ihr jetzt darüber nachdenkt, andere Frequenzen als die im Bereich von 87,5 – 108 MHz zu benutzen, sei gesagt, dass ich keinerlei Informationen gesehen habe das die für solch eine Anwendung freigegeben sind. Die Frequenzen werden meist für den Flugverkehr, vom Militär oder der Eisenbahn verwendet und außerdem wird es recht schwierig diese Frequenzen ohne spezielle Geräte abzuhören.

ACHTUNG:

Die Angaben sind natürlich ohne Gewähr. Das sind hier alles theoretische Überlegungen, die nicht konkret bewiesen werden können. Heißt also, ihr solltet euch nicht darauf verlassen, was hier steht, ich tue es auch nicht. Das sieht alles schön aus, im Streitfall wird man aber wahrscheinlich eher den Kürzeren ziehen, also belasst es beim kurzen Ausprobieren und Staunen.

3 Gedanken zu “Raspberry Pi: UKW Sender für lau

  1. Seit einigen Jahren gibt es auch UKW-Transmitter fürs Auto, damit man seine MP3-Musik ohne AUX-Anschluß im auto hören kann. Aber ich vermute mal, daß auch diese Geräte eine extrem niedrige Reichweite haben und sich möglicherweise rechtlich auf einer Grauzone bewegen…:-)

  2. Pingback: Raspberry Pi doch als Mikrowelle | LierschIT

  3. Pingback: Raspberry Pi zum Brauen von Bier verwenden | LierschIT

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert