Table of Contents

PySDR

Jde o program určený ke zobrazení živého waterfallu (spektrogramu) ze streamu dat. Ten může být poskytnut přes unixovou rouru, nebo JACK audio systém. Nástroj je užitečný pro ladění detekční stanice Bolidozor. K vizualizaci dat návštěvníkům má sloužit nástroj Freya.

Základní vlastnosti

PySDR s detekčním skriptem.

Další screenshoty můžete vidět na následujících obrázcích.

Ovládání programu

Po stažení a instalaci podle readme na Githubu a zapnutí jacku (například přes qjackctl) můžeme program spustit z pracovního adresáře pomocí.

./pysdr-waterfall

Otevře se nám okno, které v případě, že je připojený nějaký zdroj dat, obsahuje spektrogram. Spektrogram lze levým tlačítkem myši posouvat a pravým zoomovat.

Klávesové zkratky

Aplikují kdykoli při běžícím PySDR.

Parametry příkazového řádku

Použití: waterfall.py [-h] [-b BINS] [-j NAME] [-r RATE] [-o OVERLAP] [-d FILENAME]

Nepovinné argumenty:

Instalace

Ubuntu

Nainstalujeme potřebné závislosti:

sudo apt-get install python-numpy python-opengl python-dev libjack-jackd2-dev

Stáhneme zdrojové kódy z Githubu

git clone https://github.com/MLAB-project/pysdr.git
cd pysdr

Přeložíme výpočetně náročné části napsané v C.

python setup.py build_ext --inplace

Potom PySDR můžeme spustit pomocí

./pysdr-waterfall

Slyšitelný výstup

Pro vygenerování audiosignálu z RF signálu přijímaného stanicí byt vytvořen speciální program whistle, který zpracovává audio vstup z jacku. A upravuje jej do slyšitelné podoby. Je dostupný na Githubu ze stejného repositáře, jako pySDR.

Použití whistle

Whistle je konfugorovatelný generátor signálu dají se v něm za sebe různě poskládat operace, které umí. Je to takové hodně malé GNURadio, jen to umí běžet uvnitř callbacku JACKu. Umí to dělat Kaiser-Bessel FIR filtr (zapisuje se jako „kbfir,řád filtru,Fa,Fb,potlačení v nepropustném pásmu v dB“, kde Fa až Fb zastupují rozsah frekvencí pásmové propusti), frekvenční posuv („freqx,posuv v Hz“), zesílení („amplify,faktor zesílení“), FM demodulaci („fmdemod“) a pak ještě něco. Jednotlivé operace se pospojují dvojtečkou a předají parametru -p.

Např.:

./whistle -p freqx,-10000:kbfir,41,0,1000,100:freqx,1000:amplify,100

pro poslech meteorů. Tahle sekvence operací je nastavená jako výchozí, když se tomu -p nepředá.

./whistle -p freqx,-31800:kbfir,201,0,400,200:freqx,500:amplify,200

Před výpočtem FIR filtru se signal posune o 31.8 kHz dolu.

Spočítá se FIR, který má 201 taps.

Pásmová propust od 0 Hz do 400 Hz. Útlum 200 dB.

Výstup z filtru se posune o 500 Hz nahoru.

Výstup se zesílí 200x.

Princip fungování programu

Program provádí frekvenční konverzi komplexním násobením signálu s lokálním číslicovým oscilátorem. Tím je dosaženo frekvenčního posunu odrazu meteoru do nižších frekvencí ze slyšitelného pásma.

Zobrazení záznamu

PySDR má ještě variantu pysdr-recviewer, který umožňuje zobrazovat wav a FITS záznamy.

$ ./pysdr-recviewer CAR0-2020_08_08_230121644423754.wav

Pro fits soubor je možné si to vyzkoušet například na následujícím meteoru

wget http://space.astro.cz/bolidozor/svakov/SVAKOV-R12/meteors/2020/08/09/08/20200809082529162_SVAKOV-R12_raws.fits
./pysdr-recviewer 20200809082529162_SVAKOV-R12_raws.fit

Přehrávání z audiosouboru

sox SVAK1_1386323982726.wav -c 2 -t f32 -r 44100 - repeat 20 | jack-stdin pysdr:input_i pysdr:input_q -e float

Socket spojeni

PySDR se může připojit na stanici RMDS02D přímo pomocí netcat. Příklad použití je následující.

nc radio-TEST.local 3701 | ./pysdr-waterfall -r 96000

Kde radio-TEST.local je sitove jmeno stanice. V případě, že pysdr spouštíme rovnou na stanici, tak je to localhost.