22.11.2013 Aufrufe

Wideband-Spectrum mit Funcube Dongle für GnuRadio

Wideband-Spectrum mit Funcube Dongle für GnuRadio

Wideband-Spectrum mit Funcube Dongle für GnuRadio

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Wideband</strong>-<strong>Spectrum</strong> <strong>mit</strong> <strong>Funcube</strong> <strong>Dongle</strong><br />

<strong>für</strong> <strong>GnuRadio</strong><br />

Michael Hartje, DK5HH, Bremen, Germany<br />

15. Juli 2012<br />

Der FunCube <strong>Dongle</strong> (FCD) [2] ist ein USB-Stick <strong>für</strong> den Empfang zwischen<br />

60 MHz und 1,7 GHz. Eine Vielzahl von SDR-Programmen [5] und auch <strong>GnuRadio</strong><br />

[3] erlaubt in einfacher Weise den Empfang in einem Spektrum von 96 kHz. Mit der<br />

hier vorgeschlagenen Python-Prozedur wird das automatische Durchstimmen und die<br />

Darstellung der Empfangssignale als Spektrum ermöglicht. Es basiert auf [4].<br />

1 Installation<br />

1. Installation von <strong>GnuRadio</strong> Version 3.5.3 oder neuer auf einem Linux. Alternativ kann<br />

eine ältere Version von <strong>GnuRadio</strong> verwendet werden, in die zusätzlich nachträglich die<br />

Bibliotheks-Routinen <strong>für</strong> FCD eincompiliert worden sind.<br />

2. Installation Gnuplot und python-gnuplot <strong>für</strong> die Verbindung zwischen Python und Gnuplot.<br />

3. Anschluss von FunCube-<strong>Dongle</strong> - wird als Sondkarte hw:1 angesprochen, dies kann über<br />

Aufrufparameter gegebenenfalls geändert werden.<br />

4. die Parameter DC-I-Oset, DC-Q-Oset, IQ-phase-Balance und IQ-gain-Balance sowie die<br />

Frequency-corr. (in ppm) sind <strong>für</strong> den verwendeten FCD zu erproben und auch im Python-<br />

Skript einzustellen. Ein falscher Wert <strong>für</strong> diese Parameter führt zu Empfang von Spiegelfrequenzen<br />

und einem zusätzlichen Signal in der Mitte des Empfangsbereichs (96 kHz). Die<br />

Messergebnisse werden dadurch beeinträchtigt.<br />

2 Benutzung<br />

Derzeit ist eine Nutzung nur unter Linux möglich. Da aber bereits <strong>GnuRadio</strong> <strong>für</strong> Windows<br />

als vorcompilierte Version zur Verfügung steht, ist es möglicherweise auch unter Windows zu<br />

verwenden. Wer es ausprobiert meldet mir (DK5HH) dies bitte zurück.<br />

2.1 erster Aufruf<br />

python fcd−wideband−spectrum . py<br />

gibt eine Liste aller Parameter und einer kurzen Hinweis auf die Funktionsweise und Benutzung.<br />

Dies hilft zur Orientierung, ist jedoch nicht unbedingt notwendig.<br />

2.2 normaler Aufruf<br />

python fcd−wideband−spectrum . py 144000000 146000000<br />

1


3 Funktionsweise der Prozedur<br />

erlaubt einen Plot der Frequenzen von 144-146 MHz.<br />

2.3 Aufrufparameter<br />

zusätzliche Aufrufparameter werden bei Bedarf zusätzlich zu den beiden Frequenzgrenzen angegeben:<br />

args beschreibt die Hardwareadresse des genutzten FunCube <strong>Dongle</strong> als Soundkartenadresse<br />

des Systems<br />

samp_rate ist beim FCD auf 96 kSample/s vorgegeben<br />

gain Stellt die Verstärkung des Low Noise Ampliers (LNA) Vorverstärkers ein (in dB)<br />

tune-delay Verzögerungszeit nach Einstellen der neuen Frequenz beim Durchlaufen des gewählten<br />

