0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

室内定位UWB模组 两点测距+出厂固件功耗测试,效果如何?

AIoT行业洞察 ? 来源:AIoT行业洞察 ? 作者:AIoT行业洞察 ? 2025-08-19 14:34 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

以下作品由安信可社区用户

putin制作

目录

一、UWB模组之BU03

1.1简介

1.2技术亮点

1.3安信可官方资料及工具

二、功耗测试

2.1基站

2.2标签

2.3测距配置

2.4校准

三、UWB模组使用SDK按键唤醒

3.1SDK下载

3.2激活例程

3.3修改例程

3.4实验现象

UWB模组之BU03

1.1简介

BU03模组是一款基于Decawave DW3000系列芯片设计的超宽带(UWB)定位模组。作为一款高性能无线通信模块,BU03凭借其10厘米级定位精度和6.8Mbps高速数据传输能力,成为物联网IoT)、智能家居工业自动化等领域的理想选择。其核心优势在于低功耗设计、抗干扰性强,以及支持多种定位算法,可灵活适配复杂环境下的精准定位需求。

1.2技术亮点

●板载陶瓷天线射频电路:BU03采用全向陶瓷天线设计,无需额外RF设计即可实现信号稳定收发,且天线布局经过优化,确保定位精度不受环境干扰。
●DW3000芯片方案:基于Decawave DW3000的射频前端芯片,支持双向测距(TWR)、TDOA和到达相位差(PDOA)算法。
●低功耗与宽电压支持:供电范围2.5V-3.6V,睡眠模式下功耗低于1μA,适用于纽扣电池供电的便携设备。

定位精度与算法实现

●厘米级定位:通过TDOA或PDOA算法,BU03可在室内复杂环境中实现10厘米级定位精度。例如,在仓储物流中,标签与基站间的实时距离测算误差可控制在±10cm以内。

●动态校准功能:用户可通过线性拟合校准参数(如指令AT+SETDEV),进一步提升实际场景中的测距准确性。测试数据显示,校准后误差可降低至毫米级。

1.3安信可官方资料及工具

●规格书与原理图下载:安信可UWB专题文档
●测试教程与SDK:飞书知识库

●开箱即用的开发套件:BU03-Kit开发板集成STM32F103主控,提供LCD屏幕实时显示测距数据,并支持通过USB/TTL接口进行AT指令配置。用户可通过指令(如AT+SETCFG)快速切换基站与标签模式,搭建多节点定位系统。

上位机支持与资源开放:配套上位机软件支持基站坐标编辑与标签轨迹可视化,开发资料包涵盖原理图、PCB封装、SDK及校准模板,大幅缩短开发周期。

功耗测试


在进行测试之前,先配置两个开发板进入出厂的模式,一个进入标签,一个进入基站。教程参考:教程

由于需要测量功耗,所以要使用外部供电,条件有限,这边只有一个四位半的万用表,因此供电选择使用串口。

供电电源选择的是串口,选择电压输入的为5V,因为LDO也是有一点功耗的,这里测量的是开发板的整体功耗。(单独买来模组也不会单独的部署,所以测量整个开发板的功耗还是具有代表性)

基站

wKgZO2ikGs-AK3JlAACDTBY8M3E62.webpwKgZPGikGs-AbhDSAAECIJO-zAI20.webp

电压为5.01V,开机后工作电流为81.55mA,整体功耗为:408.5655 mW,差不多就是0.4W(整个开发板的功耗,包括LED)。

标签

wKgZO2ikGtCAEPECAAB-LlSeZ6o83.webpwKgZPGikGtCABZwdAACdZOQ2jBo89.webp

电压为5.019V,开机后工作电流为54.03mA,整体功耗为:271.17657 mW,差不多就是0.27W(整个开发板的功耗,包括LED)。

由上可知BU03-Kit开发板的功耗其实是很低。

如果没有LED功耗,应该可以控制在0.2瓦以下,同时标签的功耗可以达到基站的一半。

测距配置

一个为基站,先发送AT+SETCFG=0,1,1,1 然后再发送AT+SAVE

一个为标签,先发送AT+SETCFG=0,0,1,1 然后再发送AT+SAVE

成功后基站将会显示其到标签的距离:

wKgZO2ikGtGAHTa3AAAaXlPl95E12.webp

