====== 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í [[http://wiki.bolidozor.cz/doku.php?id=cs:rmds|detekční stanice Bolidozor]]. K vizualizaci dat návštěvníkům má sloužit nástroj [[cs:freya|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 {{youtube>UKHGVK75AGA?medium}} {{:cs:pysdr:pysdr_detector.png?500|PySDR s detekčním skriptem.}} Další screenshoty můžete vidět na následujících obrázcích. {{gallery>:cs:pysdr?2&lightbox }} ==== 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 [[https://github.com/MLAB-project/pysdr|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 [[https://github.com/MLAB-project/pysdr/tree/sound|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 [[http://cs.wikipedia.org/wiki/Filtr_s_kone%C4%8Dnou_impulzn%C3%AD_odezvou|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 [[https://github.com/MLAB-project/pysdr/blob/master/pysdr-recviewer|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.