api [ОрбиКрафт 3D]

Инструменты пользователя


Боковая панель

Назначение ОрбиКрафт 3D

Сборка ОрбиКрафт 3D

Интерфейсы конструктора ОрбиКрафт 3D

Работа с ОрбиКрафт 3D по УКВ

Работа с ОрбиКрафт 3D по Wi-Fi

Работа с ОрбиКрафт 3D через WEB-интерфейс

Полезная нагрузка на базе Arduino

ОрбиКрафт 3D (трехосный) на стенде полунатурного моделирования

Среда разработки

РЭ Houston Control Center

Лабораторная оснастка

Обратная связь

api

Пользовательский API на языке С

В этом разделе представлен набор пользовательских функций, реализованных в библиотеке libschsat.h

Функции

Датчик угловой скорости

Получить показания ДУС.

SchSatApi int gyro_request_raw (uint16_t num, 
float *pRAW_dataX, float *pRAW_dataY, float *pRAW_dataZ) 

Задать смещение нуля ДУС.

SchSatApi int  gyro_set_offset (uint16_t num, float offset_X, float offset_Y, float offset_Z)  

Отправить показания ДУС по УКВ.

SchSatApi int gyro_push_data_uhf () 

Магнитометр

Получить показания магнитометра.

SchSatApi int   magnetometer_request_raw (uint16_t num, float *pRAW_dataX, float *pRAW_dataY, float *pRAW_dataZ)  

Задать смещение нуля магнитометра.

SchSatApi int magnetometer_set_offset(uint16_t num,int16_t offset_X,int16_t offset_Y,int16_t offset_Z);

Отправить показания магнитометра по УКВ.

SchSatApi int magnetometer_push_data_uhf () 

Установить период телеметрии магнитометра и датчика угловых скоростей.

SchSatApi int magnetometer_gyro_set_telemetry_period (const uint16_t num, const uint16_t period) 

Маховик

Получить скорость вращения маховика.

SchSatApi int   motor_request_speed (uint16_t num, float *pRPM)  

Задать скорость вращения маховика.

SchSatApi int   motor_set_speed (uint16_t num, float RPM) 

Установить период телеметрии маховика.

SchSatApi int motor_set_telemetry_period (const uint16_t num, const uint16_t period)  

Солнечные датчики

Получить показания cолнечного датчика.

SchSatApi int sunsensor_get_raw (uint16_t num, int32_t *angle) 

Отправить показания солнечного датчика по УКВ.

SchSatApi int sunsensor_push_data_uhf (uint16_t num) 

Установить период телеметрии cолнечного датчика.

SchSatApi int sunsensor_set_telemetry_period (const uint16_t num, const uint16_t period) 

UniCAN

Получить сообщение UniCAN.

SchSatApi int recieve_unican_message (const uint16_t address_from, const uint16_t msg_id, uint8_t *data,
const uint16_t msg_size, const uint16_t timeout) 

Отправить сообщение UniCAN.

SchSatApi int send_unican_message (const uint16_t address_to, const uint16_t msg_id, uint8_t *data, const
uint16_t msg_size) 

Камера

Передать снимок на приёмную станцию.

SchSatApi int transmitter_transmit_photo (uint16_t num) 

Сделать снимок бортовой камерой.

SchSatApi int camera_take_photo (uint16_t num) 
Внимание! Для корректной работы функций файл с пользовательской программой должен содержать выше пользовательского кода строку: #include «libschsat.h»

Подробное описание функций

Получить показания ДУС.

SchSatApi int gyro_request_raw (uint16_t  num, float * pRAW_dataX, float * pRAW_dataY, float * pRAW_dataZ) 

Функция получает актуальные данные от заданного датчика угловых скоростей и записывает в переменные pRAW_dataX, pRAW_dataY, pRAW_dataZ.

Значения представлены в град/сек.

Аргументы

[in] num идентификатор устройства

[out] pRAW_dataX Угловая скорость вокруг оси X, град/сек

[out] pRAW_dataY Угловая скорость вокруг оси Y, град/сек

[out] pRAW_dataZ Угловая скорость вокруг оси Z, град/сек
float gyro_x = 0, gyro_y = 0, gyro_z = 0;
if (gyro_request_raw(0, &gyro_x, &gyro_y, &gyro_z) != 0) {
    puts ("Gyro data ERROR"); 4 }
