Санкт-Петербургский государственный университет аэрокосмического приборостроения: Модуль системы СШП (UWB) навигации реального времени
Цель проекта:
— Протестировать возможности микроконтроллера
— Разработать программное обеспечение для модуля
— Собрать стенд для тестирования программного обеспечения
— Разработать аппаратную часть модуля СШП навигации
Описание задачи:
Ключевые задачи:
— Исследовать возможность отладки при работе нескольких ядер в синхронном или асинхронном режимах
— Исследовать варианты загрузки и возможности MicroPython
— Исследовать микроконтроллер на возможность работы в многоядерном режиме с операционной системой реального времени FreeRTOS (режим SMP);
— Исследовать алгоритмы межъядерного взаимодействия при работе без операционной системы;
— Исследовать возможность раздельной компиляции кода для Core2;
— Исследовать энергопотребление микроконтроллера в различных режимах работы;
— Портировать драйверы внешних устройств для микроконтроллера Baikal-U;
— Разработать ПО и протестировать его на прототипе модуля СШП навигации;
— Разработать печатную плату для модуля;
Технические требования:
Обработка данных от модуля СШП связи DWM3000 и вычисление местоположения модуля (триангуляция);
Обнаружение перемещения модуля (опрос акселерометра по I2C и обработка прерываний);
Возможность подключения в качестве USB CDC Device;
Возможность подключения по CAN шине;
Индикация состояния сигнала от базовых станций системы СШП навигации;
Возможность изменения параметров СШП связи (канал, преамбула и скорость передачи данных) кнопкой и индикация текущего режима работы;
Ключевые особенности реализации:
1. Используемый микроконтроллер:
BE-U1000 (Baikal-U)
2. Алгоритмы/программное обеспечение:
Двустороннее измерение расстояния или Double-sided Two-Way Ranging (DS-TWR):
Алгоритм разработан и описан компанией Qorvo и описан в драйвере DWM3000, позволяет точно определять расстояние между двумя модулями.

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

Обнаружение перемещение модуля:
Модуль включает в себя акселерометр MPU-6050 для обнаружения перемещения модуля. Так как базовые станции обычно обслуживают несколько подвижных модулей, нужно измерять расстояние только при перемещении модуля, чтобы не занимать канал СШП постоянно.
Акселерометр опрашивается по шине I2C и имеет выделенную линию прерываний, оповещающую микроконтроллер об обнаруженном движении.
Индикация:
Для индикации уровня сигнала от базовых станций используются синие светодиоды, яркость которых устанавливается пропорционально уровню сигнала. Для генерации ШИМ используются 3 канала PWMA2
Интерфейсы:
Модуль имеет возможность подключения по USB или CAN.
USB работает в режиме Device и использует TinyUSB из SDK, вызываясь в отдельной задаче FreeRTOS
CAN работает в стандартном режиме, вызывая прерывания на принятые сообщения с подходящим идентификатором.
Команды передаются и обрабатываются функциями FreeRTOS Plus CLI, вызывая определенные пользовательские функции.
Режим передачи:
Пользовательская кнопка меняет режим передачи (канал, преамбулу и скорость передачи). По нажатию вызывается прерывание GPIO и оповещает задачу инициализации модуля. Пользовательский (белый) светодиод отображает текущий режим работы модуля СШП.
При разработке использовалисть инструменты:
— Редактор кода Zed, с инструментами автоматизации tasks.json и debug.json
— Инструменты сборки и отладки mcu-sdk-linux-2.1 от Baikal Electronics
— Сборка при помощи makefile
— Операционная система реального времени FreeRTOS
3. Аппаратная часть:
— Отладочная плата EVU-BA-2.1
— CAN трансивер sn65hvd233dr
— Модуль DWM3000 на плате собственной разработки
— Акселерометр MPU-6050
4. Образовательный или промышленный контекст:
Проект разрабатывается в качестве дипломной работы в ФСПО ГУАП, после завершения код, документация и рабочие образцы будут переданы ВУЗу и смогут стать частью других студенческих проектов.
Результаты:
— Было проведено тестирование возможностей микроконтроллера Baikal-U
— Разработано ПО модуля системы СШП навигации реального времени.
Репозиторий: https://gitflic.ru/project/ievstrat/baikal-uwb.
— Портирован драйвер для DWM3000 от Qorvo.
Репозиторий: https://gitflic.ru/project/ievstrat/dwm3000_driver?branch=Baikal-U ветка Baikal-U .
— Портирован драйвер для MPU-6050 от Libdriver.
Репозиторий: https://gitflic.ru/project/ievstrat/mpu6050-baikal-u ветка Baikal-U.
— Разработан стенд для тестирования разработанного ПО

— Разработана печатная плата для модуля.
Проект платы LibrePCB и находится в репозитории

— Было измерено энергопотребление микроконтроллера в различных режимах работы. Для этого использовался Power Profiler Kit 2 от Nordic. Описание режимов работы, код и файлы измерений находятся в репозитории https://gitflic.ru/project/ievstrat/baikal-u_power_consumption

— Был доработан скрипт компоновщика и реализован алгоритм раздельной компиляции кода для Core2. В примере для работы с Core2 предлагался скомпилированный бинарный код для копирования его в TCM Core2. В ходе исследований был разработан алгоритм раздельной компиляции (весь код для Core2 переносится в отдельный файл, компилируется с нужными флагами, после чего линкуется с основным проектом) и доработан скрипт компоновщика.
Код находится в репозитории https://gitflic.ru/project/ievstrat/baikal-u_power_consumption.
— Не удалось реализовать работу в режиме FreeRTOS SMP, но работы над этим ведутся. Это позволило бы подключить к микроконтроллеру несколько модулей СШП и обслуживать несколько каналов параллельно.
Перспективы:
В 2022 году на основании исследований совместимости сверхширокополосных устройств (Ultra‑Wide Band, UWB) и других радиоэлектронных средств, работающих в диапазоне радиочастот 6,5 ГГц, были внесены изменения ГКРЧ от 07.05.2007 № 07–20–03–001 «О выделении полос радиочастот устройствам малого радиуса действия».
Данные изменения позволяют использовать UWB устройства на территории России.
Модуль СШП навигации позволяет получать точную (сантиметровую) навигацию в помещениях с дальностью связи до 100 м. Что делает его востребованным решением для автоматизации складов или промышленных помещений.
Собственное потребление модуля DWM3000 не превышает 45 мА и в среднем составляет 28 мА, то есть меньше, чем у модулей WiFi, позволяя использовать эту технологию для носимых устройств и IoT.
Последние стандарты СШП (UWB) уделяют большое внимание безопасности канала, делая перехват или подмену сообщений, а также искажение результатов измерений практически невозможным.
Проект находится в стадии разработки, и для полноценного его применения требуется доработка, например возможность переключения между базовыми станциями или возможность построения ячеистых сетей.