Добавить в корзинуПозвонить
Найти в Дзене
Заметки кота

Реализация UWB дальномера на ESP32 с модулем UWB3000F27

В данной статье рассматривается рабочий проект двусторонней дальнометрии (Double-Sided Two-Way Ranging, DS-TWR) с использованием микроконтроллера ESP32 и UWB-модуля UWB3000F27. Представленный код успешно реализует обмен данными между двумя узлами (инициатором и респондером) для вычисления расстояния с точностью до сантиметров. Проект состоит из двух идентичных узлов. В каждом используется: Модуль UWB3000F27 подключается к ESP32 по интерфейсу SPI. Пины выбора (CS), прерывания (IRQ) и сброса (RST) определяются в коде, остальная шина SPI используется стандартная (для ESP32 обычно VSPI). В основе модуля UWB3000F27 лежит чип DW3000 от компании Qorvo. Это трансивер сверхширокополосного (UWB) сигнала, соответствующий стандарту IEEE 802.15.4z. Модуль представляет собой готовое решение с интегрированным чипом DW3000, обвязкой и выходом под антенну. В коде присутствует специфичная для данного модуля настройка: вызов dwt_config_rftx(1) перед передачей и dwt_config_rftx(0) после неё. Это необход
Оглавление

В данной статье рассматривается рабочий проект двусторонней дальнометрии (Double-Sided Two-Way Ranging, DS-TWR) с использованием микроконтроллера ESP32 и UWB-модуля UWB3000F27. Представленный код успешно реализует обмен данными между двумя узлами (инициатором и респондером) для вычисления расстояния с точностью до сантиметров.

-2
-3

Оборудование и схема подключения

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

  • МК: ESP32
  • UWB модуль: UWB3000F27

-4

Схема подключения (ESP32 -> UWB3000F27)

Модуль UWB3000F27 подключается к ESP32 по интерфейсу SPI. Пины выбора (CS), прерывания (IRQ) и сброса (RST) определяются в коде, остальная шина SPI используется стандартная (для ESP32 обычно VSPI).

-5

Характеристики компонентов

В основе модуля UWB3000F27 лежит чип DW3000 от компании Qorvo.

DW3000 (Сердце модуля)

Это трансивер сверхширокополосного (UWB) сигнала, соответствующий стандарту IEEE 802.15.4z.

  • Технология: Impulse Radio Ultra-Wideband (IR-UWB).
  • Точность позиционирования: До 10 см в реальных условиях.
  • Диапазон частот: Канал 5 (6.5 ГГц) — используется в данном коде.
  • Скорость передачи данных: До 6.8 Мбит/с (в коде установлена DWT_BR_6M8).
  • Энергопотребление: Низкое потребление в режиме ожидания и передаче.
  • Безопасность: Поддержка защищенного дальномера (STS), хотя в данном примере STS отключен (DWT_STS_MODE_OFF) для упрощения.

Особенности UWB3000F27

Модуль представляет собой готовое решение с интегрированным чипом DW3000, обвязкой и выходом под антенну. В коде присутствует специфичная для данного модуля настройка: вызов dwt_config_rftx(1) перед передачей и dwt_config_rftx(0) после неё. Это необходимо для корректной работы приемного тракта и нормализации энергопотребления данного конкретного модуля.


Области применения

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

  1. Системы "Умный дом": Автоматическое включение света при приближении, управление замками.
  2. Промышленная автоматизация: Позиционирование роботизированных тележек (AGV) на складах.
  3. Спорт и фитнес: Отслеживание дистанции между игроками или объектами в реальном времени.
  4. IoT устройства: Поиск потерянных вещей (метки).

Анализ проекта: Плюсы, Минусы и Ограничения

Плюсы

  • Высокая точность: UWB обеспечивает точность, недостижимую для Bluetooth или Wi-Fi на основе RSSI.
  • Помехозащищенность: Устойчивость к многолучевому распространению сигнала (отражения от стен), характерная для закрытых помещений.
  • Простота кода: Использование DS-TWR (двустороннего измерения) позволяет устранить необходимость в жесткой синхронизации часов устройств, что значительно упрощает аппаратную часть.

