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

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


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

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

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

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

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

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

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

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

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

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

РЭ Houston Control Center

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

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

lazer_connection

Содержание

Лазерная связь

Одним из развиваемых направлений в современном спутникостроении является лазерная связь между двумя и более космическими аппаратами. Для имитации передачи данных по принципу лазерной связи в образовательных конструкторах OrbiCraft 3D собирается отдельный модуль, который позволяет спутнику переключаться между двумя режимами и выступать как в роли передатчика, так и в роли приемника. Для этого модуль содержит следующие элементы:

  • Радиомодуль NRF24L01 - антенна, позволяющая передавать данные с одного спутника на другой

Рисунок 1. Радиомодуль NRF24L01

  • Фотодиод - который служит имитатором приёма данных от источника лазерного излучения

Рисунок 2. Фотодиод

  • Лазерный модуль - источника лазерного излучения, имитирует источник передачи данных по оптическому каналу

Рисунок 3. Лазерный модуль

  • Линза - для расширения пучка лазерного света

Рисунок 4. Линза

  • Лазерный дальномер

Рисунок 5. Лазерный дальномер

Структурная схема модуля лазерной связи для спутника Orbicraft 3D:

Рисунок 6. Структурная схема модуля лазерной связи

Работа между двумя модулями лазерной связи Orbicraft 3D происходит следующим образом:

  1. Два спутника должны сориентироваться так, чтобы лазер своим лучом смог попасть в фотодиод (приемник). В условиях реального космического полета в этот момент по оптическому каналу началась бы передача данных. Но источник лазерного излучения требует больших мощностей, поэтому передача данных по обычному лазерному модулю невозможна.
  2. Возвращаясь к образовательному эксперименту. После того, как фотодиод засек лазерный источник и понимает, что данная взаимная ориентация спутников устойчива, начинается передача данных между радиомодулями NRF24L01: передатчик отправляет данные приёмнику, приёмник получает данные, обрабатывает их и отсылает в Houston App.

Рисунок 7. Схема работы между двумя модулями лазерной связи

Инструкция по сборке системы лазерной связи для двух спутников Orbicraft 3D.

1.Сборка универсального модуля лазерной связи

1.1. Сборка и установка стойки под линзу

Для установки линзы на модуле полезной нагрузки вам понадобится верхний ободок и нижняя стойка под линзу. Открутите половинку линзы и поставьте на нижнюю стойку половинку с большим диаметром. Накройте сверху ободком и стяните винтами по бокам.

Рисунок 8. Сборка и установка стойки под линзу

2.Установка лазерного модуля и фотодиода в стойки

2.1. Установка лазерного модуля

Лазер устанавливается простой вставкой модуля в отверстие в стойку.

Рисунок 9. Установка лазерного модуля

2.2. Установка фотодиода

Также, как и лазер, фотодиод устанавливается в стойку концентрированием диаметров фотодиода и отверстия стойки. Продавите фотодиод до конца так, чтобы его ножки вошли в маленькие отверстия для этого, а сам корпус фотодиода полностью был утоплен в отверстии стойки.

Рисунок 10. Установка фотодиода

3.Размещение элементов в модуле полезной нагрузки

После того, как вы собрали отдельные элементы конструкции, установите их на основание модуля полезной нагрузки. Основный критерий, который должен соблюдаться при сборке это соосность фотодиода, лазера и линзы. То есть эти детали должны находиться на одной горизонтали для обеспечения точности эксперимента.

Рисунок 11. Размещение элементов в модуле полезной нагрузки

Подключение модулей к плате Arduino

Перед тем как полностью включить модуль лазерной связи, рекомендуется сначала шаг за шагом освоить подключение фотодиода, радиомодуля NRF и т.д. Отдельно проработанные шаги помогут лучше понять устройство работы лазерной связи в спутниковом конструкторе.

1.Работа фотодиода

Принцип работы фотодиода прост. Он преобразует попавший на него свет в электрический заряд за счет p-n перехода. Попробуем вывести значения с фотодиода в монитор порта. Для этого нужно подключить плюс фотодиода в любой аналоговый вход, не забудьте про GND pin.

Рисунок 12. Фотодиод

Вам понадобятся команды:

команды.c
int potValue[1];//инициируем массив данных
potValue[0] = analogRead(A1);//считываем массив данных с пина A1

2.Связь между двумя Arduino с помощью радиомодулей NRF

