Raspberry Pi als FM Transmitter benutzen

Durch | 1. November 2015

1. Einen Sound abspielen:

sudo python
import PiFm
PiFm.play_sound("sound.wav")

Verbinden Sie nun einen 70cm (optimal, ~ 20cm tun wird), oder so klar Draht GPIO 4 (die Pin 7 am Kopf P1) als Antenne, und stimmen Sie ein UKW-Radio, um 103.3Mhz handeln.

Laden Sie das Modul hier: (Von der Homepage, oder Archive):

wget http://archiv.betschbacher.de/server/linux/raspberry/pifm.tar.gz

(diese enthält sowohl Quelle und einen ready to go binär. Führen Sie einfach den obigen Code in demselben Ordner. Die Antenne ist optional, aber Bereich von ~ 100 m auf ~ 10 cm reduziert, ohne die Antenne. Die Sound-Datei müssen 16-Bit-Mono WAV-Format.)

2. Neu! Jetzt eine Stereo Ausgabe

sudo ./pifm left_right.wav 103.3 22050 stereo

# Example command lines
# play an MP3
ffmpeg -i input.mp3 -f s16le -ar 22.05k -ac 1 - | sudo ./pifm -

# Broadcast from a usb microphone (see arecord manual page for config)
arecord -d0 -c2 -f S16_LE -r 22050 -twav -D copy | sudo ./pifm -

3. Wie man die Sendefrequenz ändern

Führen Sie das ./pifm binären ohne Befehlszeilenargumente, die Nutzung zu finden.

Die zweite Befehlszeilenargument ist die Frequenz zu senden an, als eine Zahl in MHz. ZB. Dies wird auf 100,0 übertragen

sudo ./pifm sound.wav 100,0

Es wird von etwa 1 MHz bis zu 250Mhz arbeiten, obwohl die Nutzungs FM-Band ist 88 MHz bis 108 MHz in den meisten Ländern.

Die meisten Funkempfänger wollen ein Signal zu sein, ein ungerades Vielfaches von 0,1 MHz um richtig zu arbeiten.

4. Die Details, wie es funktioniert

Nachfolgend finden Sie einige Code, die zusammen mehr als ein paar Stunden in der Kodex-Club pihack gehackt wurde. Es nutzt die Hardware auf dem Raspberry Pi, die tatsächlich dazu bestimmt ist, Spread-Spectrum-Taktsignale an den GPIO-Pins ausgegeben FM Radio Energie zu erzeugen. Das bedeutet, dass alles, was Sie tun, um die Raspberry-Pi in eine (lächerlich leistungsfähigen) FM Transmitter drehen müssen, ist, in einem Draht als Antenne (so wenig wie 20cm tun wird) in die GPIO-Pin 4 Stecker und führen Sie den Code unten geschrieben. Sie sendet auf 100,0 MHz.

Bei der Prüfung wird das Signal nur gestartet zu brechen, nachdem wir gingen durch mehrere Konferenzräume mit schweren Wänden, mindestens 50 Meter entfernt, und hockte hinter einem Schwermetallschrank. Die Klangqualität ist in Ordnung, aber nicht so toll, wie es spielt noch ein paar Klicks, wenn die CPU eingeschaltet wird entfernt, um etwas anderes als spielen die Musik zu tun. Der Plan war, einen Kernel-Mode-Treiber, der in der Lage, den DMA-Controller verwenden, um die CPU zu entlasten und zu spielen glatte Musik ohne Belastung der CPU würde, aber wir aus der Zeit lief. Jetzt Geschehen und Arbeits ist DMA aus dem Userspace genial und schrecklich zugleich!

Wenn Sie v. Schlau sind, können Sie möglicherweise erhalten Stereo los zu sein! Fertig!
Der Zugriff auf Hardware

Die Python-Bibliothek ruft ein C-Programm (sofern sowohl vorkompilierte und in Source-Form). Das C-Programm bildet die Peripheral Bus (0x20000000) im physischen Speicher in den virtuellen Adressraum unter Verwendung von / dev / mem und mmap. Um dies zu tun braucht Root-Zugriff, damit die sudo. Weiter setzt er das Taktgeneratormodul zu aktivieren, und setzt es auf die Ausgabe auf GPIO4 (keine anderen zugänglichen Stifte können verwendet werden). Es setzt auch die Frequenz auf 100.0Mhz, die einen Träger bietet (von PLLD @ 500Mhz, geteilt durch 5 zur Verfügung gestellt). An diesem Punkt wird Radios aufhören, eine „Fuzz“ Lärm und verstummen.

Modulation wird durch Einstellen der Frequenz mit dem Bruchteiler zwischen 100.025Mhz und 99.975Mhz, der das Audiosignal macht getan. Der Bruchteiler nicht genügend Auflösung um mehr als ~ 6 Bit-Audio zu produzieren, aber da die PI ist sehr schnell, können wir tun, um Oversampling etwa 9,5 Bit-Audio unter Verwendung von 128 Teilproben pro Echt Hörprobe bereitstellen. Wir wurden naieve mit unseren Unterabtastung Algorithmus – Sie können jetzt vollständige 16-Bit-Soundqualität zu bekommen, und es tut auch FM Pre-Emphasis, so dass das Ergebnis klingt nicht basslastig.

Schreibe einen Kommentar

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