基于STM32的智能抗疫情通行系统
2022-12-13付佳怡何会远田洪海杨林波
付佳怡 李 森 何会远 田洪海 杨林波
(河北建筑工程学院,河北 张家口 075000)
1 技术研究背景
目前,海外疫情呈上升趋势,而中国对外反进口压力持续加大,国内疫情形势的复杂性也在增加。2022年,我国个别省份出现了大规模继发病例,意味在整个防控全链条大数据管理中,如果某一环节出现管控力度薄弱或管理盲区,就会增加疫情传播的风险。然而在发展和防控并行的情况下,客观问题凸显,人力资源短缺,大量通行点无人看守,出现感染者和密接者。
对机场、火车站和地铁站等人员密集的综合交通枢纽以及学校、娱乐园区等公共场所来说,在出入口需要逐个进行人体测温、健康码检测等初步筛查,由于上述公共场所通常有较多通道和出入口,因此为了保障公共场所的安全性,有必要对各个人流口逐个排查进行在线监测,以减少盲区。
2 技术研究目标
2.1 利用DS18B20实现对温度的检测
选用DS18B20测温的原因是低温度系数晶振的振荡频率受温度的影响很小,与传统的热敏电阻相比,它通过编程就可以控制测温,当读写时序时,仅需要1根Wire总线就可以传递信息;其测温需要经过以下3个步骤:1)初始化定时。首先,主机将发出480 μs~960 μs的低电平脉冲。其次,跳过高电平总线,并在随后的480 μs内检测总线的高、低电平,如果一直出现高电平且没有低电平,就表示总线没有设备响应,如果出现低电平,就表明总线上已经有一个设备作出响应。2) 写时序。写周期时长最少为60 μs,最长不超过120 μs,写时序包括写1时序和写0时序。当写入时间序列0时,主机输出低电平,延时60 μs,然后释放总线,延时2 μs[1],具体操作如下。
当写入时间序列1时,主机输出低电平,延时2 μs,然后释放总线,延时60 μs。
3)读时序。主机输出低电平延时2 μs,主机切换到输人模式延时12 μs,读取1-Wire总线当前的电平,再延时50 μs,具体操作如下。
完成以上步骤后,就可以得出温度测量数据。
2.2利用OpenCV进行口罩佩戴识别
不能直接获取戴口罩的照片对OpenCV进行训练,其原因是在一整张照片中,其他部位(例如手、肩膀以及动作等)对OpenCV来说都是噪声,脸和口罩所占比例却非常小,如果直接拿这种照片去进行训练,那么它不但会增加CPU的计算量,而且还会干扰模型,因此在进行训练前要先对照片进行裁剪处理,裁剪出仅有面部和口罩的照片[2],具体操作如下。
通过上一步的裁减来采集不同人戴口罩和不戴口罩的面部形态,在图像中通过分类器比对找到匹配的数据后,对所得到的数据进行画框并输出。当全脸未带口罩时,opencv显示器识别出鼻子和人脸,使用红色框图(红色框图是对识别对比的说明,由opencv显示器进行识别,颜色也会显示在显示器中)进行表示,为未戴口罩状态;当佩戴口罩时,显示器将会识别佩戴口罩的人脸,其无法识别鼻子和人脸,用绿色框图表示,具体识别流程如图1所示。
图1 摄像头识别流程
虽然照片训练成功,但是OpenCV的引脚十分有限,即便官方网站自带各种库,还是无法实现大部分功能,因此基于该智能检测,采用STM32与OpenCV之间实现串口通信;将OpenCV作为传感器,STM32作为主控制芯片,以控制摄像识别,从而提高系统运行的效率。
2.3 利用颜色检测模块判断健康码的颜色
在进行测试前,首先进行白平衡校准,白平衡校准是为后续系统的颜色识别检测作准备。在该装置中,调整白平衡的具体步骤和方法如下:每次操作时,在模块前放置一个白色物块进行第一次识别,然后再识别其他颜色,通过白平衡校准得到的R值、G值和B值均为255。白平衡结束后,分别按照上述方法扫描红色、黄色和绿色健康码进行测试,就可计算所需的3个参数。如图2所示,当校准结束、TCS230开始识别颜色时,就用这3个参数对所测颜色的R、G和B进行调整。通过R、G和B这3个值就可以得出投射到TCS230传感器上的光的颜色,即能在小误差范围内识别通行者的健康码是否符合要求[3]。
图2 进行白平衡校准
通过上述分析,系统针对健康码颜色识别设计了1个以STM32作为主控制芯片控制TCS230运行的装置。该装置具有结构简单、操作便捷以及用途广泛的特点,并且能够与主控芯片通信,通过串口的方式实时传送识别结果。在子程序中设置循环语句,检测是否需要进行白平衡调整。如果系统需要进行调整,则跳出循环,执行白平衡程序;如果不需要,则进入下一循环,以检测系统是否需要颜色识别。如果需要颜色识别,系统就跳出循环执行颜色识别子程序,直至识别完成。
3 工作原理和方案设想
3.1 工作原理
温度检测选用DS18B20,其探头对准手腕或额头,与程序预定值进行对比,超标则红灯亮,合格则绿灯亮;选用TCS230来识别颜色,辨别健康码是否符合要求,如果是绿色,那么绿灯亮;如果是红色或黄色,那么红灯亮;将嵌入ARM Cortex-M3系列的STM32F1系列的芯片作为主控制芯片;通过OpenCV识别系统来判断出行人是否佩戴口罩;主控制芯片控制上述模块的正常运行,如果全部满足以上要求,就亮绿灯;如果有一项不达标,就亮红灯,同时蜂鸣器报警警告不允许通行。通过这种方式对过往行人进行检测,从而实现智能化的抗疫通行系统。
3.2 模块介绍
3.2.1 TCS230模块介绍
TCS230是TAOS公司开发的可编程的彩色光频转换器,这是业界首个具有数字兼容接口的RGB彩色传感器,它在一个CMOS电路上集成了1个可配置的硅光电二极管和1个电流频率转换器,同时在1个芯片上集成了红、绿和蓝(RGB)3种滤光器。滤波器不同则投射的入射光也不同,由于不同的光有不同的颜色方波,因此可以通过控制引脚S0、S1来调节,以满足不同的要求。S0、S1、S2和S3的可用组合形式见表1。
表1 高低电平时颜色识别
3.2.2 DS18B20温度识别模块
模块内部主要由64位ROM和便笺式储存器构成,其内部存储器包括1个上电状态的暂存器和1个存取器E2PROM,见表2。中间结果暂存器包括8个连续的字节,Byte1和Byte2分别为测得温度的低8位和高8位;Byte3、Byte4和Byte5对应的字节可以保存在只读存储器中,存放高温度报警TH、低温度报警TL和配置寄存器的值,以确保系统故障后不会丢失数据[4]。
表2 便笺式存储器标识
DS18B20在执行温度转换后,将温度值与报警触发值进行比较,如果测量的温度小于或等于TL值(或者大于或等于TH值),则在DS18B20内部形成报警条件。因此,使单片机和DS18B20测温传感器相互组合,再结合相关的电路模块就可以制作电子温度计,直接测量各个部位的温度,从而直观、准确地得到所测部位的温度。在实际应用中,电子体温计不仅易于操作,而且测量结果直观、准确。因此,将温度传感器与单片机相结合制成的电子温度计在日常生活中有广阔的市场[5]。
3.2.3 OLED显示屏
与LCD显示屏相比,OLED的功耗低,更适合小型系统,由于发光材料的不同,因此OLED在不同的环境下都具有良好的显示效果。模块电源支持3.3 V或5.0 V,不需要修改模块电路。OLED屏幕具有多个控制指令,可以控制OLED的亮度、对比度和开关升压电路等指令,操作便捷,功能丰富,可显示汉字、ASCII码以及图案等。
综合上述研究,抗疫通行系统的执行流程如图3所示。
图3 方案流程图
4 结语
该文所介绍的智能抗疫通行系统可以检测所处环境的各项参数,且检测的数据可以通过OLED平台实时显示,该产品操作简单,只要熟悉几个基本操作就可以进行操控。系统运行稳定可靠,传递信息迅速,能够适应所有环境,不会受人为因素的限制。与传统的检测方式相比,基于STM32的智能抗疫通行检测系统的特点无论是在大规模检测中还是定期安全检测中都能检测出其突出的优势。该产品可以实时检测疫情时代下各数据情况,实现报警功能,尽可能保障人民生命安全,减少不必要的损失,这种防控工作还可以有效保证疫情防控人员的健康,避免交叉感染。