Cześć, Habr!
Obecnie istnieje niewiele standardów komunikacji, które z jednej strony są interesujące i fascynujące, a z drugiej strony ich opis nie zajmuje 500 stron w formacie PDF. Jednym z takich, łatwych do dekodowania, jest sygnał VHF Omni-directional Radio Beacon (VOR), używany w aernawigacji.

VOR Beacon (c) wikimedia.org
Na początek pytanie do czytelników — jak uformować sygnał, aby przy użyciu niedyrekcyjnej anteny odbiorczej można było określić kierunek? Odpowiedź pod katem.
Informacje ogólne
System (VOR) jest używany w aernawigacji od lat 50. XX wieku i składa się z radiomajków o stosunkowo niewielkim zasięgu (100-200 km), działających w zakresie częstotliwości VHF 108-117 MHz. Obecnie, w epoce gigaherców, nazwa bardzo wysoka częstotliwość wobec tych częstotliwości brzmi zabawnie i sama w sobie mówi o wiek tego standardu, ale notabene, jeszcze działają majaki , działające w zakresie fal średnich 400-900 kHz.
Umieszczenie anteny kierunkowej w samolocie jest konstrukcyjnie niewygodne, dlatego pojawił się problem, jak zakodować w samym sygnale informacje o kierunku na majak. Zasada działania „po łopatologii” może być wyjaśniona w następujący sposób. Wyobraźmy sobie zwykły majak, który wysyła wąski snop zielonego światła, którego żarówka obraca się raz na minutę. Oczywiście raz na minutę zobaczymy błysk światła, ale taki jeden błysk niesie niewiele informacji. Dodajemy do majaka drugą niedyrekcyjną czerwoną lampę, błyskającą w momencie, gdy promień latarni „przechodzi” w kierunku północnym. Ponieważ znany jest okres błysków oraz współrzędne latarni, obliczając opóźnienie między czerwonym a zielonym błyskiem, można uzyskać azymut na północ. To proste. Pozostaje zrobić to samo, ale z pomocą radia. Rozwiązano to dzięki zmianie faz. Do transmisji stosuje się dwa sygnały: faza pierwszego jest stała (referencyjna), a faza drugiego (zmienna) zmienia się w skomplikowany sposób w zależności od kierunku promieniowania — każdy kąt odpowiada swojemu przesunięciu fazy. W ten sposób każdy odbiornik będzie otrzymywał sygnał ze „swoim” przesunięciem fazy, proporcjonalnym do azymutu na latarnię. Technologia „modulacji przestrzennej” realizowana jest za pomocą specjalnej anteny (Alford Loop, zob. KDPW) oraz specjalnej, dość skomplikowanej modulacji. To właśnie stanowi temat tego artykułu.
Przypuśćmy, że mamy zwykłą latarnię legacy, pracującą od lat 50., przesyłającą sygnały w zwykłej modulacji AM alfabetem Morse'a. Prawdopodobnie kiedyś, nawigator rzeczywiście słuchał tych sygnałów w słuchawkach i zaznaczał kierunki linijką i cyrklem na mapie. Chcemy dodać nowe funkcje do sygnału, ale tak, aby „nie zniszczyć” kompatybilności ze starymi. Temat znany, nic nowego… Zrealizowano to w następujący sposób — do sygnału AM dodano ton o niskiej częstotliwości 30 Hz, pełniący funkcję sygnału referencyjnego, i komponentę o wysokiej częstotliwości, zakodowaną w modulacji częstotliwości na częstotliwości 9.96 kHz, przesyłającą sygnał zmiennej fazy. Oddzielając dwa sygnały i porównując fazy, otrzymujemy poszukiwany kąt od 0 do 360 stopni, który stanowi potrzebny azymut. Przede wszystkim, nie przeszkadza to w słuchaniu latarni „w zwykły sposób” i pozostaje zgodne ze starymi odbiornikami AM.
Przejdźmy od teorii do praktyki. Uruchomimy odbiornik SDR, wybierzemy modulację AM i szerokość pasma 12 kHz. Częstotliwości latarni VOR można łatwo znaleźć w internecie. Na widmowym obrazie sygnał wygląda w następujący sposób:

W tym przypadku sygnał latarni jest przesyłany na częstotliwości 113.950 MHz. W centrum widoczna jest łatwo rozpoznawalna linia modulacji amplitudy oraz sygnały alfabetem Morse'a (.- — … co oznacza AMS, Amsterdam, lotnisko Schiphol). Wokół, w odległości 9.6 kHz od nośnej, widać dwa szczyty, przesyłające drugi sygnał.
Zapiszemy sygnał w formacie WAV (nie MP3 — kompresja stratna zniszczy całą strukturę sygnału) i otworzymy go w GNU Radio.
Dekodowanie
Krok 1. Otworzymy plik z zapisanym sygnałem i zastosujemy filtr dolnoprzepustowy, aby uzyskać pierwszy sygnał odniesienia. Wykres GNU Radio pokazany jest na rysunku.

Wynik: sygnał o niskiej częstotliwości z częstotliwością 30 Hz.

Krok 2: dekodujemy sygnał o zmiennej fazie. Jak wspomniano wcześniej, znajduje się on na częstotliwości 9,96 kHz, musimy przenieść go na częstotliwość zerową i podać na demodulator FM.
Wykres GNU Radio:

Wszystko, zadanie zostało rozwiązane. Widzimy dwa sygnały, a różnica faz wskazuje kąt od odbiornika do latarni VOR:

Sygnał jest wystarczająco szumiony, a dla ostatecznego obliczenia różnicy faz może być potrzebna dodatkowa filtracja, ale mam nadzieję, że zasada jest jasna. Dla tych, którzy zapomnieli, jak określa się różnicę faz, obrazek z :

Na szczęście wszystko to nie musi być robione ręcznie: istnieje już w Pythonie, dekodujący sygnały VOR z plików WAV. Właściwie, jego studyjność zainspirowała mnie do zgłębienia tego tematu.
Zainteresowani mogą uruchomić program w konsoli i uzyskać gotowy kąt w stopniach z już zapisanego pliku:

Fani lotnictwa mogą nawet stworzyć sobie przenośny odbiornik z RTL-SDR i Raspberry Pi. Nawiasem mówiąc, na „prawdziwym” samolocie ten wskaźnik wygląda mniej więcej tak:

Obraz ©
Podsumowanie
Podobne sygnały „z przeszłego wieku” są zdecydowanie interesujące do analizy. Po pierwsze, są wystarczająco proste, nowoczesny DRM czy tym bardziej GSM nie da się już tak „na palcach” dekodować. Są otwarte do odbioru, nie mają kluczy ani kryptografii. Po drugie, być może w przyszłości odejdą w niepamięć i zostaną zastąpione nawigacją satelitarną i bardziej nowoczesnymi systemami cyfrowymi. Po trzecie, badanie takich standardów pozwala poznać interesujące techniczne i historyczne szczegóły tego, jak problemy były rozwiązywane na innej schematyce i elementach z przeszłego wieku. Dlatego właściciele odbiorników powinni akceptować takie sygnały, póki jeszcze działają.
Jak zwykle, życzę udanych eksperymentów.
Źródło: habr.com
