电子发烧友App

硬声App

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

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

3天内不再提示
电子发烧友网>电子资料下载>电子资料>ESP32 UWB室内定位测试开源项目

ESP32 UWB室内定位测试开源项目

2023-06-14 | zip | 0.00 MB | 次下载 | 免费

资料介绍

描述

我们做了一个 ESP32 UWB 室内定位测试,使用 2 个 UWB 锚点和 1 个 UWB 标签,当标签移动时,UWB 标签的实时位置可以图形显示在 PC 上。

补给品

● ESP32 超宽带 *3

● 移动电源

● 5v电源*2

第 1 步:概述

1.1 介绍

DW1000 是世界上第一款基于超宽带技术的单芯片无线收发器它为实时定位和室内定位系统、基于位置的服务、无线传感器网络提供了一种新方法。它能够开发具有成本效益的 RTLS 解决方案,其室内和室外定位精确到 10 厘米以内。

Makerfabs ESP32 UWB基于 ESP32 和 DW1000 解决方案,它就像一个连续扫描雷达,精确锁定另一个设备并与之通信,从而计算自己的位置,配合 ESP32 WiFi/蓝牙,它可能是无线解决方案室内定位。

1.2 关于超宽带

超宽带是一种在宽带宽(>500 MHz)上传输信息的技术。这允许传输大量的信号能量,而不会干扰相同频带中的传统窄带和载波传输。许多国家/地区的监管限制允许有效使用无线电带宽,并实现高数据速率个人区域网络 (PAN) 无线连接、远程低数据速率应用以及雷达和成像系统,与现有的透明共存通讯系统。

pYYBAGNY3xuAe2FTAAA7iLkfxxc431.jpg
 

传统无线电传输和 UWB 之间的显着区别在于,传统系统通过改变正弦波的功率水平、频率和/或相位来传输信息。UWB 传输通过在特定时间间隔产生无线电能量并占用大带宽来传输信息,从而实现脉冲位置或时间调制。通过编码脉冲的极性、其幅度和/或通过使用正交脉冲,也可以在 UWB 信号(脉冲)上调制信息。UWB 脉冲可以以相对较低的脉冲速率偶尔发送以支持时间或位置调制,但也可以以高达 UWB 脉冲带宽的倒数的速率发送。Pulse-UWB 系统已在超过 1 的通道脉冲速率下得到证明。

1.3 超宽带测距

UWB 无线电系统可用于确定各种频率下传输的“飞行时间”。当然,“飞行”的速度与光速一样,所以核心问题是如何查看“飞行”的时间,从而计算出距离。

距离 = 光速 * Tprot

对于最基本的系统,至少有2项:Device_A(称为A)和Device_B(称为B),  主要有2种测量方式:

  • 单面双向测距
  • 双面双向测距

1.3.1 单面双向测距

这是最基本的测量方法:

poYBAGNY3x2AIdjlAAAr4RIGGNA695.png
 

 

 
pYYBAGNY3yKAesUwAAAAbBl6Af8147.png
 

首先A发送消息(TX)并记录时间标记,B收到消息,记录时间标记,延迟(Treplay)后,B发送消息(TX)并记录时间标记时间标记,最后A收到消息,并有时间标记的记录。

然后是飞行时间:

pYYBAGNY3ySAE8MYAAAKFJJ7FtA774.png
 

由于 Tround 和 Treply 存储在同一个设备上,所以时间误差偏移;当然,A(eA) 和 B(eB) 之间存在误差,误差是:

pYYBAGNY3yaABPWFAAAOjha3lgw043.png
 

也就是说,误差与 Treply 是线性的。所以这种方式并不普及,只适用于很短距离的测量。

1.3.2 双面双向测距

“单面双向测距”后,如果 A 再次反馈给 B,则为:

pYYBAGNY3yiAINcJAABQceLkOyQ488.png
 

这种测量我们称为 3 消息模式

在“单边双向测距”之后,如果 B 再次发起另一条消息和 A 反馈,则为:

pYYBAGNY3yuAb7M4AABgDEsoWrk151.png
 

这种测量我们称为 4 消息模式

在 3 条消息模式或 4 条消息模式下,飞行时间计算如下:

pYYBAGNY3y-AOhSgAAAaZOgkZ-w602.png
 

 

pYYBAGNY3zKAXh2mAAAhOoe-oog688.png
 

第 2 步:使用 ESP32 UWB 进行室内定位

2.1 查看

在这个应用中,我们使用了 3 个 Makerfabs ESP32 UWB 模块,2 个模块作为 UWB 锚点,1 个作为 UWB 标签,在房间内移动。当标签获得其位置时,它会将其位置传输到设备(PC 浏览器、手机应用程序),以显示实时位置。

pYYBAGNY3zSALSbtAABSrP8sKio860.jpg
 

