基于DWM3001CDK实现UWB测距与RGB LED控制
该项目使用了DWM3001CDK,实现了UWB测距与RGB LED控制的设计,它的主要功能为:基于DWM3001CDK实现UWB测距与RGB LED控制。
标签
嵌入式系统
Funpack活动
UWB
DWM3001CDK
安先生
更新2025-04-08
17

项目描述

本项目旨在探索和实践基于 Qorvo DWM3001CDK 开发套件的超宽带 (Ultra-Wideband, UWB) 精确测距技术,并结合外部获取的方位信息,通过控制连接到开发板的 RGB LED 灯的颜色和亮度,实现一种直观的位置和方向感知可视化效果。

项目介绍

随着物联网 (IoT) 和位置服务 (Location Services) 的快速发展,精确室内定位技术的需求日益增长。UWB 技术因其高精度、低功耗、高带宽和良好的抗多径干扰能力,成为室内定位领域的重要解决方案之一。DWM3001C 模块作为 Qorvo 推出的高度集成的 UWB 收发器模块,集成了 DW3110 UWB 收发器 IC、Nordic nRF52833 MCU、UWB 天线、蓝牙低功耗 (BLE) 收发器、加速度计、电源管理和晶振等关键组件。DWM3001CDK 开发套件则是评估和开发基于 DWM3001C 模块应用的便捷平台。

本项目"基于 DWM3001CDK 实现 UWB 测距与 RGB LED 控制"的核心目标是利用 DWM3001CDK 的 UWB 功能进行精确的距离测量。

考虑到 DWM3001C 模块本身主要专注于距离测量,而不直接提供角度或方位测量功能,我们假设手机的方位信息(例如,相对于 DWM3001CDK 的角度)可以通过其他方式(如手机自身的传感器、外部定位系统或其他辅助模块)获取,并能够将此方位信息传递给 DWM3001CDK 进行后续处理。

设计思路

本项目的整体设计思路可以概括为以下几个步骤:

  1. UWB 测距实现:配置 DWM3001CDK 作为 UWB 系统中的一个节点(可以是锚点或标签),并使其能够与目标设备(假设为配备兼容 UWB 功能的手机)进行双向测距 (Two-Way Ranging, TWR)。TWR 是一种通过交换时间戳信息来计算两个设备之间距离的常用 UWB 测距方法。DWM3001C 模块支持 IEEE 802.15.4-2015 和 IEEE 802.15.4z BPRF 标准,并且符合 FiRa™ PHY 和 MAC 规范,确保与其他兼容设备的互操作性。
  2. 外部方位信息集成:由于 DWM3001CDK 自身不具备角度测量能力,本项目依赖于外部系统或手机自身提供的方位信息。我们假设手机能够获取其相对于 DWM3001CDK 的方位角度,并通过某种通信接口(例如,UART、BLE)将此信息发送给 DWM3001CDK 的 nRF52833 MCU。
  3. 数据融合与处理:DWM3001CDK 的 nRF52833 MCU 在接收到 UWB 测距结果(距离值)和外部传入的方位角度信息后,将对这些数据进行处理。处理逻辑将定义距离和角度与 RGB LED 灯颜色和亮度之间的映射关系。
  4. RGB LED 控制:根据数据处理的结果,nRF52833 MCU 将通过其通用输入/输出 (GPIO) 引脚控制连接到开发板的 LED 灯的颜色和亮度。例如,距离的远近可以控制 LED 的亮度级别,而不同的角度范围可以触发 LED 显示不同的颜色。这种方式能够将抽象的距离和方位信息转化为直观的视觉反馈。

简短的硬件介绍

