测量 XW-HLR26-24G 微波雷达模块的性能测试

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测量 XW-HLR26-24G 微波雷达模块的性能测试相关的知识,希望对你有一定的参考价值。

简 介: 利用ESP32 MicroPython 模块中的UART1对于 雷达模块性能进行测试。验证了它的基本通信格式,能够读取对应的数据,它的数据更新速率为每秒钟4个测量数据。

关键词 雷达模块ESP32

微波雷达 目 录
Contents
接口定义 测试电路板 连接ESP32与XW-HLR26-24G 通信测试 更多测试 测试手臂前后移动 测试总结

 

§01 波雷达


  XW-HLR26-24G毫米波测距测速雷达传感器模块移动侦测传感器可调距离TTL输出 中的微波雷达进行功能测试。

1.1 接口定义

  SW-HLR26的接口如下图所示。这是对应的2mm间距的PIN4接口。

▲ 图1.1 XW-HLR26-24G微波雷达模块

1.2 测试电路板

  利用 ESP32-S模块转接板设计与实现 中的ESP32UARTUART1XW-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输出信号。验证了:

  • 这个管脚是ESP32TXD1 输出信号;
  • 初始化的115200的波特率是正确的的;

▲ 图1.2.2 ESP32 TXD1管脚信号

1.3 连接ESP32与XW-HLR26-24G

1.3.1 信号连接

  将XW-HLR26ESP32连接。由于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个测量数据。


■ 相关文献链接:

● 相关图表链接:

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 微波雷达模块的性能测试的主要内容,如果未能解决你的问题,请参考以下文章

微波存在感应雷达,人体存在感应雷达模块,物联网智能赋能应用

灵动的微波雷达模块初步分析

物联网领域存在感应雷达应用,微波雷达传感器技术

自动驾驶中,最关键的传感检测技术都有哪些?

激光雷达应用领域

激光雷达应用领域