Сверхширокополосная связь с модулем ESP32 DW1000 UWB: основы работы


В этой вводной статье мы узнаем о технологии сверхширокополосной связи с использованием модуля ESP32 DW1000 UWB. Технология UWB (Ultra Wideband Technology) — это технология беспроводной связи с несущей частотой, которая использует полосу пропускания выше 1 ГГц. Она не использует синусоидальную несущую, а использует несинусоидальные узкие импульсы наносекундной длительности для передачи данных.

Сверхширокополосная связь с модулем ESP32 DW1000 UWB: основы работы

BU01 разработан компанией Ai-Thinker на основе чипа DecaWave DW1000, который объединяет антенну, все радиочастотные схемы, управление питанием и модули синхронизации. Модуль ESP32 UWB на основе DW1000 и ESP32 похож на непрерывно сканирующий радар, который может точно захватить другое устройство, определить его местоположение и связаться с ним.

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

Что такое сверхширокополосная связь?

UWB — это протокол беспроводной связи ближнего действия, похожий на Bluetooth или Wi-Fi. Он также использует радиоволны для связи и работает на очень высокой частоте. Как следует из его названия, он также использует широкий спектр в несколько ГГц. Один из способов представить его как радар, который может непрерывно сканировать всю комнату и точно захватить объект, как лазерный луч, чтобы обнаружить его местоположение и передать данные.

Принцип работы сверхширокополосной связи

Основная цель Ultra Wideband — обнаружение местоположения и определение дальности действия устройства. В то время как Wi-Fi и Bluetooth были модифицированы для обеспечения большей точности в определении местоположения других устройств и подключении к ним, UWB изначально более точен и потребляет меньше энергии.

Как работает UWB?

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

Принцип работы технологии UWB

UWB потребляет крайне мало энергии. Его высокая пропускная способность (обусловленная широкой полосой 500 МГц) идеально подходит для передачи большого количества данных с хост-устройства на другие устройства на расстоянии до 30 футов. В отличие от Wi-Fi, он не особенно хорош для передачи через стены.

Когда смартфон с чипом UWB приближается к другому устройству UWB, они начинают определять расстояние или измерять точное расстояние между ними. Определение расстояния осуществляется с помощью измерений "времени полета" (Time of Flight, ToF) между устройствами. Они используются для расчета времени прохождения пакетов вызова/ответа в обоих направлениях.

Принцип взаимодействия между устройствами UWB

Понятия “anchor” («якорь») и “tag” («тег») важны для понимания измерения расстояния и местоположения с помощью UWB. Якорь — это, как правило, фиксированное устройство UWB с известным местоположением. Тег — это, как правило, мобильное устройство UWB. Якорь и тег обмениваются информацией для установления расстояния между ними. Точное местоположение тега можно определить, связавшись с несколькими якорями. Некоторые устройства могут действовать как якорь или тег.

Модуль UWB на базе DW1000 BU01

Модуль UWB на базе DW1000 BU01

Модуль BU01 разработан Ai-Thinker на основе чипа DW1000 от DecaWave. Он объединяет антенну, все радиочастотные схемы, управление питанием и модули синхронизации. Модуль может использовать двустороннюю систему определения дальности или позиционирования TDOA с точностью позиционирования 10 см. Скорость передачи данных до 6,8 Мбит/с.

Функции

  • Простая интеграция, не требуется проектирование радиочастот.
  • Использование инфраструктуры RTLS для расширения диапазона связи.
  • Поддержка высокой плотности этикеток.
  • Соответствует стандарту IEEE 802.15.4-2011 UWB.
  • Поддержка 4 каналов от 3,5  ГГц  до 6,5  ГГц.
  • Программируемая мощность передачи.
  • Напряжение питания 2,8 В - 3,6 В.
  • Потребляемая мощность в спящем режиме <1мА.
  • Поддержка двухстороннего измерения дальности и TDOA.
  • Поддержка интерфейса SPI.
  • Скорость передачи данных 110 кбит/с, 850 кбит/с, 6,8 Мбит/с.

Плата ESP32 UWB (Ultra Wideband)

Модуль ESP32 UWB Ultra Wideband основан на DW1000 и ESP32. Эта плата произведена компанией Makerfabs. Модуль BU01 на основе чипа DW1000 сопряжен с модулем ESP32 WiFi с расширением ввода/вывода. Плата действует как непрерывно сканирующий радар, который точно фиксируется на другом устройстве (называемым Anchor) и связывается с ним, таким образом вычисляя свое собственное местоположение.