Так как наш лазерный модуль не рассчитан на то, чтобы через пучок лазера передавать данные, как в настоящих космических системах, то возникает необходимость в том, чтобы как-то сымитировать передачу данных. Для этого будет использоваться радиомодуль NRF. Это ключевая суть образовательного модуля лазерной связи - данные передаются не через лазер, а по радиосвязи. Ознакомьтесь с электрической схемой модуля NRF для корректного подключения пинов:

Рисунок 13. Электрическая схема модуля NRF

Также вам понадобится схема ARDUINO MEGA 2560 DATA PINOUT

Подключение радиомодуля NRF24L01 к Arduino осуществляется по SPI-интерфейсу, что предполагает использование 5 проводов не считая выводов питания. Выводы CE и CSN могут быть соединены с любыми цифровыми пинами Arduino. Единственное что потребуется – указать их номера при написании скетча. Что касается программирования, то для взаимодействия с NRF24L01 существует несколько библиотек, но наиболее популярной и стабильной является библиотека RF24.

Рисунок 14. Библиотека RF24

Ниже приведены команды для приемника и передатчика, которые понадобятся при работе с радиомодулем:

Пример скетча для передатчика:

transmitter.c
#include <SPI.h>  // Подключаем библиотеку для работы с SPI-интерфейсом
#include <nRF24L01.h> // Подключаем файл конфигурации из библиотеки RF24
#include <RF24.h> // Подключаем библиотеку для работа для работы с модулем NRF24L01
 
 
#define PIN_CE  9  // Номер пина Arduino, к которому подключен вывод CE радиомодуля
#define PIN_CSN 53 // Номер пина Arduino, к которому подключен вывод CSN радиомодуля
 
 
RF24 radio(PIN_CE, PIN_CSN); // Создаём объект radio с указанием выводов CE и CSN
 
 
void setup() {
  radio.begin();  // Инициализация модуля NRF24L01
  radio.setChannel(5); // Обмен данными будет вестись на пятом канале (2,405 ГГц)
  radio.setDataRate (RF24_1MBPS); // Скорость обмена данными 1 Мбит/сек
  radio.setPALevel(RF24_PA_HIGH); // Выбираем высокую мощность передатчика (-6dBm)
  radio.openWritingPipe(0x7878787878LL); // Открываем трубу с уникальным ID
}
 
 
void loop() {
 ///////////////////////////////////////////// Здесь можно считать данные с фотодиода 
  radio.write(potValue, 1); // Отправляем считанные показания по радиоканалу
}

Пример скетча для приемника:

receiver.c
#include <SPI.h>  // Подключаем библиотеку для работы с SPI-интерфейсом
#include <nRF24L01.h> // Подключаем файл конфигурации из библиотеки RF24
#include <RF24.h> // Подключаем библиотеку для работа для работы с модулем NRF24L01
 
 
#define PIN_CE  9  // Номер пина Arduino, к которому подключен вывод CE радиомодуля
#define PIN_CSN 53 // Номер пина Arduino, к которому подключен вывод CSN радиомодуля
 
 
RF24 radio(PIN_CE, PIN_CSN); // Создаём объект radio с указанием выводов CE и CSN
 
 
void setup() {
  radio.begin();  // Инициализация модуля NRF24L01
  radio.setChannel(5); // Обмен данными будет вестись на пятом канале (2,405 ГГц)
  radio.setDataRate (RF24_1MBPS); // Скорость обмена данными 1 Мбит/сек
  radio.setPALevel(RF24_PA_HIGH); // Выбираем высокую мощность передатчика (-6dBm)
    radio.openReadingPipe (1, 0x7878787878LL); // Открываем трубу ID передатчика
  radio.startListening(); // Начинаем прослушивать открываемую трубу
 
 
 
 
void loop() {
 
 
  if(radio.available()){ // Если в буфер приёмника поступили данные
    radio.read(&distance, sizeof(distance));
    Serial.print("Recevied: ");
    Serial.println(distance);
    delay(200);
  }
}

3.Подключение дальномера

По каналу радиосвязи между двумя NRF можно передать любую телеметрию. В рамках изучения конструктора попробуем передать данные с дальномера, который подключен к одному из микроконтроллеров. Чтобы подключить дальномер воспользуйтесь схемой подключения ниже:

Рисунок 15. Схема подключения дальномера

Вам понадобится библиотека Adafruit_VL53L1X.h«

Пример скетча для дальномера:

lidar.c
#include "Adafruit_VL53L1X.h"
 
 
#define IRQ_PIN 2
#define XSHUT_PIN 3
 
 
Adafruit_VL53L1X vl53 = Adafruit_VL53L1X(XSHUT_PIN, IRQ_PIN);
 
 
void setup() {
  Serial.begin(115200);
  while (!Serial) delay(10);
 
 
  Serial.println(F("Adafruit VL53L1X sensor demo"));
 
 
  Wire.begin();
  if (! vl53.begin(0x29, &Wire)) {
    Serial.print(F("Error on init of VL sensor: "));
    Serial.println(vl53.vl_status);
    while (1)       delay(10);
  }
  Serial.println(F("VL53L1X sensor OK!"));
 
 
  Serial.print(F("Sensor ID: 0x"));
  Serial.println(vl53.sensorID(), HEX);
 
 
  if (! vl53.startRanging()) {
    Serial.print(F("Couldn't start ranging: "));
    Serial.println(vl53.vl_status);
    while (1)       delay(10);
  }
  Serial.println(F("Ranging started"));
 
 
  // Valid timing budgets: 15, 20, 33, 50, 100, 200 and 500ms!
  vl53.setTimingBudget(50);
  Serial.print(F("Timing budget (ms): "));
  Serial.println(vl53.getTimingBudget());
 
 
  vl.VL53L1X_SetDistanceThreshold(100, 300, 3, 1);
  vl.VL53L1X_SetInterruptPolarity(0);
  */
}
 
 
void loop() {
  uint16_t distance;
 
 
  if (vl53.dataReady()) {
    // new measurement for the taking!
    distance = vl53.distance();
    if (distance == -1) {
      // something went wrong!
      Serial.print(F("Couldn't get distance: "));
      Serial.println(vl53.vl_status);
      return;
    }
    Serial.print(F("Distance: "));
    Serial.print(distance);
    Serial.println(" mm");
 
 
    // data is read out, time for another reading!
    vl53.clearInterrupt();
  }
}

Подключение модуля лазерной связи к OrbiCraft 3D.

Выполненные выше задания помогут Вам реализовать систему лазерной связи между двумя спутниками. Это заключительный этап подготовки и сборки модуля лазерной связи к работе. В следующих этапах необходимо будет уже настраивать сам OrbiCraft 3D для работы с ним.

Напомним конечную цель передачи - отправить данные с любого датчика, например, дальномера, на один спутник, а затем, через него вывести в Houston Application. Для отправки данных в Houston Application необходимо, чтобы данные полученные с Arduino сначала передались по CAN-шине в БВМ. Для этого, используется библиотека <unican_ard.h> и некоторые команды:

команды.c
UCanArd.Init();
UCanArd.SendMessage(0xF, 0x0118, (uint8_t*)&distance, sizeof(uint16_t));

После встраивания этих команд в код Arduino для приемника можно быть уверенным в том, что данные полученные с дальномера будут передаваться в БВМ Орбикрафта.

Так как Arduino не может напрямую быть подключено к БВМ спутника, то нужен переходник, благодаря которому Орбикрафт бы понимал, что в него что то подключено через Arduino. Для этого используется Arduino Shield - переходное устройство, повторяющее оригинальные каналы Arduino и позволяющее подключиться к спутнику по CAN - шине.

На этом этапе нужно подключить все модули к Arduino через этот специальный Shield.

Рисунок 16. Подключение модуля лазерной связи

Работа с Houston Application

Закрепим суть работы модуля лазерной связи между двумя образовательными конструкторами. Во-первых, на Орбикрафте, представляющем из себя передатчик находится фотодиод и дальномер. При отклонении значений дальномера за счет пучка лазера, прошедшего через линзу и попавшего в итоге на фотодиод, с передатчика начинают передаваться данные через NRF на приемник, на котором установлена линза и лазер.

Приемник, получив данные с дальномера, обрабатывает их и по CAN-шине передает в БВМ спутника. Далее через WI-Fi спутник-приемник шлет данные в Houston Application.

Для того, чтобы отобразить значения, которые присылаются в спутник-приемник необходимо:

1.Корректно настроить IP-адрес спутника с которым вы работаете. Для этого перейдите во вкладку File, далее Parameters, затем Connections. В строке serverAddress убедитесь, что стоит верный IP-адрес спутника, с которого вы принимаете данные.

Рисунок 17. Найстройка IP-адреса

2.Если все верно подключено, оставьте в окне Packets галочку только для 1A ПН. После этого в графе History у вас останутся данные, которые передает дальномер. Щелкните на любое значение справа и в окне Fields, далее Value вы увидите расстояние, которое прислал дальномер в милимметрах.

Рисунок 18. Данные, присланные дальномером

3.Для визуализации данных перейдите в окно Window, далее New Instrument Panel и дайте наименование графику, например, Distance. Далее Add, Custom Plot и не изменяя ничего нажмите ОК. Теперь принятые данные отражаются в виде графика

Рисунок 19. Добавление новой панели

Рисунок 20. Настройки новой панели

Рисунок 21. Полученный график

Схема проведения эксперимента

Для изучения работы приборов модулей лазерной связи предлагаются несколько схем проведения экспериментов. По сути они все одинаковы: спутники должны сориентироваться так, чтобы один из них лазером смог попасть в фотодиод второго спутника. После этого начнется передача данных. Предложенные варианты проведения эксперимента отличаются только положением внешних факторов: положением солнца или направлением магнитного поля.

Схема эксперимента №1:

Рисунок 22. Схема эксперимента №1

При данной схеме эксперимента центры масс аппаратов находятся на одной горизонтальной оси. Источник света, имитирующий солнце, расположен на оси симметрии между двумя спутниками на некотором расстоянии от главной горизонтали. В этом случае световой поток от источника подходит к солнечным датчикам на аппаратах под одинаковым углом α. Будем считать, что один из спутников уже сориентирован нужным образом и находится под углом α по отношению к солнцу, второй в это время пытается сориентироваться нужным образом. После того как второй спутник довернется на необходимый угол по крену и попадет лазером в фотодиод приемника, начнется передача данных.

Схема эксперимента №2:

Рисунок 23. Схема эксперимента №2

Во втором варианте проведения эксперимента следующее отличие от предыдущей: один из спутников на начальном этапе также уже сориентирован, но не под углом α, а под углом 0°/180°. Далее второму спутнику как и в первом варианте необходимо довернуться на некоторый угол, чтобы своим лазером попасть в фотодиод приемника.

Схема эксперимента №3:

Рисунок 24. Схема эксперимента №3

Третий вариант проведения эксперимента принципиально отличается от двух предыдущих тем, что оба спутника в самом начале никак не сориентированы по крену, то есть находятся в свободном вращении. При этом солнце находится за одним из спутников. Поэтому каждому спутнику необходимо подобрать свой собственный угол поворота, чтобы навестись модулями лазерной связи друг на друга.

Реализация системы ориентации через Web-интерфейс

Приведенные выше варианты реализации эксперимента основываются на том, что между осью X аппарата и солнцем должен быть достигнут определенный угол. Необходимо сначала посчитать угол самостоятельно, основываясь на том, на каком расстоянии стоит солнце и на каком расстоянии Орбикрафты находятся между собой. В первых двух схемах эксперимента спутник, на котором находится фотодиод должен уже находится в устойчивом состоянии по отношению к солнцу. Поэтому посчитайте угол вручную, используя простые геометрические соотношения.

  1. Вы включаете сначала один спутник и подбираете для него угол.
  2. Вы включаете второй спутник (который светит лазером), подбираете для него угол, который должен быть между ним и солнцем.
  3. После того, как он из неопределенного состояния стабилизируется и попадет своим лазером в фотодиод второго спутника, начнется передача данных на спутник с лазером и затем с него в Houston.

Чтобы сориентировать ваши спутники нужным образом, в программном коде вам понадобится прописать взаимосвязь для солнечного датчика и для маховика.

Известно, что ось X аппарата проходит через солнечный датчик “Sensor 4”. Нужно помнить куда у вас направлен фотодиод и лазер. Случай, когда лазер светит сонаправленно с вектором X аппарата и светит в обратно направленную сторону, являются очень похожими. Но угол, задающийся в программе будет разный, так как угол отсчитывается по кратчайшему повороту от вектора X до направления солнечного света.

Ключевая суть программы будет заключаться в том, чтобы ваш маховик поддерживал определенную скорость вращения для удержания его в определенном положении, стабилизировав его и постоянного ориентирования спутника по заданному углу между солнечным датчиком и солнечным светом.

lazer_connection.txt · Последние изменения: 2023/07/07 16:06 — maria.milkina

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