基于Openmv 和STM32 的车内温度预警系统
2022-01-06岑志刚王勇李存龙高亚楠杨瑞祺
岑志刚,王勇,李存龙,高亚楠,杨瑞祺
(北京信息科技大学信息与通信工程学院,北京 100101)
随着科技不断发展,碳排放逐渐上升导致全球温度日益上升,而高温常常会给人们的日常生活带来不好的影响。据相关调查可知,密闭环境下温度超过38 ℃时人体将出现明显不适,若高于40 ℃,人的生命将受到威胁。
我国人口和车辆数量都位于世界前列,各地区受夏季高温的影响更是不可忽视,并且近年来各地区连续发生多起幼童在车内被遗忘的事件,从而导致儿童窒息死亡或患热射病的事件。但是通过知网论文和国内现有产品的调查[1-2]可知,目前大多数就该问题提出的方案尚不够完善,其不仅功能单一,而且人脸识别精度还远远不足以满足日常应用,所以该文就如何解决该问题提出一套多功能完整的系统,该系统在Openmv[3]利用Haar 算子和LBP 特征算法完成图像处理和云台辅助进行全方位人脸追踪的基础上,通过NB-IOT BC26、SIM900A 模块完成多种预警、实时监控温度、远程查看与物理降温的功能,具有一定的可行性、创新性、实用性。
1 车内预警系统总体架构
该系统设计主要分为三大部分:车内摄像监控、温度检测[4-5]、预警及处理。
第一部分的设计基于Openmv 在图像处理速度方面强大的优势,采用舵机控制云台360°无死角跟踪人脸,通过Haar 算子和LBP 特征算法对车内人员进行人脸识别和分辨。第二部分的设计是在NBIOT BC26 技术[6-7]上利用DS18B20 传感器完成温度检测,根据LWM2M 协议,通过NB-IOT BC26 向Onenet 实时上传数据,实现远程检测[8]。第三部分预警及处理主要依托于蜂鸣器鸣笛预警、风扇的物理降温和SIM900A 模块,将车内温度情况通过短信发送给特定用户以作出提醒的方式进行实现。系统总体设计框图如图1 所示,实物如图2 所示。
图1 系统设计框图
图2 整体实物图
2 车内摄像监控模块设计
车内摄像模块作为整个系统中最基本和最重要的部分,需要保证较高的人脸识别精确度和较低的反映时延。故该文综合考虑实际情况,采用舵机控制云台进行人脸的360°跟踪以及基于LBP 特征[9]和Haar 算子[10]的人脸识别两种策略,综合提高人脸识别的准确性和可信性。
2.1 拍照录入模块算法设计
该模块以Pin7 管脚的高低电平作为拍照和识别模式切换的判断依据,当Pin7 管脚为高电平时,进入拍照录入模式,利用OV7725 模组将视野范围中的人物循环拍照5 次,并将5 张照片作为一组,保存至本地作为人脸分辨的图像库[11]。当Pin7 管脚为低电平时,则利用img_find_features 获得人脸特征矩形元组的列表后,通过内置函数将其用矩形框进行标记并根据矩形框所返回的坐标位置不断控制舵机,调整云台的角度和位置,从而达到人脸跟踪的效果。
2.2 基于LBP和Haar的人脸识别和分辨算法设计
该模块通过分别将数千张标记出含有人的图片和数千张标记出不含有人的照片对发生器算法进行训练,从而生成一个Haar Cascades 来作为后续识别的主要凭据。在完成前期准备工作后,通过调用内置函数sensor.set_pixformat 将拍摄到的图片转化为灰度图并利用LBP 完成提取图像纹理的局部特征,将人脸像素窗口定义为3×3 大小后,匹配摄像头中获取的图像特征像素点与周围像素的关系,设定某个中心像素点为初始阈值,不断循环计算二者的差值并在二值化后进行求和,最后结合Haar 算子[12],通过计算LBP 特征值,反映灰度变换的情况,从而实现人脸识别和分辨,其LBP[13]和Haar 算子的计算方法分别如式(1)、式(2)所示。
其中,LBP 表示目标区域像素点的LBP 特征值,jx和jy分别代表相邻趋于像素点的灰度值,jcx和jcy分别代表所选中充当阈值的像素点的灰度值。D代表对矩形区域右下角区域的像素灰度进行积分,H1~H4分别代表矩形区域左上角、右上角、左下角、右下角区域像素和。
利用相关算法实现云台360°无死角跟踪人脸[14]的同时,采用Haar Cascade 特征检测器不断循环进行特征检测,并实时在摄像头拍摄到的矩形区域内完成对比度检查与匹配,根据匹配特征的大小与初始设定的阈值进行匹配,完成人脸识别。识别人脸后,采用LBP 特征算法完成人脸分辨。当Pin7 管脚为低电平时,Openmv 进入特征匹配模式,利用Find_lbp 函数从摄像头拍摄到的图片中提取LBP 人脸特征点,不断遍历每一个文件夹,将LBP 特征值与文件图库中的照片依次进行差值计算,并记录该文件夹序号和实时更新特征最小值,算法推导如式(3)所示。
当遍历完最后一个文件夹后,将特征最小值与匹配阈值进行对比,当特征最小值小于匹配阈值时,Pin1 输出高电平,表示目标人物出现在车内;当特征最小值大于匹配阈值时,则认为目标人物不在车内。其循环判断逻辑如式(4)所示。
其中,dis为特征差值匹配总值,为特征差异平均值,N为单人照片数目,M为本地图库人数,H1为摄像头拍摄图像的特征值,Hij为图库中各图片特征值,Res为虚拟变量,0 表示没有找到目标人物,1表示成功找到目标人物,X为匹配阈值。
3 温度检测与预警降温模块设计
文中综合比较不同技术之间的优缺点,最终决定采用STM32 和NB-IOT 结合的方式完成温度检测与预警模块的设计方案。
3.1 温度检测模块实现策略
首先,温度检测模块[15]采用DS18B20 传感器进行温度的测量,利用高温度系数晶振和低温度系数晶振各自产生的信号作为输入,通过对脉冲的计数和利用斜率累加器来完成测温时非线性过程的补偿和修正,从而实现温度的测量。
其次,车内预警和降温模块主要利用AT+CGPADDR=1、AT+MIPCLREATE、AT+MIPLADDOB等AT 指令集,通过LWM2M 协议完成单片机与Onenet 云平台的连接,建立和发送实时数据,将温度数据的大小作为降温报警的限定条件进行实现,部分AT 命令如表1 所示。
表1 部分连接云平台的AT命令
通过Onenet 平台建立应用,完成选择数据流3303_0_5700 以及刷新频率为3 s 等配置后,即可远程使用设备云APP 查看温度,设备云APP 画面如图3 所示。
图3 设备云APP画面显示
3.2 降温模块及部分软件设计
当所检测到的温度大于设定阈值时,则采用具有传输功能的GPRS_SIM900A 模块[16],通过AT+CMGSAT、AT+CSMP 等指令实现连接命令、消息格式、IP 设置等操作,完成基于GSM 的报警短信的发送,并设计开机自动发送一条提示短信表示系统工作正常。
对于短时间内收到重复短信而造成资源浪费的问题,通过设定两个定时标志位i和n来解决,通过判断标志位m来对系统工作条件进行限定,通过判断标志位大小完成短信选择性发送,从而减少发送次数和降低功耗,具体流程如图4 所示。
图4 短信发送流程框图
发送数据部分代码如下所示:
标志位清除部分代码如下所示:
在发送短信的同时开启蜂鸣器和风扇,实现物理降温[17]和简单预警等辅助功能,使得周边环境里的人能够被车内的异常环境所吸引,从而及时发现被困人员,保证在一定程度内通过风扇降低被困人员的不适感,使得系统更加贴切实际生活运用以及更具有实际使用价值。
4 实验结果与分析
4.1 系统功能测量结果
为增加人脸图像库数据的多样性以及更贴切实际生活应用,人脸图像数据库中初始共有3 个目标保护人物,平均每人有21 组图像,共63 组图像,每组共5 幅图像,共315 幅图片,其中每人在不同表情、状态和环境背景[18]下共拍摄21 幅图片。
实验过程中,通过人工方式改变密闭狭小空间的温度,不断调整温度阈值模拟车内情况,并在改变光照强度、光照方向等外界因素的同时观察1 min 内人脸识别是否成功,为保证实验结果的准确性,将上述过程重复20 次并取平均值,测量结果如表2 所示。
表2 系统测量结果
为进一步确定该系统功能算法的优劣,通过采用文中算法和传统算法[19]进行多次实验,记录系统花费时间和识别准确率并取平均值,结果如表3所示。
表3 算法对比结果
由表2 和表3 可知,系统在利用文中算法后识别精度总体达到了85.43%,较传统算法提高了55.06%,系统总体耗时降低了77.77%,其根本原因在于图库本身的多样性以及综合利用LBP 和Haar 算子对灰度图进行处理,对于现实环境变化更具有鲁棒性,总体结果更加可信。
4.2 实验结果分析
实验发现通过拍摄不同照片丰富图库,从而降低不同情绪和不同妆容对于特征点提取的影响,同时在识别过程中通过Haar 算子和LBP 特征的结合优化了人脸识别算法,云台360°无死角跟踪的方法较好地减小了人在车内移动时的识别难度,提高了对灰度图的处理速度、人脸识别准确率和可信度,降低了反应时延。并且系统整体能够在较短时间内完成短信发送和蜂鸣器双重报警以及用风扇物理降温,具有一定实际意义。
5 结束语
该文以充分分析当前社会问题和系统设计可能存在的问题为基础,提出一种基于Openmv 和STM32的车内温度预警系统,该系统功能丰富,在精度与时延上均有较好的提升,能够减少人在车内因高温而发生危险的情况,具有一定的实际意义和创新性。