Разработка алгоритма перехвата управления квадрокоптером - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

Разработка алгоритма перехвата управления квадрокоптером

Белов Н.В. 1, Буянов Б.Я. 1
1МТУСИ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Исследован и разработан алгоритм перехвата управления летательного аппарата на примере квадрокоптера SymaX8C. Рассмотрены несколько методов перехвата сигнала и выбран алгоритм с применением arduinomega и радиомодуля nRF24L01+. Разобран протокол квадрокоптера SymaX8C и получен контроль над летательным аппаратом.

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

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

Телеметрия позволяет летательному аппарату обмениваться информацией и командами по беспроводной связи с наземной станцией. Это включает в себя отправку/получение GPS-координат, путевых точек, настроек газа, команд постановки и снятия с охраны.

Основной протокол передачи, используемый на всех квадрокоптерах гражданского назначения, MAVLink [1] или Micro Air Vehicle Link - это протокол для связи с небольшим летательными аппаратами. Mavlink используется многими компаниями, включая: Parrot AR.Drone, ArduPilot, PX4FMU, pxIMU, SmartAP, MatrixPilot, Armazila 10dM3UOP88, Hexo +, TauLabs и AutoQuad. Протокол передачи телеметрии для квадрокоптеров MAVLink передает данные в незашифрованном виде. При этом для каждой пары пульт-летательный аппарат используется простой цифровой идентификатор. Для перехвата управления квадрокоптера с таким протоколом достаточно 3 строчки кода.

Для исследования и последующей реализации перехвата управления был выбран квадрокоптер Syma x8c [2], все его характеристики приведены в таблице 1.

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

частота передачи меняется каждые 2 мс (т.е. 500 раз в секунду);

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

Все данные передаются на частоте 2,4 ГГц - это самая популярная частота. Более низкие частоты тоже используются, но в квадрокоптерах они значительно менее популярны.

Табл.1 – характеристики квадрокоптера Syma X8C

Бренд

Syma

Модель

X8C

Количество каналов управления

4

Частота управления

2.4Ghz

Разрешение камеры

2.0MP

Разрешение фотографий

1080 * 720

Время зарядки

около 75 мин

Время полета

около 7 мин

Тип батарей

3.7V 500mAh Li-battery, в комплекте 2 шт, тип 752540 (42 х 24 х 8 мм)

Дистанция управления

до 30m

Питание контроллера

4 * AA batteries

Функции

Ascend/descend/forward/backward/side flying/360° rolling action/hover/LED/HD camera/H/L speed

Размеры

31.5 * 31.5 * 7.5 см

Масса с батарейкой

105 г

Возможны несколько подходов к решению задачи перехвата радио сигнал от передатчика.

Первый подход предполагает использовать Software-defined radio, SDR (Программно-реализуемая радиосистема). Этот метод заключается в следующем - в системе радио связи, компоненты, такие как смесители, фильтры, усилители, модуляторы/демодуляторы, детекторы и т.д.) реализованы с помощью программного обеспечения на персональном компьютере или на встроенной системе. Хотя концепция SDR не нова, быстро развивающиеся возможности цифровой электроники делают практически реализуемыми многие процессы, которые когда-то были возможны только теоретически.

Базовая система SDR может состоять из персонального компьютера, оснащенного звуковой картой, или другого аналого-цифрового преобразователя, которому предшествует радиочастотный интерфейса. Значительные объемы обработки сигналов производятся на процессоре общего назначения, а не в аппаратном обеспечении специального назначения (электронных схемах). Такая конструкция создает радиостанцию, которая может принимать и передавать самые разнообразные радиопротоколы (иногда называемые сигналами), основываясь исключительно на используемом программном обеспечении.

Второй подход предполагает использование Arduino mega и радиомодуля nRF24L01+

SDR требует больших познаний в области радио, но для его реализации не требуется, практически никакого специального оборудования. Arduino и nRF24L01+ не требует практически никаких знаний в области радио, и стоят крайне дешево.

