Toto je starší verze dokumentu!
Obsah
OpenGL waterfall display 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.
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í.
./waterfall.py
Otevře se nám okno, které v případě, že je připojený nějaký zdroj dat, obsahuje spektrogram
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í
./waterfall.py
Použití s gnuradiem
Generování zvukového výstupu - Whistle
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.
Princip funkce 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.
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
Prezentační vrstva detekční stanice
Pro přímé zobrazování detekovaných meteorů může běžet živý waterfall i na jiném počítači, než na kterém běží detekční stanice. Blokové schéma systému pak vypadá následovně:
Jednotlivé bloky jsou výše zmíněné programy. Za ideálních podmínek by prezentačních stanic mohlo být k jedné detekční stanici připojeno více.
Spuštění pySDR na prezentačním počítači
Pokud je stanice připojena datovou linkou s dostatečnou propustností, tak je možné pustil pySDR lokálně a prohlížet si přitom data ze vzdálené stanice.
SSH
Jednou z možností je použití trubek přes ssh spojení. V tom případě budeme postupovat následovně.
- Spustíme jack například přes 'qjackctl'
- Spustíme pySDR 'python waterfall.py'
- Připojíme se na vzdálenou stanici a přesměrujeme data do unixové trubky:
ssh radio.ust.cz "arecord -f S16_LE -r 44100 -c 2 | buffer -b 1024" | jack-stdin i q
V qjackctl pak přetažením myší spojíme stdin a pysdr. Nyní by měl být v pysdr vidět waterfall ze vzdálené stanice.
NetJack
sudo apt-get install qjackctl
Uživatel musi byt v skupine audio
sudo adduser kaklik audio
a v /etc/security/limits.conf je treba nastavit:
@audio - rtprio 99 @audio - memlock unlimited
Pokud se to neudala, tak spusteni jakck zkonci takto:
jackdmp 1.9.8 Copyright 2001-2005 Paul Davis and others. Copyright 2004-2011 Grame. jackdmp comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details JACK server starting in realtime mode with priority 10 Segmentation fault (core dumped)
Lokalni spojeni Jack
Potom lze jack spustit:
jackd -d alsa -dhw:1
kde hw:1 cislo je urcene podle /proc/asound/cards, nebo:
aplay -l
Sitove spojeni Jack
Nejdrive musi instalace jack fungovat lokalne viz vise.
Nasledne na master pocitaci spustime:
qjackctl
a nastavime zdroj dat z remote klienta na lokalni siti:
jack_netsource -H kaklik-netbook.local
Na remote klientovi pak presmerujeme audiovystup na jack v siti:
jackd -R -d netone
Jacktrip
Jacktrip je metoda pro přenášení zvukových dat přes jack, která synchronizuje vzájemně dvě instance jacku běžící na různých strojích..
sudo apt-get install jacktrip dbus-x11
Server
Na staničním počítači musíme spustit instanci jacku, která bude číst data ze správné zvukovky. V tomto případě je to externí USB zvukovka s hw:1
jackd -R -dalsa -dhw:1
Dále pak spustíme jacktrip server
jacktrip -q 8 -r 3 -s
Na vizualizačním počítači pak spustíme istanci jacku, která musí mít nastavenou stejnou vzorkovací frekvenci, jako instance detekční stanici, zde si ale můžeme pomoci grafickým nástrojem qjackctl
qjackctl
Klient
Kde v jeho menu nastavíme správnou vzorkovací frekvenci. Pak spustíme jacktrip klienta s parametrem IP adresy detekční stanice. Jacktrip je ale potřeba zkompilovat, protože balíčková verze v Ubuntu nefunguje.
sudo apt-get install libasound2-dev libjack-jackd2-dev svn co http://jacktrip.googlecode.com/svn/trunk/jacktrip cd ./jacktrip/src/ ./build
Nyní jej můžeme spustit:
./jacktrip -z -c 192.168.1.21
protože jacktrip nepodporuje zeroconf, tak můžete nechat IP adresu doplnit bash
`resolveip -s popelnice.local`
Po spojení s protistanicí by se v zapojovací desce qjackctl mělo objevit zařízení jacktrip. Parametr -z v tomto případě znamená poskytnutí nulových hodnot při podtečení bufferu.