Obsah
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
- OpenGL grafická akcelerace
- Možnost připojení do Jacku
- Možnost spuštění detekčních skriptů
- Dynamická změna měřítka pomocí myši
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.
- ~ aktivace Python konzole (ve stylu Quake)
- t textureshot - uložení textury celého waterfallu
- s screenshot - uložení aktuálního zobrazení na obrazovce
Parametry příkazového řádku
Použití: waterfall.py [-h] [-b BINS] [-j NAME] [-r RATE] [-o OVERLAP] [-d FILENAME]
Nepovinné argumenty:
- -h, –help ukáže nápovědu a zkončí
- -b BINS, –bins BINS nastavení počtu binů FFT (default: 4096)
- -H HEIGHT –height Výška zobrazeného spektrogramu v sekundách.
- -j NAME, –jack NAME pojmenování přípojky vytvořené v JACKu
- -r RATE, –raw RATE Očekává signál ze standardního vstupu se zadanou rychlostí vzorkování.
- -o OVERLAP, –overlap OVERLAP poměr překrytí FFT oken (default: 0.75)
- -d FILENAME, –detector FILENAME soubor s detekčním skriptem.
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.