Frequenzbereichs<br />

dwell-delay Verweilzeit auf der jeweiligen eingestellten Mittenfrequenz; dient dazu, die in den<br />

Puern noch bendlichen Abtastwerte der letzten Frequenzeinstellung <strong>für</strong> die neue Frequenz<br />

ausreichend sicher zu ersetzen.<br />

t-size gibt vor, <strong>mit</strong> wie vielen FFT-Bins (Frequenzpunkte) die Frequenztransformation vorgenommen<br />

wird. Diese Zahl ist vorher als zeitliche Abstastpunkte vom FCD <strong>mit</strong> 96 kSample/s<br />

zu liefern.<br />

show-disp Zeigt während der Messung die gerade gemessene Mittenfrequenz sowie Mittel- und<br />

Maximalwert zusätzlich auf StandardOUT an.<br />

num-tests gibt die Zahl der Wiederholungen von gesamten Durchläufen durch das gewählte<br />

Frequenzband an<br />

3 Funktionsweise der Prozedur<br />

Für einen zu untersuchenden Frequenzbereich von min_freq bis max_freq wird dieser in kleinen<br />

Schritten durchlaufen. Die Schrittweite ∆f step beträgt<br />

∆f step = 3 4 f samp_rate = 3 96 kHz = 72 kHz (1)<br />

4<br />

Sie führt zur Überlappung der einzelnen Messabschnitte. Mit einer Samplerate von 96 kHz<br />

wird die Frequenz <strong>für</strong> jede Messung um 72 kHz versetzt.<br />

Es werden im einzelnen nun t_len = 256 Abastwerte <strong>mit</strong> einer Abtastrate von 96 kHz<br />

aufgenommen und in den Frequenzbereich transformiert. Vor dieser Fouriertransformation wird<br />

ein Blackman-Harris-Fenster auf die zeitliche Messung angewendet, um so<strong>mit</strong> ein möglichst fehlerfreies<br />

Signal im Frequenzbereich zu erhalten und Fehler durch eine Rechteckfensterung zu<br />

verringern. Es enstehen nach der Transformation 256 Frequenzpunkte - sogenannte Bins. Diese<br />

haben einen Frequenzabstand<br />

∆f bin = f samp_rate<br />

fft len<br />

=<br />

96 kHz<br />

256<br />

= 375 Hz (2)<br />

und beinhalten nun die Signalleistung in diesem Frequenzband von ∆f bin Breite.<br />

Aus dem errechneten Spektrum <strong>mit</strong> 256 Werten wird der Mittelwert des Betrages und das<br />

Maximum aller FFT-Bins als logarithmischer Wert er<strong>mit</strong>telt. Bezugsgröÿe (0 dB) ist ein Sinussignal<br />

<strong>mit</strong> voller Aussteuerung nach Behandlung <strong>mit</strong> der Fensterfunktion. Es wird die Leistung<br />

dargestellt.<br />

Die Werte werden <strong>mit</strong> dem <strong>mit</strong>telsten Wert des aktuell gerade gemessenen Frequenzbandes<br />

von 96 kHz in eine Zeile geschrieben. (3 aufeinander folgende Zeilen hier dargestellt)<br />

2


3 Funktionsweise der Prozedur<br />

# Frequenz/Hz Mittelwert /dB Maximalwert/dB<br />

85108000.0 −61.0323811229 −52.6974319553<br />

85180000.0 −60.5301315731 −51.3511142129<br />

85252000.0 −60.6840445172 −52.3867772847<br />

Nach dem vollständigen Durchlauf von der kleinsten bis zur gröÿten Frequenz werden alle<br />

Messwerte, die während der Messung in die Datei fcd-measure-power.dat geschrieben worden<br />

sind auf die Datei fcd-measure-plot.dat umkopiert. Da<strong>mit</strong> wird es möglich, schon während der<br />

nächsten Messung dieser neue Datei zu plotten. Das geschieht <strong>mit</strong>tels Gnuplot und dem Skript<br />