Плата ESP32 UWB (Ultra Wideband)

Верхняя сторона платы имеет встроенный модуль ESP32 WROOM/Wrover с модулем BU01 и другими пассивными электронными компонентами. Есть две кнопки, одна для вспышки, другая для отдыха. Плата имеет порт micro-USB для загрузки прошивки и последовательной связи.

Задняя сторона платы ESP32 UWB

На задней стороне платы находится чип CP2102 для связи UART. Названия портов ввода/вывода также указаны на плате. Штекерные или гнездовые разъемы могут быть припаяны с обеих сторон платы. Плата дружелюбна к макетной плате. Поэтому вы можете разместить ее на макетной плате вместе с другими компонентами во время практических применений.

Функции

  • Decawave DWM1000 для точного отслеживания.
  • ESP32 для быстрых и мощных приложений.
  • Поддержка Wi-Fi, Bluetooth.
  • Совместимость с Arduino.
  • Разъем Micro-USB.
  • Диапазон напряжения питания USB-платы: 4,8~5,5 В, типичное значение 5,0 В.

Начало работы с модулем ESP32 DW1000 UWB (Ultra Wideband)

Давайте узнаем, как использовать плату ESP32 DW1000 UWB (Ultra Wideband) с Arduino IDE и измерить расстояние между платами. Для этого проекта вам понадобится пара плат. Затем нам нужно будет выполнить ряд шагов, чтобы использовать этот модуль.

Установка библиотеки DW1000

Сначала нам нужно установить библиотеку Arduino-DW1000 от thotro. Эта библиотека предлагает функционал для использования чипов/модулей DW1000 от Decawave с Arduino.

Установка библиотеки Arduino-DW1000 от thotro с помощью менеджера библиотек в Arduino IDE

Вы также можете установить эту библиотеку через менеджер библиотек. Просто найдите DW1000 и нажмите install («Установить»), чтобы установить библиотеку.

Изменение библиотеки

Библиотека DW1000 UWB не компилируется для плат ESP32 напрямую. Поэтому нам нужно внести некоторые изменения в библиотечную часть.

Перейдите в папку Arduino Library и найдите DW1000. Затем откройте папку Library и найдите исходную папку (src).

Папка с исходником библиотеки DW1000 UWB

Откройте папку src и найдите файл DW1000.cpp. Откройте файл с помощью текстового редактора, например Notepad++.

Файл DW1000.cpp библиотеки DW1000 UWB

Теперь найдите следующие строки (строка № 172) и закомментируйте все эти 3 строки.

Закомментирование необходимых строк в файле DW1000.cpp

После того, как эти строки будут закомментированы, код библиотеки будет успешно скомпилирован.

Выбор платы

Подключите пару плат ESP32 Wrover к двум разным USB-портам вашего компьютера с помощью кабеля micro-USB.

Подключение пары плат ESP32 Wrover к двум разным USB-портам компьютера

В Arduino IDE выберите плату разработки «ESP32 Dev Module», если вы используете плату ESP32 UWB с чипом ESP32 WROOM. В противном случае выберите «ESP32 WROVER Module», если вы используете плату ESP32 UWB с чипом ESP32 WROVER.

Выбор типа платы и COM порта в Arduino IDE

Также выберите COM-порт. Номер COM-порта, который был назначен плате при ее подключении к компьютеру, можно найти в диспетчере устройств. Теперь плата ESP32 Ultra Wideband готова к последовательной связи.

Как использовать модуль ESP32 UWB для измерения расстояния?

Чтобы измерить расстояние между платами, нам необходимо загрузить код «Anchor» на одну плату ESP32, а код «Tag» на другую плату ESP32.

Использование модуля ESP32 UWB для измерения расстояния

Одна из плат будет действовать как Якорь (Отправитель), а другая плата будет действовать как Тег (Приемник). Согласно стандартам UWB, Якорь должен быть неподвижным, а тег должен быть подвижным. Для целей тестирования мы держим платы на расстоянии 1 метра друг от друга.

Код Якоря (Anchor)

Скопируйте следующий код и загрузите его на первую плату UWB (Ultra Wideband).

Код тега (Tag)

Скопируйте следующий код и загрузите его на вторую плату UWB (сверхширокополосную).

Диапазон тестирования между платами

