资料介绍
描述
我们做了一个 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) 无线连接、远程低数据速率应用以及雷达和成像系统,与现有的透明共存通讯系统。
传统无线电传输和 UWB 之间的显着区别在于,传统系统通过改变正弦波的功率水平、频率和/或相位来传输信息。UWB 传输通过在特定时间间隔产生无线电能量并占用大带宽来传输信息,从而实现脉冲位置或时间调制。通过编码脉冲的极性、其幅度和/或通过使用正交脉冲,也可以在 UWB 信号(脉冲)上调制信息。UWB 脉冲可以以相对较低的脉冲速率偶尔发送以支持时间或位置调制,但也可以以高达 UWB 脉冲带宽的倒数的速率发送。Pulse-UWB 系统已在超过 1 的通道脉冲速率下得到证明。
1.3 超宽带测距
UWB 无线电系统可用于确定各种频率下传输的“飞行时间”。当然,“飞行”的速度与光速一样,所以核心问题是如何查看“飞行”的时间,从而计算出距离。
距离 = 光速 * Tprot
对于最基本的系统,至少有2项:Device_A(称为A)和Device_B(称为B), 主要有2种测量方式:
- 单面双向测距
- 双面双向测距
1.3.1 单面双向测距
这是最基本的测量方法:
首先A发送消息(TX)并记录时间标记,B收到消息,记录时间标记,延迟(Treplay)后,B发送消息(TX)并记录时间标记时间标记,最后A收到消息,并有时间标记的记录。
然后是飞行时间:
由于 Tround 和 Treply 存储在同一个设备上,所以时间误差偏移;当然,A(eA) 和 B(eB) 之间存在误差,误差是:
也就是说,误差与 Treply 是线性的。所以这种方式并不普及,只适用于很短距离的测量。
1.3.2 双面双向测距
“单面双向测距”后,如果 A 再次反馈给 B,则为:
这种测量我们称为 3 消息模式。
在“单边双向测距”之后,如果 B 再次发起另一条消息和 A 反馈,则为:
这种测量我们称为 4 消息模式。
在 3 条消息模式或 4 条消息模式下,飞行时间计算如下:
第 2 步:使用 ESP32 UWB 进行室内定位
2.1 查看
在这个应用中,我们使用了 3 个 Makerfabs ESP32 UWB 模块,2 个模块作为 UWB 锚点,1 个作为 UWB 标签,在房间内移动。当标签获得其位置时,它会将其位置传输到设备(PC 浏览器、手机应用程序),以显示实时位置。
2.2 平面定向算法
假设所有三个 UWB 模块都处于相同的水平高度。UWB可以得到Tag和两个anchor的距离,再加上预先设置的两个anchor的距离,就可以得到一个三角形三边的长度。
两个点“AB”分别是两个锚点,“C”是标签点。“c”是两个anchor的距离,UWB会得到两个长度“a”和“b”。标签是“b”远离点“A”和“a”远离点“B”。
现在我们知道了三角形三边之间的距离,我们可以计算点“C”的坐标。
我使用余弦定律计算角度“A”的余弦:
我有勾股定理,它给了我角度“A”的正弦:
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)。
在 Windows cmd 中,使用“ipconfig”检查 PC 本地 IP。
并设置UWB工作在标签模式。
我使用了一个链表来存储检测到的锚点,它非常适合 UWB 的工作方式。链表的内容被转换成 JSON 格式。
得到的JSON字符串格式如下:
最后通过UDP协议每秒向PC发送一次数据。
标签代码位于: https ://github.com/Makerfabs/Makerfabs-ESP32-UWB/tree/main/example/IndoorPositioning/udp_uwb_tag
3.4 Python代码
一个简单的演示,用于计算标签的位置并以图形方式显示它。使用海龟绘制。
一开始想用Matplotlib,但是有点复杂。Turtle 很简单,但提供的功能很简陋。我自己添加了一些绘图功能来快速绘制线条、圆形、矩形等。
这是我的位置计算功能。
其实一开始我是用海伦公式计算坐标的,但是分不清三角形是锐角还是钝角。
demo的功能是接收通过UDP协议传输的标签的数据,计算出标签的位置并绘制在屏幕上。
第四步:室内定位测试
在所有 UWB 锚点和标签都编程 OK 后,首先我将两个 UWB 锚点放在桌子的两侧。
并在PC端运行Python程序。将 UWB 标签贴到移动电源上,等待它连接到房间里的 WiFi。Tag连接PC后,弹出图形界面。
移动UWB标签,在PC端可以实时监控标签位置:
- ESP32开源项目
- 基于ESP32的开源项目
- ESP32开源项目分享
- ESP32低成本板开源项目
- ESP32/STM32电源系统开源项目
- ESP32物联网小工具开源项目
- MINI型 UWB 室内定位开发模块电路图及PCB和源码开源
- 基于UWB、里程计和RGB-D融合的室内定位方法 14次下载
- UWB与蓝牙及RFID和WIFI的室内定位技术详细比较 40次下载
- 室内定位技术的应用领域详解 30次下载
- UWB超宽带室内定位系统的介绍和应用框图的详细资料概述 42次下载
- UWB超宽带室内定位和蓝牙室内定位介绍pdf资料下载 52次下载
- 室内定位方案哪家强?蓝牙网关显神通 1次下载
- 基于STM32的室内定位系统设计 37次下载
- CC2431的室内定位系统设计
- 一文介绍:UWB定位基站种类及选择 904次阅读
- 目前的室内定位算法有什么优势 751次阅读
- 九种室内定位技术概览 室内定位技术的原理和应用场景 1.9w次阅读
- UWB室内定位系统的优势与好处 2183次阅读
- 对于UWB技术基础详解 8.7w次阅读
- 蓝牙室内定位技术的特点优势及工作原理 1.3w次阅读
- WiFi、蓝牙、UWB常见的三种室内定位技术探讨 3881次阅读
- 蓝牙网关在室内定位是如何运用的 2580次阅读
- 探究基于RFID技术的室内定位方法 8345次阅读
- UWB定位技术与其他定位技术比较 6411次阅读
- 六种室内定位技术的优劣势分析 2.7w次阅读
- 室内定位技术有哪些_七大室内定位技术详解 5.2w次阅读
- 室内定位解决方案厂商有哪些_十大室内定位解决方案厂商汇总 2w次阅读
- 深度解析室内定位和室外定位技术 6.1w次阅读
- 介绍UWB技术的由来、优点、应用场景以及应用价值、发展中的问题 1.6w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多