Для чего нужен ОрбиКрафт
Подсистемы конструктора
Инструкции по работе с ОрбиКрафт
Уроки
Лабораторная оснастка
Знакомство с Arduino
Полезная нагрузка на базе Arduino
Обратная связь
Новости
Для чего нужен ОрбиКрафт
Подсистемы конструктора
Инструкции по работе с ОрбиКрафт
Уроки
Лабораторная оснастка
Знакомство с Arduino
Полезная нагрузка на базе Arduino
Обратная связь
Новости
УКВ радиоканал служит для передачи телеметрии с борта спутника на Землю. Количество телеметрической информации с аппарата, как правило, значительно ниже, чем поток данных с полезной нагрузки, ради которой данный спутник был запущен в космос. С другой стороны, при неполадках на борту и при возможной потере аппаратом ориентации данный канал связи остается доступным, для получения критически важной информации о состоянии бортовых служебных систем и восстановления работоспособности спутника. При этом низкоскоростной канал связи потребляет малое количество энергии по сравнению с ВЧ радиоканалом.
В составе набора конструктора ОрбиКрафт УКВ-радиоканал реализован в виде двух модулей: бортового модуля УКВ-передатчика и наземного модуля УКВ-приемника (рисунок 1). Массив данных, передаваемых с борта на Землю, представляет из себя байтовый массив произвольной длины и состава, который можно передать на Землю, с указанием его длины. На Земле полученные сообщения во время сеанса связи отображаются в реальном времени в интерфейсе ПО ЦУП «как есть», так что выгоднее всего передавать телеметрию в текстовом виде.
Рисунок 1. УКВ-передатчик и УКВ-приемник
Виртуальное потребление - 210мА
УКВ передатчик космического аппарата - чаще всего работает на частоте 145 или 436 МГц и обеспечивает небольшую скорость передачи данных, с всенаправленной или близкой к всенаправленной бортовой антенной.
УКВ передатчик в конструкторе ОрбиКрафт имеет номер «2» (указан на корпусе).
Передача данных на Землю осуществляется с помощью функции:
int32_t transceiver_send(uint16_t tx_num,uint16_t rx_num,const uint8_t *data,uint16_t len);
УКВ-приемник из состава конструктора имитирует работу радиоприемной части наземной станции приема телеметрической информации по низкоскоростному каналу. Во время экспериментов со «спутником» аналогичные приемники будут смонтированы непосредственно на поверхности «Земли» - глобусе. Однако для предварительной отработки работы со спутником в комплекте также поставляется данный УКВ-приемник телеметрии.
Сам приемник работает совместно с ПО ЦУП. При передаче данных телеметрии бортовым радиоканалом и подключенном УКВ-приемнике в наземной сети, эти данные будут автоматически приниматься наземным радиоканалом и отображаться в текстовом поле в левой части пользовательского интерфейса ПО ЦУП.
УКВ приемник в конструкторе ОрбиКрафт имеет номер «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)