- PVSM.RU - https://www.pvsm.ru -

На нашем стратостате используется три передатчика: передатчик на протоколе APRS (Automatic Packet Reporting System, протокол пакетной любительской радиосвязи), авиационный транспондер ADS-B и высокоскоростной канал нисходящей передачи.


Для отслеживания стратостата на больших расстояниях мы используем APRS-передатчик, потому что здесь, в Нью-Брансуик, у нас много цифровых репитеров и I-Gate. Даже если мы не будем получать его маяки, наверняка их получит кто-то другой, и тогда можно будет просто опросить сеть APRS-IS.
Мы используем модель MicroTrak 1000. Её выбрали ещё до того, как я присоединился к проекту. Мне эта модель не нравится – было бы здорово задействовать что-то с возможностью получения пакетов, чтобы иметь простой канал восходящей связи, но это скорее придирка. Мне также не нравится, что MicroTrak 1000 работает на проприетарном ПО – я бы предпочёл что-то доступное для хакинга. Тем не менее в роли APRS-передатчика эта модель функционирует отлично.
На стороне наземной станции мы получаем от него пакеты, используя антенну Arrow II и приёмник TM-231A. Аудиосигнал передаётся на ноутбук с программой Direwolf. Для визуализации этих пакетов и пакетов, поступающих через APRS-IS, используется Xastir.
В качестве альтернативы Xastir я написал программу balloon-aprs-util [1]. Знаю, название очень креативное :) Она прослушивает пакеты APRS, поступающие от Direwolf и APRS-IS, выводя их в терминал. Кроме того, эта программа вычисляет расстояние от наземной станции до стратостата и азимут/высоту антенны. Идея состоит в том, чтобы максимально разгрузить людей – предоставлять только полезную информацию и не более. Xastir мы используем по необходимости для получения более широкой картины.

Полезная нагрузка у нас большая – настолько большая, что пришлось установить на борту авиационный транспондер ADS-B. В связи с этим возникли всякие технические сложности. Вы знали, что эти устройства передают сигнал при 250 Вт? Я вот не знал! Такая высокая мощность может легко создавать помехи для бортовых систем, с чем мы и столкнулись.
Этот транспондер, по сути, является автономной единицей оборудования, как и APRS-передатчик. В этом есть смысл, поскольку ему нужна серьёзная защита от дурака. В конце концов он требует соблюдения множества установленных нормативов.
На Земле мы также декодируем пакеты ADS-B. В основном это решение используется в качестве резервного дублирования, поскольку не предоставляет никакой дополнительной информации сверх APRS-передатчика. Схема очень проста – мы используем подключённый к диполю приёмник RTL-SDR за ~$50 для получения пакетов, передаваемых в dump1090 [2]. Это, пожалуй, наиболее готовая к использованию часть всей системы – никакого кастомного ПО.

Именно в работу со скоростной нисходящей линией связи я вложил свои основные усилия. Целью является отправка на Землю изображений высокой чёткости в реальном времени. На мой взгляд, это очень утончённая система, но в ней также есть множество подвижных деталей.
Мы используем модуль RF4463F30 для передачи пакетов с частотной манипуляцией (FSK, frequency shift keying) в диапазоне 70 см при мощности 1 Вт. Эти пакеты кодируются в формате LDPC (low-density parity-check code, код с низкой плотностью проверок на чётность). На Земле мы получаем их с помощью приёмника SDRPlay. Конечно, можно было взять ещё один RF4463F30 – он явно дешевле – но у него ниже чувствительность, и с ним не получится использовать программное декодирование битов. Один только он забрал бы на себя 6 дБ от нашего бюджета канала связи – точно не вариант.
SDRPlay подключён к 70 см сегменту антенны Arrow II, то есть нам нужно направить только одну антенну для работы APRS и скоростного нисходящего канала.
Эта система способна передавать до 500 Кбит/с в чистую или около 350 Кбит/с с учётом накладных издержек (в основном кодирования LDPC). Этой скорости достаточно для отправки высокоточных изображений всего за несколько секунд.
Изначально задумывалась прямая связь с RF4463 при помощи Pi Zero. К сожалению, его крохотный буфер объёмом 129 байт при 500 Кбит/с опустошается каждые несколько миллисекунд. Я выяснил, что при такой скорости передачи Pi не поспевает и иногда теряет пакеты, а его процессор оказывается постоянно загружен на 100%.

