Как принять сигналы немецкого ВМФ с помощью звуковой карты, или изучаем радиосигналы сверхнизких частот

Привет Хабр.

Тема приема и анализа сверхдлинных весьма интересна, и на Хабре она упоминается весьма редко. Попробуем восполнить пробел, и посмотрим как это работает.

Как принять сигналы немецкого ВМФ с помощью звуковой карты, или изучаем радиосигналы сверхнизких частот
Передатчик VLF в Японии (с) en.wikipedia.org/wiki/Very_low_frequency

VLF

Сверхнизкими считаются частоты радиодиапазона частотой менее 30 КГц. Интерес к ним со стороны военных появился еще давно, когда выяснилось что радиоволны столь большой длины (длина волны до 100 км!) могут проникать сквозь воду, и их можно использовать для связи с подводными лодками. Кто придумал такой способ, сказать сложно, но уже в 1943 г в Германии был запущен передатчик Goliath, передающий данные подводным лодкам на частотах 15-25 КГц. После войны передатчик был разобран, перевезен в СССР и запущен заново, причем согласно Википедии, он работает и до сих пор.

Эффективность любой антенны зависит от длины волны, и для сверхдлинных волн КПД антенны также является сверхнизким — при мощности в мегаватт, излучаемая мощность (EIRP) составляет всего лишь 30-50 КВт. Однако, возможность скрытной передачи сигналов подводным лодкам является весьма привлекательной, так что это никого не остановило — такие системы, разумеется, работают и сейчас. Передать сигналы диапазона VLF очень сложно, однако принять их может любой желающий. Для этого даже не нужен радиоприемник, частоты 20-30 КГц вполне доступны для обычной звуковой карты ПК. Для этого придется взять кабель подлиннее, подключить его ко входу звуковой карты и пойти с ноутбуком куда-нибудь в лес или в поле, где нет индустриальных помех. Хотя современные технологии предоставляют куда более удобный способ приема — онлайн с помощью SDR. Для примера можно посмотреть панораму приемника голландского университета Twente:

Все вертикальные линии — это действующие на данный момент системы. Результат удивительный, спектр СДВ «забит» ничуть не меньше, чем вечерний эфир на вещательном FM-диапазоне. Посмотрим, что мы здесь можем увидеть.

На частотах 12-15 КГц мы видим метки, относящиеся к российской радио-навигационной системе Альфа (полное название РСДН-20 — Радиотехническая Система Дальней Навигации). Согласно Википедии, передатчики «Альфы» работают на частотах 11.9, 12.6 и 14.8 КГц, система обеспечивает точность определения положения до 1.5 км. Впрочем, на панораме никаких импульсов не видно, может у них выходной приемник в Twente недостаточно чувствителен для этого сигнала, или же радиосигналы передаются по какому-то расписанию. Следующим на частоте 16.4 КГц работает передатчик Noviken, расположенный в Норвегии. Перечислять остальные смысла нет, список можно посмотреть в Википедии.

Запись и анализ

Посмотрим теперь, как собственно передаются такие сигналы. Для примера я взял наугад сигнал DHO38, передающийся на частоте 23.4 КГц из Германии. Для записи мы выбираем частоту и модуляцию как показано на рисунке, и нажимаем кнопку Audio Recording.

Полученный файл можно открыть в бесплатной программе Signals Analyser. Из картинки очевидно, что мы имеем сигнал с частотной модуляцией (FSK):

Применим к сигналу FSK-демодулятор, и получаем последовательность бит:

Кстати, скорость передачи составляет 200 бит в секунду — чтобы посмотреть youtube, определенно не хватит, но для подводной лодки на глубине 30м даже так и то неплохо. И как нетрудно догадаться, VLF-связь односторонняя — ответить экипаж лодки из под воды не может.

Рассмотрим сигнал более подробно. Сохраним полученный файл в WAV, как показано на скриншоте. Разумеется, получить содержимое передачи мы не сможем — сигнал скорее всего зашифрован. Но можно посмотреть структуру битового потока, для этого сохраненный файл можно вывести графически с помощью Python. Визуализация позволяет найти закономерности гораздо более наглядно.

Исходный код

from scipy.io import wavfile
import matplotlib.pyplot as plt
from PIL import Image

_, data = wavfile.read('websdr_recording_2020-11-06T15_00_00Z_23.4kHz_.wav')
print("WAV: %d samples" % data.shape[0])

for iw in range(400, 1024, 2):
    print("Saving: {} of {}...".format(iw, 1024))
    w, h = iw, 800
    image = Image.new('RGB', (w, h))

    px, py = 0, 0
    for p in range(data.shape[0]):
        image.putpixel((px, py), (0, data[p]//16, 0))
        px += 1
        if px >= w:
            px = 0
            py += 1
            if py >= h:
                break

    image.save("image-%d.png" % iw)

Мы не знаем параметры передачи, так что просто переберем все варианты вывода при разной ширине изображения. Результатом будет набор файлов, который выглядит примерно так:

Нетрудно видеть, что при определенной ширине картинки легко угадываются некоторые закономерности. Битовый поток в увеличенном виде:

Желающие могут поэкспериментировать с шириной картинки самостоятельно, принцип, надеюсь, понятен. Наклон линий обусловлен тем, что частоты передатчика и приемника не совпадают. Разумеется, чтобы получить полноценный битовый поток, 20 строчек кода явно недостаточно, а написание цифрового демодулятора с PLL явно выходит за рамки этой статьи. Да и по большому счету, смысла в этом не так уж много — сигнал все равно зашифрован, и даже имея битовые данные, больше мы ничего не сделаем. Хотя желающие могут попробовать поискать закономерности самостоятельно.

Заключение

Как можно видеть, изучение подобных систем связи представляет не только технический, но и исторический интерес. А на сверхнизких частотах еще немало интересных сигналов, в том числе и природного происхождения, например резонансы Шумана на частотах 10-20 Герц.

Как обычно, всем удачных экспериментов.

 

Источник

SDR, VLF, радио

Читайте также