В данной работе будет рассматриваться подход с использованием Arduino mega и радиомодуль nRF24L01+. Рассмотрим каждый компонент.

Arduino Mega 2560 R3, приемник Arduino Mega, представляет собой плату микроконтроллера, основанную на микроконтроллере ATmega2560 AVR. Он имеет 70 цифровых входных/выходных контактов (15 из которых можно использовать в качестве ШИМ-выходов, а 16 - в качестве аналоговых входов), разъем USB, разъем питания, внутрисхемное системное программирование, возможность программирование чипа уже подключенного в некоторую схему и кнопка сброса. Arduino имеет обширное сообщество поддержки, что позволяет очень легко начать работу со встроенной электроникой [3].nRF24L01+ - это радиоприемопередатчик для полосы ISM 2,4-2,5 ГГц. Радиопередатчики и приемники включают в себя генератор частоты, улучшенный контроллер режима ShockBurst, усилитель мощности. Можно выбрать выходной канал питания и протокол, установив через порт SPI. Потребление тока nRF24L01+ чрезвычайно низкое - в режиме передатчика, когда мощность передачи составляет 0 дБм, потребление тока составляет всего 11,3 мА; в режиме приема - 13,5 мА; при отключении питания и режиме ожидания потребление еще ниже. Что касается приложения, оно широко используется во многих устройствах, таких как беспроводная мышь и клавиатура, игровая ручка, пульт дистанционного управления, промышленный датчик, игрушки и т. д [4]. 

Структура передаваемых сигналов представлена на рисунке 1. В начале сеанса связи передатчик настраивается на частоту передачи и передает только несущую, затем передается преамбула - служебная информация, добавляемая в начало сигнала. Преамбула используется только для синхронизации приемника и передатчика. Поле преамбулы не предназначено для передачи полезной информации, наличие этого поля у сигнала объясняется необходимостью установления надежной взаимной синхронизации тактовых частот передатчика и приемника данных. Преамбула состоит из последовательности 0 и 1, в разных чипах она может отличаться как длиной, так и содержанием, в nRF24L01+ она составляет 1 байт 0xAA или 0x55, в зависимости от старшего бита адреса, в нашем случае преамбула 0xAA. Затем идут байты адреса, в nRF24L01+ адрес может составлять от 3 до 5 байт.

Рис.1 – Структура передаваемых сигналов

Особенности радиомодуля nRF24L01+

Основная проблема радиомодуля nRF24L01+ для испльзования в наших целях, состоит в том, что в нем не реализован режим promiscuous. Promiscuous mode или promisc mode — так называемый «неразборчивый» режим, в котором сетевая плата позволяет принимать все пакеты независимо от того, кому они адресованы. Однако сам модуль имеет несколько особенностей, первая приведена в технической документации [4] на стр.55:

Рис.2 - Техническая документация

То есть, если этот регистр установлен в «00», то длина адреса будет два байта.

Затем есть еще одна интересная особенность nRF24L01+: обычно преамбула радиомодуля передается и используется так, чтобы приемник мог адаптироваться к передатчику, для этой цели последовательность нулей и единиц чаще всего передается в виде преамбулы.

Вторая особенность модуля nRF24L01+: он не ищет преамбулу в передаваемом сигнале и не использует ее каким-либо образом, он ищет адрес, записанный в качестве принимаемого.

Перед началом передачи преамбулы передатчик передает несущую. В ходе тестов было обнаружено, что чаще всего nRF24L01 + воспринимает несущую частоту сигнала как 0x00 (иногда как 0xFF, реже как случайный байт). Таким образом, используя эти недокументированные функции, можно перевести nRF24L01 + в случайный режим, установив длину адреса в 2 байта, а сам адрес как 0x00AA или 0x0055. В некоторых случаях мы получим данные, сдвинутые на 1 бит вправо. Более того, мы можем получать данные без проверки CRC [4].

Решение задачи перехвата сигнала.

