Raspberry Pi wird zum FM Radio Sender
Der Raspberry Pi kann schnell und einfach ohne große Investition oder Aufwand in einen FM Radio Sender umgebaut werden. Das hört sich schon unglaublich an. Noch unglaublicher ist: man braucht nicht mehr als einen einfachen Draht. Was jetzt wie das Drehbuch eines McGyver Folge klingt ist aber wahr und ich zeige euch hier wie das geht.
Vorbereitung
Für dieses Projekt brauchen wir folgendes:
- Raspberry Pi
mit installierten Betriebssystem. Idealerweise hast du bereits meinen Artikel über die GPIO Schnittstelle gelesen - Draht
als Draht benutze ich Steckdrähte die eigentlich für das Prototyping verwendet werden. Sie sind ideal für die GPIO Schnittstelle und können sehr einfach aufgesteckt und wieder abgenommen werden. - Software
das Projekt wurde ursprünglich von der Imperial Collage Robotik Society im Zuge eines pihack Wochenendes erstellt. Es ist ein einfaches C Programm, welches über Python aufgerufen wird. - Soundfile
bei diesem Projekt wird ein Soundfile über den UKW-Sender und dem Draht als Antenne ausgestrahlt. Dieses muss im WAV Format, 16bit und mono sein. - Radio
einen handelsüblichen Radio um das Signal auch zu empfangen!
Umsetzung
Was ist zu tun? Ganz einfach. Der erste Schritt: Man steckt einen Draht an die GPIO Pin Nummer 4. Ich erinnere an dieser Stelle wieder an meinen GPIO Schnittstellen Artikel, in dem ich eine nette Grafik mit der Pinbelegung habe.
Der zweite Schritt ist nun etwas komplizierter. Wir installieren die benötigte Software. Diese kann man hier herunterladen. Das tar Archiv entpaken wir am besten im home Ordner:
tar -xf Pifm.tar
Das Archiv beinhaltet folgende Dateien:
- pifm
das kompilierte Programm - pifm.c
der Source Code des Programms. Ist auf jeden Fall einen Blick wert und verrät wie man einfach eine Audiodatei über ein Schnittstelle ausgeben kann. - PiFm.py
das Python Script welches wir aufrufen werden - sound.wav
der Sound den wir abspielen wollen. Das ist übrigens ein ganz bekannter Sound…na wer erratet was das ist?
Wir senden Radio!
Bevor wir weitermachen eine Warnung. Den Raspberry Pi als Sender zu verwenden ist in den meisten Staaten verboten! Die Radiofrequenzen werden üblicherweise vom Staat ausgeschrieben und teuer gekauft. Also bitte auf eigene Gefahr und wenn ihr das test, denn nur kurz.
Wir starten also unseren Radiosender mit folgendem Aufruf (die Dateien befinden sich im selben Verzeichnis):
sudo ./pifm sound.wav 100.0
und schon läuft der Sender. Nun müsst Ihr nur noch einen Radio in der Nähe auf die Frequenz von 100 MHz einstellen. Und schon erklingt unser Soundfile. Ich habe das auf eine Entfernung von über 10 Meter testen können. Laut einigen Artikeln kann man mit geeigneter Antenne auch mehrere 100 Meter senden.
Das Programm ist sehr einfach aufgebaut. Als Argumente werden das Soundfile und die MHz angegeben. Wer experimentierfreudig ist, der kann hier mit den Übergabewerten spielen oder sogar selbst Änderungen am Code vornehmen.
Die Theorie
Warum funktioniert das? Das FM Signal wird durch eine Modulation der GPIO Clock erzeugt. Deshalb benötigen wir auch den GPIO Port Nummer 4, denn der Timer liegt dort an. Es ist möglich in einem Bereich von 1 MHz bis zu 250 MHz zu senden.
Ich finde es gut, dass hier auch auf die rechtlichen Aspekte eingegangen wurde. Eigene UKW-Sender dürfen in Deutschland max. 50 nW abstrahlen, was mit dem Pi und dem Draht als Antenne weit überschritten werden dürfte.
Dass sowas nicht ganz legal ist, das wissen wir ja, aber wird das überhaupt jemand mitbekommen? Sagen wir mal jemand macht das zu Hause und sendet auf der Frequenz eines Radiosenders, sodass evtl (je nach Antenne) die 3 umliegenden Häuser nur noch Störgeräusche, oder eine Überlappung reinkriegen. Ich glaube nicht, dass dann auf einmal die Polizei bei dir vor der Tür steht. also ich glaube da kann man schon etwas mit rumtrollen, z.B. PI an Akkupack, Sender starten und dann bissl mit dem Auto durch die Stadt fahren. Solange man es nicht übertreibt kann das ganz witzig sein 😀 So, nun darf ich hoffen, dass ich wegen diesen Kommentars nicht angehalten werde am Montag auf dem Weg zur Schule 😀
Klar, wenn der Sender nicht allzu weit stört, dürfte es vermutlich kein Problem geben. Wenn allerdings die Störung mehrere Straßen weit geht, kann es schon sein, dass ein Messwagen vorbeigeschickt wird – das kann dann schnell teuer werden (ich habe mein Praxissemester bei einer Firma gemacht, die einen Messwagen hatte ;)).
Hallo,
Hallo Werner,
wie Alexander schon richtig schrieb, sind im UKW-Bereich max 50nW ~ 1.6 mV zulässig. Der Raspi gibt aber 3,3 Vss ab. Das Ausgangssignal ist außerdem rechteckförmig, erzeugt also zahlreiche Oberwellen, die andere Funkdienste oder Hometechnik stören können. Dagegen kann man sich durch Tiefpassfilter schützen und die Spannung durch einen Spannungsteiler reduzieren. Trotzdem bleibt die Sache illegal und die Bundesnetzagentur freut sich über jeden Euro, den Du spendest.
Hey,
hab das ausprobiert und es klappt super.
Allerdings wird nach Beenden des Lieds oder stoppen des Prozesses die Frequenz nicht wieder gelösht. der RasPi sendet weiterhin, wenn auch still (muted), aber eben weiter auf dieser Frequenz. Der ursprüngliche Sender ist somit nicht mehr zu hören.
Wie kann ich den kompletten Prozess stoppen?
Muss ich dafür die gpio resetten?
Hat jemand ne Idee?
Zitat:Hey,
hab das ausprobiert und es klappt super.
Allerdings wird nach Beenden des Lieds oder stoppen des Prozesses die Frequenz nicht wieder gelösht. der RasPi sendet weiterhin, wenn auch still (muted), aber eben weiter auf dieser Frequenz. Der ursprüngliche Sender ist somit nicht mehr zu hören.
Wie kann ich den kompletten Prozess stoppen?
Muss ich dafür die gpio resetten?
Hat jemand ne Idee?
Ja einfach reboot
sudo ./pifm stop
stoppt das Senden
Nein, das schaltet leider nur die Frequenz auf 103,3 MHz um. Jedenfalls bei der Code-Version, die oben verlinkt ist.
Hallo Zusammen,
Ich habe eine Frage an Euch, vielleicht kann mir das jemand beantworten. Ich habe lediglich geringfügige Programmierkenntnisse. Nun habe Ich gelesen, dass ein Arduino Object in puredata, ebenfalls auf dem Raspberry Pi läuft. Dazu nur ganz knapp, Ich habe ein photosensor, der über ein Arduino Fio, das mit einem xbee verbunden ist, via einem puredata protokoll(softwareseitig) und einem einfachen Spannungsteiler hardwareseitig, je nach dem Lichteinfall, ein Soundfile schneller oder langsamer abspielt.
Von Haus aus bin Ich Performer, d.h. Ich würde gerne dieses in Echtzeit durch puredata manipulierte soundfile auf dem raspberry pi, als radio signal abgeben (mikro power radio/temporäre kunstperformance). Wäre das technisch machbar? Worauf müsste Ich achten, bzw. wo könnten Schwierigkeiten auftreten? Ich bedanke mich für mögliche Anhaltspunkte an denen Ich mich weiter orientieren kann. Besten Dank. MFG dm
Empfehlenswert
https://www.youtube.com/watch?v=8lwfTOfnfME
Zum korrekten Abschalten, füge folgende Zeilen in
unSetupDMA() ein:
CLRBIT(GPFSEL0 , 14);
CLRBIT(GPFSEL0 , 13);
CLRBIT(GPFSEL0 , 12);
Damit wird GPIO Pin 4 wieder als Input geschaltet und kann nicht weiter senden. Getestet.
Ach so, und außerdem unsetDMA aufrufen:
void handSig(int dunno) {
unSetupDMA();
exit(0);
}
senden abbrechen: ./pifm (frequenz)
Gibt ne neue version mit stereo
Kann man so auch NFC benutzen ohne sich ein Modul kaufen zu müssen ? NFC hat 13.56 mhz
Ja klar. Gib einfach „sudo ./pifm 13.56 “ ein