ЦУП «Альтаир» — учебный центр управления полётами, разработанный для сопровождения CubeSat-проектов. Функциональные возможности: Приём и визуализация телеметрии (отображение параметров и графиков для нескольких аппаратов одновременно). Радиопередача команд на спутник. В перспективе: интеграция и управление поворотным устройством антенны.
ЦУП адаптирован для работы в связке с образовательными конструкторами CubeSat от компании IntroSat. Бортовая система этих наборов включает микроконтроллер STM32 (Blue Pill) и фирменные радиомодули на базе чипа CC1101.
Примечание разработчикам: Официальное руководство по использованию данных радиомодулей было удалено производителем с сайта. Это связано с конструктивной особенностью: на интерфейсном шилде отсутствуют несколько необходимых контактов, что делает прямое (стандартное) подключение невозможным и требует аппаратной доработки.
Текущая версия: v8 / 0.8.1.
Проект создан в рамках образовательного проекта «Миссия на Луну» и профильной смены по спутникостроению; стенд использовался на Технопроме-2026.
- Программа ЦУП Альтаир v8 для Windows
- Скетч радиошлюза для ESP32-WROOM-32
- Скетч радиошлюза для Arduino Uno
- Скетч радиошлюза для Arduino Nano
- Шаг 01 — передатчик неизменяемого пакета для Arduino Nano
- Шаг 02 — передатчик со счётчиком пакетов для Arduino Nano
- Шаг 03 — передатчик со счётчиком пакетов и UPTIME для Arduino Nano
- Шаг 04 — передатчик с измерением температуры кристалла для Arduino Nano
- Подключите CC1101 к ESP32-WROOM-32 по таблице ниже.
- Загрузите
Altair_Ground_ESP32.inoчерез Arduino IDE или прошейте ESP32 встроенной прошивкой из программы. - Подключите ESP32 к компьютеру по USB.
- Запустите
ЦУП Альтаир. - В блоке «Соединение с ЦУПом» выберите ESP32 и
115200 бод. - Нажмите «Подключить устройство» и выберите нужный COM-порт.
- После подключения блок соединения автоматически свернётся; его можно развернуть в любой момент.
- Включите спутники-передатчики. Телеметрия появляется сразу; разные
IDстроятся разными линиями на одних графиках. - Для диагностики откройте панель COM — там видны сырые строки в реальном времени.
Наземный шлюз v8 использует профиль, который устойчиво работал на реальном стенде:
| Параметр | Значение |
|---|---|
| Частота | 435.000 МГц |
| Модуляция | 2-FSK |
| Скорость в эфире | 4.8 kbps |
| Девиация | 5 кГц |
| Полоса приёмника ЦУПа | 203 кГц |
| Мощность TX | 5 дБм |
| Sync word | 0x12AD |
| Encoding | NRZ |
| Длина пакета | variable |
| CRC CC1101 | включён |
| USB | 115200 бод |
Широкая полоса приёмника ЦУПа 203 кГц выбрана намеренно: на стенде некоторые модули имели заметный частотный уход относительно 435.000 МГц. Этот набор значений используется как исходный профиль при включении ESP32. В панели команд можно изменить частоту, мощность TX и полосу приёмника ЦУПа, а кнопка «Сбросить к исходным» возвращает 435.000 МГц, 5 дБм и 203 кГц.
Доступные настройки CC1101:
- частота наземного модуля: от
387.000до464.000 МГц; - мощность TX:
−30,−20,−15,−10,0,5,7или10 дБм; - полоса приёмника ЦУПа:
58,68,81,102,116,135,162,203,232,270,325,406,464,541,650или812 кГц.
Настройки действуют до перезапуска ESP32. После перезапуска автоматически восстанавливается исходный профиль. При изменении частоты бортовой передатчик необходимо настроить на ту же частоту.
Для приёма телеметрии и передачи команд используется один и тот же радиомодуль CC1101. Это приёмопередатчик: отдельные модули для приёма и передачи не требуются. CC1101 работает в полудуплексном режиме, поэтому управляющий микроконтроллер программно переключает его между режимами RX и TX.
Особенность IntroSat. В наборах спутников IntroSat применяется та же микросхема CC1101, однако радиомодуль выполнен на собственной печатной плате. Поэтому расположение контактов и способ подключения могут отличаться от показанного выше модуля; необходимо проверять маркировку и документацию конкретной ревизии платы.
На профильной смене выяснилось, что на использовавшемся шилде IntroSat не все необходимые линии радиомодуля были разведены на штатный разъём. Для рабочего подключения отдельно припаивались три провода:
CSN / CS → PA2,GDO0 → PA0иGDO2 → PA1. ЛинииSCK,MISOиMOSIподключались к штатному интерфейсу SPI1 микроконтроллера STM32. Перед пайкой следует сверить эти назначения с прошивкой и ревизией конкретной платы IntroSat.
Фотографии радиомодуля IntroSat, использовавшегося на профильной смене:
Слева — сторона с антенной; справа — сторона с микросхемой CC1101 и контактным разъёмом.
Это штатный вариант радиошлюза ЦУП Альтаир.
| CC1101 | ESP32-WROOM-32 |
|---|---|
| VCC | 3V3 |
| GND | GND |
| SCK | GPIO18 (D18) |
| MISO / SO | GPIO19 (D19) |
| MOSI / SI | GPIO23 (D23) |
| CSN / CS | GPIO21 (D21) |
| GDO0 | GPIO4 (D4) |
| GDO2 | GPIO27 (D27) |
GPIO18иD18— это один и тот же вывод ESP32. На разных платах и в разных средах он может быть подписан как18,GPIO18илиD18; аналогично для остальных выводов таблицы.
Этот вариант удобен для простого передатчика или стендовой проверки радиолинии.
| CC1101 | Arduino Nano |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SCK | D13 |
| MISO / SO | D12 |
| MOSI / SI | D11 |
| CSN / CS | D10 |
| GDO0 | D2 |
| GDO2 | D3 |
* Важно: классический Arduino Nano на ATmega328P обычно работает с логическими уровнями 5 В, а CC1101 — с логикой 3.3 В. Линии от Nano к CC1101 (SCK, MOSI, CS) рекомендуется подключать через преобразователь уровней 5 В ↔ 3.3 В. Прямое подключение без согласования уровней — только на свой страх и риск. Сам CC1101 питать исключительно от 3.3 В.
Таблица соответствует разводке, используемой в эталонном скетче передатчика проекта: CS=PA2, GDO0=PA0, GDO2=PA1, SPI1 — штатные выводы Blue Pill.
| CC1101 | STM32 Blue Pill |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SCK | PA5 |
| MISO / SO | PA6 |
| MOSI / SI | PA7 |
| CSN / CS | PA2 |
| GDO0 | PA0 |
| GDO2 | PA1 |
CC1101 питается только от 3.3 В. Для ESP32 и STM32 Blue Pill отдельный преобразователь логических уровней не требуется, поскольку обе платы работают с логикой 3.3 В.
Выводы
CS,GDO0иGDO2можно назначить иначе, но тогда те же номера необходимо изменить в прошивке. Таблицы выше соответствуют конфигурациям, используемым в проекте ЦУП Альтаир.
Базовый пакет с температурой бортового компьютера:
02,00001,00015,1.00,4.20,31.6,1,07
Поля:
ID,PACKET,UPTIME,PANEL_POWER,VOLT,MCU_TEMP,MODE,CHECKSUM
MCU_TEMP — ориентировочная температура кристалла бортового микроконтроллера в градусах Цельсия. Поле располагается непосредственно после напряжения аккумулятора. Для точных абсолютных измерений внутренний датчик конкретной платы необходимо откалибровать.
Поддерживается и расширенный вариант с состоянием раскрытия антенны:
02,00001,00015,1.00,4.20,31.6,1,1,1A
Поля:
ID,PACKET,UPTIME,PANEL_POWER,VOLT,MCU_TEMP,MODE,ANTENNA,CHECKSUM
где ANTENNA=1 — раскрыта, ANTENNA=0 — сложена. Если поля ANTENNA нет, интерфейс показывает Н/Д.
Для совместимости ЦУП продолжает принимать прежние семипольные пакеты без температуры.
В v8 прикладная XOR-проверка намеренно отключена. Поле CHECKSUM сохраняется и отображается, но не является причиной отбрасывания пакета.
Это сделано для учебной смены: команда может изменить ID, напряжение или другое поле и не пересчитывать последние два HEX-символа — пакет всё равно будет показан в ЦУПе.
Аппаратный CRC самого CC1101 остаётся включённым и защищает радиопакет от грубых ошибок передачи.
ЦУП группирует данные по ID.
Если одновременно приходят:
01,...
02,...
07,...
на каждом графике будут отдельные линии ID 01, ID 02, ID 07. Цвет закрепляется за ID на текущую сессию. Точки показывают фактические моменты поступления пакетов. Кнопка «Сбросить принятые данные» очищает карточки, графики, счётчики и сырой COM-журнал.
ESP32-шлюз v8 работает как приёмопередатчик. В программе можно выбрать адресат (ALL или конкретный ID) и передать команду.
ЦУП отправляет шлюзу:
$CMD,RF,TO=02,NAME=PING
а ESP32 передаёт в эфир:
$CMD,TO=02,NAME=PING
Штатные команды v8:
| Команда | Назначение |
|---|---|
PING |
проверка радиопередачи |
INFO |
запрос информации |
TM_START |
команда запуска телеметрии |
TM_STOP |
команда остановки телеметрии |
TM_PERIOD,MS=<N> |
изменение периода телеметрии |
USER,DATA=<текст> |
произвольная пользовательская команда |
Бортовая прошивка спутника должна отдельно реализовать реакцию на эти команды. Даже без неё передачу ЦУПа можно увидеть на SDR и проверить TX-тракт CC1101.
Служебная команда $CMD,RADIO_STATUS возвращает текущий профиль наземного шлюза. Интерфейс использует следующие команды:
$CMD,RADIO,SET,FREQ=433.920,POWER=5,BW=203
$CMD,RADIO,RESET
Первая команда применяет выбранные параметры, вторая возвращает исходный профиль. ESP32 проверяет допустимость значений и при ошибке восстановления сохраняет предыдущие рабочие настройки.
Программа не вводит специальную задержку отображения: разобранная строка сразу отправляется в карточки и графики.
Причины редкого обновления обычно находятся ниже по тракту: реальный период передачи конкретного спутника, коллизии нескольких аппаратов на одной частоте, частотный уход передатчика, занятый COM-порт или потеря радиопакета по аппаратному CRC.
Для проверки используется панель «Сырые данные последовательного порта». Если строки быстро идут в COM-панели, но не отображаются как телеметрия — проблема в формате пакета. Если строк в COM-панели нет — искать нужно в радиоканале/ESP32.
- официальная ESP32-прошивка без прикладной проверки XOR;
- RX bandwidth 203 кГц;
- видимая на главном экране частота
435.000 МГц; - сворачиваемая панель соединения;
- передача RF-команд с ЦУПа;
- кнопка полного сброса принятых данных;
- отдельные линии и цвета графиков для каждого
ID; - сырой COM-терминал;
- окно «О программе»;
- новый значок Альтаира для интерфейса и Windows-приложения;
- фотографии реального ЦУПа и CubeSat в документации;
- один актуальный GitHub Release — v0.8.1.
Автор: Антон Т.
Сделано в рамках проекта «Миссия на Луну» к профильной смене по спутникостроению.
Цель проекта — дать участникам понятный и воспроизводимый наземный комплекс, который можно собрать из доступных модулей, увидеть реальные радиопакеты и использовать как основу для собственных спутниковых экспериментов.
Репозиторий содержит приложение, прошивки и документацию. Для локального запуска:
npm install
npm startДля сборки Windows installer:
npm run dist:winPull request'ы и улучшения приветствуются. При изменении радиопротокола желательно приложить пример принятой сырой строки из COM-панели.
Если у вас есть вопросы, предложения или идеи по улучшению проекта, пишите на электронную почту: ya.antoha.rt@gmail.com



