Как создать свой собственный приемник AIS: пошаговое руководство по отслеживанию морских судов

Руководство по AIS: как собрать приемник AIS своими руками

Введение

Ещё десять–пятнадцать лет назад приём радиосигналов от морских судов был прерогативой крупных компаний и профессионалов, обладающих дорогостоящим оборудованием. Но с развитием цифровых технологий и появлением доступных SDR-устройств (Software Defined Radio) возможность принимать и расшифровывать сигналы автоматической идентификационной системы (AIS) стала доступна широкой аудитории — в том числе радиолюбителям и техническим энтузиастам.

Мы — команда, развивающая международный сервис по отслеживанию морских судов в реальном времени. На текущем этапе мы реализовали первую собственную точку приёма AIS-сигнала, используя доступные компоненты, сторонние программы и открытые решения. Это наш первый практический опыт, которым мы хотим поделиться с теми, кому интересна тема морской радиосвязи, самостоятельного приёма и обработки сигналов.

Цель этого материала — предоставить понятный и доступный технический гайд: от теории и выбора оборудования до практической настройки и приёма сигнала. Мы надеемся, что он окажется полезен и будет передаваться в сообществе людей, интересующихся приёмом радиосигналов, навигацией и морской тематикой. В дальнейшем мы планируем развивать это направление и работать над созданием собственных модульных приёмных станций, а пока — делимся первыми наработками и шагами, которые уже можно воспроизвести.

Что такое AIS и как работает приём сигнала

AIS (Automatic Identification System) — это автоматическая идентификационная система, используемая судами для передачи навигационной информации. Она работает на VHF-частотах (Very High Frequency) и была разработана для повышения безопасности судоходства, позволяя обмениваться данными между судами и береговыми службами. AIS предписывается Международной морской организацией (IMO) для обеспечении безопасности судоходства.

AIS передатчик на судне (особенно если это судно класса А) должен быть включен постоянно. Есть конечно случаи, когда AIS передатчики целенаправленно выключаются, как правило, они связаны с нелегальной деятельностью различного рода (хотя в последнее время не только с ней, но это уже материал достаточно обширный и требует отдельной статьи).

Когда судно далеко в океане, сигнал с AIS передатчика принимают спутники. Когда же судно находится довольно близко к берегу (как правило, это 20 морских миль, но иногда дальше, в зависимости от высоты расположения антенны), принять сигнал AIS можно с помощью береговой станции, прототип которой мы с вами рассмотрим в данной статье.

Какие данные передаются по AIS:
  • уникальный идентификатор судна (MMSI)
  • название судна, его тип и флаг
  • IMO судна и его позывной (Call sign)
  • текущие координаты (широта, долгота)
  • курс и скорость
  • размеры, дедвейт и другие технические параметры
  • порт назначения и пр.

Эти данные обновляются от нескольких секунд до нескольких минут, часов или дней, в зависимости от многих факторов (в том числе от того, выключен ли передатчик). AIS-сигналы передаются на открытых частотах и могут быть приняты любым приёмником, настроенным на соответствующие диапазоны.

Основные частоты AIS:

  • AIS 1: 161.975 МГц (канал 87B)
  • AIS 2: 162.025 МГц (канал 88B)

Как собрать береговой AIS-приёмник

Очень простая схема работы береговой AIS-станции изображена на рисунке 1

Рис. 1. Схема работы береговой AIS-станции, сгенерировано OpenAi

Для того, чтобы собрать береговой приёмник AIS-сигнала потребуется следующее:
  • антенна, настроенная на VHF-диапазон (оптимально — морская антенна 162 МГц)
  • коаксиальный кабель (с минимальными потерями)
  • RTL-SDR (USB-свисток, основанный на чипе RTL2832U)
  • ПО для приёма радиосигнала
  • Программа передачи аудио-сигнала
  • ПО для демодуляции и декодирования AIS-данных
  • Программа или сервис визуализации данных