plot-wideband-spectrum.gp. (Wenn wir die Messdatei noch weiter auswerten wollen, ist jetzt<br />

Zeit, diese Datei zu kopieren oder umzubenennen).<br />

Die Prozedur ist der im Gnuradio verfügbaren Prozedur usrp_spectrum_sense.py ähnlich.<br />

Die Funktionsweise dieser Prozedur ist in dem Beitrag [1] weiter beschrieben.<br />

An dieser Stelle soll auf die Parameter <strong>für</strong> Gnuplot nicht weiter eingegangen sondern auf die<br />

Programmhilfe zu Gnuplot verwiesen werden. Mit den gewählten Parametern entsteht ein Plot,<br />

der die Messpunkte <strong>mit</strong> Linien verbindet. Insbesondere bei einer hohen Anzahl von Messpunkten<br />

(mehr als 300) kann ein solcher Übergang von einer Darstellung <strong>mit</strong> Punkten und den verbindenden<br />

Linien hin zu einer Darstellung <strong>mit</strong> verbindenden Linien ohne explizit ausgezeichnete<br />

Messpunkte die Darstellung verbessern.<br />

Abbildung 1: Beispiel <strong>für</strong> einen Plot der Mittelwerte von 66 bis 122 MHz in Bremen<br />

Das Bild 1 zeigt einen Frequenzausschnitt der Mittelwerte im Frequenzbereich zwischen 66 und<br />

122 MHz. dabei wurde eine Innenantenne <strong>mit</strong> einem Draht von 30 cm Länge (nicht resonant im<br />

dargestellten Frequenzbereich) in Bremen verwendet. Deutlich sichtbar sind gröÿere Amplituden<br />

auf den Frequenzen der lokalen UKW-Stationen, aber auch im Bereich von 115 bis 122 MHz<br />

Teile des lokalen Flugfunks (bei relativ geringem Abstand des Messortes zum Flughafen).<br />

Durch Änderung der Parameter im Plot-Skript kann Mittelwert und Maximum gemeinsam<br />

dargestellt werden.<br />

Der deutlich unterschiedliche Amplitudenwert von Mittelwert und Maximum (zwischen 10<br />

und 20 dB) im Frequenzbereich von 88-108 MHz entsteht durch die Modulation der in diesem<br />

Frequenzbereich bendlichen Sender sowie dadurch, dass bei einer Samplerate von 96 kHz das<br />

3


4 Listings<br />

Abbildung 2: Beispiel <strong>für</strong> einen Plot von 65 bis 120 MHz <strong>mit</strong> Mittelwert und Maximum der<br />

Leistungen<br />

Aufnehmen von 256 Abtastwerten bereits einen Zeitraum von<br />

1<br />

∆t = 256 · = 2, 67 ms (3)<br />

96 kHz<br />

in Anspruch nimmt. Da auch die Frequenzverstimmung der jeweiligen Mittenfrequenz von<br />

einem zum Nachbarwert über Parameter eingestellt eine zusätzliche Zeit von etwa 20 ms, zusammengesetzt<br />

aus dwell-delay = 10 ms und tune-delay = 10 ms, in Anspruch nimmt, hat sich<br />

bei breitbandig modulierten Signalen deren Amplitude bereits wieder verändert.<br />

Ein Ausschnitt im folgenden Bild zeigt<br />

Im Bild 3 ist deutlich das Absinken des Mittelwertes (rot) im Bereich von 1,0 bis 1,2 GHz<br />

zu erkennen. In diesem Bereich hat der Tuner keinen Empfang, da der Local-Oszillator in diesem<br />

Bereich nicht ordentlich synchronisert. Glücklicherweise ist in dem <strong>für</strong> den Amateurfunk<br />

interessanten Bereich oberhalb 1,200 GHz wieder Empfang möglich.<br />

Auch ist zu erkennen, das der Mittelwert <strong>mit</strong> der Frequenz nicht konstant ist. An den Stellen<br />

