https://habr.com/ru/post/526824/- Python
- Программирование
- Анализ и проектирование систем
- Разработка систем связи
- Научно-популярное
Привет, Хабр.
Тема приема и анализа сверхдлинных волн весьма интересна, но на Хабре она упоминается весьма редко. Попробуем восполнить пробел, и посмотрим как это работает.
Передатчик 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, расположенный в Норвегии. Перечислять остальные смысла нет, список можно посмотреть в
Википедии.
Прием
Как принимаются сигналы сверхнизких частот, вопрос не менее интересный. Но по понятным причинам, в открытых источниках подробной информации об аппаратуре связи с ПЛ практически нет. Общую идею можно понять из картинки:
Загоризонтное распространение сигналов © IEEE Communications Magazine 1981
Как можно видеть, в качестве антенны используется длинный провод, который либо просто тянется за лодкой, либо удерживается на определенной глубине специальным буем. Сами антенны, очевидно, секретными не являются, pdf с описанием довольно легко находится гуглом:
Длина кабеля 700 м впечатляет, но к счастью для нас, «на суше» все гораздо проще, и столь гигантские антенны не требуются, принять сигналы VLF можно даже на портативную антенну MiniWhip, расположенную на балконе.
Запись и анализ
Посмотрим теперь структуру передаваемого радиосигнала. Для примера я взял наугад сигнал
DHO38, передающийся на частоте 23.4 КГц из Германии. Для записи мы выбираем частоту и модуляцию как показано на рисунке, и нажимаем кнопку Audio Recording.
Полученный файл можно открыть в бесплатной программе
Signals Analyser. Из картинки очевидно, что в сигнале используется частотная модуляция (FSK):
Применим FSK-демодулятор, получаем последовательность бит:
Кстати, скорость передачи составляет 200 бит в секунду — чтобы посмотреть youtube, определенно не хватит, но для подводной лодки на глубине 30м даже так и то неплохо. И как нетрудно догадаться, VLF-связь односторонняя — ответить экипаж лодки из-под воды не может.
Рассмотрим сигнал более подробно. Сохраним полученный после FSK-декодера файл в WAV. Разумеется, получить содержимое передачи мы не сможем — сигнал скорее всего зашифрован. Но можно посмотреть структуру битового потока, «развернув» его в 2D-изображение с помощью 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 явно выходит за рамки этой статьи. Да и по большому счету, смысла в этом не так уж много — сигнал все равно зашифрован, и даже имея битовые данные, больше мы ничего не сделаем. Хотя желающие могут попробовать поискать закономерности самостоятельно.
Заключение
Как можно видеть, изучение подобных систем связи представляет не только технический, но и исторический интерес. А на сверхнизких частотах еще немало интересных сигналов, как искусственного (передатчик
Зевс на частоте 82 Гц), так и природного происхождения, например
резонансы Шумана на частотах 10-20 Герц.
Как бонус для тех, кто дочитал досюда: желающие увидеть «вживую», как работает передача и прием на таких частотах, могут попробовать принять немецкую станцию
Pinneberg, передающую метеосводки в открытом виде на частоте 147.3 КГц. Декодировать сигнал можно с помощью разных программ, например MultiPSK. Можно рассмотреть и декодирование с помощью Python, если есть желающие, пишите в комментариях.
Как обычно, всем удачных экспериментов.