Для начинающих радиолюбителей всё вышеперечисленное может звучать сложновато, поэтому мы расскажем пошагово, какое оборудование и ПО использовали мы, с примерами и изображениями. Возможно, это облегчит понимание процесса, который на самом деле совсем несложный, и открывает огромные возможности в мире морской связи, даже если вы находитесь на берегу.

Как мы собирали береговую станцию-AIS

Антенна

Рис. 2. Диаграмма зависимости длины антенны от частоты

На диаграмме выше примерно видно, какой длины должна быть антенна для какой частоты. Правило - купить самую длинную, и все будет хорошо - не работает. При самостоятельной сборке антенны также нужно учитывать и некоторые другие параметры, такие, как план, поляризацию и т.д. В сети есть множество схем и инструкций по изготовлению простейших VHF-антенн, в том числе четвертьволновых. Однако мы решили не тратить время на самостоятельную сборку и заказали готовую - Shakespeare 5215 VHF Sailboat Whip Antenna. Это 3-футовая (примерно 91 см) антенна из нержавеющей стали, предназначенная для установки на мачты яхт и парусных судов. Она отлично зарекомендовала себя для приёма AIS-сигналов, благодаря хорошему коэффициенту усиления и прочной конструкции.

Рис. 3. Антенна Shakespeare 5215 VHF Sailboat Whip Antenna, изображение с Ebay

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

Кабель

Для соединения антенны с приёмным модулем мы использовали коаксиальный кабель RG316 длиной 5 метров с разъёмами PL259 (UHF Male) / SO239 (UHF Female) на одном конце и RP-SMA / SMA — на другом. Этот кабель выбрали по нескольким причинам: он обладает подходящим волновым сопротивлением (50 Ом), которое критически важно для эффективной передачи сигнала без потерь, а также совместим с используемыми устройствами без необходимости дополнительных переходников.
До этого мы тестировали более толстые кабели, но они имели другое сопротивление, отличающееся от антенны и приёмника, что приводило к значительным потерям сигнала и некорректной работе системы. RG316 при своей компактности и гибкости показал себя отлично для наших задач.

Рис. 4. кабель RG316, изображение с AliExpress

Приёмник RTL-SDR

SDR это программно-управляемое радио. В обычном радио вы крутите различные «физические штуки», чтобы ловить нужную частоту. SDR позволяет слать в микрочип цифры, и чип сам меняет частоты. От качества чипа зависит точность приёма.

В качестве приёмника сигнала мы использовали RTL-SDR — компактный USB-донгл New Generation RTL-2832 SDR с диапазоном приёма от 25 МГц до 1760 МГц и встроенным TCXO (температурно-стабилизированный генератор) с точностью 0.5 PPM. Это доступное и популярное решение для начинающих радиолюбителей и энтузиастов, позволяющее принимать широкий спектр сигналов, включая AIS. Донгл (в простонародье - «свисток») легко подключается к компьютеру через USB и совместим со множеством программ.

Рис. 5. USB-донгл New Generation RTL-2832 SDR, изображение с Alibaba

Важно: устройство довольно сильно нагревается, и в жаркую погоду при чрезмерной нагрузке может даже погореть. Высокие температуры влияют на приём, поэтому мы настоятельно рекомендуем работать с оборудованием в хорошо вентилируемом месте или даже попробовать применить примитивную пассивную систему охлаждения - например, разместить его на металлической поверхности, отводящей тепло.

Что касается программного обеспечения, сопровождающего данное устройство - все диски/драйвера, которые высылаются продавцами, могут быть выброшены в мусор, поэтому вам потребуется программа SDR# и любительский драйвер Zadig. Инструкция по установке драйвера здесь

ПО для приёма радиосигнала

Здесь и далее, алгоритм действий по части ПО мы осуществляли в операционной системе Windows.

