Hej Habr!
För närvarande finns det inte många kommunikationsstandarder som å ena sidan är nyfikna och intressanta, å andra sidan tar deras beskrivning inte 500 sidor i PDF-format. En sådan signal som är lätt att avkoda är VHF Omni-directional Radio Beacon (VOR)-signalen som används i flygnavigering.
VOR Beacon (c) wikimedia.org
Först en fråga till läsarna: hur genererar man en signal så att riktningen kan bestämmas med hjälp av en rundstrålande mottagarantenn? Svaret är under snittet.
Allmän information
System
Att placera en riktad antenn på ett flygplan är strukturellt obekvämt, så problemet uppstod med hur man kodar information om riktningen till fyren i själva signalen. Funktionsprincipen "på fingrarna" kan förklaras enligt följande. Låt oss föreställa oss att vi har en vanlig fyr som sänder ut en smal stråle av grönt ljus, vars lampa roterar 1 gång per minut. Uppenbarligen kommer vi att se en ljusblixt en gång i minuten, men en sådan blixt bär inte mycket information. Låt oss lägga till en andra till fyren oriktad en röd lampa som blinkar i det ögonblick då fyrstrålen ”passerar” riktningen mot norr. Därför att blinkarnas period och fyrens koordinater är kända; genom att beräkna fördröjningen mellan de röda och gröna blinkningarna kan du ta reda på azimuten i norr. Det är enkelt. Det återstår att göra samma sak, men att använda radion. Detta löstes genom att ändra faserna. Två signaler används för överföring: fasen för den första är konstant (referens), fasen för den andra (variabel) ändras på ett komplext sätt beroende på strålningens riktning - varje vinkel har sin egen fasförskjutning. Således kommer varje mottagare att ta emot en signal med sin "egen" fasförskjutning, proportionell mot azimuten till fyren. Tekniken för "spatial modulering" utförs med en speciell antenn (Alford Loop, se KDPV) och en speciell, ganska knepig modulering. Vilket faktiskt är ämnet för den här artikeln.
Låt oss föreställa oss att vi har en vanlig legacy beacon, som fungerar sedan 50-talet, och sänder signaler i vanlig AM-modulation i morsekod. Förmodligen, en gång i tiden, lyssnade navigatören faktiskt på dessa signaler i hörlurar och markerade riktningarna med linjal och kompass på kartan. Vi vill lägga till nya funktioner till signalen, men på ett sådant sätt att inte "bryta" kompatibiliteten med de gamla. Ämnet är bekant, inget nytt... Det gjordes enligt följande - en lågfrekvent 30 Hz-ton lades till AM-signalen, som utförde funktionen av en referensfassignal och en högfrekvent komponent, kodad av frekvens modulering vid en frekvens på 9.96 KHz, sänder en variabel fassignal. Genom att välja två signaler och jämföra faserna får vi den önskade vinkeln från 0 till 360 grader, vilket är den önskade azimuten. Samtidigt kommer allt detta inte att störa att lyssna på beacon "på vanligt sätt" och förblir kompatibelt med äldre AM-mottagare.
Låt oss gå från teori till praktik. Låt oss starta SDR-mottagaren, välj AM-modulation och 12 KHz bandbredd. VOR beacon frekvenser kan lätt hittas online. På spektrumet ser signalen ut så här:
I detta fall sänds beacon-signalen med en frekvens på 113.950 MHz. I mitten kan du se den lätt igenkännliga amplitudmodulationslinjen och morsekodsignaler (.- - ... vilket betyder AMS, Amsterdam, Schiphol flygplats). Runt på ett avstånd av 9.6 KHz från bärvågen är två toppar synliga som sänder den andra signalen.
Låt oss spela in signalen i WAV (inte MP3 - förlustkompression kommer att "döda" hela strukturen av signalen) och öppna den i GNU Radio.
Avkodning
Steg 1. Låt oss öppna filen med den inspelade signalen och applicera ett lågpassfilter på den för att få den första referenssignalen. GNU Radio-grafen visas i figuren.
Resultat: lågfrekvent signal vid 30 Hz.
Steg 2: avkoda signalen med variabel fas. Som nämnts ovan ligger den vid en frekvens på 9.96 KHz, vi måste flytta den till nollfrekvensen och mata den till FM-demodulatorn.
GNU Radiograf:
Det var allt, problemet löst. Vi ser två signaler, vars fasskillnad indikerar vinkeln från mottagaren till VOR-fyren:
Signalen är ganska brusig, och ytterligare filtrering kan krävas för att slutligen beräkna fasskillnaden, men jag hoppas att principen är tydlig. För den som har glömt hur fasskillnaden bestäms, en bild från
Lyckligtvis behöver du inte göra allt detta manuellt: det finns redan
Den som är intresserad kan köra programmet i konsolen och få den färdiga vinkeln i grader från den redan inspelade filen:
Flygfantaster kan till och med göra sin egen bärbara mottagare med en RTL-SDR och en Raspberry Pi. Förresten, på ett "riktigt" plan ser denna indikator ut ungefär så här:
Bild ©
Slutsats
Sådana signaler "från förra seklet" är definitivt intressanta för analys. För det första är de ganska enkla, moderna DRM eller, särskilt, GSM, det är inte längre möjligt att avkoda "på fingrarna". De är öppna för acceptans och har inga nycklar eller kryptografi. För det andra kanske de i framtiden kommer att bli historia och ersättas av satellitnavigering och modernare digitala system. För det tredje, genom att studera sådana standarder kan du lära dig intressanta tekniska och historiska detaljer om hur problem löstes med andra kretsar och elementbas från förra seklet. Mottagareägare kan därför rådas att ta emot sådana signaler medan de fortfarande arbetar.
Som vanligt, glada experiment alla.
Källa: will.com