После загрузки кода на платы Anchor и tag вы можете открыть Serial Monitor (окно монитора последовательной связи). Он покажет идентификаторы anchor и tag. Он также покажет диапазон в метрах и мощность приемника в dBm.

Тестирование измерения расстояния между платами ESP32 UWB в окне монитора последовательной связи

Согласно нашей настройке, мы разместили якорь и метку на расстоянии 1 метра друг от друга, но последовательный монитор показывает расстояние более 2 метров.

Отсюда мы можем сказать, что измеренное расстояние неверно. Это из-за проблемы задержки антенны. Задержка антенны DW1000 является внутренней для чипа и не включена в расчет времени пролета (TOF). Таким образом, нам необходимо откалибровать задержку антенны чтобы устранить эту проблему.

Какова задержка антенны DW1000?

Многоканальный приемопередатчик DecaWave DW1000, работающий на основе сверхширокополосной (UWB) радиосвязи, позволяет с высокой точностью маркировать сообщения по мере их отправки и прибытия на приемопередатчик.

Задержки, которые измеряются в этих временных метках, включают задержку распространения через устройства DW1000 от точек, в которых применяются временные метки передатчика, до точек, в которых фиксируются временные метки приемника. Эти задержки называются задержками передающей/приемной антенны.

Эти задержки антенн являются внутренними для чипа и не включены во время пролета (ToF), но включены в задержку распространения от временной метки передачи до временной метки приема сообщения.

Расчет времени задержки антенны DW1000

Формула для расчета задержки антенны DW1000

где:
ToF = Время пролета
tMeasured = Измеренное время от временной метки передачи до временной метки приема
tADTX = Задержка передающей антенны
tADRX = Задержка приемной антенны

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

Калибровка задержки антенны DW1000

Для устранения проблемы задержки антенны Джим Ремингтон модифицировал указанную выше библиотеку DW1000 Томаса Тройера.

Обновленную библиотеку DW1000 от Джима можно загрузить из репозитория jremington Github. С калибровкой антенны измерение расстояния кажется более точным.

Удалите старую библиотеку DW1000 из папки библиотеки Arduino и добавьте последний загруженный файл библиотеки jremington DW1000 в папку библиотеки Arduino.

Код автокалибровки якоря ESP32

Скопируйте следующий код и загрузите его на первую плату ESP32 UWB.

В следующем коде внесите изменения в следующую строку:

Измените расстояние, на котором выполняется калибровка.

Код тега (настройка ESP32 UWB)

Скопируйте следующий код и загрузите его на вторую плату ESP32 UWB.

Расчет параметра Аделая (Adelay Parameter)

После загрузки кода откройте оба Serial Monitor. Разместите модули на фиксированном расстоянии 1 метр. Затем нажмите кнопку сброса.

Расчет параметра Аделая (Adelay Parameter)

Коэффициент калибровки задержки антенны DW1000, называемый Adelay, можно определить из кода. В последовательном мониторе коэффициент Adelay равен примерно 16586. Скопируйте это число, так как оно потребуется в окончательном коде программы.

Точное измерение расстояния с включением параметра Аделая

Теперь определен коэффициент калибровки задержки антенны DW1000, называемый Adelay. Поэтому нам нужно загрузить окончательный код на плату якоря (Anchor). Код для тега остается прежним.

Код якоря ESP32 UWB

Необходимо изменить код в этих двух строках.

Замените параметр Аделая в коде, а также укажите расстояние, на котором вы его определили.

Тестирование финального кода

После загрузки нового кода в плату якоря (Anchor) откройте Serial Monitor. Поскольку якорь и тег находятся на расстоянии 1 метра друг от друга, Serial Monitor должен показывать расстояние в 1 метр.

Тестирование финального кода в окне монитора последовательной связи

Теперь давайте проведем еще один тест, переместив метку на расстояние полуметра от якоря.

Изменение расстояния между модулями ESP32 UWB до полуметра

В этом случае последовательный монитор покажет расстояние около 0,5 метра, что кажется почти точным.

Тестирование работы проекта с расстоянием 0.5 метра между модулями

При правильной настройке задержки точность измерения может быть значительно улучшена. Итак, вот как вы можете начать работу с платой ESP32 UWB (Ultra Wideband) и измерить расстояние между двумя подобными платами.

Видео, демонстрирующее работу проекта

Ссылка на видео на YouTube

(Проголосуй первым!)
Загрузка...
346 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *