Skip to content

NikitaS2001/dw1000-stm32

Repository files navigation

Дальномерный радиомаяк на базе DW1000

Описание

Проект представляет собой дальномерную систему на основе широкополосных модулей DW1000. Система реализована на базе алгоритма DS-TWR (Double-sided Two-Way Ranging). В системе расстояние рассчитывается между модулем A (TAG-модуль) и модулем B (ANCHOR-модуль). TAG модуль выполняет поллинг ANCHOR модулей и инициирует TWR алгоритм с каждым найденным ANCHOR-модулем в зоне действия.

Оборудование

Зависимости

Требуемое ПО

Сборка проекта

  1. Установите MDK-ARM Professional (Lite версия не сможет собрать проект).
  2. Установите uVision v5.38.
  3. Склонируйте этот репозиторий на свой компьютер.
  4. Откройте проект в uVision.
  5. Выберите требуемый Target сборки (TAG или ANCHOR) и нажмите кнопку Build (F7).
  6. Собранная прошивка появится в директории Build ( и dwm1000-tag.hex).
    • dwm1000-tag.hex - для Target TAG
    • dwm1000-anchor.hex - для Target ANCHOR

Прошивка модулей

Если нет возможности собрать проект вручную - актуальные прошивки можно найти в последнем релизе в репозитории. Для загрузки прошивки выполните следующие шаги (для Windows):

  1. Подключите BIT0 на плате модуля к питанию (пример).
  2. Подключите USB-UART конвертер к пинам UART0 на плате модуля (схема).
  3. Подключите USB-UART конвертер к USB порту на ПК.
  4. Запустите STM Flash Loader Demo и выберите нужный COM порт в настройках UART (номер нужного порта можно узнать в диспетчере устройств Windows), остальные настройки менять не нужно (пример настроек).
  5. Нажмите на кнопку Next. Если появляется ошибка Cannot open the com port - скорее всего указан не верный COM порт, также можно попробовать перезапустить модуль нажатием на кнопку Reset.
  6. На следующей вкладке (Target is readable) нажмите Next.
  7. Убедитесь, что устройство (Target) выбрано верно и нажмите Next.
  8. Выберите нужный файл с прошивкой, выберите вариант Erase necessary pages (рекомендуется также включить верификацию Verify after download) пример.
  9. Нажмите Next и дождитесь окончания процесса загрузки прошивки. Далее можно нажать Close. При возникновении ошибок, например, при верификации, повторите процесс прошивки, начиная с пункта 4.

Работа с модулями и настройка

После прошивки модуля необходимо произвести настройку - указать идентификатор модуля. Каждый модуль должен иметь свой уникальный идентификатор (целое число от 0 до 65535), чтобы он мог обозначить себя в системе коммуникации. На текущей версии системы TAG-модуль должен иметь идентификатор 0, ANCHOR-модули - идентификаторы от 1 до 10 включительно (остальные идентификаторы на данный момент не используются).

Настроить модуль можно, используя USB-UART конвертер и любой удобный клиент для работы через последовательный порт с поддержкой CR/LF окончания строки (например, PuTTY, при этом в настройках Terminal/Keyboard для The Enter key должно быть выбрано CR LF).

Подключитесь через клиент последовательного порта к COM порту, соединённому с платой модуля через USB-UART конвертер и введите команду device_id set 0 (для TAG-модуля) или device_id set <id> (для ANCHOR-модуля, без кавычек, id = [1; 10]). В ответ должно появиться сообщение Device ID is set to '<id>' (пример). Перезапустите модуль используя команду reset или кнопку Reset на плате.

После правильной установки ID модули готовы к работе.

Размещение модулей

Для удобства размещения модулей в пространстве был разработан специальный корпус, совместимый с платами UWB модулей и модулями питания (Модуль питания 18650). Корпус можно найти в данном репозитории в виде STL-файлов и распечатать самостоятельно на 3D-принтере.

Предусмотрено 2 варианта размещения модулей:

  • на горизонтальной плоскости;
  • на вертикальных стойках.

Модели для сборки основного корпуса:

Модели для сборки крепления для вертикальной стойки корпуса:

  • postBindBottom.STL - нижняя часть крепления (крепится к стойке);
  • postBindTop.STL - верхняя часть крепления (крепится к основному корпусу).

Подключение к внешним устройствам

TAG-модули могут быть подключены к другим устройствам (например, Raspberry) в качестве периферии, эти устройства могут получать данные о расстояниях до ANCHOR-модулей. Данные публикуются TAG-модулем с использованием протокола ROSSERIAL в топик 'dwm1000/beacon_data' (тип сообщения BeaconDataArray). Данные могут быть получены через интерфейс UART2 путём подключения к соответствующим пинам на плате (Baudrate = 57600).

Таким образом, дальномерная система может быть встроена в более широкие системы, например, системы позиционирования.

Пакет ROS с реализацией алгоритма позиционирования на основе трилатерации с использованием данной системы: https://github.com/NikitaS2001/dwm1000_pose.

Авторы

Проект создан в рамках конкурса проектов CopterHack-2023, команда C305.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published