Изначальный дизайн платы. Трансивер RF4463 – металлический прямоугольник – подключён напрямую к Pi. Взаимодействие между ними происходит через SPI
Решением стала установка между Pi и RF4463 микросхемы STM32F411. По сути, она выступает в качестве огромного буфера – Pi передаёт данные STM32 пачками через UART, а STM32 отвечает за их последующую передачу RF4463 через SPI. Это супернадёжная схема, которая обеспечивает загрузку процессора Pi всего на несколько процентов. Честно говоря, я уверен, что STM32F411 – это перебор. Как только я разберусь с DMA (direct memory access, прямой доступ к памяти), то обязательно подберу микросхему попроще. В будущей ревизии печатной платы я избавлюсь от дочерней платы и добавлю микроконтроллер. Учтите, это всего лишь прототип.

А вот и новая плата. Я изменил цвет и добавил микроконтроллер. Для тестирования я использую Raspberry Pi первого поколения, но в полезной нагрузке мы задействуем Pi Zero.
Вам может стать интересно, зачем на плате место под второй RF4463. Идея состоит в том, чтобы при необходимости использовать вариант на 33 см для восходящего канала связи. Пока же у нас есть другая система для отправки команд. Ввиду большой массы полезной нагрузки нам необходим способ удалённого завершения миссии (то есть взрыва стратостата). Это основная причина для реализации восходящего канала.
Теперь поговорим о ПО. Почти все части этой системы коммуникации, по крайней мере на стороне полезной нагрузки, написал я. Состоит она из следующих компонентов:

ПО наземной станции. Слева фото, а справа графики отладки и логи состояний
На Земле я использую свой форк [6] проекта Wenet [7]. Заставить эту систему работать оказалось сложнее, чем я ожидал. На пути от RTL-SDR к SDRPlay возникло немало проблем, связанных с пропускной способностью. Мне также пришлось избавиться от дефрейминга на RS-232 – передатчик Wenet работает посредством программной эмуляции (bit-banging) Si4463, что вносит издержки, которые необходимо устранять на стороне получения. Я внёс и другие небольшие изменения, но эти два были самыми значительными.
Хочется выразить огромную благодарность всем, кто работал над Wenet [7] – это реальная жемчужина опенсорса, и она послужила прекрасной отправной точкой для всей системы. Единственное, что мне не нравится в SDRPlay – это то, что у него проприетарный драйвер. Если бы я знал об этом изначально, то купил бы что-то другое.
Все эти системы совершат свой первый полёт 17 июня 2023 года (оригинал статьи был опубликован 13 июня). Больше всего у меня вызывает восхищение то, как работает высокоскоростной канал нисходящей связи, особенно на дальних расстояниях.
Я также планирую запустить собственный стратостат, уже вне текущей команды. Он будет намного меньше и включать в себя высокоскоростной канал связи с Землёй, Pi Zero, камеру и GPS. Я хочу немного переписать ПО, чтобы данные GPS отправлялись по нисходящему каналу, а не через отдельный передатчик.
Надеюсь, что другие любители, интересующиеся запуском стратостатов, найдут моё ПО или аппаратное обеспечение полезным. Если программу balloon-tx-monolith доработать, то скорости в 500 Кбит/с должно быть достаточно для поддержания видеопотока среднего качества в реальном времени. Кстати говоря, думаю, эта система вполне подошла бы роботу или квадрокоптеру, так что впереди у меня ещё много интересных задач.
Выиграй телескоп и другие призы в космическом квизе от RUVDS. Поехали? 🚀 [8]
Автор: Дмитрий Брайт
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy/385710
Ссылки в тексте:
[1] balloon-aprs-util: https://gitlab.scd31.com/stephen/balloon-aprs-util
[2] dump1090: https://github.com/antirez/dump1090
[3] balloon-tx-monolith: https://gitlab.scd31.com/stephen/balloon-tx-monolith
[4] pi-transceiver-firmware: https://gitlab.scd31.com/stephen/pi-transceiver-firmware
[5] rf4463-lib: https://gitlab.scd31.com/stephen/rf4463-lib/
[6] свой форк: https://gitlab.scd31.com/stephen/wenet-fast
[7] Wenet: https://github.com/projecthorus/wenet/
[8] Выиграй телескоп и другие призы в космическом квизе от RUVDS. Поехали? 🚀: https://habr.com/ru/specials/744204/
[9] Источник: https://habr.com/ru/companies/ruvds/articles/744648/?utm_source=habrahabr&utm_medium=rss&utm_campaign=744648
Нажмите здесь для печати.