printf ("Angular rate: X %f, Y %f, Z %f\n", gyro_x, gyro_y, gyro_z);

Задать смещение нуля ДУС.

SchSatApi int gyro_set_offset ( uint16_t num, float offset_X, float offset_Y, float offset_Z) 

Функция задаёт постоянное смещение показателей ДУС совмещая физический и логический ноль. Значения аргументов в единицах ДУС (град/сек).

Аргументы

[in] num идентификатор устройства
[in] offset_X Смещение нуля скорости вокруг оси X, град/сек
[in] offset_Y Смещение нуля скорости вокруг оси Y, град/сек
[in] offset_Z Смещение нуля скорости вокруг оси Z, град/сек

Отправить показания ДУС по УКВ.

SchSatApi int gyro_push_data_uhf ( )

Функция отправляет актуальные данные от датчика угловых скоростей по УКВ связи. Значения представлены в град/сек.


Получить показания магнитометра.

SchSatApi int magnetometer_request_raw ( uint16_t num, float * pRAW_dataX, float * pRAW_dataY, float * pRAW_dataZ )

Функция получает актуальные данные от заданного магнитометра и сохраняет в переменные pRAW_dataX, pRAW_dataY, pRAW_dataZ. Значения представлены в нТ.

Аргументы

[in] num идентификатор устройства (сейчас не реализовано, num может быть любым)

[out] pRAW_dataX Магнитное поле по оси X, нТ

[out] pRAW_dataY Магнитное поле по оси Y, нТ

[out] pRAW_dataZ Магнитное поле по оси Z, нТ
float mag_x = 0, mag_y = 0, mag_z = 0;
if (magnetometer_request_raw(0, &mag_x, &mag_y, &mag_z) != 0) {
    puts ("Magnetometer data ERROR"); }
printf ("Magfield: X %f, Y %f, Z %f\n", mag_x, mag_y, mag_z);

Задать смещение нуля заданного магнитометра.

SchSatApi int magnetometer_set_offset ( uint16_t num, int16_t offset_X, int16_t offset_Y, int16_t offset_Z)

Функция задаёт постоянное смещение показателей магнитометра совмещая физический и логический ноль. Значения аргументов в единицах магнитометра (нТ).

Внимание! Смещение нуля задаётся в int16_t и может иметь значение от -32768 до +32767. Если данного диапазона недостаточно, возможна дополнительная предобработка значений в пользовательской программе.

Аргументы

[in] num идентификатор устройства
[in] offset_X Смещение нуля магнитного поля по оси X, нТ
[in] offset_Y Смещение нуля магнитного поля по оси Y, нТ
[in] offset_Z Смещение нуля магнитного поля по оси Z, нТ

Отправить показания магнитометра по УКВ.

SchSatApi int magnetometer_push_data_uhf ( )

Функция отправляет актуальные данные от магнитометра по УКВ связи. Значения представлены в нТ.


Установить период телеметрии магнитометра и датчика угловых скоростей.

SchSatApi int magnetometer_gyro_set_telemetry_period ( const uint16_t num, const uint16_t period )

Функция устанавливает период отправки телеметрии заданными магнитометром и ДУС. Значение периода задаётся в мс и должно лежать в диапазоне 50..5000мс.

Внимание! Слишком низкий период телеметрии на большом количестве устройств может вызвать перегрузку CAN шины.

Аргументы

[in] num идентификатор устройства
[in] period период телеметрии, мс

Получить скорость вращения маховика.

SchSatApi int motor_request_speed ( uint16_t num, float * pRPM )

Функция возвращает угловую скорость вращения определённого управляющего двигателя-маховика. Значение записывается в переменную pRPM. Единицы измерения: об/мин.

Аргументы

[in] num идентификатор устройства
[out] pRPM угловая скорость вращения, об/мин

Задать скорость вращения маховика.

SchSatApi int motor_set_speed ( uint16_t num, float RPM )

Функция задаёт угловую скорость вращения определённого управляющего двигателя-маховика. В качестве аргументов функция принимает порядковый номер маховика и скорость в об/мин.