Недостатки и ограничения

  1. Блокирующий режим (Polling): Код использует циклы while для ожидания событий флага прерывания (SYS_STATUS_RXFCG_BIT_MASK). Это полностью загружает ядро ESP32, не позволяя ему параллельно выполнять другие задачи (например, опрос Wi-Fi или работу с датчиками).
  2. Точность абсолютного расстояния: В коде используются значения задержки антенны (TX_ANT_DLY и RX_ANT_DLY) "по умолчанию" (16385). Это "типичные" значения, но для каждого конкретного экземпляра модуля и монтажа они должны быть откалиброваны индивидуально для достижения максимальной точности.
  3. Ограниченная дальность действия: При высокой мощности передачи и сложной обстановке дальность может ограничиваться десятками метров.
  4. Jitter (дрожание) измерений: Расстояние может "прыгать" (например, от 2.58 до 3.09), что характерно для сырых данных без фильтрации.

Нивелирование недостатков

  • Переход на прерывания: Переписать код на использование аппаратных прерываний ESP32 (IRQ пин) вместо циклов опроса. Это освободит процессор для параллельных задач через FreeRTOS.
  • Калибровка: Провести процедуру калибровки антенн для каждой платы, чтобы скорректировать ANT_DLY.
  • Фильтрация: Добавить программный фильтр (скользящее среднее или фильтр Калмана) для сглаживания результатов измерения (в коде есть закомментированная строка kalman_core).

Направления развития проекта

Для превращения прототипа в полноценную продукт решения можно рассмотреть следующие пути:

  1. Калибровка и настройка спектра: Выполнить точную калибровку задержки антенн для каждого устройства.
    Настроить значения
    PG_DELAY и TX_POWER в структуре Config_options для обеспечения соответствия спектральным маскам регулирующих органов и оптимизации качества сигнала при текущей температуре окружающей среды.
  2. Система позиционирования (RTLS): Переход от измерения расстояния между двумя точками к определению координат (X, Y, Z) в пространстве.
    Создание сети из статических "Якорей" (Anchors) с известными координатами.
    Использование метода
    трилатерации (по 3 якорям для 2D и по 4 для 3D) или алгоритма TDOA (Time Difference of Arrival) для вычисления положения "Метки" (Tag).
  3. Оптимизация энергопотребления: Перевод ESP32 и модуля UWB в спящий режим между циклами измерений, особенно если устройство работает от батареи.

Сравнительная характеристика: DW3000 vs DW1000

Оба чипа являются сверхширокополосными (UWB) трансиверами производства Qorvo (ранее Decawave), но принадлежат к разным поколениям и стандартам. DW1000 — это "классика" (IEEE 802.15.4a-2011), а DW3000 — современное решение для безопасного дальномера (IEEE 802.15.4z).

1. Стандарт и протокол

  • DW1000: Соответствует стандарту IEEE 802.15.4a (2011). Это первый массовый стандарт UWB для точного позиционирования.
  • DW3000: Соответствует стандарту IEEE 802.15.4z (2020) ( profiles: High Rate Pulse - HRP).Ключевое отличие: Стандарт 4z вводит механизмы "Secure Ranging" (защищенного измерения расстояния), устойчивые к атакам по ретрансляции (relay attacks).

2. Радиочастотные характеристики (RF)

DW1000

Каналы: 1, 2, 3, 4 (3.5–4 ГГц), 5, 7 (6.5 ГГц). Широкий выбор, включая нижние частоты (лучше проходят через препятствия).

Скорости передачи: 110 кбит/с, 850 кбит/с, 6.8 Мбит/с.

PRF (Частота следования импульсов): 16 МГц, 64 МГц.

Антенный диверсификатор: Поддерживается переключение антенн вручную.

DW3000

Каналы: 5 (6.5 ГГц), 9 (8 ГГц). Работает только в верхнем частотном диапазоне.

Скорости передачи: 850 кбит/с, 6.8 Мбит/с. Скорость 110 кбит/с убрана для упрощения и снижения энергопотребления, так как она редко использовалась в современных приложениях.

PRF (Частота следования импульсов): 16 МГц, 64 МГц.

Антенный диверсификатор: Поддерживается аппаратно (регистр RF_SWITCH), оптимизировано для PDoA (Phase Difference of Arrival).

3. Безопасность (Secure Ranging)

