Toto je starší verze dokumentu!
Obsah
Radiová Meteorická Detekční Stanice RMDS02
Je novější verzí stále vyvíjeného systému rádiových stanic s cílem získání synchronizovaných vzorků signálu z více stanic. A tím umožnit výpočet dráhy meteoru. Dokumentace k předchozím verzím stanic je dostupná na stránce rmds01
Popis funkce
Měření frekvence LO
Stanice v sobě integruje konstrukci acounter, která slouží pro měření frekvence lokálního oscilátoru. Rozdíl oproti této konstrukci je v tom, že naměřená frekvence je vyčítána přes rozhraní I²C. To umožňuje firmware v modulu PIC16F87xTQ4401B, který se chová jako I2C slave zařízení. Tento MCU modul zároveň konfiguruje GPS pro vytváření 10ms impulzů každých 10s, které hradlují čítač a děličku. PIC MCU inicializuje GPS přes rozhraní RS232 1s po náběhu napájení. Pro inicializaci GPS je místo I²C použito RS232 rozhraní kvůli tomu, že v dokumentaci LEA-6S není popsaná komunikace přes I²C.
Konfigurace software
ODROID má přímou HW podporu sběrnice I²C. Proto můžeme přijímač ladit bez použití modulu usbi2c. Je ale potřeba mít v jádře nahraný modul i2c-dev.
sudo modprobe i2c-dev
Tímto způsobem se modul do jádra nahraje jenom dočasně a po rebootu bude opět chybět. Pro opakované nahrání modulu při nabootování počítače je potřeba do souboru /etc/modules přidat řádek:
i2c-dev
Software pro GPS
Pro správnou funkci stanice je potřeba, aby GPS měla fix. Což znamená, že musí být známá pozice a musí být trackovány alespoň tři družice.
Tento stav můžeme zkontrolovat z výstupu GPS. Na modulu GPS01A je USB konektor, který po připojení k počítači vytvoří virtuální modemovou linku /dev/ttyACM0 na kterou jsou periodicky posílány informace o stavu GPS. Správné označení cesty k souboru /dev/ttyACMX lze zkontrolovat z výpisu dmesg. V linuxu můžeme tento výstup trvale monitorovat pomocí programu gpsd.
sudo apt-get install gpsd gpsd-clients
Po instalaci program spustíme jako daemon a přiřadíme mu port s výstupem GPS. V našem případě /dev/ttyACM0
sudo gpsd /dev/ttyACM0
Program běží v pozadí a čte data z GPS. Na jeho výstup se podíváme některým klientem.
cgps gpsmon
Bez grafického prostředí z příkazové řádky. Nebo
xgps
V grafickém prostředí X.
Ve všech případech by jsme měli při správné funkci GPS vidět, že z GPS padají nějaká data. Dobře je to vidět např v gpsmon, který NMEA výpisy přímo zobrazuje v textové podobě. Dále by pak GPS měla mít 3D fix a používat některé družice, což je také vidět ve výstupu klientů.
Umístění GPS antény
Pokud se stane, že GPS nemá fix nebo nevidí žádné družice. Tak je pravděpodobně problém s připojením GPS antény, nebo jejím umístěním. Je potřeba si uvědomit, že GPS signál je velice slabý (GPS družice jsou více než 20000 km nad povrchem Země), takže je potřeba aby GPS anténa měla přímý výhled na oblohu. Anténa umístěná v místnosti bez oken pravděpodobně nebude fungovat, a nebo její funkce bude velmi omezená.
Automatické ladění přijímače
Lokální oscilátor stanice se ovládá jako I²C zařízení přímo počítače. Je proto potřeba mít zprovozněný balík knihoven pro ovládání I²C zařízení. Na téže stránce je i návod na jeho instalaci. Zařízení používá pro ovládání I²C modul USBI2C01A, takže je potřeba nainstalovat jeho podporu. Pro detekční stanici stačí použít připojení modulu přes HID pomocí HIDAPI. není proto potřeba kompilovat kernel.
Nejdříve nainstalujeme potřebné softwarové nástroje:
sudo apt-get install subversion python-setuptools python-smbus cython
Dále nainstalujeme programový balík pro komunikaci na I2C
sudo easy_install pymlab
Do /etc/modules přidáme řádek
i2c-dev
přidáme uživatele „Username“, pod kterým budeme stanici provozovat, do skupiny i2c a audio
sudo useradd -G i2c Username sudo adduser Username audio
a restartujeme počítač.
sudo reboot
Následně potřebujeme program pro nastavení frekvence lokálního oscilátoru.
git clone https://github.com/MLAB-project/station-supervisor.git git clone https://github.com/MLAB-project/python-mlab-utils.git cd python-mlab-utils/ sudo python setup.py develop cd ../station-supervisor
Nyní máme staženy zdrojové soubory utility pro ladění lokálního oscilátoru a je potřeba upravit soubory frequency_config.py a případně bus_config.py podle konfigurace stanice.
Pokud je modul USBI2C01A připojen k počítači (stačí použít způsob připojení přes rozhrani HID).
sudo /frequency-guard.py
Pokud terminál se spuštěným ladícím skriptem chceme zavřít, tak je možnost jej spustit v prostředí screen.
sudo screen /frequency-guard.py Current Freq.: 286.0787998 MHz, Req. Freq.: 286.078800 MHz, Freq diff.: -0.2 Hz, Time: 58 s
Ten musí běžet po celou dobu provozu stanice. Je proto ideální jej spustit v terminálovém okně otevřeném vedle běžícího waterfallu na stanici. Protože jeho výpis může částečně sloužit k diagnostice správného chodu lokálního oscilátoru stanice.
Ještě taky existuje skript pro ladění Si570 bez GPS: setSi570
Aby se skript nemusel spouštět s právy roota, je třeba vytvořit v adresáři /etc/udev/rules.d soubor SiliconLabs.rules s obsahem:
SUBSYSTEM=="usb", ATTRS{idVendor}=="10c4", MODE="0666" SUBSYSTEM=="usb_device", ATTRS{idVendor}=="10c4", MODE="0666"
Aby se toto nastavení projevilo, tak se musí znovu zavolat udev. To se stane pri nové enumeraci USB zařízení.
Audio subsystém - JACK
Pro nejstabilnější jack server je výhodné použít přímo aktuální master větev z githubu. Ta má opravené některé pro ARM počítače významné chyby.
sudo apt-get install libsamplerate0-dev libasound2-dev libsndfile1-dev git clone https://github.com/jackaudio/jack2.git cd jack2 ./waf configure --alsa --autostart=none ./waf build sudo ./waf install sudo ldconfig
Spustíme JACK server; interní zvukový adapter pro Playback, externí zvukový adapter připojený přes USB pro Capture.
jackd -r -d alsa -p 2048 -n 3 -r 48000 -P hw:0,0 -C hw:1,0
Pro kontrolu propojení aplikací spustíme
qjackctl
Ten zkompilujeme podle navodu instalace_qjackctl
Živý waterfall PySDR
Software pro zobrazení waterfall nainstalujeme podle návodu na stránce PySDR. Funkci přijímače pak můžeme zkontrolovat pomocí pysdr a programu Whistle, který generuje zvukový výstup. Celý systém lokálně přímo na odroidu spustíme těmito příkazy:
~/Bolidozor/pysdr/pysdr-waterfall -d ./detectors/meteor_echo.py -b 8192 jack_connect system:capture_1 pysdr:input_i jack_connect system:capture_2 pysdr:input_q
Zvukový výstup Whistle
~/Bolidozor/pysdr/whistle/whistle -p freqx,-10400:kbfir,41,0,400,100:freqx,400:amplify,200 jack_connect system:capture_1 whistle:input_i jack_connect system:capture_2 whistle:input_q jack_connect whistle:output_i system:playback_1 jack_connect whistle:output_q system:playback_2
Detekce meteorů
Přeložíme radio-observer podle postupu na wiki stránce, nebo v README. A překopírujeme výslednou binárku radio-observer do adresáře ~/Bolidozor/. Následně překopírujeme i vzorový konfigurační soubor Bolidozor.json do složky ~/Bolidozor/nazev_stanice/ a přejmenujeme ho na nazev_stanice.json a upravíme v něm název stanice a cesty k výstupním souborům.
Dále spustíme radio-observer s námi upraveným konfiguračním souborem:
./radio-observer -c nazev_stanice.json
V okně qjackctl pak uvidíme běžící klient připojený na vstup zvukové karty. Protože radio-observer poskytuje informace o detekovaných meteorech v podobě MIDI zprávy, kterou může zobrazit program PySDR, tak ještě propojíme tyto dva programy.
jack_connect radio-observer:midi_out pysdr:input_events
Při běhu programů se občas stává, že některý spadne. Vzhledem k tomu, že jde o experimentální zařízení, tak je důležité z takového pádu mít coredump soubor, který pak lze použít k nalezení chyby. V Ubuntu je implicitně nastaven limit velikosti takového souboru na 0. To způsobuje, že soubor s obrazem paměti nevznikne, je proto potřeba limit navýšit:
ulimit -c unlimited
Pokud máme k počítači připojeno více zvukových adaptérů, můžeme další adaptér připojit k jasku napŕíklad pomocí příkazu
jack_load -i "-d hw:0 -i0 -o2" xxx audioadapter
Tento příkaz přípojí zvukový adaptér č. 0 k jacku pod jménem xxx a bude mít dva kanály pro přehrávání. Další možnost je použít příkazy alsa_in nebo alsa_out. Je také možné spustit jack bez zvukového adaptéru, pokud vybereme zařízení dummy.
Skripty pro odesílání dat
Skripty pro odesílání dat na space.astro.cz jsou vyvíjeny jako Data uploader. Instalaci provedeme podle návodu na wiki Bolidozoru.
Skripty pak roztřídí data vytvořená radio-observerem. A uploadují je na centrální server space.astro.cz.
Automatické spuštění celého systému
Jak je vidět, tak spuštění stanice po startu systému je poměrně komplikovaný proces. Který je potřeba opakovat při každém restartu systému. Z části lze tento proces zautomatizovat následujícím skriptem. Pauzy vytvořené příkazem sleep jsou důležité pro to, aby všechny operace byly spuštěny až po dokončení inicializace v předcházejícím kroku.
ulimit -c unlimited ~/Bolidozor/frequency_log.py& jackd -r -d netone -i0 -I0 -o2 -O1 2>/dev/null& sleep 3 qjackctl& sleep 4 alsa_in -d hw:1,0 -r 48000& sleep 3 ~/Bolidozor/ZEBRAK-R1/ZEBRAK-R1& sleep 3 jack_connect alsa_in:capture_1 system:playback_1 jack_connect alsa_in:capture_2 system:playback_2 jack_connect ZEBRAK-R1:midi_out system:playback_3
Servisní operace
Aktualizace firmware v modulu s PIC
V některých případech je potřeba pro opravu chyby nahrát novou verzi firmware do modulu PIC16F87xTQ4401B. Při této operaci se postupuje podle návodu na programování PIC. Nahrání kódu provedeme připojením programátoru picprogusb dále je potřeba pouze stáhnout aktuální verzi hex souboru a tu nahrát do MCU, což provedeme následovně:
svn co svn://svn.mlab.cz/MLAB/Designs/Measuring_instruments/RMDS02C/SW/PIC16F887/ cd PIC16F887 pk2cmd -PPIC16F887 -M -Y -W -F./main.hex
Po úspěšném zápisu a kontrole by měl v PIC být nový firmware.
Radiová Meteorická Detekční Stanice RMDS02B
Jedná se o stanici typu RMDS01 vylepšenou o synchronizaci LO.
Tato verze detekční stanice, kromě časových značek poskytuje i informaci o aktuální frekvenci lokálního oscilátoru.
Zapojení modulů stanice RMDS02B
Napájení 12V
žlutá/černá
SDRX01B/+12V ⇒ SDRX01B/LNA Power
Napájení 5V
červená/černá
BATPOWER04/5V POWER OUT ⇒ SDRX01B/Power +5V ⇒ CLKGEN01B/Power 5V ⇒ GPS01A/POWER IN EXT
Pokud přivedeme +5V na I2CHUB, musime osadit jumper POWER SELECT - SLAVE - ON
Žlutá/černá
BATPOWER04 +5V ⇒ SDRX01B/+12V,GND
Modrá/černá
UNIPOWER02A 5V ⇒ SDRX01B/-12V,GND
Napájení 3,3V
Oranžová/černá
CLKGEN01B/Vcore 3,3V → CLKDIV01A/POVER 3,3V → TTLPECL01A/POWER → PIC16F87x/POWER
Rozvod VF hodin
SATA kabely
10cm
CLKGEN01B/CLKOUT → CLKDIV01A/CLK IN
10cm
CLKDIV01A/QB → TTLPECL01A/PECL0
20cm
CLKDIV01A/QA → SDRX01B/LO INPUT
Vydělené hodiny
bílá
TTLPECL01A/TTL0 → PIC16F87x/RC0
Ovládání předděličky CLKDIV01A
Modul předděličky CLKDIV01A snižuje vstupní frekvenci digitálního signálu z lokálního oscilátoru přijímače. Výstupem předděličky je frekvence, která je již přímo měřitelná čítačem v PIC. Aby nedošlo při dělení ke ztrátě některých impulzů lokálního oscilátoru, tak jsou z předděličky po každém měření vyčítány i její interní stavy.
šedá
CLKDIV01A/MR# → PIC16F87x/RE2
CLKDIV01A/SEL B0 → PIC16F87x/RE1
CLKDIV01A/SEL B1 → PIC16F87x/RE0
PPS
Signál PPS je v přijímači využit pro přenos přesného času.
GPS01A/TIMEPULSE → CLKDIV01A/EN# → PIC16F87x/RB0
I2C
I²C je digitální sběrnice, která se v přijímači používá na shromažďování servisních dat a ladění přijímače.
USBI2C01A/SDA → CLKGEN01B/SDA → PIC16F87x/RC4
USBI2C01A/SCL → CLKGEN01B/SCL → PIC16F87x/RC3
Ovládání GPS přijímače
Tento signál se používá na počáteční nastavení GPS při startu napájení. Konfigurace je do GPS nahrána přibližně 1s po zapnutí napájení modulu s MCU PIC.
GPS01A/RXD → PIC16F87x/RC6
Zapojení jumperů na USBI2C01A a GPS01A
Pro servisní účely je možné zapojit jumpery i jinak než je zobrazeno na následujících obrázcích.
Jumper LED ON na GPS01A je možné připojit kablíkem k PIC. Potom bude LED sloužit k indikaci stavu firmware v modulu s PIC (tato vlastnost je implementována ve firmware pro PIC od verze 3741).
PIC16F87x/RB3 → GPS01A/LED ON (vývod blíž k LED)
Pokud v takovém případě funguje správně ladění stanice, bliká zelená LED na GPS01A přijímači s periodou 0,5 Hz a střídou 1:1, přičemž každý šestý puls má jinou střídu (blikání indikuje správnou funkci FW a změna střídy indikuje, že od GPS přichází signál PPS).
Pokud na GPS přijímači ponecháme jumper LED ON, bliká zelená LED s periodou 10 s. Délka svitu je 10 ms. Pokud zelená led v tomto případě bliká s periodou 1 Hz, je nutné stisknout tlačítko RESET na desce PIC16F87x, aby došlo k inicializaci GPS přijímače.
Upgrade RMDS01B na verzi RMDS02B
Tato stanice vznikne z verze RMDS01B přidáním modulu CLKDIV01A a výměnou firmwaru v modulu pic16f87xtq44
Nový firmware stáhneme pomocí
svn checkout svn://svn.mlab.cz/MLAB/Designs/Measuring_instruments/RMDS02C/SW/PIC16F887
Ve vzniklé složce najdeme .hex soubor a do PICu ho nahrajeme postupem pic_programming.
Radiová Meteorická Detekční Stanice RMDS02C
Verze stanice s nízkospotřebovým staničním počítačem založeným na architektuře ARM.
Zapojení modulů stanice RMDS02C
Napájení 12V
Žlutá/černá
SDRX01B/+12V,GND ⇒ UNIPOWER02A
Modrá/černá
SDRX01B/-12V,GND ⇒ UNIPOWER02A
žlutá/Černá
SDRX01B/+12V ⇒ SDRX01B/LNA Power (libovolný jeden ze čtyř vnitřních pinů)
Napájení 5V
červená/černá
UNIPOWER02A/5V POWER OUT ⇒ SDRX01B/Power +5V ⇒ CLKGEN01B/Power 5V ⇒ GPS01A/POWER IN EXT
Napájení 3,3V
Oranžová/černá
CLKGEN01B/Vcore 3,3V → CLKDIV01A/POVER 3,3V → TTLPECL01A/POWER → PIC16F87x/POWER
Rozvod VF hodin
SATA kabely
10cm
CLKGEN01B/CLKOUT → CLKDIV01A/CLK IN
10cm
CLKDIV01A/QB → TTLPECL01A/PECL0
20cm
CLKDIV01A/QA → SDRX01B/LO INPUT
Vydělené hodiny
bílá (10cm)
TTLPECL01A/TTL0 → PIC16F87x/RC0
Ovládání předděličky
šedá (10cm)
CLKDIV01A/MR# → PIC16F87x/RE2
CLKDIV01A/SEL B0 → PIC16F87x/RE1
CLKDIV01A/SEL B1 → PIC16F87x/RE0
PPS
zelená (10cm)
GPS01A/TIMEPULSE → CLKDIV01A/EN# → PIC16F87x/RB0
Ovládání GPS přijímače
bílá (10cm)
GPS01A/RXD → PIC16F87x/RC6
I2C
Viz Pripojeni I2C
ODROID-U3/SCL → I2CHUB02A/MASTER I2C/SCL
ODROID-U3/SDA → I2CHUB02A/MASTER I2C/SDA
I2CHUB02A/3/SDA → PIC16F87x/RC4
I2CHUB02A/3/SCL → PIC16F87x/RC3
I2CHUB02A/5/SDA → CLKGEN01B/SDA
I2CHUB02A/5/SCL → CLKGEN01B/SCL
Napájení 1,8 V
ODROID-U3/1.8V → I2CHUB02A/POWER SELECTMASTER/prostřední pin
Kontrola zapojení
Po zapojení stanice je potřeba zkontrolovat funkci všech subsystémů. Nejčastější problém bývá se zapojením I²C.
Pokud máme nějaké potíže s I2C, použijeme I²C diagnostické nástroje podle MLAB návodu.
Správné obsazení I²C sběrnice po zapojení stanice má vypadat takto:
odroid@odroid:~/Bolidozor$ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- 51 -- -- -- 55 -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: 70 -- -- -- -- -- -- --
0x70 je modul I2Chub, 0x51 je měřící PIC, 0x55 je modul CLKGEN.
Nejdříve se ale musí namapovat I2CHUB tak, aby byly přístupné všechny zařízení na sběrnici. To se stane při alespoň jednom spuštění frequency_log.py nebo postupem zapis.
Radiová Meteorická Detekční Stanice RMDS02D
Tato stanice vznikne z verze RMDS02C přidáním AD převodníku sdr-widget, výměnou odroidu za verzi odroid-u3 a úpravou napájení přidáním měniče 12V/5V.
Napájení 12V
Žlutá/černá (10cm)
UNIPOWER02A OUT ⇒ BATPOWER04C/INPUT
žlutá/Černá (10cm)
UNIPOWER02A OUT ⇒ SDRX01B/LNA Power (libovolný jeden ze čtyř vnitřních pinů)
Napájení +5V
červená/černá
BATPOWER04/5V POWER OUT ⇒(15cm) SDRX01B/Power, BATPOWER04/5V POWER OUT ⇒(10cm) CLKGEN01B/Power 5V
Použít 4 pinový plastovy konektor na BATPOWER a napájení na něm rozdělit.
BATPOWER04/5V POWER OUT ⇒(20cm) I2CHUB02B
I2CHUB02B POWER IN ⇒(10cm) ODROID-U3 +5V Breakout frame power
AT32TQ14401A/POWER +5V → ADCaudio01A/POWER +5V
(10cm) SDRX01B/Power +5V ⇒ SDRX01B/Analog Power +12V
Napájení -5V
modrá/černá
(10cm) UNIPOWER02A -5V ⇒ SDRX01B/Analog Power -12V
Napájení 3,3V
Oranžová/černá (10cm)
CLKGEN01B/Vcore 3,3V → CLKDIV01A/POVER 3,3V
CLKDIV01A/POVER 3,3V → TTLPECL01A/POWER
Oranžová/černá (20cm)
CLKGEN01B/Vcore 3,3V → PIC16F87x/POWER
Napájení 1,8 V
10cm.
ODROID-U3/1.8V → I2CHUB02A/POWER SELECTMASTER/prostřední pin
Rozvod VF hodin
SATA kabely
10cm
CLKGEN01B/CLKOUT → CLKDIV01A/CLK IN
10cm
CLKDIV01A/QB → TTLPECL01A/PECL0
20cm
CLKDIV01A/QA → SDRX01B/LO INPUT
Vydělené hodiny
bílá (10cm)
TTLPECL01A/TTL0 → PIC16F87x/RC0
Ovládání předděličky
šedá(10cm)
CLKDIV01A/MR# → PIC16F87x/RE2
CLKDIV01A/SEL B0 → PIC16F87x/RE1
CLKDIV01A/SEL B1 → PIC16F87x/RE0
PPS
zelená (10cm)
GPS01A/TIMEPULSE → CLKDIV01A/EN#
GPS01A/TIMEPULSE → PIC16F87x/RB0
Ovládání GPS přijímače
bílá(10cm)
GPS01A/RXD → PIC16F87x/RC6
I2C
Bílá(SDA), černá(GND), SCL(hnědá) 10cm
Viz Pripojeni I2C
ODROID-U3/SCL GPIO199 → I2CHUB02B/MASTER I2C/SCL
ODROID-U3/SDA GPIO200→ I2CHUB02B/MASTER I2C/SDA
Bílá(SDA), černá(GND), SCL(hnědá) 20cm
I2CHUB02B/6/SDA → PIC16F87x/RC4
I2CHUB02B/6/SCL → PIC16F87x/RC3
I2CHUB02B/5/SDA → CLKGEN01B/SDA
I2CHUB02B/5/SCL → CLKGEN01B/SCL
Blok SDR-widget
Rozvod hodin
Žlutá 10cm
ADCaudio01B/MCLK → AT32TQ14401A/PC04
I2S
Fialová 10cm
ADCaudio01B/BCLK → AT32TQ14401A/PX28 → AT32TQ14401A/PX34
ADCaudio01B/DOUT → AT32TQ14401A/PX25
ADCaudio01B/LRCLK → AT32TQ14401A/PX26 → AT32TQ14401A/PX36
Sample rate select
Hnědá 15cm
ADCaudio01A/OSR0(k nápisu) → AT32TQ14401A/PB00
Šedá 15cm
ADCaudio01A/OSR1(k nápisu) → AT32TQ14401A/PB01
jumper na AUDIOF0
Modrá 10cm
AT32TQ14401A/JTAG2 → AT32TQ14401A/PB06