校准

wKgZPGikGtKAIZ-rAAAXZm_8x7M51.webp

校准方式采用的是线性拟合,相应的文件可以前往安信可文档下载中心进行下载链接如下:

UWB系列模组专题 | 安信可科技

wKgZO2ikGtKAIZAQAAAQup_zsKo70.webp

方法也很简单,先准备一把尺子,将显示屏上显示的距离和尺子上面的距离填到表格中对应的位置即可。数据多测量几次,测量数据越多,屏幕上面显示的实际距离将会越精确。

wKgZPGikGtOAKewRAAAjlNUx3io11.webp

类似于下图,由于这里没有米尺,这里就用直尺了,后面测试是利用瓷砖的距离,每测一次加一块瓷砖测量。

wKgZO2ikGtOAfVHlAAAPgvdcojA55.webp

wKgZPGikGtSACcGoAAAe3FkohJQ41.webp


上面就是实际测得的数据a=0.9138,b=-244.61
通过下面的指令可以填入校正参数:

AT+SETDEV=X1,X2,X3,X4,X5,X6,X7,X8,X9

其中各个参数指代的含义如下:

X1: 标签容量 (标签刷新速率)
X2: 天线延迟参数
X3: 是否卡尔曼滤波使能位
X4: 卡尔曼滤波参数 Q
X5: 卡尔曼滤波参数 R
X6: 校正参数 a
X7: 校正参数 b
X8: 是否定位使能位
X9: 定位维度设置

这里只需发送

AT+SETDEV=5,16336,1, 0.018,0.642,0.9198,-244.61,0,0

wKgZO2ikGtSAFOurAAAX0n8ny_040.webp

复测20厘米实际测量值为256毫米,相较于没有标定之前的数据来说,精度得到了大大的提高。

使用SDK按键唤醒模组

通知公告SDK下载


下载方法可以看下面的链接:链接

由于之前有Ai-M61系列模组和Ai-WB2系列模组搭建环境的经验,想必已经有很多人在电脑上面装了git了吧,只需要在一个空的文件夹里面点击右键后点击下图位置:

wKgZPGikGtWAFYy0AAAM8OkO9Mg26.webp

输入这个:git clone

https://gitee.com/Ai-Thinker-Open/STM32F103-BU0x_SDK.git 回车即可。

wKgZO2ikGtWAd5rXAAAdXPdYj8U14.webp

等待大概10秒钟左右即可。
建议下载完之后复制一个,因为这次测试中一个要接收,一个要发送。

激活例程


建议观看这个教程:教程,教程建议直接观看tx_simple_sleep和simple_rx。

修改例程

对tx_simple_sleep程序修改。

wKgZO2ikGteADJH6AAA9uMzn_Qo87.webp

函数路径如上图,在这里直接翻到最下面上面的全是初始化函数,无需修改。

  /* Loop forever sending frames periodically. */
    while(1)
    {
        /* 写入待发送数据到DW3000准备发送. (Write frame data to DW IC and prepare transmission. See NOTE 3 below.) */
        dwt_writetxdata(FRAME_LENGTH-FCS_LEN, tx_msg, 0); /* Zero offset in TX buffer. */
        /* 设置发送数据长度 (In this example since the length of the transmitted frame does not change,
         * nor the other parameters of the dwt_writetxfctrl function, the
         * dwt_writetxfctrl call could be outside the main while(1) loop.)
         */
        dwt_writetxfctrl(FRAME_LENGTH, 0, 0); /* Zero offset in TX buffer, no ranging. */
        /* 立即发送. (Start transmission.) */
        dwt_starttx(DWT_START_TX_IMMEDIATE);
        /* 查询DW3000是否发送成功. (Poll DW IC until TX frame sent event set. See NOTE 4 below.
         * STATUS register is 4 bytes long but, as the event we are looking at is in the first byte of the register, we can use this simplest API
         * function to access it.) */
        while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS_BIT_MASK))
        { };
        /* 清除发送事件. (Clear TX frame sent event.) */
        dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS_BIT_MASK);
        _dbg_printf((unsigned char *)"发送成功n");
        /* 休眠TX_DELAY_MS. (Execute a delay between transmissions.) */
        Sleep(TX_DELAY_MS);
        /* 标志位Seq++处理. (Increment the blink frame sequence number (modulo 256).) */
        tx_msg[BLINK_FRAME_SN_IDX]++;
    }