本项目主要使用的硬件组件包括:

  • DWM3001CDK 开发套件:这是一个为评估 DWM3001C 模块功能而设计的便捷工具包。它集成了关键的硬件组件和接口,方便开发者进行 UWB 应用的开发和测试。
    • DWM3001C 模块:DWM3001CDK 的核心组件,它是一款高度集成的 UWB 收发器模块。该模块基于 Qorvo DW3110 IC,支持 Channel 5 (6.5 GHz) 和 Channel 9 (8 GHz) UWB 频段。DW3110 是一款低功耗、单芯片 CMOS RF 收发器 IC。DWM3001C 模块还集成了 Nordic nRF52833 SoC,这是一款具有 64 MHz ARM Cortex-M4 处理器的微控制器,并带有 BLE 收发器。此外,模块上还集成了平面 UWB 天线和蓝牙芯片天线,以及 ST LIS2DH12 三轴加速度计和 Torex XC9282 DCDC 转换器。DWM3001C 模块的工作电压范围为 2.5 V 至 3.6 V。
    • 板载 J-Link 调试器:方便用户对 nRF52833 MCU 进行程序烧录和调试。
    • Micro-USB 接口:提供电源和与 DWM3001C USB 接口的连接。
    • Raspberry Pi 兼容接口:方便与其他开发板进行扩展连接。
    • GPIO 和其他接口引出:DWM3001CDK 将 DWM3001C 模块的 GPIO、SPI、UART、I2C 等接口引出,方便用户进行外设扩展。用户可以将外部 RGB LED 灯连接到 nRF52833 MCU 的 GPIO 引脚上。
  • RGB LED 灯:DWM3001CDK 开发板自带LED接口

软件流程图



各功能对应的主要代码片段及说明

1. 系统初始化配置

/* 系统头文件 */
#include "nrf.h"
#include "nrf_gpio.h"
#include "nrf_pwm.h"


/* 定义GPIO引脚 */
#define LED_1 NRF_GPIO_PIN_MAP(0,4) //D9 on the schematics
#define LED_2 NRF_GPIO_PIN_MAP(0,5) //D10 on the schematics
#define LED_3 NRF_GPIO_PIN_MAP(0,22) //D11 on the schematics
#define LED_4 NRF_GPIO_PIN_MAP(0,14) //D12 on the schematics


#include "custom_board.h"
static nrf_drv_pwm_t m_pwm0 = NRF_DRV_PWM_INSTANCE(0);

// PWM配置
void pwm_init(void)
{
nrf_drv_pwm_config_t config = {
.output_pins = {
BSP_LED_0 | NRF_DRV_PWM_PIN_INVERTED, // channel 0
BSP_LED_1 | NRF_DRV_PWM_PIN_INVERTED, // channel 1
BSP_LED_2 | NRF_DRV_PWM_PIN_INVERTED, // channel 2
BSP_LED_3 | NRF_DRV_PWM_PIN_INVERTED // channel 3
},
.irq_priority = APP_IRQ_PRIORITY_LOWEST,
.base_clock = NRF_PWM_CLK_1MHz,
.count_mode = NRF_PWM_MODE_UP,
.top_value = 255,
.load_mode = NRF_PWM_LOAD_INDIVIDUAL,
.step_mode = NRF_PWM_STEP_AUTO
};

APP_ERROR_CHECK(nrf_drv_pwm_init(&m_pwm0, &config, NULL));
}


2. TWR 回调接口

      static void report_cb(const struct ranging_results *results, void *user_data) {
...
distance_cm = (int)rm->distance_mm / 10;
float local_aoa_deg = convert_aoa_2pi_q16_to_deg(rm->local_aoa_measurements[0].aoa_2pi);

len +=
snprintf(&str_result->str[len], str_result->len - len, ",\"D_cm\":%d",
(int)rm->distance_mm / 10);

len += snprintf(&str_result->str[len], str_result->len - len,
",\"CFO_100ppm\":%d", (int)fira_uwb_mcps_get_cfo_ppm());

set_led_color_by_angle_and_distance(distance_cm,local_aoa_deg);

}

3.接口调用控制LED

