[STM32U5]

【STM32U599J-DK测评】TOF功能基础测试

[复制链接]
1423|2
手机看帖
扫描二维码
随时随地手机跟帖
HonestQiao|  楼主 | 2024-3-2 00:53 | 显示全部楼层 |阅读模式
在 STM32U599J-DK 开发板上,有一个TOF(Time‑of‑Flight and gesture-detection sensor)传感器,可以很方便的进行3维空间测距感知。
这篇评测分享,就基于该TOF传感器,进行3维空间测距相关的测试。

一、TOF基础知识了解
TOF 是一种绝对距离检测技术,即传感器发出经过调试的近红外光,遇物体后反射,传感器通过计算光线发射和反射时差或相位差,来换算被拍摄景物的距离,以产生深度信息。


首先,当使用红外进行测距的时候,基本原理如下:
1801965e1fa931f9e6.png
因为光速是已知的,通过发射端发射红外光线,再到从物体表面反射,再到接受端接收。
由于光速是已知的,所以可以根据反射回来的时间,计算测量的距离。

如果使用一个矩阵进行反射光线的检测,那么就可以测量一个区域的不同位置的距离,从而3维空间测距感知的功能。
例如下图:
9356465e1faf8b1382.png

TOF技术在AR/VR、自动驾驶、四轴飞行器等方面应用广泛,还有专门的TOF相机供机器视觉使用。

二、STM32U599J-DK开发板上的TOF传感器
开发板的TOF传感器,位于如下位置:
7365465e1fc884f939.png

其具体型号为:VL53L5CX,是意法半导体FlightSense产品系列中最先进的飞行时间 (ToF) 多区测距传感器,具有宽视野,能够测量4x4或者8x8多区测距。
它通过在垂直腔面发射激光器 (VCSEL) 上方使用DOE,将一个方形FoV投影到场景上。反射光随后由接收器透镜聚焦到SPAD阵列上。不同于传统的IR传感器,VL53L5CX利用意法半导体最新一代ToF技术,能够测量目标的绝对距离,而不受目标颜色或反射率的影响。该产品可提供高达400 cm的精确测距,并能以极快的速度 (60 Hz) 运行,是目前市场上速度最快的多区微型ToF传感器之一。

其具体资料,可以查看:https://www.st.com/zh/imaging-and-photonics-solutions/vl53l5cx.html
9350265e1fd73e6d0a.png



三、软件包支持
做为意法半导体FlightSense产品系列中最先进的飞行时间 (ToF) 多区测距传感器,自然是对其提供了充分的支持。
在STM32CubeMX中,通过安装X-CUBE-TOF软件包,就能够实现对其支持,并提供了演示代码,可以快速进行测试。

在STM32CubeIDE中,新建一个STM32U599J-DK的工程,然后进入STM32CubeMX,按照下面的步骤进行相关的安装和设置。

1. 在STM32CubeMX包管理中,安装X-CUBE-TOF1最新版本:
602165e1fe0de18fe.png
1677265e1fe2e0398c.png
7057665e1fe3244b0c.png

2. 选择TOF传感器支持
安装完成X-CUBE-TOF1后,点击进入传感器支持管理:
7510465e1fe6a25a80.png

参考下图,选择VL53L5CX相关的支持选项:
6149765e1fe71e89a6.png

点击OK完成后,就可以进入下一步进行设置

3. 设置TOF
再次点击X-CUBE-TOS1,进入设置,参考下图设置即可:
605065e1fec925024.png
因为是板载的传感器,所以只需要设置INT和LPN两个引脚即可,其他的在板子上已经做好处理了。

具体可以查看原理图:
8443765e1ffee251ab.png


从原理图也可以得知,这个TOF传感器和之前的温度传感器一样,连接到了I2C3,所以要选择对应的I2C3接口。
另外,要选择BSP UART要选择UART1,因为测试程序,会通过串口输出测量信息。

通过以上的设置以后,TOF传感器就配置好了,可以在程序中使用了。

四、代码完善
1. 自动生成的代码
在STM32CubeMX中设置完,自动生成代码后,代码中就会自动包含TOF调用的代码了:
5655865e200abdd791.png

2. GPIO设置
因为仅需要设置INT和LPN引脚,所以需要注释如下代码中的RST和EN的处理,否则编译会出错。
2668565e2010d5ef6d.png

3. 输出结果调整
默认的结果输出,在串口查看工具中,可能不能正常的显示,因为是做为xterm彩色输出的,默认只有亮绿色和亮红色,可以做一些修改,让其更加的完善。
具体如下:
3037465e20230cb5d1.png
在上面的代码中,定义了一个colors数组,其中有5中颜色可用。实际对应于距离(单位mm),取整(距离/100)。

然后应用定义的颜色数组:
6704765e20270df446.png

上面是测量在500mm以内,使用不同的颜色,500mm以上,使用绿色。
大家也可以根据自己的实际情况,来进行修改。

五、实际效果
1. 串口工具查看数据:
下载编译运行后,使用串口工具,可以直接查看到输出的结果数据:
771065e20333f2269.png

但是这个不停地刷新,结果一点都不直观。
因此,需要使用Putty或者MobaXTerm这样的终端工具来查看,才好看。

2. 串口终端工具查看结果:
我使用了MobaXTerm来进行连接:
142465e20362de117.png

连接后,具体效果如下:
888565e2038edf77a.png
在这个界面上,数据会原地刷新,方便查看实际结果。

使用s按键,可以启用信号和环境光检测:
913165e2052be5ac3.png

使用r按键,可以切换4x4和8x8区域检测:
7169465e205319d283.png

3. 实测效果:
如果将手指张开,放在传感器上方一定位置,能够得到如下的结果:
6551265e205e7ef67e.png

如果手指并拢,则得到如下的结果:
2486165e206059532b.png

如果手指微微打开,并斜着进入检测区域,则结果如下:
4634965e20666f3f3b.png

从上图可以看到,能够检测到3维空间内不同区域的目标距离,并使用不同的颜色呈现。

如果打开了信号和环境光检测,手掌在检测区域内移动,则结果如下:
1783565e206cfa19e4.png

六、总结
STM32U599J-DK上的TOF传感器能够实现8x8区域的检测,还能进行移动检测,而且速度还能达到60Hz,绝对是类似传感器中的王者级别。
上面的检测结果输出,仅仅是输出了原始的数据,还可以结合屏幕或者AI,进一步的进行结果的展示和分析,后续的评测,将会继续分享这方面的内容。

1050765e203873ce42.png

使用特权

评论回复
HonestQiao|  楼主 | 2024-3-2 09:03 | 显示全部楼层
补充2个动态效果图:
基础测试:
TOF_Test_1.gif

详细测试:
TOF_Test_2.gif

使用特权

评论回复
moticsoft| | 2024-3-3 21:48 | 显示全部楼层
这个有意思,先收藏,说不定啥时候用到

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

85

帖子

2

粉丝