1. 引言
自2019年12月以来,新冠逐步出现在人们视野中,随后以摧枯拉朽之势席卷全球。从2020年1月19日COVID-19 (新冠病毒)爆发到2021年12月24日晚,全球新冠肺炎的累计确诊人数已经达到了279,260,158例,并且确诊人数还在不断增加。而目前市面上多是以口罩、消毒酒精等产品来进行防疫工作,还没有针对疫情控距方面的个人产品出现。
通过资料的收集与整理,我们发现了目前有一家利用超声波测距原理制作社交距离保持器的公司“奥迪威” [1]。我们以该公司为例,这家公司是以敏感元器件和传感器及相应模组的研究、设计、生产和销售为主营业务的高新技术企业,是细分行业领先的传感器元器件及解决方案的提供商。但是他们的产品存在价格昂贵、不易携带以及功能性单一的缺点,无法成为疫情防控状态下的有效防疫手段。而本系统的设立目的是打造一款便携式距离传感器,可实时监测用户与人群之间的距离并及时做出有效提醒,以更加低廉的成本达到科学抗疫的目标。虽然在国内外暂未发现相同定位的设计方案,但如“奥迪威”般定位于其他领域的类似应用仍然能够为本系统的设计提供一些参考意义。
基于当前国内外疫情形势依旧紧张棘手,保持距离成为有效避免疫情持续扩散的一种方式,文中提出并实现了一款距离监测系统。这套系统能够有效监测到用户与其他人之间的直线距离并在距离缩短至一定程度时给予告警措施,用于疫情防控常态化下解决人们在社交中对保持安全距离缺乏主动意识的问题,利用开源科技助力科学抗疫。
2. 总体设计
2.1. 系统总体原理
系统采用TOF距离传感器测量环境中其他人与用户相隔的距离,以Seeeduino XIAO控制器主板为控制中心,当周围环境中的人群与用户距离达到或者超过设定阈值时,系统就会进行蜂鸣器报警。
本设计根据系统建设需要,设定报警情况的阈值,当超过这个值的时候,就会给予相应的告警。本文将设计TOF距离传感器,主要负责监控公共活动空间或指定环境中的人群与用户之间的距离。TOF距离传感器(VL53L0X)上有两个孔,一个是VCSEL激光发射孔,一个是SPAD激光检测阵列的孔。它采用940 nm垂直腔面发射激光器发射出激光,激光碰到障碍物后反射回来被VL53L0X接收到,测量激光在空气中的传播时间,进而得到物体相隔距离 [2]。激光的飞行时间属于采集到的模拟信号,传感器可以对它进行加工和转换成数字信号,传送到主控板中储存起来,为后期工作提供数据源。经过相关程序进行计算,可以得到相应的距离值,距离值与前面设定的阈值进行直接比较后,做出是否报警的结果输出。在本设计中考虑到疫情的安全传播距离,我们将1 m设置成该系统的阈值,将这个阈值写入到程序当中,超出阈值则蜂鸣器预警。
通过智能测距以及内置蜂鸣器来即使提醒人们保持疫情期间的安全距离,解决了部分人群对保持距离这一行为的忽略。本产品主要采用物联网技术,软硬件结合,多模块联合,专门针对大众设计的距离提醒、洗手提醒和戴口罩提醒等功能,能够为各个年龄段人群所使用,不含任何副作用,在为用户提供最好的产品体验的同时也能够保证人的身体健康。
2.2. 硬件模块主要功能
1) 采用TOF距离传感器,通过阵列激光,判断人与人之间的距离。
2) 通过温度传感器将用户的温度上传,来检测用户是否发烧。
3) 内置蜂鸣器,可以根据用户设定,定时提醒用户洗手,更换口罩,保持人与人之间的距离。
2.3. 软件模块主要功能
1) 通过震动和APP铃声提示来提醒用户及时更换新的口罩。
2) 因为目前疫情存在环境传染,所以可以通过APP提示音和手机震动提醒用户在经过人流量比较大的地段以后洗手。
3) 根据用户设定,改变硬件端的工作模式,提醒的间隔时间。
3. 硬件部分选型
硬件端主要包含微控制器、各类传感器、电池以及通信模块。本产品的整体可以依照物联网的体系架构分为四大层次,其中,微控制器以及各类传感器工作在感知层,通信模块工作在网络层。通信模块可以向工作在平台层的服务器发送各类数据。如图1所示为本项目部分硬件连接图。
3.1. 主要硬件清单
Seeeduino XIAO × 1
Grove-LED Pack × 1
Grove振动器 × 1
Grove-ToF距离传感器(VL53L0X) × 1
3.2. 主控板选型
本系统定位于智慧医疗领域,目的是为了能快速精确地测量出距离值并将其与预设阈值进行直接比较将该情况上传至预警中心,便于用户做出一些防范措施。因此,在进行主控板的选型时,应当注意其功耗和体积等与应用场景密切相关的性能。
结合本系统主控板应当具有的性能,选出了两款主控板进行对比,分别是Seeeduino XIAO和Arduino Nano。表1中结合Seeeduino以及Arduino官方公布的Seeeduino XIAO和Arduino Nano的相关参数进行了对比。
Table 1. Comparison table of relevant parameters between Seeeduino XIAO and Arduino Nano
表1. Seeeduino XIAO和Arduino Nano的相关参数对比表
结合表1所展示的参数,Seeedino XIAO的大部分性能都优于Arduino Nano,结合本产品的应用场景来看,数据的传输速度以及微小尺寸是系统所需要的。因此本项目选择Seeeduino XIAO作为主板。Seeeduino XIAO是Seeed Studio的新产品,是目前市面上可以找到的尺寸最小的控制器主板,可以灵活运用于各个场景,特别是可穿戴设备和小型项目 [3],符合此项目的尺寸要求。如图2所示为Seeeduino XIAO主板。
Figure2. Seeeduino XIAO control board
图2. Seeeduino XIAO主控板
Seeeduino XIAO它被认为是目前最小的主控板(20 × 17.5 mm),相比于常见且也较小的ESP32/8266主控板,该主控板只有其三分之一的大小 [4],它使用了功能强大却低功耗的微控制器——Microchip公司的ATSAMD21G18A-MU,意味着该小板在处理方面具有良好的性能,但需要的功率更少。基于ARM Cortex M0+架构,可实现最高48 MHz的主频,芯片自带256KBFlash和32KBSRAM。其无论是大小,功耗,还是芯片的处理速度作为本产品的主控制器都绰绰有余。
3.3. 传感器选型
硬件端的另一个重要组成是距离传感器,本系统中距离传感器主要需要实现的功能为快速准确地测量出用户与人群之间的距离,因此,TOF距离传感器更加适合本系统,其内部的主要器件为红外发射器及红外探测器。TOF距离传感器相比于其他距离传感器相比对反射物体要求较低、更加灵活且成本更加低廉的同时,具有测距精度高、测距远、响应快、功耗低等优点。其测量距离能够达到20 cm~4 m,工作电压的要求为直流2.6 V到5 V,唯一的缺点是可能受到光源的影响。TOF距离传感器外形结构如图3所示。它拥有一个发射端和一个接收端,TOF测距方法属于双向测距技术,它主要利用信号在两个异步收发机之间往返的飞行时间来测量节点间的距离 [5]。TOF距离传感器用于检测到物体的距离,通过接收由物体反射的辐射,该辐射来自利用调制频率调制的发射源,具有像素矩阵,用于记录像素图像。该传感器能够快速的判断人与人之间的距离,从而提醒用户注意控制安全距离。
VL53L0X (4.4 × 2.4 × 1.0 mm)是新一代飞行时间激光测距模块,采用目前市场上最小的回流焊封装,无论目标反射率如何,都能提供精确的距离测量。如图4所示为VL53L0X芯片封装图,它可以测量2 m的绝对距离,为测距性能等级设定了新的基准,为各种新应用打开了大门 [6]。VL53L0X集成了一个领先的SPAD阵列(单光子雪崩二极管),并内嵌ST的第二FlightSenseTM专利技术,不到30 ms即可提供最长2米的绝对距离读值,快速模式下可实现50 Hz快速测距操作,精确度控制在±3%范围内,正常工作模式下功耗仅20 mW,待机功耗只有5 µA。VL53L0X的940 nm VCSEL发射器完全不为人眼所见,加上内置的物理红外滤光片,使其测距距离更长,对环境光的免疫性更强,对盖片的光学串扰具有的好的稳定性 [6]。
Figure 4. Package diagram of VL53L0X chip
图4. VL53L0X芯片封装图
4. 软件系统及产品外壳设计
4.1. 软件工具
ArduinoIDE
Android Studio
4.2. 软件功能介绍
本项目的软件部分的功能主要为通过APP的铃声和震动来提醒用户及时更换新的口罩。因目前环境受到疫情的污染,所以可以通过APP的铃声来提醒用户在经过商场地铁站等人多聚集的地方洗手,本软件还可以设置相应的硬件工作模式,来控制提醒的间隔时间。
4.3. 软件设计
软件设计主要流程图如图5和图6所示:
Figure 5. VL53L0X ranging failure flowchart
图5. VL53L0X测距失败流程图
Figure 6. VL53L0X ranging judgment flow chart
图6. VL53L0X测距判断流程图
下面是Seeeduino XIAO结合VL53L0X对距离的判断的核心代码:
1) if(VL53L0X_ERROR_NONE != Status)
2) {
3) SERIAL.println( start vl53l0x mesurement failed!); VL53L0X.print_pal_error(Status);
4) while(1);
5) }
6)
7) void loop
8) {
9) VL53L0X_RangingMeasurementData_t RangingMeasurementData;
10) VL53L0X_Error Status = VL53L0X_ERROR_NONE;
11) memset(&RangingMeasurementData,0,sizeof(VL53L0X_RangingMeasurementData_t));
12) Status = VL53L0X.PerformSingleRangingMeasurement(&RangingMeasurementData);
13) if(VL53L0X_ERROR_NONE==Status)
14) {
15) if(RangingMeasurementData.RangeMilliMeter >= 2000)
16) {
17) SERIAL.println( out of range!!);
18) digitalWrite(Buzzer, LOW);
19) // turn the Buzzer on (HIGH is the voltage level)
20) digitalWrite(LED, LOW);
21) // turn the LED on (HIGH is the voltage level)
22) }
23) else if(RangingMeasurementData.RangeMilliMeter <= 1000)
24) {
25) digitalWrite(Buzzer, HIGH);
26) // turn the Buzzer on (HIGH is the voltage level)
27) digitalWrite(LED, HIGH);
28) // turn the LED on (HIGH is the voltage level)
29) SERIAL.print( Distance:); SERIAL.print(RangingMeasurementData.RangeMilliMeter);
30) SERIAL.println( mm);
31) }
32) else
33) {
34) digitalWrite(Buzzer, LOW);
35) // turn the Buzzer on (HIGH is the voltage level)
36) digitalWrite(LED, LOW);
37) // turn the LED on (HIGH is the voltage level)
38) SERIAL.print( Distance:);
39) SERIAL.print(RangingMeasurementData.RangeMilliMeter);
40) SERIAL.println( mm);
41) }
42) }
43) else
44) {
45) SERIAL.print( mesurement failed !! Status code =);
46) SERIAL.println(Status);
47) digitalWrite(Buzzer, LOW);
48) // turn the Buzzer on (HIGH is the voltage level)
49) digitalWrite(LED, LOW);
50) // turn the LED on (HIGH is the voltage level) }
51) delay( 250);
52) }
53) }
4.4. 产品外壳设计
产品外壳通过AutoCAD设计,激光切割机切割模具。
切割文件中的灰线只用于标注各硬件的放置位置,在导出到激光切割机时不用输出切割,实际切割只有黑色线部分。报警器外壳实物图如图7所示。
Figure 7. Hardware prototype display diagram
图7. 硬件端雏形展示图
产品雏形如图8硬件端雏形展示图所示。
Figure 8. Product prototype display diagram
图8. 产品雏形展示图
5. 系统测试
5.1. 单人经过测试
单人经过情况时,寻找空旷的广场,两位实验人员一人携带本产品,与另一人相向行走,TOF距离传感器设置报警间隔为1 m。如表2所示为单人经过测试结果。
Table 2. Text results of single person
表2. 单人经过测试结果
5.2. 多人经过测试
多人经过情况时,寻找空旷的广场,六位实验人员一人携带本产品,与另五人错开时间相向行走,TOF距离传感器设置间隔为1 m。记录产品响应次数及平均响应距离。如表3所示为多人经过测试结果。
Table 3. Text results of many people
表3. 多人经过测试结果
5.3. 密集人群测试1
寻找空旷广场,二十一位实验人员中一人携带本产品,另外二十人陆续出发相向行走接近携带者,TOF距离传感器设置间隔为1 m。记录产品响应次数及平均响应距离。如表4所示为密集人群测试结果1。
Table 4. Text results of intensive crowd text 1
表4. 密集人群测试1结果
5.4. 密集人群测试2
寻找空旷广场,二十一位实验人员中一人携带本产品,另外二十人从不同方向陆续出发接近携带者,TOF距离传感器设置间隔为1 m。记录产品响应次数及平均响应距离。如表5所示为密集人群测试结果2。
Table 5. Text results of intensive crowd text 2
表5. 密集人群测试2结果
5.5. 测试结果总结
通过四种不同情况下的测试结果来看:
1) 本产品在人员较少情况下具有良好的可靠性,人员密集处也能够正常工作。
2) 当经过人群不处在本产品的直对面时系统误差较大,原因是TOF距离传感器发射的激光是垂直腔面的,无法同时兼顾不同方向的距离测试及控制,根据这一弊端,我们后续将会用OpenCV实现距离测距或通过蓝牙/WIFI的RSSI判断距离替换掉单一方向测距的TOF距离传感器,提高多向性和精准性,使本产品的功能更加完善。
6. 结语
本系统采用Seeeduino XIAO作为主控板,ATSAMD21作为主控芯片,在保证拥有强大性能的同时,尽可能的缩小产品尺寸,成本控制在百元左右,完成了价格低廉的便携式距离控制器的目标。整个系统的需求和功能均在文中做出了详尽的分析和规划,并对系统所需要的器件进行了对比选型。在完成了整个系统的测试后,进行了完整的性能测试。经过实际验证,文中所设计的基于TOF距离传感器的用于疫情防控常态化的距离传感器完成了最初的基本预期效果。对于系统中仍然存在的不足,在文中也提出了一些供参考的方案用来改进,使得系统能够更好地灵活运用于不同场景中,相信我们通过大家在各方各面的努力,一定可以战胜疫情,抗疫成功。
基金项目
本篇论文获得项目编号为202111654150武汉商学院2021年度大学生创新创业训练项目《敬疫远之》的研究资助。
NOTES
*通讯作者。