无接触智慧云测温系统
2022-02-19陈莹段元昊陈黔豫王艳鹏苏银磊尚坷欣
陈莹,段元昊,陈黔豫,王艳鹏,苏银磊,尚坷欣
(河南大学物理与电子学院,河南开封,475004)
0 引言
2019年末,一场由新型冠状病毒感染的肺炎席卷中国武汉,发热(体温>37.3℃)是其主要临床症状。其最长潜伏期可达14天,且潜伏期即具有传染性[1,2]。随着国内疫情持续向好,人们逐步复工复学,所带来的人口大规模流动和不可避免的聚集又对疫情防控提出来了新的考验。为更好的防止国内疫情反复,无接触测温预警成为了一大趋势。
传统的水银体温计虽价格便宜、测量性能稳定,但测温时间长、易破损、消毒繁琐,容易交叉传染,不适用于人员流动较大的公共场所进行体温筛查。目前,市场上常见的无接触测温设备有额温枪和红外热成像体温筛查系统[3],额温枪虽然有响应快、操作便捷、成本低和不与被检测对象接触等优点,但无法记录体温异常者的信息,还需要人工记录,所以也不适合在人员聚集的场所使用;红外热成像体温筛查系统虽然有先进、实用等优点,也适用于大通道、大人群体温监测,但它成本高,算法复杂,还有可能造成人脸信息的泄露,存在一定的安全问题。结合这两种测温系统的优缺点,我们设计了基于单片机的无接触智慧云测温系统,该系统具有可以无接触测温、识别出被测者的信息、对超限体温进行显示报警、把测量信息上传至手机APP进行记录、算法及硬件实现较简单、可准确追溯体温异常人员等优点。主要应用于学校,如果稍作模块功能修改,也可以用在车站、地铁等高密度人群聚集地。
1 系统方案设计
该系统由单片机模块、红外测温模块、显示模块、语音播报模块、无线传输模块和报警模块组成。系统总体结构如图1所示。
图1 系统总体框图
被测者在测温前刷学生卡,读卡模块通过NFC(Near Field Communication)读取被测者姓名、学号等数据。此时,红外测温模块开始测量被测人员体温,并将数据上传至单片机。单片机作为控制中心,实现温度采集,报警,传输等工作。被测者的学号,体温通过LCD(Liquid Crystal Display)显示屏显示,并通过语音播报模块进行实时播报,与此同时,这些数据再次通过无线传输模块中的蓝牙连接,传输至手机APP中。对于超过设定阈值的温度,将由报警模块报警[3]。可实现无接触的体温测量、显示、报警和信息记录等功能,如果安装在学校大门口,还可以防止校外人员进入校园,提高校园的安全性。
2 系统硬件设计
2.1 主控单元
本系统采用工业级STC8A8K64S4A12单片机作为主控单元,它不需要外部晶振和外部复位电路,其flash程序存储器容量高达64KB,内部配有可调高精准24MHz系统时钟,12位高速模/数转换器最快速度可达80万次/秒,支持高速SPI通信,具有4级低压检测功能,可在-20℃~85℃环境下正常工作,系统内核兼容51单片机系列,在相同的工作频率下,比传统的8051快12倍,具有强抗干扰能力、低功耗高性能的特点,其性能可靠性均满足本次设计的需求。
系统采用STC8A8K64S4A12作为微控制器,控制红外传感器进行体温测量、读卡模块进行学生信息的读入,将检测到的人体温度信息实时的语音播报、显示并上传至手机APP,对体温过高的结果进行报警。
2.2 红外测温模块
人体温度不同会发射出不同波长的红外线,对应的红外辐射能量也不同,本系统就是利用人体发射的红外线能量的大小来测量人体的温度。测温器件选择的是Melexis公司的MLX90614,该芯片是一款高精度测温芯片。其工作环境温度范围-40℃~125℃,被测物体温度范围-70℃~382.2℃,测量辨析度可达0.02℃,是辐射测温中最精确的一种,特别是在测量温度为32℃~42℃时,测量绝对精度为±0.1℃,可应用于测量人体温度。可通过SMBus兼容协议或PWM输出两种方式读取温度值。该器件采用罐形(TO-39)封装,体积小巧、使用方便,目前已在工业、医疗、家居等领域的中低温场测量中使用[4,5]。
MLX90302集成了该公司的红外热电堆传感器MLX81101和强大的数字信号处理芯片MLX90302,内部设置的低噪声放大器和17位数模转换器,使得高精度和高分辨度的温度测量得以实现。其结构框图如图2所示。其中MLX90302包含稳压电路、低噪声放大器、A/D 转换器、DSP 单元、脉宽调制电路及逻辑控制电路[6]。
图2 MLX90614 结构框图
其工作原理为:红外热电堆传感器MLX81101输出的温度信号经过内部低噪声、低失调的运算放大器(OPA)放大后经过A/D转换器(ADC)转换为17位数字信号通过可编程FIR及IIR低通数字滤波器(即DSP)处理后输出,输出结果存储在其内部RAM存储单元中。作为标准制式的MLX90614具有两个红外传感器,因此可同时测出所对应的环境温度Ta和物体温度To,两个温度分辨率都为0.01℃。并且Ta和To既可通过SMBus读取RAM单元(分辨率0.02℃,固定范围)输出,也可通过PWM数字模式输出(10位分辨率,范围可配置)。由于本系统测温温度范围与MLX90614出厂时校准的温度范围符合,因此可直接采用SMBus方式进行温度数据Ta和To的读取输出[7]。MLX90614由MLX81101红外热电堆传感器对环境温度及测量温度进行采集,输出电压信号在理想环境下的计算公式为:
其中,A为元件敏感度常数。而后将采集到的环境温度及测量温度两路模拟信号经过MLX90302信号处理芯片转换为数字信号后通过SMBus写入MLX90614的RAM中保存,再由单片机进行读取[8]。MLX90614接口电路图如图3所示。
图3 MLX90614连接电路图
图3中MLX90614有电源端VDD,接地端VSS,时钟信号输入端SCL和数字信号输入/输出端SDA。VDD与电源相连进行供电,为了确保 SDA和SCL能够在总线空闲时都处于高电平状态,电路中设计了两个上拉电阻。
2.3 显示和报警模块
系统的数据显示模块使用的器件是LCD1602,该器件是一种专门用于显示字母、数字、符号等点阵式LCD(液晶显示器),具有显示方便,器件连接简单,易于控制等特点,该器件可以满足系统需求[9]。
系统的报警模块选用的是5V有源蜂鸣器进行体温超限报警。由于蜂鸣器的工作电流较大,单片机I/O口无法直接驱动,所以系统采用S8550三极管来构建放大电路。
2.4 无线传输模块设计
无线传输采用HC-05主从一体蓝牙串口模块,该模块主要用于短距离的数据无线传输,可以方便的和PC机的蓝牙设备相连,也可进行两个模块之间的数据互通。模块采用的协议标准为蓝牙V2.0,内置2.4GHz天线,外置8Mbit FLASH,低电压3.3V工作,工作温度为-25℃~75℃,可通过AT命令切换为主机或者从机模式[10]。
将蓝牙模块波特率设置为9600b/s,从机工作模式,与单片机串口相连接。用户可以将带有蓝牙功能的手机与HC-05模块相连,单片机将传感器采集的数据通过串口传给HC-05,HC-05收到数据后再通过蓝牙无线传输给手机APP,从而实现数据的无线传输。该模块连接电路如图4所示。
图4 蓝牙串口电路图
2.5 语音播报模块设计
语音播报模块的作用是将当前测得的体温值播报出来,更直观地获取被测人的体温信息。系统选用的语音合成模块为CN-TTS,这是一款高集成度的语音合成模块,可实现中文、英文和数字的语音合成,并支持定制化语音的输出[6]。
CN-TTS语音模块与3.3V或5V单片机兼容,通过GBK实现汉字编码,再通过TTL串口完成通讯。GBK是一种汉字编码技术,采用双字节编码方式,编码范围为8140~FEFE,收录了标准ISO 10646.1中全部汉字和相关符号,并有所补充,几乎满足所有汉语语音内容的输出要求。CN-TTS语音模块采用1×9P、2.54mm间距排针孔单列直插与主板连接。
采用STC8A8K64S4A12的串口1通讯,波特率设置为9600bps。CN-TTS语音模块中的RX为串口接收引脚,接MCU的TXD_2引脚;TX为串口发送引脚,悬空;CN-TTS语音模块接口设计如图5所示。
图5 语音播报模块电路图
3 系统软件设计
3.1 主程序设计
系统开始工作后,读取学生校园卡,红外测温模块开始工作。单片机根据设定的体温阈值判断该生体温是否正常。若正常,则语音播报体温值;若不正常,报警模块的蜂鸣器开始报警,语音播报模块播报“发烧”。然后通过显示模块和无线传输模块,将读卡得到的ID号以及体温等相关数据在LCD屏和手机APP上实时显示。
当测温者的温度超过设定阈值的时候,给蜂鸣器高电平,蜂鸣器工作发出警报。
无线传输模块为蓝牙模块,设置为自动连接模式下的从模式工作角色,所以只能被搜索连接进行数据收发。蓝牙模块读取信息后,单片机通过串口发送端把读卡得到的ID号以及体温信息发送给手机的蓝牙模块,在手机APP中进行接收。图6为主程序流程图。
图6 主程序流程图
3.2 红外测温子程序设计
当接收到刷卡信息后,MLX90614红外测温传感器开始工作,并将所测得的体温数据传输至单片机中。图7为红外测温子程序流程图。
图7 红外测温子程序流程图
该部分的核心程序时测温SMBus_ReadMemory(uint8_t slaveAddress,uint8_t command)函 数。Slave Address是MLX90614的识别地址,当一个系统中只有一个MLX90614时,该地址默认为00h。Command是命令,共有四种模式分别为访问RAM、访问EEPROM、读取标示符、进入SLEEP模式。这里我用的是访问RAM即存储温度数据的存储器。访问RAM的命令为000x xxxx,xxxxx代表要读取/写入的内存地址的低五位。
读取温度值,获取被测人的体温情况。单片机本身并没有SMBus接口,所以需要用到I/O口去模拟SMBus串行通信。想要与红外芯片进行通信获取温度数据,那么首先要写好读、写数据的代码,读写数据的代码可以参考读写时序。
整个温度数据获取程序如下
uint16_t SMBus_ReadMemory(uint8_t slaveAddress,uint8_t command)
最后,读取到数据之后对数据进行计算使之变成可直接阅读的温度值
temp=SMBus_ReadMemory(0x00,0x07)*0.02-273.15;
3.3 无线接收APP程序设计
该蓝牙模块是一个支持蓝牙2.0串口的模块,在手机端需要下载一个蓝牙串口App(我们使用蓝牙调试器)来接收数据。单片机将读卡得到的ID号以及温度值通过串口发送给蓝牙模块后,蓝牙模块将这些信息发送到手机上。我们在手机端打开蓝牙,在蓝牙调试器App里面找到此蓝牙的名字(HC-05)完成对应连接(初次使用需要输入连接密码),就可以实现通信。最终实现无线接收[11]。
3.4 语音播报程序设计
语音播报和红外测温功能紧密相关,根据我们的设计,当测得的体温不超过设定阈值时,会报出测得的温度,一旦温度超过所设温度阈值,它就会播报“发烧”。测温之前需要进行:1.MDK配置,到工程属性的Target->Use MicroLIB把勾上;2.在usart函数中要包含“stdio.h”3. 重定向“fputc”函数,直接粘贴复制进目标文件即可。配置完成后便可使用程序需将每次测得的温度值和设定好的温度阈值做比较,判断出测得温度所位于的区间,并执行相应的指令。图8为语音播报程序流程图。
图8 语音播报程序流程图
3.5 实验结果与分析
经过多次的实验测试,系统测量结果准确可信,表1为系统测试结果与水银温度计实际测量结果的对比。
表1 系统测试结果与实际对比
由测试结果可知,在人体正常体温范围内(36.0℃-37.9℃),系统测量值与水银温度计测量值最大误差不超过0.2℃,精确度不低于99.5%。并且,使用水银温度计测量温度时,每人所需时间大约在5-7分钟,测量后仍需将体温计进行消毒处理。而使用本系统测量温度每人仅耗时1-2秒,可快速得出测量结果并能完成播报以及对异常体温的报警。
4 结语
本系统可实现远程、无接触的进行体温信息的采集、显示、播报并记录,还可以对异常的体温值进行报警。
该系统不仅将体积小的测温枪和体积大的测温门等传统测温仪器的优点进行了有机结合,同时又降低了测温的成本。具有测温快、精度高、算法复杂度低等优点,还可以准确识别被测温人信息,防止校外人员进入校园,还可以追溯体温异常的学生,提高校园安全性。经过大量实验测试,结果准确可靠,系统工作稳定,可以广泛使用于学校等人流密集的场所。