在这里,可以直接看到进入休眠模式使用这个函数。

dwt_entersleep(DWT_DW_IDLE)。需要使用按键来进行控制的话只需在这里初始化一个I/O口。

void tx_timed_sleep_GPIO_INIT()
{
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        GPIO_InitTypeDef GPIO_Init_structure;
        GPIO_Init_structure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_Init_structure.GPIO_Pin=GPIO_Pin_8;
        GPIO_Init_structure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_Init_structure);
}
/**
* Application entry point.
*/
int tx_timed_sleep(void)
{
    uint16_t lp_osc_freq, sleep_cnt;
                tx_timed_sleep_GPIO_INIT();
    /* 串口输出应用名称. Display application name on LCD. */
    _dbg_printf((unsigned char *)APP_NAME);
    /* 配置SPI快速率. Configure SPI rate, DW3000 supports up to 38 MHz */
    port_set_dw_ic_spi_fastrate();
    /* 硬复位DW3000模块. Reset DW IC */
    reset_DWIC(); /* Target specific drive of RSTn line into DW IC low for a period. */
    Sleep(2); // Time needed for DW3000 to start up (transition from INIT_RC to IDLE_RC)
    /* 检查DW3000模块是否处于IDLE_RC */
    while (!dwt_checkidlerc()) /* Need to make sure DW IC is in IDLE_RC before proceeding */
    { };
    /* 初始化DW3000模块 */
    if (dwt_initialise(DWT_DW_INIT) == DWT_ERROR)
    {
        _dbg_printf((unsigned char *)"INIT FAILED     ");
        while (1)
        { };
    }
    /* 清除SPI就绪中断. Clearing the SPI ready interrupt*/
    dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RCINIT_BIT_MASK | SYS_STATUS_SPIRDY_BIT_MASK);
    /* 配置DW3000中断函数. Install DW IC IRQ handler. NOTE: the IRQ line must have a PULLDOWN or else it may trigger incorrectly when the device is sleeping*/
//    port_set_dwic_isr(dwt_isr);
    /* 校准和配置UWB计数. Calibrate and configure sleep count. */
    lp_osc_freq = XTAL_FREQ_HZ / dwt_calibratesleepcnt();
    sleep_cnt = ((SLEEP_TIME_MS * ((uint32_t) lp_osc_freq)) / 1000) >> 12;
    //sleep_cnt = 0x06; // 1 step is ~ 175ms, 6 ~= 1s
    dwt_configuresleepcnt(sleep_cnt);
    /* 配置DW3000信道参数. Configure DW IC. See NOTE 6 below. */
    if(dwt_configure(&config)) /* if the dwt_configure returns DWT_ERROR either the PLL or RX calibration has failed the host should reset the device */
    {
        _dbg_printf((unsigned char *)"CONFIG FAILED     ");
        while (1)
        { };
    }
    /* 配置DW3000发送频谱参数. Configure the TX spectrum parameters (power, PG delay and PG count) */
    dwt_configuretxrf(&txconfig_options);
    /* 配置DW3000发送频谱参数. Configure sleep and wake-up parameters. */
    dwt_configuresleep(DWT_CONFIG, DWT_PRES_SLEEP | DWT_WAKE_CSN | DWT_SLEEP | DWT_SLP_EN);
    /* 注册中断回调函数. Register the call-backs (only SPI ready callback is used). */
    dwt_setcallbacks(NULL, NULL, NULL, NULL, NULL, &spi_ready_cb);
    port_EnableEXT_IRQ();
    _dbg_printf("配置成功n");
    /* Loop forever sending frames periodically. */
    while (1)
    {
        /* DW3000进入休眠模式,唤醒后进入IDLE. Put DW IC to sleep. Go to IDLE state after wakeup*/
        dwt_entersleep(DWT_DW_IDLE);
        sleeping = 1;
        /* In this example, there is nothing to do to wake the DW IC up as it is handled by the sleep timer. */
        while (sleeping)
        {Sleep(1);}; /* Wait for device to wake up */
        /* 增加延时.必要*/
        Sleep(5);
                                if(KEY==0)
                                {
        _dbg_printf((unsigned char *)"唤醒成功:%04xn", dwt_readdevid());
        /* 唤醒时恢复所有配置. Restore the required configurations on wake */
        dwt_restoreconfig();
        /* Increment the blink frame sequence number (modulo 256). */
        tx_msg[BLINK_FRAME_SN_IDX]++;
                                        /* 写入待发送数据到DW3000准备发送,并设置发送长度. Write frame data to DW IC and prepare transmission. See NOTE 4 below. */
        dwt_writetxdata(sizeof(tx_msg), tx_msg, 0); /* Zero offset in TX buffer. */
        dwt_writetxfctrl(sizeof(tx_msg), 0, 0); /* Zero offset in TX buffer, no ranging. */
        /* 立即发送. Start transmission. */
        dwt_starttx(DWT_START_TX_IMMEDIATE);
        /* 查询DW3000是否发送成功. It is not possible to access DW IC registers once it has sent the frame and gone to sleep, and therefore we do not try to poll for TX
         * frame sent, but instead simply wait sufficient time for the DW IC to wake up again before we loop back to send another frame.
         * If interrupts are enabled, (e.g. if MTXFRS bit is set in the SYS_MASK register) then the TXFRS event will cause an active interrupt and
         * prevent the DW IC from sleeping. */
        /* Poll DW IC until TX frame sent event set. See NOTE 7 below.
         * STATUS register is 4 bytes long but, as the event we are looking at is in the first byte of the register, we can use this simplest API
         * function to access it.*/
        while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS_BIT_MASK))
        {};
        /* 清除发送完成事件. Clear TX frame sent event. */
        dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS_BIT_MASK);
                                }
    }
}

