测量 XW-HLR26-24G 微波雷达模块的性能测试
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测量 XW-HLR26-24G 微波雷达模块的性能测试相关的知识,希望对你有一定的参考价值。
简 介: 利用ESP32 MicroPython 模块中的UART1对于 雷达模块性能进行测试。验证了它的基本通信格式,能够读取对应的数据,它的数据更新速率为每秒钟4个测量数据。
关键词
: 雷达模块,ESP32
§01 微波雷达
对于 XW-HLR26-24G毫米波测距测速雷达传感器模块移动侦测传感器可调距离TTL输出 中的微波雷达进行功能测试。
1.1 接口定义
SW-HLR26
的接口如下图所示。这是对应的2mm
间距的PIN4
接口。
▲ 图1.1 XW-HLR26-24G微波雷达模块
1.2 测试电路板
利用 ESP32-S模块转接板设计与实现 中的ESP32
的UART
的UART1
对 XW-HLR26-24G
进行测试。
▲ 图1.2.1 ESP32-S 转接板的接口定义
1.2.1 ESP32串口测试
from machine import UART,Pin
import utime
led = Pin(5, Pin.OUT)
uart = UART(1, 115200)
while True:
led.on()
utime.sleep_ms(100)
led.off()
utime.sleep_ms(100)
uart.write(b'\\x55')
下面是测TXD1
输出信号。验证了:
- 这个管脚是
ESP32
的TXD1
输出信号; - 初始化的
115200
的波特率是正确的的;
▲ 图1.2.2 ESP32 TXD1管脚信号
1.3 连接ESP32与XW-HLR26-24G
1.3.1 信号连接
将XW-HLR26
与ESP32
连接。由于ESP32
工作电压为3.3V
。所以需要另外增加+5V
的工作电源。
▲ 图1.3.1 测试XW-HLR26模块的ESP32测试电路板
XW-HLR26
的串口具有 3.3V/5V
兼容的信号。
▲ 图1.3.2 XWS-HLR26 接口定义
1.3.2 初步测试
该模块施加+5V
工作电源。模块工作流大约:84mA
。
(1)模块上电信息
根据XW-HLR26
的使用手册可以知道模块上电后主动上报模块的版本号。使用示波器检测模块的TX
管脚,在上电后并没有看到任何发送的数据信号。同样在RX
管教也没有发送数据信号信息。
(2)读数信息
uart.write(b'\\x55\\x5a\\x02\\xD3\\x84')
utime.sleep_ms(50)
readb = uart.read(uart.any())
print(readb)
Test XW-HLR26.
5
b'U\\xa5\\n\\xd3\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\xd5'
1.4 通信测试
1.4.1 读取测试信息
def readXW():
uart.write(b'\\x55\\x5a\\x02\\xD3\\x84')
utime.sleep_ms(10)
readb = uart.read(uart.any())
distance = 0
speed = 0
gesture = 0
intensity = 0
if readb[0:3] != b'\\x55\\xa5\\n':
return distance,speed,gesture,intensity
print(readb)
distance = int.from_bytes(readb[4:6], 0)
speed = int.from_bytes(readb[6:8], 0)
intensity = int.from_bytes(readb[8:10], 0)
gesture = readb[10]
return distance,speed,intensity,gesture
d,s,i,g = readXW()
print(d,s,i,g)
1.4.2 测量范围
(1)查询雷达测量范围
def readRange():
uart.write(b'\\x55\\x5a\\x02\\xD5\\x86')
utime.sleep_ms(10)
readb = uart.read(uart.any())
print(readb)
readRange()
b'U\\xa5\\x0c\\xd5\\x00\\x01\\x00\\xc8\\x00\\xb4\\x00d\\x00\\xa0\\\\'
- 注意: 在上面的返回中,数据为12个,但在使用说明中,返回的数据应该是6个。
§02 更多测试
2.1 测试手臂前后移动
2.1.1 测量代码
from machine import UART,Pin
import utime
led = Pin(5, Pin.OUT)
uart = UART(1, 115200)
def readXW():
uart.write(b'\\x55\\x5a\\x02\\xD3\\x84')
utime.sleep_ms(10)
readb = uart.read(uart.any())
distance = 0
speed = 0
gesture = 0
intensity = 0
if readb[0:3] != b'\\x55\\xa5\\n':
return distance,speed,gesture,intensity
distance = int.from_bytes(readb[4:6], 0)
speed = int.from_bytes(readb[6:8], 0)
intensity = int.from_bytes(readb[8:10], 0)
gesture = readb[10]
return distance,speed,intensity,gesture
def readRange():
readb = uart.read(uart.any())
uart.write(b'\\x55\\x5a\\x02\\xD5\\x86')
utime.sleep_ms(2)
readb = uart.read(uart.any())
def setMaxRange():
uart.write(b'\\x55\\x5a\\x04\\xD6\\x01\\x00\\x8a')
utime.sleep_ms(10)
readb = uart.read(uart.any())
NUMBER = 256
dist = [0]*NUMBER
for ii in range(NUMBER):
d,s,i,g=readXW()
dist[ii] = d
print(dist)
while True:
led.on()
utime.sleep_ms(500)
led.off()
utime.sleep_ms(500)
2.1.2 测量结果
from headm import *
from tsmodule.tsstm32 import *
stm32cmd('COPY')
time.sleep(.1)
strall = [s for s in clipboard.paste().split('\\r\\n') if len(s) > 0]
strnum = array([int(s) for s in strall[-1].replace('[','').replace(']','').split(',')])
strnum[where(strnum == 65535)] = 100
printf(strnum)
plt.plot(strnum)
plt.xlabel("n")
plt.ylabel("Distance")
plt.grid(True)
plt.tight_layout()
plt.show()
▲ 图2.1.1 测量结果
从测量结果来看,可以看到XW-HLR26
反馈测量值的更新具有一定的周期。在连续读取数值的时候,大约2
个数据之后才有更新。这对应的大约022
秒。
▲ 图2.1.2 另外一次测量结果
测量 512
个数据,消耗 5.515
秒,对应每个数据大约时间10.77ms
。对应22
数据,大约消耗:237ms
。由此可以估计出雷达模块大约每秒钟更新 4
个数据。
※ 测试总结 ※
利用ESP32 MicroPython 模块中的UART1对于 雷达模块性能进行测试。验证了它的基本通信格式,能够读取对应的数据,它的数据更新速率为每秒钟4个测量数据。
■ 相关文献链接:
● 相关图表链接:
- 图1.1 XW-HLR26-24G微波雷达模块
- 图1.2.1 ESP32-S 转接板的接口定义
- 图1.2.2 ESP32 TXD1管脚信号
- 图1.3.1 测试XW-HLR26模块的ESP32测试电路板
- 图1.3.2 XWS-HLR26 接口定义
- 图2.1.1 测量结果
- 图2.1.2 另外一次测量结果
from machine import UART,Pin
import utime
led = Pin(5, Pin.OUT)
uart = UART(1, 115200)
def readXW():
uart.write(b'\\x55\\x5a\\x02\\xD3\\x84')
utime.sleep_ms(10)
readb = uart.read(uart.any())
distance = 0
speed = 0
gesture = 0
intensity = 0
if readb[0:3] != b'\\x55\\xa5\\n':
return distance,speed,gesture,intensity
distance = int.from_bytes(readb[4:6], 0)
speed = int.from_bytes(readb[6:8], 0)
intensity = int.from_bytes(readb[8:10], 0)
gesture = readb[10]
return distance,speed,intensity,gesture
def readRange():
readb = uart.read(uart.any())
uart.write(b'\\x55\\x5a\\x02\\xD5\\x86')
utime.sleep_ms(2)
readb = uart.read(uart.any())
def setMaxRange():
uart.write(b'\\x55\\x5a\\x04\\xD6\\x01\\x00\\x8a')
utime.sleep_ms(10)
readb = uart.read(uart.any())
NUMBER = 512
dist = [0]*NUMBER
starttime = utime.ticks_ms()
for ii in range(NUMBER):
for j in range(100):
d,s,i,g=readXW()
if d != 65535: break
dist[ii] = d
print(utime.ticks_ms() - starttime)
print(dist)
while True:
led.on()
utime.sleep_ms(500)
led.off()
utime.sleep_ms(500)
以上是关于测量 XW-HLR26-24G 微波雷达模块的性能测试的主要内容,如果未能解决你的问题,请参考以下文章