Это наиболее существенное различие.

  • DW1000: Поддерживает базовое шифрование данных AES-128 (CCM mode). Однако временные метки (timestamps) передаются в открытом виде, что делает уязвимым для атак "подмены расстояния" (с помощью ретрансляторов сигнала).
  • DW3000: Внедрена технология STS (Scrambled Timestamp Sequence).Временные метки шифруются.
    Используются отдельные ключи
    STS_KEY и векторы STS_IV (Регистры 0x02:0C, 0x02:1C).
    Поддерживается генерация случайных чисел для криптографической защиты.
    Аппаратная проверка аутентичности (STS Quality checks, регистр
    STS_CONF_1).

4. Возможности позиционирования

DW1000

Точность (TWR): ~10–30 см.

PDoA (Phase Difference of Arrival): Не поддерживается аппаратно. Нахождение угла (Angle of Arrival) требовало сложной обработки оцифрованного CIR (Channel Impulse Response) в MCU.

Диагностика канала: Доступен CIR (Accumulator).

DW3000

Точность (TWR): До 10 см (улучшенные алгоритмы обработки первого пути).

PDoA (Phase Difference of Arrival): Аппаратная поддержка. Чип сам вычисляет разницу фаз между импульсами на разных антеннах.
Регистр
0x0C:1E PDOA содержит готовое значение угла. Регистр 0x0C:18 TDOA для разницы времени.
Это позволяет создавать дешевые системы позиционирования с определением угла.

Диагностика канала: Расширенные диагностики через CIA (Coarse Integrator Accumulator) интерфейс.
Регистры
IP_DIAG_x, STS_DIAG_x дают подробную статистику качества сигнала, уровень шума, положение первого пути (FP) и пиков.

PDoA (Phase Difference of Arrival) — это метод определения направления прихода радиосигнала, основанный на измерении разности фаз.

5. Интерфейс и управление

  • DW1000: Стандартный SPI. Управление передачей/приемом осуществляется через запись в регистры управления (Sys Ctrl).
  • DW3000: SPI с расширенными возможностями. Fast Commands: Однобайтовые команды (например, 0x01 CMD_TX, 0x02 CMD_RX). Это резко снижает задержку реакции по SPI, так как не нужно отправлять адрес регистра и данные.
    Masked Write: Возможность атомарной записи в регистры с маской (изменять только нужные биты, не читая целиком).

6. Архитектура и память

  • Буферы:

- DW1000: Буфер 1024 байта.
- DW3000:
Двойной буфер (Double Buffering) для RX (RX_BUFFER_0, RX_BUFFER_1, регистр 0x01:24 RDB_STATUS). Это критично для высокой нагрузки — пока MCU читает один пакет, чип уже принимает второй в другой буфер, снижая вероятность потери данных.

  • Длина пакета:

- DW3000: Поддерживает Extended PHR (до 1023 байт) управляемо через бит PHR_MODE в SYS_CFG.

7. Энергопотребление и режимы работы

  • DW3000: Внедрен блок AON (Always-On) (Файл регистров 0x0A).

- Позволяет гибко настраивать пробуждение по SPI, пину WAKEUP или таймеру.

- Сохраняет определенные конфигурации в глубоком сне (SLEEP, DEEPSLEEP) без полной перезагрузки при выходе.

  • Калибровка: DW3000 имеет более обширный набор встроенных калибровок (SAR — температурный датчик, LDO — стабилизаторы, TX Power — калибровка мощности), управляемых через файлы 0x08 и 0x09.

Краткая сводная таблица

-6

Вывод

DW3000 является эволюционным развитием DW1000. Он жертвует поддержкой низких частот (3.5–4 ГГц) ради внедрения защиты от ретрансляционных атак (STS), аппаратного измерения угла (PDoA) и снижения нагрузки на хост-процессор за счет Fast Commands и двойной буферизации. Для новых приложений, особенно требующих высокой безопасности (бесключевой доступ в авто) или определения угла, DW3000 является предпочтительным выбором. DW1000 остается актуальным для простых систем на частоте < 6 ГГц (где требуется большая проникающая способность стен) или бюджетных решений.

Исходный код и документация

https://disk.yandex.ru/d/4-8kca9g8crG0A


Купить (реклама)

Система позиционирования UWB3000F27 DW3000 (1шт) купить в Москве по низкой цене с доставкой | Хобби и отдых | Авито