Аргументы

[in] num идентификатор устройства
[in] RPM угловая скорость вращения, об/мин

Установить период телеметрии маховика.

SchSatApi int motor_set_telemetry_period ( const uint16_t num, const uint16_t period )

Функция устанавливает период отправки телеметрии заданным маховиком. Значение периода задаётся в мс и должно лежать в диапазоне 50..5000мс.

Внимание! Слишком низкий период телеметрии на большом количестве устройств может вызвать перегрузку CAN шины.

Аргументы

[in] num идентификатор устройства
[in] period период телеметрии, мс

Получить показания cолнечного датчика.

SchSatApi int sunsensor_get_raw ( uint16_t num, int32_t * angle )

Функция получает актуальные данные от заданного солнечного датчика и сохраняет в переменную angle. Значения представлены в градусах. Угол отсчитывается от нормали к плоскости датчика. В случае, если датчик не освещён солнцем, функция возвращает значение -180.

Аргументы

[in] num идентификатор устройства
[out] angle угол между нормалью плоскости датчика и вектором на солнце, º.
int32_t angle = 0;
if (sunsensor_get_raw(0, &angle) != 0) {
    puts ("Magnetometer data ERROR\n");
}
printf ("Angle to the sun #0: %d\n", angle);

Отправить показания солнечного датчика по УКВ.

SchSatApi int sunsensor_push_data_uhf ( uint16_t num )

Функция отправляет актуальные данные от заданного солнечного датчика по УКВ связи. Формат данных - компоненты вектора длиной 1е+9 направленного на источник света. Если источник света вне зоны видимости заданного датчика - передаётся нулевой вектор с флагом невалидности данных.

Аргументы

[in] num идентификатор устройства

Установить период телеметрии cолнечного датчика.

SchSatApi int sunsensor_set_telemetry_period ( const uint16_t num, const uint16_t period )

Функция устанавливает период отправки телеметрии заданным солнечным датчиком. Значение периода задаётся в мс и должно лежать в диапазоне 50..5000мс. Внимание! Слишком низкий период телеметрии на большом количестве устройств может вызвать перегрузку CAN шины.

Аргументы

[in] num идентификатор устройства
[in] period период телеметрии, мс

Получить сообщение UniCAN.

SchSatApi int recieve_unican_message ( const uint16_t address_from, 
const uint16_t msg_id, uint8_t * data, const uint16_t msg_size, const uint16_t timeout )

При нулевой длине сообщения (msg_size == 0) *data должен быть NULL.

Аргументы

[in] address_from Идентификатор устройства-отправителя
[in] msg_id Идентификатор сообщения
[out] *data Указатель на буфер для полученных данных приведённый формату uint8_t*
[in] msg_size Размер данных в байтах
[in] timeout Время ожидания сообщения с миллисекундах

Отправить сообщение UniCAN.

SchSatApi int send_unican_message ( const uint16_t address_to, 
const uint16_t msg_id, uint8_t * data, const uint16_t msg_size )

Аргументы

[in] address_to Идентификатор устройства-получателя
[in] msg_id Идентификатор сообщения
[in] *data Указатель на данные приведённый формату uint8_t *
[in] msg_size Размер данных в байтах

Передать снимок на приёмную станцию.

SchSatApi int transmitter_transmit_photo ( uint16_t num )
SchSatApi int push_photo_terra2 ( uint8_t photoNum )
SchSatApi int push_thumbs_terra2 ( uint8_t numFrom )

Аргументы

[in] num числовой идентификатор фото (8/16-битовый беззнаковый) или миниатюры, с которой начнется передача

Сделать снимок бортовой камерой.

SchSatApi int camera_take_photo ( uint16_t num )

Камера делает снимок и сохраняет его в памяти спутника.

Аргументы

[in] num числовой идентификатор фото (16-битовый беззнаковый)

Функция задержки с точностью до миллисекунд.

SchSatApi void mSleep(int msec)

Аргумент

[in] msec - Время задержки в мс

Функция задержки с точностью до секунд.

SchSatApi void Sleep(int sec)

Аргумент

[in] sec - Время задержки в секундах
api.txt · Последние изменения: 2023/12/19 15:45 — maria.milkina

Инструменты страницы