Ahoj, Habr!
V súčasnosti existuje len niekoľko komunikačných štandardov, ktoré sú na jednej strane zaujímavé a fascinujúce, na druhej strane ich opis nezaberá 500 strán vo formáte PDF. Jedným z takýchto, ľahko dekódovateľných, je signál VHF Omni-directional Radio Beacon (VOR), ktorý sa používa v aéro navigácii.

VOR Beacon (c) wikimedia.org
Na začiatok otázka pre čitateľov — ako vytvoriť signál tak, aby sa pomocou nedirekčnej prijímacej antény dalo určiť smer? Odpoveď nižšie.
Základné informácie
Systém (VOR) sa používa na aéro navigáciu už od 50-tych rokov minulého storočia a pozostáva z rádiomájačikov s relatívne malým dosahom (100-200 km), ktoré pracovujú v rozsahu frekvencií VKV 108-117 MHz. Dnes, v ére gigahertz, znie označenie very high frequency pre takéto frekvencie zvláštne a už samo o sebe naznačuje vek tohto štandardu, ale mimochodom, ešte stále fungujú májačiky , ktoré pracujú v rozsahu stredných vĺn 400-900 kHz.
Umístění směrové antény na letadle je konštrukčne nepraktické, preto vznikla úloha, ako zakódovať v samotnom signáli informácie o smere na májač. Princíp fungovania 'na prstoch' môžeme vysvetliť nasledovne. Predstavme si, že máme obyčajný maják, ktorý vysiela úzky lúč zeleného svetla, ktorého lampa sa otáča raz za minútu. Je zrejmé, že raz za minútu budeme vidieť záblesk svetla, ale jeden taký záblesk veľa informácií nenesie. Pridajme k majáku druhú nedirekčnú červenú svetlo, ktoré zaiskrí v okamihu, keď lúč majáka "prejde" smerom na sever. Keďže je známa doba zábleskov a súradnice majáka, vypočítaním oneskorenia medzi červenými a zelenými zábleskami môžeme zistiť azimut na sever. Je to jednoduché. Teraz sa len musíme pokúsiť to isté, ale pomocou rádia. To bolo vyriešené zmenou fáz. Na prenos sú použité dva signály: fáza prvého je konštantná (referenčná), fáza druhého (premenná) sa mení zložitým spôsobom v závislosti od smeru vyžarovania — každému uhlu zodpovedá svoj posun fázy. Týmto spôsobom každý prijímač dostane signál so "svojím" posunom fázy, ktorý je úmerný azimutu k majáku. Technológia "priestorovej modulácie" sa realizuje pomocou špeciálnej antény (Alford Loop, pozri KDPV) a pomocou špeciálnej, dosť komplikovanej modulácie. To je vlastne témou tohto článku.
Predstavme si, že máme obyčajný legacy maják z 50. rokov, ktorý vysiela signály v bežnej AM modulácii pomocou Morseovej abecedy. Možno, niekedy dávno, navigátor naozaj počúval tieto signály v slúchadlách a zaznamenával smer pomocou pravítka a kružidla na mape. Chceme pridať nové funkcie k signálu, ale tak, aby sme "neporušili" kompatibilitu so starými systémami. Téma je známa, nič nové… Bolo to vykonané nasledujúcim spôsobom — k AM signálu bol pridaný nízkofrekvenčný 30 Hz tón, ktorý plní funkciu referenčného fázy signálu, a vysokofrekvenčná zložka, zakódovaná frekvenčnou moduláciou na frekvencii 9.96 kHz, prenášajúca premennú fázu signálu. Oddelením dvoch signálov a porovnaním fáz získavame požadovaný uhol od 0 do 360 stupňov, ktorý je potrebným azimutom. Zároveň to nebráni počúvaniu majáka "obyčajným spôsobom" a zostáva kompatibilné so starými AM prijímačmi.
Prejdime od teórie k praxi. Spustíme SDR prijímač, zvolíme moduláciu AM a šírku pásma 12 kHz. Frekvencie majákov VOR je možné ľahko nájsť na internete. Na spektre signál vyzerá nasledovne:

V tomto prípade je signál majáka prenášaný na frekvencii 113.950 MHz. V strede je jasne rozpoznateľná línia amplitúdovej modulácie a signály Morseovej abecedy (.- — … čo znamená AMS, Amsterdam, letisko Schiphol). Naokolo, vo vzdialenosti 9.6 kHz od nosnej, sú viditeľné dva vrcholy, prenášajúce druhý signál.
Zapíšeme signál do WAV (nie MP3 — kompresia so stratami «zabije» celú štruktúru signálu) a otvoríme ho v GNU Radio.
Dekódovanie
Krok 1. Otvoríme súbor so zapísaným signálom a aplikujeme naň filter nízkych frekvencií, aby sme získali prvý referenčný signál. Graf GNU Radio je zobrazený na obrázku.

Výsledok: nízkofrekvenčný signál s frekvenciou 30 Hz.

Krok 2: dekódujeme signál s premennou fázou. Ako bolo uvedené vyššie, nachádza sa na frekvencii 9,96 kHz, musíme ho preniesť na nulovú frekvenciu a poskytnúť na FM-demodulátor.
Graf GNU Radio:

Úloha je vyriešená. Vidíme dva signály, ktorých rozdiel fáz indikuje uhol od prijímača k VOR-majáku:

Signál je dostatočne zašumený a na konečné výpočty rozdielu fázy môže byť potrebná dodatočná filtrácia, ale princíp je dúfam jasný. Pre tých, ktorí zabudli, ako sa stanovuje rozdiel fáz, obrázok z :

Našťastie, všetko toto nemusíme robiť manuálne: už existuje v Pythone, ktorý dekóduje signály VOR zo súborov WAV. Vlastne, jeho štúdium ma inšpirovalo k preskúmaniu tejto témy.
Záujemcovia si môžu spustiť program v konzole a získať hotový uhol v stupňoch zo už zapísaného súboru:

Fanúšikovia letectva si môžu dokonca vyrobiť prenosný prijímač z RTL-SDR a Raspberry Pi. Mimochodom, na „ozajstnom“ lietadle tento indikátor vyzerá približne takto:

Image ©
Záver
Podobné signály „z minulého storočia“ sú určite zaujímavé na analýzu. Po prvé, sú dostatočne jednoduché, moderný DRM alebo ešte viac GSM už takto „na prstoch“ dekódovať nedokážeme. Sú otvorené na príjem, neobsahujú kľúče ani kryptografiu. Po druhé, je možné, že v budúcnosti odídu do histórie a budú nahradené satelitnou navigáciou a modernými digitálnymi systémami. Po tretie, štúdium takýchto štandardov umožňuje získať zaujímavé technické a historické podrobnosti o tom, ako sa úlohy riešili na inej schématike a komponentnej základni minulého storočia. Preto majiteľom prijímačov možno odporučiť prijať také signály, pokiaľ ešte fungujú.
Ako zvyčajne, prajem všetkým úspešné experimenty.
Zdroj: habr.com
