:设计了一种体温及口罩佩戴情况识别装置,以单片机 STM32F103为核心组成测温及控制系统,温度监测使用红外线温度传感器,目标人员体温的跟踪检测与个人身份识别。使用OpenMV摄像头由单片机对红外线测温仪和OpenMV的检测数据实时作出反应,并输出控制指令,由核心控制电路完成测量温度、超标预警和摄像头身份识别等基本操作,以及被测人物不符报警、个人信息录入控制及识别等功能。电路采取了多种抗干扰措施,减少测量误差,工作稳定可靠,提高了测量多种数据的效率。
本文在传统的人工检测方法的基础上设计了一种体温监测及口罩佩戴情况识别装置,该装置具有体温监测、身份识别、是否佩戴口罩、自动报警、数值显示等功能,可在人员流动较大且人工检测复杂的地方安装,弥补了传统人力疲劳缺陷,进一步确保了疫情期间的人员安全。
体温监测及口罩佩戴情况识别装置系统由五大模块组成,分别是核心控制模块、身份识别模块、温度测量模块、LED 显示模块、Wi-Fi 接收模块和语音输出模块。核心控制模块选择STM32F103 单片机,既能搭载OpenMV摄像头,又能实现实时的数据处理。身份识别模块采用OpenMV摄像头。OpenMV搭载MicroPython解释器,可在PC 机上使用Python 来编程,并且带处理电路,使机器视觉算法的编程简单化,同时可获得预处理后的图像信息,提高身份识别的速度。温度测量模块MLX90614 是一款用于非接触式的红外温度传感器,得益MLX90614良好性能﹐体积小、成本低、易集成等,应用广泛。Wi-Fi接收模块使用ESP8266, 是一款串口转无线模芯片,内部自带固件,用户操作简单,无需编写时序信号等。LED 模块和语音模块均为本装置的创新设计,分别使用TFTLCD液晶显示屏和DY-SV17F模块驱动语音,装置下位机结构见图1 所示。
根据本装置设计的基本功能和发挥部分功能的要求,本装置选用STM32F103单片机为智能控制核心,并采用12 MHz晶振和上电复位电路。该单片机内部有256kB ROM和48kB RAM以及定时器、计数器等,其配置对于本系统已完全够用。再配合上述方案中应用的电子元器件,通过对多个模块的组装,完成简易无接触温度测量与身份识别装置的全部设计和制作。
OpenMV 是低功耗的Python3 可编程机器视觉硬件,结合摄像头可以支持一系列广泛的图像处理功能和神经网络。OpenMV使用跨平台IDE进行编程,该IDE允许查看摄像机的帧缓冲器、访问传感器控件、通过 USB串行(或 Wi-Fi/BLE 将脚本上传到摄像机。OpenMV基板基于在400 MHz 下运行的STM32H743 MCU,具有1 MB SRAM、2 MB 闪存、FPU、DSP 和硬件 JPEG编码器。
适合温度测量的小外形精确MLX90614 红外测温模块正适合本装置的使用。MLX90614 电路图见图2,此高精度的温度传感器,温度分辨率要达到0.02 ℃; 距离系数需要达到S:D = 10:1,既测温仪探头到目标之间的距离与被测目标直径之比;采用3.3 V 电源。通上电MLX90614就会输出所检测出的数据,但此时的数据并非温度数据,而是电压,需要按照精确的电压温度转换计算公式进行运算,才能使返回的数据为温度数据。
红外测温模块MLX90614 有MLX81101 红外热电堆传感器和包括含有稳压电路、低噪声放大器、A/D转换器、DSP 单元、脉宽调制电路及逻辑控制电路的MLX90302信号处理芯片构成,见图3。
其中红外热电堆传感器输出的温度信号经过内部低噪声、低失调的运算放大器(OPA) 放大后经过A/D 转换器(ADC) 转换为17 位数字信号通过可编程FIR 及IIR低通数字滤波器( 即DSP) 处理后输出,输出结果存储在其内部RAM 存储单元中。
语音输出功能选用语音播放芯片DY-SV17F,内置MP3及WAV解码,能简单实现语音播放功能。“I/O组合(独立)模式0”与“I/O 组合(独立)模式1”的区别在于前者模式释放电平后继续播放当前曲目至结束,后者模式释放电平后立即停止播放曲目。提示音需要完整播放,故此装置使用IO 独立模式0 播放报警提示音。I/O 独立模式可以播放8 首曲目,分别由8 个I/O单独控制,见图4。
TFTLCD 显示模块的特点是响应时间短,画面清晰,但功耗稍高,显示模式采用16 位的并方式与外部连接。其对外接口见图5所示。
由于数字接口标准尚未统一,所以使用LCD 时需要根据其手册了解具体接口定义。字符型LCD 通常有14条引脚线 条引脚线 条线 脚) 和地线 脚的LCD 完全一样,说明如表1 所示。
显示屏内部SoC 的LCD 引出一定的引脚与LCD 驱动器连接,按照标准设置一定的时序,再将LCD 要显示的像素信息放入内存中,在通过设置LCD中的寄存器,与LCD 建立映射,就能在LCD 中显示出字符或图像。
按键与STM32F103 单片机直接连接,只要在程序输入相应的代码就可以正常使用,当按下KEY1 按键时,报警温度阙值降低1 ℃,按下KEY0 按键时,报警温度阙值升高1 ℃。
MLX90614 红外测温模块使用SMBus 协议。对照时序图,首先初始化函数内部参数,接着产生停止位,用于判断是否可继续读取,接着发送起始位,然后发送从机地址和读取指令,如果一切正常就从发起始位,开始读取低8 位和高8 位数据,再读取校验位,发送停止位表示读取完成,最后对数据进行校验,数据正确就送回数据,否则重新读取。读取后的数据为被测物体表面温度,在测量体温时,通过对多种数据进行直线拟合,得到结果数据绘图。切换成体温测量模式时,红外测温模块所得的数据会经过以下函数的计算,将表面温度数据转换成体温数据输出,见图6。
由上文可知,语音输出功能选用语音播放芯片DYSV17F,自动报警功能即将语音播放芯片DY-SV17F与STM32F103 单片机搭配,单片机接收从LMT70 温度检测电路输入的逻辑信号和脉冲信号,并将输入的信号进行处理运算,以控制电流或控制电压的形式输出给语音播放芯片DY-SV17F,完成各项语音播报和警告提醒。
由原理图可知,TFTLCD 显示屏有128×64 个像素点,这为字符及汉字的显示提供了基础。让数值显示在固定位置的流程如下:首先在文件夹中找到液晶屏驱动文件LQ12864.c,输入文件中的 LCD_P6x8Str() 函数用来打印字符串,之后为LCD_P6x8Str() 函数进行解释,输入x 和y 的坐标,即字符串初始打印的坐标,测量温度及身份识别后,数据将会传输至STM32F103 单片机里进行处理,再通过LCD 显示在屏幕上。
手机客户端由APP Inventor 编程完成,可对该装置的图像信息及温度,口罩佩戴情况进行观测。AppInventor 是一款完全在线开发的编程软件,抛去复杂化的程序代码而采用积木式的推叠法来完成Android 程式。该系列软件自行研发适合手机使用的任意应用程序。通过ESP8266 模块连接上位机和下位机,使服务端信息发送给手机页面,通过TCP/IP 协议,使其一体化。
此芯片使用了3.3 V 的直流电源,体积小,功耗低,支持透传,丢包现象不严重,价格低。ESP8266 还允许用户自己编写rom,不仅可以实现数据传输功能,还可控制建立Wi-Fi 热点,或者作为Wi-Fi 客户端连接到某指定路由器,同时还可编程控制所有的GPIO。Wi-Fi 接收模块电路原理图见图7 所示。
该装置的身份识别功能由身份学习功能、人脸识别功能、口罩识别功能组成。身份学习功能。OpenMV 将所有的与摄像头有关的功能全部封装在了传感器模块中,可以很方便的调用。先使用sensor.reset() 函数初始化摄像头,设置采集照片的格式为灰度图像,灰度图像每个像素仅占1 字节,在之后的图像特征的提取中处理速度快。再设置每帧的大小, 等待摄像头设置完成后会自动拍摄人脸图像,每位拍摄者需要拍摄20 张人脸图像,存入带有人员编号的文件夹里。常用图像特征提取方法有Haar-like、HoG、LBP这三种方法,其中LBP为嵌入式开发最为推荐的方法,虽然精确度不如前者,但其运算速度快,适合题目实时检测人脸的要求。LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度级不变性等显著的优点。
由于OpenMV 拥有图片提取LBP 特征功能,在拍摄被测人员人脸样本时,先运行OpenMV 的sensor.set_pixformat(sensor.GRAYSCALE) 灰度转换函数,出来的图片已经转化为灰度图,再提取出当前拍摄图像的LBP特征函数,将图片与之前文件夹里存入的被测人员的图像逐一比对,比对时会逐一比对所有被测人员的图片,比对完成一组文件夹的图片后会输出比对阙值,之后跳转至下一文件夹再次进行比对,全部识别完毕后找出比对阙值最低的文件夹,最后输出文件夹对应的人员编号或姓名。
口罩识别功能运用了口罩特征点检测和寻找口罩色块的功能,在程序运行前将不同口罩的特征点及各种色块提取完成,方便后续比对。在拍摄出的灰度图中,若被测者戴着口罩,OpenMV 会寻找口罩的边缘并画出特征点,当口罩的特征点匹配正确至一定数量时,则程序将显示正确识别口罩并显示被测人员已戴口罩;若特征点识别较少,OpenMV 将会寻找口罩色块,匹配成功将正确识别口。
400-677-3888