还记得上次的VL6180评估板的试用吗?现在VL53L0面世了,这次让我们开始VL53L0评估板的试用吧,板子是X-NUCLEO-53L0A1,组合板是NUCLEO-F401RE,将两块板子插在一起,用USB连接电脑,会多一个F401盘符,然后下载X-CUBE-53L0A1固件,解压后找到Projects\Multi\Applications\VL53L0X\GestureDetect\Binary\VL53L0X_GestureDetect_F401.bin,这是手势检测的固件,将bin文件复制到F401盘符中,这样程序就烧录好了,不断的按板子上蓝色的用户按钮可以切换功能,功能展示如下: 手势高低移动检测:
手势前后移动检测:
手势左右滑动检测:
接下来将Projects\Multi\Examples\VL53L0X\RangingWithSatellites\Binary\VL53L0X_Ranging_F401.bin文件复制到盘符中,这是芯片测距和多VL53L0通信的固件,功能展示如下:
一路I2C与多芯片通信:
高精度模式,测距达1.2M:
高速度模式,测距达2M:
除此之外VL53L0还有专门GUI软件,这是配置和显示相关数据的软件,方便开发者快速了解芯片性能,可将距离在示波器中显示出来,更多功能详见手册。软件界面如下:
总结:VL53L0较上一代VL6180最大的特色就是测距距离达到了2m,这样芯片的应用范围就扩大了不少,实测在精确测距模式下误差不超过1CM,却有些滞后;高速模式下1.2m以内测距误差也不超过1CM,超过1.2m准确度就有点扯了,数值跳动且偏小,最远可达到2米;算法上和VL6180一样具有姿态检测,实测还是比较准的,在一些简单的场合中说不定可以用得到;上手方面较上一代多了桌面版的GUI,方便配置和了解芯片性能,相关的API函数和例程也是齐全;功能上VL53L0阉割掉了亮度检测功能。
总的来说这款芯片还是相当不错的,低功耗、小体积、高精度、高速度、IIC总线模式这些特点在短距离测距的市场定会杀出一片天地。听说ST还有计划推出VL53L1、VL53L2测距距离将会达到300cm、400cm,真是非常期待呀!
你好,看了你的测评,很详细;有个问题请教,手势的左右、前后移动是通过两个VL53L0实现的么?还是一个VL53L0就可以完成呢?
请问:
VL53L0是激光测距的,那它是仅能实现一路检测,还是可以范围检测?
比如,我想在一个平面上的0-90度范围内检测物体的距离,它可以吗?
是一路检测,如果需要这样在一个范围内扫描距离的话可以旋转,不过不能使用VL53L0旋转,这个传感器是测的一个角度内的物体的平均距离,并不是点对点的,如果想不动检测一个面可以采用Kinect或者realsence或者小米扫地机器人的LDS激光测距传感。
请问一下,VL53L0X只能测出一个距离吗?能拿到多个数据吗?比如16*16范围的距离?
请问版主,手势前后移动检测:手势高低检测:这个调用哪个api来完成的?我看它的文档没有提到这个东西啊!还望版主指点一下
是的,只能测出一个距离,他测出的是一个小角度扇形里面的平均距离,不知你听懂没。
这个前后手势检测使用的是它的库文件,应该不开源,不过API接口还是有的,你可以在代码里面找找。
我大概知道了,就是它发射的激光是扇形圆锥状的,给我们的结果只是一个整形数值,这样理解对吗?
刚入手 咨询几个问题,望解惑:
1.datasheet里面给的I2C地址是0x52,例程里面为什么是0x29?
2.这个芯片有寄存器说明吗?比如那几个寄存器读出来的是距离?数值与距离是怎么对应的?
比如例程里面这个,怎么知道这12个数代表什么意思呢?
read_block_data_at(0x14, 12);
uint16_t acnt = makeuint16(gbuf[7], gbuf[6]);
uint16_t scnt = makeuint16(gbuf[9], gbuf[8]);
uint16_t dist = makeuint16(gbuf[11], gbuf[10]);
byte DeviceRangeStatusInternal = ((gbuf[0] & 0x78) >> 3);
1. 这个你可以了解下IIC读写地址的关系,通常有下面的关系:
I2C设备的写地址 = I2C设备地址 << 1
I2C设备的读地址 = (I2C设备地址 << 1) + 1
2. 这个芯片没有寄存器说明了,他的上一代VL6180是有的,现在ST提倡使用库函数了,只提供了API接口函数,从某种程度上来说也是简化了开发。所以你说的哪个寄存器读出距离这个是找不到的,只能找到测距的API函数,你可以参考例程找出对应的API使用就好了,ST的软件结构层次是写相当不错的,只需要根据不同的MCU修改IIC的接口,就可以使用了。
恩,他的所有的底层函数的寄存器都是用的数字了,也完全不知道含义,不过作为用户来讲,只要能得出距离值就好,管他什么寄存器呢。
你好,看了你的测评,很详细。有个问题请教,手势的左右、前后移动检测,是通过两个VL53L0完成的么?还是一个VL53L0就可以实现呢?