При попытки перехватить сигнал квадрокоптера необходимо знать некоторые исходные данные, такие как диапазон управления квадрокоптером (2,4 ГГц) и что управление будет осуществляться модулем nRF24L01+.

Для использования особенностей nRF24L01+ воспользуемся библиотекой [5] Wireless Module 2.4G NRF2. В файле RF24.cpp в функции следует удалить проверку достоверности адреса:

void RF24::setAddressWidth(uint8_t a_width){

a_width -= 2;

write_register(SETUP_AW,a_width%4);

addr_width = (a_width%4) + 2;

}

Теперь можно на последовательном порте забирать готовые данные с установленного канала, смена канала осуществляется посылкой «w» и «s» в порт. Дальнейшую обработку можно производить любым удобным способом. Следует обратить внимание, что скорость порта нестандартная — 2 Мбит/c, это необходимо для того, чтобы Arduino меньше времени занималась вводом/выводом, а больше занималась решением задачи, не стоит забывать, что там всего лишь 16 МГц.

Рис.3 - Данные серийного порта

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

uint64_t pipe = 0xa20009890fLL;

byte addr_len = 5;

Рис.4 - Фильтровка данных

Далее следует произвести сканирование всех каналов для определения тех, на которых появляется данный адрес. После недолгого наблюдения можно заметить, что 10, 11 и 12 байт меняется вместе с данными, а далее идет последовательность байтов, так называемый шум. Пробуем включить CRC16 (два последних байта) и сменить длину пакета до 10 байт:

byte len = 10;

radio.setCRCLength(RF24_CRC_16);

 

Рис.5 - Длина пакета 10 байт.

Теперь после настройки радиомодуля nRF24L01+, необходимо разобрать протокол SymaX8C. Для этого необходимо записать реакцию пульта на различные нажатия:

Первый байт — значение throttle (стик газа)

Второй байт — значение elevator (тангаж — наклон вперед-назад), где старший бит — направление (вперед или назад), а остальные 7 — значение.

Третий байт — значение rudder (рысканье — поворот вокруг оси влево-вправо), где старший бит — направление (влево или вправо), а остальные 7 — значение.

Четвертый байт — значение aileron (крен — наклон влево-вправо), где старший бит — направление, а остальные 7 — значение.

Десятый байт это CRC, которая рассчитывается как XOR от первых 9 байт + 0x55, понять это — пожалуй, самое сложное.

Остальные байты можно оставить такими же, как и перехваченные, там содержатся значения регулировок нулевого положения (тримы), и несколько флагов, относящихся к работе камеры.

Сформируем какой-либо валидный пакет, например, заставим дрона вращаться вокруг своей оси против часовой стрелки, как показано на рис.5:

Рис. 5 – Протокол Syma

Выводы

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

разработан метод перехвата сигнала квадрокоптера Symax8c на базе Arduinomega и радиомодуля nRF24L01+;

разобран протокол передачи квадрокоптера Symax8c.

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

Список литературы

Butcher N., Stewart A., Biaz S. Securing the mavlink communication protocol for unmanned aircraft systems //Appalachian State University, Auburn University, USA. – 2013.

Thibault S. et al. CFD Simulation of a Quad-Rotor UAV with Rotors in Motion Explicitly Modeled Using an LBM Approach with Adaptive Refinement //55th AIAA Aerospace Sciences Meeting. – 2017. – С. 0583.

Pham C. Communication performances of IEEE 802.15. 4 wireless sensor motes for data-intensive applications: A comparison of WaspMote, Arduino MEGA, TelosB, MicaZ and iMote2 for image surveillance //Journal of Network and Computer Applications. – 2014. – Т. 46. – С.48-59.

Semiconductor N. nRF24L01+ Single Chip 2.4 GHz Transceiver //Datasheet, September. – 2008.

Библиотека для модуля nRF24L01+: [Электронный ресурс] /ред.Greg Copeland - Режим доступа: https://github.com/nRF24/RF24, свободный. (Дата обращения: 10.01.2019).

Просмотров работы: 2114