基于ST ToF VL53L1X 人脸识别门禁测温系统方案

面对突如其来的疫情,各行各业都在努力用专业为战“疫”助力。体温测量和人员追踪是此次防控疫情的重要手段。随着各地陆续复工,写字楼、园区等上班场所为测体温排起长队的现象多有出现。如何既能完成体温排查,又能减少对人们正常工作生活的影响,以及避免因排队测温引起的病毒传播风险,成为社会复工过程中的一个重要需求。
ST ToF VL53L1X产品助力人脸门禁测温系统,该方案ToF主要工作目的是,上报被测人脸和热电堆传感器的距离,以便算法对热电堆传感器精度的衰减进行温度补偿,这样能大大提高体温的测量精确度。虽然ToF的代码里面能够返回的不仅仅是距离的数据,还有返回的光子量以及环境光干扰,但是对于大部分产品的应用来说,都是需求ToF的测量距离,本方案也是需求ToF的测距数据,然后根据被测量人脸的距离用算法来对温度进行补偿,温度的检测一般都是有一定的衰减,只有通过算法的加持,才能保证产品的精确度。

本方案主要是介绍ToF VL53L1X产品的应用,下面我们对ToF的原理技术、代码流程做一个简单的介绍。

VL53L1X是基于意法半导体专利FlightSense™技术的第三代激光测距传感器,是最先进的飞行时间(ToF)激光测距传感器,丰富了ST 的FlightSense™产品系列,可在有挑战性的操作环境下提供最佳的测距性能,即使传感器部署在一个深色保护盖板后面。它包含一个SPAD(单光子雪崩二极管)感应器阵列、一个基于人体一级安规VCSEL(垂直腔面发射激光器)的集成的940nm不可见光源、以及一个低功耗嵌入式微控制器。该新一代传感器的SPAD阵列上集成了一个镜头,可测量高达4米的距离,可在有挑战性的操作环境下提供最佳的测距性能,即使传感器部署在一个深色保护盖板后面。

模块系统框图:

与传统的IR传感器不同,VL53L1X使用ST专有的FlightSense™技术,确保了在任何目标颜色和反射率时的绝对距离测量。它还能通过对接收阵列上感兴趣区域(ROI)的大小和位置编程来降低传感器视场角(FoV)。VL53L1X设备接收器传感阵列由16x16 SPADs(单光子雪崩二极管)组成,全对角线视场角FoV是27°,用户可以通过软件来自行选择,但是最小的ROI配置为4x4 SPADs。一般应用场景如果不是因为障碍物干扰了FoV与被测物,都不建议客户去更改FoV,因为减小FoV会影响ToF测距性能,例如用17% 的灰卡作为被测物,设置4x4 SPADs,那只能测45cm左右的距离了。
接收阵列感兴趣区域(ROI) :


调整FoV相关代码参考:


下面我们对ToF的整个测距流程结合代码进行分析,首先我们先看一下整体的测距流程框图:

一:等待device boot 就绪,VL53L1_WaitDeviceBooted() 函数的作用是确保设备已经启动并准备就绪;
二:DataInit,调用VL53L1_DataInit()函数,在这个函数里可以根据设计电路、应用需求进行配置:
            如:默认的IOVDD供电电压为1.8v,如果采用2.8v的供电方式,那需要在此选择2V8 power mode 代码部分;还有对VL53L1_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE和           VL53L1_CHECKENABLE_SIGMA_FINAL_RANGE的阈值进行设置,SIGNAL是计算距离值的最少光子数目量,单位是MCps;SIGMA是对测量结果标准差的估计,单位是mm。如果SIGNAL或SIGMA超出了限制,则将测距标记为无效。



三:StaticInit,加载设备设置;



四:设置测距模式,调用VL53L1_SetDistanceMode函数,有三个模式可以配置,短距离,中距离和长距离,用户可以根据应用的不同,选择对应的模式。Short模式测距能力在130cm左右, Medium模式测距能力在300cm左右, long 模式测距能力在400左右,这里设置的是long 模式。



五:Timing Budget设置,调用函数VL53L1_SetMeasurementTimingBudgetMicroSeconds。Timing Budget是用户执行一次范围测量所分配的时间,一般来说Timing Budget设置长点,对于测量数据越精确。



六: Inter measurement budge设置,inter measurement是两次测距操作之间的延迟。inter-measurement最小值必须大于Timing Budget +4毫秒。如果不满足这个条件VL53L1_StartMeasurment函数将返回一个错误代码(VL53L1_ERROR_INVALID_PARAMS)。



七:调用VL53L1_StartMeasurement()函数来启动测量,测量模式包括轮询和中断模式,从代码中可以看出,打印出的数据包括:RangeStatus、RangeMilliMeter、SignalRateRtnMegaCps、AmbientRateRtnMegaCps。RangeStatus含义是当前数据的状态,根据返回值来判断测量的数据有效性,以及其它的FAIL项目;RangeMilliMeter代表毫米级的测量数据;SignalRateRtnMegaCps代表返回的光子量数目;AmbientRateRtnMegaCps代表的是环境光干扰的光子量数据。



八:下面是串口打印出的四组RangeStatus、RangeMilliMeter、SignalRateRtnMegaCps、AmbientRateRtnMegaCps信息:



另外还有要注意的是,虽然每颗芯片ST在出厂的时候都已经做过校准,但是由于我们在应用的时候有增加保护盖,以及产线焊接造成的一些干扰,那如果对测量的精度有一定的要求,那需要我们对整机产品出厂时做相关校准,包括 RefSPAD, offset 和 crosstalk的校准;
对于进行存在性检测,可基于阈值和中断设定,启动自动低功耗模式,它能调整节省系统功耗,当检测到人或物体时自动关闭或唤醒主机。VL53L1X具有完整的文档包,例如源代码和软件API(应用编程接口),它与一系列微控制器和处理器兼容。X-NUCLEO扩展板、卫星板和相关的开发生态系统使得应用软件开发和向系统集成变得非常容易。

场景应用图

sceneryUrl

产品实体图

imgUrl