218, 330, 430 und 670 MHz schaltet intern der FCD um, so dass anschlieÿend <strong>mit</strong> steigender<br />

Frequenz ein höherer Rauschpegel entsteht, der aber <strong>mit</strong> weiter steigender Frequenz abnimmt.<br />

Eine weitere Untersuchung ist bisher nicht durchgeführt worden.<br />

Die vielen aus dem Rauschpegel herausragenden Spitzen sind zumindest im Bereich um 100<br />

MHz, und im Bereich von 930 bis 960 MHz eindeutig auf einen Direktempfang von Sendern<br />

<strong>mit</strong> dem oenem Antenneingang zurückzuführen. Es handelt sich um eine Einstrahlung in das<br />

nicht schirmende Plastikgehäuse des FCD. Da aber selbst im Mobilfunkbereich bei 950 MHz<br />

die entstehenden Amplituden nicht besonders hoch sind, kann im praktischen betrieb durch den<br />

Parameter gain eine Anpassung an die geforderten Empndlichkeiten erfolgen.<br />

4 Listings<br />

4.1 Gnuplot-Steuerdatei<br />

Aufruf innerhalb der Prozedur<br />

4


4 Listings<br />

Abbildung 3: Frequenzgang von 65-1700 MHz <strong>mit</strong> oenem Antenneneingang - dargestellt ist der<br />

Mittelwert (rot, unten) und der jeweilige Maximalwert eines Spektralausschnittes<br />

von 96 kHz (grün) (22000 Messpunkte)<br />

Diese Datei beinhaltet die Steuerbefehle <strong>für</strong> Gnuplot. Die Beduetung ist über die Hilfefunktion<br />

des Programms nachzuschlagen. Mit dem Zeichen # beginnt eine Kommentarzeile. Diese<br />

werden auch genutzt, um 'derzeit' nicht aktivierte Programmteile zu deaktivieren<br />

##<br />

## gnuplot−commands f o r fcd−wideband−spectrum . py<br />

s e t autoscale<br />

unset l o g s c a l e<br />

unset l a b e l<br />

s e t x t i c auto<br />

s e t y t i c auto<br />

s e t format x "%.1 s %c"<br />

s e t t i t l e "<strong>Wideband</strong> <strong>Spectrum</strong> Analyzer f o r FunCube−<strong>Dongle</strong>"<br />

s e t x l a b e l "Frequenz / Hz −−−>"<br />

s e t y l a b e l " Leistung / dB −−−>"<br />

s e t term wxt<br />

s e t grid<br />

#s e t term pdf<br />

#s e t out " fcd−measure−plot . pdf "<br />

#plot " fcd−measure−plot . dat " using 1:2 t i t l e ' Mittelwert ' w lp ps 1<br />

#s e t out<br />

#s e t term wxt<br />

plot " fcd−measure−plot . dat" u 1:2 t ' Mittelwert ' with l i n e s<br />

# , ' ' u 1:3 t "Maxwert" with points<br />

4.2 Python-Prozedur<br />

Die notwendige Python-Prozedur ist als separate Datei verfügbar.<br />

5


5 Quellenverzeichnis<br />

5 Quellenverzeichnis<br />

Literatur<br />

[1] Firas, A.: Some usrp-spectrum-sense.py explanations. Forum Gnu Radio. http://www.<br />

ruby-forum.com/topic/174437. Version: 12 2008<br />

[2] n.n.: FUNcube <strong>Dongle</strong>. http://www.funcubedongle.com/<br />

[3] n.n.: www.gnuradio.org. http://www.gnuradio.org<br />

[4] Ortega, S.: <strong>Wideband</strong> <strong>Spectrum</strong> Analyser. Forum Gnu Radio. http://www.ruby-forum.<br />

com/topic/169964. Version: 11 2008<br />

[5] Sonore, Editeur: Ham Radio Software from F6CTE. http://f6cte.free.fr/index_<br />

anglais.htm. Version: 3 2011. F6CTE<br />

6

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!