ЦУП работает на «наземном» компьютере и обеспечивает необходимый функционал для приема и отображения данных с Орбикрафт (со «спутника») - как телеметрии о работе бортовых систем, так и данных с полезной нагрузки. «Наземными» устройствами являются ВЧ-приемник и УКВ-приемник, которые подключаются при помощи кабеля USB-RS485 к компьютеру.
В случае использования комплекса имитаторов космической среды «Терра», к компьютеру подключаются имитатор Земли (глобус) и блок управления имитатором магнитного поля Земли (магнитной рамкой).
Рисунок 1. Установка драйвера
Рисунок 2. Окно ПО ЦУП
ЦУП имеет одно окно с набором полей (рисунок 2):
Получение снимка с камеры требует работы с программой ЦУП из раздела Необходимое ПО и выполнения некоторой последовательности действий, изложенной ниже.
Скриншоты могут отличаться для разных версий операционной системы Windows.
Подключите камеру при помощи специального шлейфа DB-9F «папа-папа» к БКУ (рисунок 3):
Рисунок 3. Кабель «папа-папа»
О том как собрать шлейф Вы можете прочитать здесь.
Подключите ВЧ-передатчик в сеть конструктора Орбикрафт.
Рисунок 4. Окно Центр управления сетями и общим доступом
Рисунок 5. Беспроводное сетевое соединение
Рисунок 6. Свойства
Рисунок 7. Протокол интернета версии 4
Брандмауэр Windows может блокировать передачу снимков через Wi-Fi канал, поэтому его необходимо отключить.
Рисунок 8. Брандмауэр Windows
Рисунок 9. Дополнительные параметры
Рисунок 10. Свойства Брандмауэра Windows
Запустите ЦУП. О том как запускать ЦУП (GroundControl_(версия).exe) можно прочитать здесь.
Рисунок 11. Запущенные процессы Windows
О том как создать и запустить программу Вы можете прочитать в разделе Первое знакомство
Следующая тестовая программа, (которая также представлена в разделе Камера ДЗЗ), выполнит получение десяти снимков подряд и передачу их в ЦУП. При этом в программе ЦУП (GroundControl_(версия).exe), запущенной на компьютере пользователя, будут отображаться получаемые изображения.
Пример кода проверки камеры и ВЧ-передатчика на языке С
#include "libschsat.h" // Camera capture demo void control(void) { int i; if (LSS_OK == camera_turn_on()) { for (i = 1; i < 10; i++) { printf("Take photo #%d\n", i); if (camera_take_photo(i)) { puts("\tFail!"); } } } else { puts("\tFail!"); } printf("Turn-on transmitter #1\n"); if (LSS_OK == transmitter_turn_on(1)) { for (i = 1; i < 10; i++) { printf("Transmit photo #%d\n", i); if (transmitter_transmit_photo(1, i)) { puts("\tFail!"); } } } else { puts("\tFail!"); } printf("Turn-off transmitter #1\n"); if (transmitter_turn_off(1)){ puts("\tFail!"); } }
Пример кода проверки камеры и ВЧ-передатчика на языке Python
# Программа получения одного снимка и его передачи def control(): #Инициализируем переменные num = 1 frame = 0 err = 0 err_transmitter = 0 #Включаем камеру и передатчик и ждем их загрузки camera_turn_on() transmitter_turn_on(num) sleep(1) # Делаем снимок err_camera = camera_take_photo(frame) if err == 1: print 'Camera access error, check the connection', frame elif err == 2: print 'Camera interface errorr, check the code', frame #Передаем снимок err_transmitter = transmitter_transmit_photo(num, frame) if err_transmitter == 1: print 'Transmition failed' #Выключаем устройства camera_turn_off() transmitter_turn_off(num)
УКВ-приемник из состава конструктора имитирует работу радиоприемной части наземной станции приема телеметрической информации по низкоскоростному УКВ каналу. Аналогичные приемники смонтированы внутри имитатора Земли (внутри глобуса), однако для предварительной отработки работы со спутником в комплекте также поставляется данный УКВ-приемник телеметрии с USB проводом для подключения.
Сам приемник работает совместно с ПО ЦУП. При передаче данных телеметрии бортовым радиоканалом и подключенном УКВ-приемнике в наземной сети, эти данные будут автоматически приниматься наземным радиоканалом и отображаться в окне телеметрии пользовательского интерфейса ПО ЦУП.
УКВ приемник в конструкторе ОрбиКрафт имеет номер «1» (указан на корпусе).
Код для приема данных по УКВ на языке C
#include "libschsat.h" /* ** Lab 8: UHF transceiver demo. */ void control(void) { const uint16_t tx_num = 2; const uint16_t rx_num = 1; const char hello[] = "hello, world!"; printf("Enable transceiver #%d\n", tx_num); transceiver_turn_on(tx_num); Sleep(1); bus_setup(); printf("Send data from #%d to #%d\n", tx_num, rx_num); if (LSS_OK != transceiver_send(tx_num, rx_num, (uint8_t *) hello, sizeof(hello))) puts("Fail!"); printf("Disable transceiver #%d\n", tx_num); transceiver_turn_off(tx_num); return; }
Код для приема данных по УКВ на языке Python
def control(): # Основная функция программы, в которой нужно вызывать остальные функции #Прием и передача обычно обозначаются как tx и rx от английских слов transmit и receive # То есть в данной программе tx - передающий УКВ - приемопередатчик, rx - принимающий УКВ - приемопередатчик rx_num = 1 # Номер принимающего УКВ-приемопередатчика tx_num = 2 # Номер передающего УКВ-приемопередатчика data = "Hello world!" #Сообщение для передачи print "Enable transceiver №", tx_num # Активируем передатчик. Приемник находится на приемной станции и не контролируется нашей программой transceiver_turn_on(tx_num) sleep(1) bus_setup() #Готовим шину к передаче данных print "Send data from transceiver №", tx_num, " to transceiver №", rx_num error = transceiver_send(tx_num, rx_num, data) if not error: print "data has been transmitted" elif error == 1: # если датчик вернул сообщение об ошибке 1 print "Fail because of access error, check the connection" elif error == 2: # если датчик вернул сообщение об ошибке 2 print "Fail because of interface error, check your code" print "Disable transceiver №", tx_num # Выключаем передатчик transceiver_turn_off(tx_num)