2.2 平面定向算法

假设所有三个 UWB 模块都处于相同的水平高度。UWB可以得到Tag和两个anchor的距离,再加上预先设置的两个anchor的距离,就可以得到一个三角形三边的长度。

pYYBAGNY3zeAaRq1AAAYQn4eLxg681.png
 

两个点“AB”分别是两个锚点,“C”是标签点。“c”是两个anchor的距离,UWB会得到两个长度“a”和“b”。标签是“b”远离点“A”和“a”远离点“B”。

现在我们知道了三角形三边之间的距离,我们可以计算点“C”的坐标。

我使用余弦定律计算角度“A”的余弦:

pYYBAGNY3zmAJyo9AAAHnIkoZ0Y504.jpg
 

我有勾股定理,它给了我角度“A”的正弦:

pYYBAGNY3zuAboSGAAAHZfJyw3A193.png
 

cos_a = (b * b + c * c - a * a) / (2 * b * c) sin_a = sqrt(1 - cos_a * cos_a)

如果我们将点“A”设置为坐标系的原点 (0, 0),那么我们得到点 C (bcosα, bsinα)。

第 3 步:代码解释

3.1 图书馆

我们使用 arduino-dw1000库。提供基本功能的库,可将 Decawave 的 DW1000 芯片/模块与 Arduino 一起使用(arduino-dw1000 库)

请注意根据 Github 修改 DW1000 库,否则无法编译为 ESP32。ESP32 UWB GitHub 上的指南 

***此应用程序的完整代码位于:  Makerfabs GitHub ***

3.2 Device_Anchor

由于系统中有 2 个锚点,我们需要为这两个锚点设置不同的锚点地址。

#define ANCHOR_ADD "83:17:5B:D5:A9:9A:E2:9C"// modify the address when multiple anchors, such as 83/82.

该库默认使用随机短地址,我们需要将其设置为使用我们设置的静态地址。所以我们需要将UWB模块设置为Anchor模式,LONGDATA_RANGE_LOWPOWER模式,并关闭随机短地址,通过以下代码:

DW1000Ranging.startAsAnchor(ANCHOR_ADD,
DW1000.MODE_LONGDATA_RANGE_LOWPOWER, false);

Anchor 代码位于:  https ://github.com/Makerfabs/Makerfabs-ESP32-UWB/tree/main/example/anchor

3.3 Device_Tag

标签需要读取两个锚点之间的距离,通过UDP协议发送给PC。

首先,设置 WiFi 和目标 IP 地址(PC)。

pYYBAGNY3z-AYRXzAAAex7iXnpA456.png
 

在 Windows cmd 中,使用“ipconfig”检查 PC 本地 IP。

pYYBAGNY30GAN9vsAADEq9YJi_8000.png
 

并设置UWB工作在标签模式。

poYBAGNY30SAAe92AAAn9gKDmbw973.png
 

我使用了一个链表来存储检测到的锚点,它非常适合 UWB 的工作方式。链表的内容被转换成 JSON 格式。

得到的JSON字符串格式如下:

pYYBAGNY30aAPAfpAAAXfcmJYBU980.png
 

最后通过UDP协议每秒向PC发送一次数据。

poYBAGNY30iABD4QAAAwWMpazf0895.png
 

标签代码位于:  https ://github.com/Makerfabs/Makerfabs-ESP32-UWB/tree/main/example/IndoorPositioning/udp_uwb_tag

3.4 Python代码

一个简单的演示,用于计算标签的位置并以图形方式显示它。使用海龟绘制。

一开始想用Matplotlib,但是有点复杂。Turtle 很简单,但提供的功能很简陋。我自己添加了一些绘图功能来快速绘制线条、圆形、矩形等。

pYYBAGNY302AXpvrAABuOVSm-gI285.png
 

这是我的位置计算功能。

pYYBAGNY30-AE8vMAABEAd_5Jzw850.png
 

其实一开始我是用海伦公式计算坐标的,但是分不清三角形是锐角还是钝角。

demo的功能是接收通过UDP协议传输的标签的数据,计算出标签的位置并绘制在屏幕上。

第四步:室内定位测试

在所有 UWB 锚点和标签都编程 OK 后,首先我将两个 UWB 锚点放在桌子的两侧。

poYBAGNY31GAFaFPAAGYu0BcKsw423.png
 

并在PC端运行Python程序。将 UWB 标签贴到移动电源上,等待它连接到房间里的 WiFi。Tag连接PC后,弹出图形界面。

pYYBAGNY31SAXlJ0AACW6uWP044187.png
 

移动UWB标签,在PC端可以实时监控标签位置:

pYYBAGNY31qAVBlfAABwYi3GMiE713.jpg
 

 

pYYBAGNY31yAaAsTAABqLOMztns887.jpg
 

 


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费