Для приёма и первичной расшифровки радиосигнала мы использовали программу SDRSharp (часто также пишут SDR#) — одно из самых популярных бесплатных решений в сообществе радиолюбителей. Это лёгкий и мощный софт для Windows, позволяющий подключать SDR-приёмники (в том числе на базе RTL2832U) и работать с различными радиодиапазонами.

Программа позволяет:
  • визуализировать радиоспектр в реальном времени;
  • точно настраивать частоту приёма (в нашем случае — на частоты AIS-каналов: 161.975 МГц и 162.025 МГц);
  • управлять полосой пропускания, усилением и другими параметрами приёма;
  • направлять сигнал на другие программы с помощью виртуального аудиокабеля.


Скачать программу можно здесь

Рис. 6. Общий вид программы SDR#

Когда вы соберёте всё до данного пункта, вы должны услышать, как минимум местные FM радиостанции. Это будет означать, что свисток и программа работают. Хороший знак.

Программа передачи аудио-сигнала

Чтобы передать выходной аудиосигнал из SDRSharp в программу-декодер AIS-сообщений, мы использовали VB-Audio Cable — бесплатный виртуальный аудиокабель, создающий внутри системы Windows "мост" между двумя программами.

Функционал:
  • создаёт виртуальное аудиоустройство, которое можно выбрать как выход в одной программе (SDRSharp) и вход в другой (ShipPlotter или иное ПО);
  • не искажает сигнал и позволяет избежать потерь, характерных для физического подключения через внешнюю звуковую карту;
  • стабильно работает даже при длительном использовании и минимальных настройках.


Программа бесплатна для базовой версии и доступна на сайте разработчика VB-Audio Software по ссылке

После установки программы в звуковых настройках системы вам нужно будет выставить VB-Audio Virtual Cable Input/Output в соответствующих разделах, как показано на рисунках 7 и 8. В программе SDR# соответственно в правом столбце в разделе Audio в Output нужно выбрать Cable Input VB-Audio, как показано на рисунке 6. Рис. 7. Настройка воспроизведения

Рис. 8. Настройка записи

ПО для демодуляции и декодирования AIS-данных

Декодеры AIS-сигналов преобразуют аналоговые аудиосигналы, полученные от приёмника, в цифровую информацию, содержащую данные о судах, такие как данные идентификации, координаты, курс и скорость. Эта информация затем отображается на карте, позволяя пользователям отслеживать морской трафик в реальном времени. Полная схема работы программ, начиная от приёма сигнала, и заканчивая демодуляцией, изображена на рисунке 9.

Рис. 9. Связка ПО (приём сигнала – обработка звука – декодирование сигнала), сгенерировано OpenAi

Для цели декодирования мы выбрали программу ShipPlotter от COAA — мощный инструмент для обработки AIS-сигналов и отображения информации о морском трафике.
Существует несколько бесплатных решений, таких как AISMon или AISDeco, которые также позволяют декодировать AIS-сигналы (некоторые из них мы попробовали протестировать). Однако платный ShipPlotter на наш взгляд предлагает более широкий функционал и удобный интерфейс, что делает его предпочтительным выбором для многих пользователей. Стоимость программы – 25 евро для личного пользования. Перед оплатой у вас будет 21 день для бесплатного тестирования, чтобы понять, покупать всё-таки её или пользоваться чем-то бесплатным, например, упомянутым выше. Мы протестировали и поняли, что надо покупать!

Программа эффективно обрабатывает аудиосигналы, поступающие через виртуальный аудиокабель, и извлекает из них информацию о судах, позволяет визуализировать данные и отправлять на картографические редакторы (например, на Google Earth), а также даёт возможность подключения к другим пользователям ShipPlotter для обмена данными, настройке фильтров отображения и многому другому.

ShipPlotter можно скачать по ссылке

Программа или сервис визуализации данных

Существуют разные способы визуализации AIS-данных — от специализированных навигационных программ (например, OpenCPN) до простых решений с привязкой к Google Earth. Эти инструменты позволяют отобразить координаты судов на карте и использовать разные слои (например, глубины, порты, метеоусловия). Однако в рамках нашего проекта мы не стали углубляться в сторонние системы визуализации, поскольку наша цель — интеграция полученных данных в собственный веб-сервис, где мы сможем гибко настраивать отображение, фильтрацию и аналитику по нашему усмотрению.

Далее мы расскажем о том, где конкретно мы подключали оборудование, какие суда поймали, какие были нюансы и сложности, а после этого дадим рекомендации по поводу того, как настроить оборудование вам.

Первые пойманные нами сигналы

Мы тестировали своё оборудование в городе Коломбо на Шри-Ланке. Именно там у нас открыт зарубежный офис, именно там мы принимаем и осуществляем платежи и взаимодействуем с иностранными контрагентами. Кроме того, Шри-Ланка является очень удобным географическим местом, где проходят основные торговые пути, ведущие во все части света. Здесь предоставляется прекрасная возможность «увидеть воочию» (посредством радиосигнала) крупнейшие суда, задействованные в международных грузопотоках.

Для того, чтобы поймать сигнал с судна, желательно ловить его непосредственно в порту, или так, чтобы антенна была на высоте, и на пути сигнала не было никаких препятствий.
Место установки оборудования находилось в 4-х с лишним километрах от порта (рисунок 10), при этом на пути сигнала была довольно плотная городская застройка.

Рис. 10. Карта расположения AIS-приёмника относительно порта

На рисунке 11 изображён общий вид «пути» сигнала с балкона здания, где установлена антенна (справа на фото). Если присмотреться, вдали можно увидеть портовые краны, которые обведены красными кружочками на фотографии и помечены цифрами 1 (рисунок 12) и 2 (рисунок 13).

Рис. 11. Обзорное фото города на пути приёма сигнала

Рис. 12. Портовые краны 1

Рис. 13. Портовые краны 2

Практически сразу, по прошествии двадцати минут после подключения оборудования и запуска программ нам удалось поймать сигналы двух судов (рисунок 14). Проверив по названию в нашем сервисе, мы убедились, что данные суда действительно находятся в порту Коломбо под погрузо-разгрузочными операциями (рисунки 15 и 16). При этом нам повезло, так как судно Maersk Tukang передало нам полную информацию о себе, а именно свои MMSI, IMO, название, статус, координаты, курс, скорость, размеры, тип судна и следующий порт назначения.

Рис. 14. Суда Maersk Tukang и Maersk Conakry в программе ShipPlotter.

Рис. 15. Судно Maersk Tukang, страница сервиса GORADAR / SHIPINFO

Рис. 16. Судно Maersk Conakry, страница сервиса GORADAR / SHIPINFO

Ссылка на судно Maersk Tukang в SHIPINFO
Ссылка на судно Maersk Tukang в GORADAR
Ссылка на судно Maersk Conakry в SHIPINFO
Ссылка на судно Maersk Conakry в GORADAR

Далее мы расскажем, какие настройки необходимо будет выставить в программах, чтобы вам также повезло, как и нам.

Настройка программного обеспечения для приёма AIS-сигнала

1. SDRSharp (SDR#): настройка радиосигнала

Для начала откройте SDRSharp и выполните следующие действия:
  • Выберите метод передачи аудио (Audio Output) VB-Audio Cable, чтобы направить звук в декодер.
  • Настройтесь на частоту AIS:
    • AIS канал 1: 161.975 МГц
    • AIS канал 2: 162.025 МГц
    • RTL-SDR может быть немного неточным по частоте, особенно без TCXO. Если сигнал не точно попадает в центр, попробуйте вручную подстроить частоту до чёткого сигнала.
  • Настройки приёма сигнала:
    • Режим: NFM (Narrow FM)
    • Полоса пропускания: 25 кГц (зачастую в инструкциях в качестве базового параметра задаётся 12.5 кГц, но мы использовали 25 кГц для стабильности)
    • Filter Audio: OFF
    • Squelch: OFF (иначе сигнал может просто не доходить до следующего этапа)
    • RF Gain (усиление):
    • Отрегулируйте с помощью кнопки Configure. Ищите компромисс: сигнал должен быть чётким, но без сильного шума. Слишком высокая чувствительность может привести к искажению.
  • Проверка сигнала:
    • AIS-сообщения будут выглядеть как короткие горизонтальные «блипы» на водопаде (waterfall) внизу (см. рисунки 17-19). Через колонки звук AIS-сигнала — это щелчки или короткие шумовые импульсы (видео 1). Чтобы послушать, нужно поменять параметры исходящего звука с VB-Audio Cable на динамики или наушники, только не забудьте потом поменять обратно (как показано на рисунках 7 и 8).
Рис. 17. AIS сигналы в программе SDR# (горизонтальные точки внизу экрана)

Рис. 18. AIS сигналы в программе SDR# (горизонтальные точки внизу экрана)

Рис. 19. AIS сигналы в программе SDR# (горизонтальные точки внизу экрана)


Видео 1. Изображение и звук сигнала AIS в программе SDR#

2. 2. ShipPlotter: декодирование и визуализация

После того как сигнал настроен, откройте ShipPlotter и выполните следующие шаги:

  • Audio Settings:
    • Перейдите в Options → Audio → SoundCard и выберите VB-Audio Cable (или иной метод аудиопередачи, выбранный в SDRSharp).
    • Затем в Options → I/O Settings убедитесь, что установлена галочка Enable Audio Input Processing.
  • Demodulator Settings:
    • В Options → Demodulator:
  • Убедитесь, что включены:
    • Require Preamble
    • Require HDLC FCS correct
    • Эти опции повышают точность декодирования пакетов AIS.
  • Запуск приёма и проверка аудиосигнала:
    • Нажмите зелёную кнопку Start (зелёный кружочек)
    • Затем нажмите иконку Raw (волна) чтобы увидеть график аудиосигнала.
    • Важно: уровень сигнала должен быть умеренным — пик волны должен быть примерно на половине высоты графика.
    • Регулируйте громкость в SDRSharp или в системе Windows.
  • Отображение судов и сообщений:
    • Нажмите иконки Ships и Messages , тобы увидеть список идентифицированных судов и их сообщения (MMSI, координаты, статус и др.).

Визуализация данных

ShipPlotter поддерживает загрузку карт и отображение судов в интерфейсе программы. Также возможно подключение Google Earth, однако мы этот функционал не тестировали, поскольку разрабатываем собственный сервис для визуализации и анализа AIS-данных. Нам важно было именно принять сигналы, а затем проверить через собственный сервис местонахождение судов, их передавших. На рисунке 20 изображена акватория порта Коломбо (в гавани справа можно видеть несколько судов у причальной стенки).

Рис. 20. Акватория порта Коломбо, скриншот с Google Earth



Надеюсь, что наш гайд поможет начинающим энтузиастам, любителям морской связи и радиодела. Для нас этот кейс является важной вехой в развитии проекта, так как мы на собственном опыте, пусть и с помощью программ сторонних разработчиков подключили свою первую точку, и будем развиваться в дальнейшем по части разработки собственного ПО, предоставления оборудования и создания сообщества владельцев подобных береговых станций, работающих вместе под эгидой сервиса SHIPINFO и GORADAR. Мы постараемся создать самые удобные для этого условия, и предоставить дополнительные стимулы, чтобы вы были частью нашего сообщества. А пока желаем вам удачи в подключении, настройке оборудования и поиска нужных сигналов!

P.S. В ходе работы над подключением точки было много интересного. В процессе прочесывания диапазона удавалось ловить сигналы не только AIS, но и много чего ещё: авиа-сигналы, переговоры пилотов, местные радиостанции. Предлагаем вам послушать переговоры моряков (видео 2) на близких к AIS частотах. Разговорный канал близок к AIS частотам, скорее всего это был разговорный канал 1 - 156,050 МГц с небольшой погрешностью. Разговор довольно эмоциональный и на непонятном многим языке, но слушать интересно.


Видео 2. Разговоры моряков, пойманные в ходе настройки приёмника

Подготовил Михаил Голосов

P.S.2 Отдельно за консультации при подготовке данной статьи благодарим Романа Серова, специалиста по IT и радиосвязи.