void set_led_color_by_angle_and_distance(float distance_cm, float angle_deg)
{
uint16_t brightness;

// 根据距离计算亮度
if (distance_cm > MAX_DISTANCE) {
brightness = 0;
} else {
brightness = (uint16_t)(255 * (1.0f - distance_cm / MAX_DISTANCE));
}

// 将角度映射到色彩空间 (例如HSV的H值)
// 假设角度范围是0-360度
float hue = angle_deg; // 直接使用角度作为色调

// 将HSV转换为RGB (简化转换)
uint8_t r, g, b;
hsv_to_rgb(hue, 1.0, brightness/255.0, &r, &g, &b);

// 设置PWM值
nrf_pwm_values_individual_t pwm_values = {
.channel_0 = r,
.channel_1 = g,
.channel_2 = b,
.channel_3 = 0
};

nrf_drv_pwm_simple_playback(&m_pwm0, &pwm_values, 1, NRF_DRV_PWM_FLAG_LOOP);
}

// HSV到RGB转换函数
void hsv_to_rgb(float h, float s, float v, uint8_t *r, uint8_t *g, uint8_t *b)
{
int i;
float f, p, q, t;

h = fmodf(h, 360.0f);
h /= 60.0f;
i = (int)h;
f = h - i;
p = v * (1.0f - s);
q = v * (1.0f - s * f);
t = v * (1.0f - s * (1.0f - f));

switch (i) {
case 0:
*r = (uint8_t)(v * 255);
*g = (uint8_t)(t * 255);
*b = (uint8_t)(p * 255);
break;
case 1:
*r = (uint8_t)(q * 255);
*g = (uint8_t)(v * 255);
*b = (uint8_t)(p * 255);
break;
case 2:
*r = (uint8_t)(p * 255);
*g = (uint8_t)(v * 255);
*b = (uint8_t)(t * 255);
break;
case 3:
*r = (uint8_t)(p * 255);
*g = (uint8_t)(q * 255);
*b = (uint8_t)(v * 255);
break;
case 4:
*r = (uint8_t)(t * 255);
*g = (uint8_t)(p * 255);
*b = (uint8_t)(v * 255);
break;
default:
*r = (uint8_t)(v * 255);
*g = (uint8_t)(p * 255);
*b = (uint8_t)(q * 255);
break;
}
}



功能展示图片及说明

1. 距离与角度感知可视化效果

当手机与DWM3001CDK之间的距离与角度变化时,连接到开发板的RGB LED灯的亮度会相应变化:



项目中遇到的难题和解决方法

在实现基于DWM3001CDK的UWB测距与RGB LED控制项目过程中,遇到了以下主要技术挑战及其解决方案:

1. UWB配置和测距精度问题

难题:DWM3001C模块的UWB配置涉及多个参数设置,如信道选择、前导码长度、数据速率等,这些参数直接影响测距的精度和可靠性。初期测试中发现测距结果不稳定,误差较大。

解决方法

  • 深入研究DWM3001C和DW3110 IC的数据手册,了解各参数对测距性能的影响
  • 采用Qorvo推荐的参数配置,特别是针对室内环境的优化设置
  • 实现了简单的低通滤波算法对距离测量结果进行平滑处理,减少瞬时噪声的影响
  • 在开发过程中使用示波器和逻辑分析仪监测UWB信号质量,确保信号完整性

2. RGB LED驱动与PWM控制

难题:为实现RGB LED的平滑颜色渐变和亮度调节,需要精确控制PWM信号的占空比。nRF52833 MCU提供了PWM功能,但配置和使用相对复杂。

解决方法

  • 利用Nordic nRF5 SDK中的PWM驱动库,简化PWM配置和控制逻辑
  • 设计了颜色映射算法,将角度值(0-360度)映射到RGB颜色空间,实现丰富的颜色渐变效果
  • 实现了亮度控制函数,根据测量距离的变化平滑调整LED亮度
  • 增加了防抖动机制,避免距离或角度微小变化导致的LED闪烁

对本活动的心得体会

通过参与本次基于DWM3001CDK实现UWB测距与RGB LED控制的项目,我深入了解了UWB的原理


附件下载
code.zip
团队介绍
安迪 攻城狮
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号