Uživatelské nástroje

Nástroje pro tento web

Tento překlad je starší než originální stránka a nejspíše i zastaralý. Zobrazit změny.
Překlady této stránky?:

cs:pysdr

Toto je starší verze dokumentu!


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

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

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

Použití s gnuradiem

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 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

Prezentace signálu z 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ě.

  1. Spustíme jack například přes 'qjackctl'
  2. Spustíme pySDR 'python waterfall.py'
  3. 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 

Zdroj http://netjack.sourceforge.net/

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.. V Ubuntu je potřeba jacktrip zkompilovat, protože balíčková verze v Ubuntu nefunguje a padá na segfault.

sudo apt-get install libasound2-dev libjack-jackd2-dev qt4-qmake qt4-default
git clone https://github.com/jcacerec/jacktrip.git
cd ./jacktrip/jacktrip/src/
./build
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
Klient

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 

Kde v jeho menu nastavíme správnou vzorkovací frekvenci. Pak spustíme jacktrip klienta s parametrem IP adresy detekční stanice.

./jacktrip -z -c 192.168.1.21

protože jacktrip nepodporuje zeroconf, tak můžete nechat IP adresu doplnit bash

`resolveip -s popelnice.local`

nebo například

avahi-resolve -4 -n meteor4.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.

Více klientů

Pokud chcete mít připojení ke stanici pro více uživatelů, musí být na detekčním PC spuštěno více serverů s jiným portem.

Na straně serveru pro každého klienta musíte do nového terminálu zadat

jacktrip -s -o10

kde za parametrem -o je offset od portu 4464, pro každé nové připojení tento offset musí být jiný.

Na uživatelském počítači zadáte:

jacktrip -c -o10

se stejným parametrem -oX

QmidiNet

Qmidinet je aplikace, která slouží k přenosu Midi dat po síti.

QmidiNet nainstalujete:

sudo apt-get install qmidinet

A spouští se stejným příkazem na straně serveru i u klienta.

qmidinet -p21928

kde za -p vložíte vlastní UDP port. Ještě je potřeba povolit připojení qmidinet k jacku. V grafickém prostředí to lze udělat snadno nastavením v nabídce ikony qmidinet. Přes příkazovou řádku je však potřeba vytvořit soubor ~/.config/rncbc.org/QmidiNet.conf a naplnit jej konfigurací:

[Options]
General\NumPorts=1
General\AlsaMidi=true
General\JackMidi=true
Network\Interface=eth0
Network\UdpPort=21928

Pak by se po spuštění qmidinet měla v qjackctl objevit QmidiNet propojka.

Socket spojeni

PySDR se muze pripojit na stanici primo pomoci nc radio-TEST.local 3701 | ./pysdr-waterfall -r 96000

cs/pysdr.1440015247.txt.gz · Poslední úprava: 2015/08/19 20:14 autor: kuba