Radiosender bauen mit Raspi, Arduino oder ESP32

Seite 5: PiFM

Inhaltsverzeichnis

Mit seiner hohen Taktrate kann der Raspberry Pi schnell genug arbeiten, um auch im UKW-Bereich Signale zu erzeugen und zu frequenzmodulieren. Die beiden Hacker Oliver Mattos and Oskar Weigl haben bereits 2013 das PiFM-Projekt ins Leben gerufen, das dies für Anwender auf sehr einfache und komfortable Art erledigt. Die in C geschriebene Software steht als Archiv zum freien Download zur Verfügung. Das Archiv enthält neben dem Quellcode auch ein bereits für den Pi übersetztes Binary und zwei Sounddateien für erste Tests.

Im Kern macht sich die Software einen der vier internen Taktgeneratoren (PLL, Phase Locked Loop A bis D) und Frequenzteiler des Broadcom-Chips zunutze. PLLD läuft mit 500MHz und kann mit den Teilern weitere Frequenzen zwischen 1 und 250MHz erzeugen. Das erzeugte Signal wird praktischerweise gleich auf dem Pin 7 (GPIO4, GPCLK0, ) ausgegeben. Indem man den internen Teiler variiert, kann man die Trägerfrequenz variieren. Die Software verändert den Teiler entsprechend den Werten in den Soundsamples, womit ein FM-Signal an Pin 7 zu messen ist (Bild 6).

Bild 6: Ein langer Draht am Pin 7 der GPIO-Leiste des Pi soll Reichweiten bis über 100 Meter ermöglichen.

Was sich so einfach anhört, ist im Kern dann aber doch erheblich komplizierter als bei AM, insbesondere weil PiFM auch in Stereo senden kann und dazu softwaretechnisch einige Hürden zusätzlich zu nehmen sind. Wer mehr wissen will, liest sich auf Wikipedia die Erklärung zum Pilotton-Multiplexverfahren durch. Aufgrund der Komplexität der Software verzichten wir hier auf das komplette Listing.

Die Software ist einfach zu bedienen, hat in unseren Tests aber nur mit dem Pi Zero, Pi 1 und dem Pi 2B+ (V1.2) ein empfangbares Signal produziert. Beim Pi 2B (V1.1) und einem Pi 3B+ blieb der Empfänger stumm beziehungsweise dudelte die eigentlich auf dieser Frequenz empfangbare Station.

Nach dem Auspacken des Archivs (am zuverlässigsten über den Archivmanager des Pi) wechselt man in das Zielverzeichnis und startet – zunächst ohne Antenne – den Befehl sudo ./pifm sound.wav 100. Stellt man nun ein UKW-Radio in die Nähe und auf 100MHz ein, sollte man den Imperial March von Star Wars hören. Je nach Radio muss man teilweise sehr nah an den Pi heranrücken, Stromversorgungs- und andere Kabel können den Empfang stören.

Praktischerweise kann man unter Linux Ausgaben von einem Programm auf ein anderes umleiten (Piping), sodass man auch andere Sound-Schnipsel per UKW senden kann. Eine eigene MP3-Datei sendet man etwa mit

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

den Strich am Ende nicht vergessen, input.mp3 passt man entsprechend an), mit einem USB-Mikrofon kann man mit

arecord -d0 -c2 -f S16_LE -r 22050 -twav -D copy | sudo ./pifm -

live senden. Weitere Details sind auf der Projektseite von PiFM zu finden.

Zwar erlaubt die Bundesnetzagentur seit 2006 den Betrieb von Mini-UKW-Sendern, aber diese dürfen nicht mehr als 50nW abstrahlen (max. effektive Strahlungsleistung). Damit lässt sich üblicherweise ein Umkreis von rund 10 Metern abdecken. Der Raspi dürfte aber auch ohne Antenne die zulässige Sendeleistung überschreiten. Weil der Pi für seine Trägerfrequenz statt eines Sinussignals ein Rechtecksignal erzeugt, entstehen neben der eigentlichen Sendefrequenz weitere (harmonische) Oberwellen, also Vielfache der Trägerwelle. Die können in Frequenzbereichen stören, die andere Dienste nutzen. Mit einem Bandpass ließen sich solche Störungen aber leicht ausfiltern.

Das gewollte UKW-Senden in Bereichen oberhalb von 108MHz sollte man gar nicht erst probieren. Dort liegt der Flugfunk, dessen Störungen (zu Recht) ziemlich schnell Peilwagen der Bundesnetzagentur vor die Hautür locken. Experimentierfreudige Nutzer berichten, dass man mit einer Antenne an Pin 7 auch mehrere 100 Meter überbrückt. Deshalb und auch wegen der Harmonischen muss man im Normalfall von einem Betrieb hierzulande abraten. (dab)