测量 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')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
下面是测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)
- 1
- 2
- 3
- 4
- 5
Test XW-HLR26.
5
b'U\xa5\n\xd3\xff\xff\x00\x00\x00\x00\x00\x00\xd5'
- 1
- 2
- 3
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
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
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()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
b'U\xa5\x0c\xd5\x00\x01\x00\xc8\x00\xb4\x00d\x00\xa0\\'
- 1
- 注意: 在上面的返回中,数据为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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
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()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
▲ 图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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。
原文链接:zhuoqing.blog.csdn.net/article/details/122809135
- 点赞
- 收藏
- 关注作者
评论(0)