实验现象

将pb9直接接地时:

wKgZPGikGteAGxMrAABKpmIwSW054.webp

将pb9不接地时(接收端和发送端无输出):

wKgZO2ikGtiAcfHvAABEAO-KZdM26.webp

最后,欢迎大家来安信可论坛,笔者发布的原贴下一起交流讨论:

原贴地址

【BU03-Kit 测评】UWB 测距初体验--两点测距+校准

【BU03-Kit 测评】UWB KIT出厂固件功耗测试

【BU03-Kit 测评】UWB 使用SDK按键唤醒


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UWB
    UWB
    +关注

    关注

    32

    文章

    1191

    浏览量

    63075
  • 功耗测试
    +关注

    关注

    0

    文章

    18

    浏览量

    9749
  • 室内定位
    +关注

    关注

    30

    文章

    310

    浏览量

    37241
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    UWB3000F00-X1室内定位测距模块规格书

    UWB3000F00-X1室内定位测距模块规格书
    发表于 07-25 16:30 ?0次下载

    UWB - TDOA方案定位技术

    。 5、司法监狱:在监狱中,通过UWB定位系统,将定位标签集成至犯人定位腕带中,能够对服刑犯人进行实时监控,有效防止越狱、袭警等事件发生。 6、
    发表于 07-14 17:32

    UWB 定位测距

    指示、可通过拨码开关设置参数,包括标签还是基站的判别,地址的确定等。 应用场景 :室内定位、资产追踪、智能仓储等。 2、实物照 实物图片UWB测距定位
    发表于 05-12 09:36

    精准到厘米!安信可UWB定位模组,让室内管理更“聪明”

    模组 ,凭借其高精度、低功耗、易集成的优势,已经成功应用于智慧仓储、医疗管理、工业生产、智能办公等多个领域。 厘米级定位精度 :可支持双向测距(TWR)和到达时间差(TDoA)
    的头像 发表于 04-18 16:36 ?512次阅读
    精准到厘米!安信可<b class='flag-5'>UWB</b><b class='flag-5'>定位</b><b class='flag-5'>模组</b>,让<b class='flag-5'>室内</b>管理更“聪明”

    室内定位UWB系列模组,精度达到厘米级

    手机导航、无人驾驶汽车、智能家居,还是工业自动化等领域,定位技术变得不可或缺。然而,传统的定位技术往往受到环境、信号干扰等因素的影响,导致定位精度不高。 “UWB” 模块的出现,为解决
    的头像 发表于 03-26 15:07 ?506次阅读
    <b class='flag-5'>室内定位</b><b class='flag-5'>UWB</b>系列<b class='flag-5'>模组</b>,精度达到厘米级

    低成本、高精度:巍泰技术UWB信标定位系统,为室内定位降本增效

    目前,市场上主流的室内定位技术包括蓝牙信标、Wi-Fi定位、RFID、超声波定位以及UWB(超宽带)定位等。这些技术在精度、覆盖范围、部署成
    的头像 发表于 03-07 15:58 ?817次阅读
    低成本、高精度:巍泰技术<b class='flag-5'>UWB</b>信标<b class='flag-5'>定位</b>系统,为<b class='flag-5'>室内定位</b>降本增效

    UWB功耗蓝牙信道探测如何重塑定位技术 解锁精准定位

    对于室内定位服务来说,毫不费力就能找到势头强劲的市场增长。信息技术研究机构Gartner预测,到2030年, 该市场规模将达到550亿美元 。超宽带(UWB)和低功耗蓝牙(BLE)等
    的头像 发表于 12-11 11:09 ?1576次阅读
    <b class='flag-5'>UWB</b>低<b class='flag-5'>功耗</b>蓝牙信道探测如何重塑<b class='flag-5'>定位</b>技术 解锁精准<b class='flag-5'>定位</b>

    常见室内定位技术详解及其发展

    ?常见的室内定位技术主要包括红外线定位、超声波定位、射频识别(RFID)定位、超宽带(UWB定位
    的头像 发表于 11-15 18:09 ?1316次阅读

    UWB650模块室内定位实测演示#UWB定位

    UWB
    思为无线
    发布于 :2024年11月13日 16:37:28

    如何应对UWB室内定位信号被遮挡

    随着科技的不断发展,室内定位技术已经广泛应用于各个领域,如工厂、隧道、仓库、养老机构等。其中,超宽带(UWB)技术以其高精度、低功耗的特性在室内定位领域崭露头角。然而,在实际使用过程中
    的头像 发表于 11-01 11:25 ?942次阅读
    如何应对<b class='flag-5'>UWB</b><b class='flag-5'>室内定位</b>信号被遮挡

    UWB标签在室内定位中的优势

    随着物联网(IoT)和智能建筑的发展,室内定位技术变得越来越重要。超宽带(UWB)技术因其高精度、低功耗和抗干扰能力强等特点,在室内定位领域展现出巨大的潜力。 1. 引言
    的头像 发表于 11-01 10:52 ?835次阅读

    UWB模块的测距精度分析

    使用非常宽的频带(通常在500MHz以上)进行数据传输。UWB技术的优势在于其高时间分辨率,这使得它能够实现厘米级别的测距精度。UWB技术主要应用于室内定位、资产跟踪、汽车防撞系统等领
    的头像 发表于 10-31 13:52 ?1368次阅读

    UWB室内定位测距模块BU04,测距教程详解

    在现代物联网和智能设备的世界中,定位精度和数据传输速度是至关重要的指标。安信可BU04正是一款满足这些高要求的UWB模块。本文将带您详细了解BU04的测试方法。 BU04 是安信可
    的头像 发表于 10-22 14:28 ?1095次阅读
    <b class='flag-5'>UWB</b><b class='flag-5'>室内定位</b><b class='flag-5'>测距</b>模块BU04,<b class='flag-5'>测距</b>教程详解

    安信可UWB室内定位模块,BU03 测距说明教程

    基于 Decawave 的 DW3000 系列芯片设计的超宽带(UWB模组。BU03 集成了板载陶瓷天线,RF 电路,电源管理。BU03 可以用于双向测距、 TDOA 或 PDOA 定位
    的头像 发表于 10-10 10:28 ?1105次阅读
    安信可<b class='flag-5'>UWB</b><b class='flag-5'>室内定位</b>模块,BU03 <b class='flag-5'>测距</b>说明教程

    无线室内定位系统是通过什么技术实现的呢?

    无线室内定位系统作为现代科技的重要组成部分,广泛应用于智能家居、企业管理、医疗护理等多个领域。这些系统通过不同的技术手段实现高精度的室内定位,为用户带来便捷与高效。那么,无线室内定位系统究竟是通过哪些技术实现的呢?
    的头像 发表于 09-10 09:28 ?833次阅读
    无线<b class='flag-5'>室内定位</b>系统是通过什么技术实现的呢?