自Covid-19爆发以来,红外温度计已用作检查工具,以扫描机场,火车站和其他拥挤场所的人员。这些扫描被用于识别Covid-19的潜在患者。政府强制在进入办公室,学校或任何其他拥挤场所之前对所有人进行扫描。
因此,在本教程中,我们将使用带Arduino的非接触式温度传感器来构建基于RFID的非接触式温度监控系统。当员工扫描RFID卡时,它将使用非接触式红外温度计测量员工的体温,并将该员工的姓名和温度直接记录到excel表中。我们将使用Arduino Nano,MLX90614,EM18 RFID阅读器和超声波传感器来构建该项目。超声波传感器用于计算温度计和人之间的距离。温度计仅在距离小于25 CM时才测量温度。它类似于基于RFID的出勤系统,该系统还可以记录每个人的体温。
所需组件
- Arduino纳米
- EM-18 RFID模块
- MLX90614非接触式温度传感器
- 超声波传感器
- 面包板
- 跳线
EM18 RFID阅读器模块
EM-18 RFID阅读器是广泛用于读取125 kHz标签的RFID阅读器之一。这种低成本的RFID读取器模块具有低功耗,低外形尺寸和易于使用的特点。EM-18阅读器模块可以通过两个通信接口(即RS232和WEIGAND26)提供输出。
EM18 RFID阅读器具有一个发送无线电信号的收发器。当RFID标签进入发射器信号范围时,该信号会撞击卡内的发送应答器。标签从阅读器模块产生的电磁场中汲取能量。然后,应答器将无线电信号转换为可用的功率形式。通电后,应答器会将所有信息(例如特定ID)以RF信号的形式传输到RFID模块。然后将此数据通过UART通信发送到微控制器。
要了解有关RFID和标签的更多信息,请查看我们以前基于RFID的项目。
MLX90614红外测温仪
在继续本教程之前,了解MLX90614传感器的工作原理非常重要。市场上有许多温度传感器,并且我们已经将DHT11传感器和LM35广泛用于必须测量大气湿度或温度的许多应用中。
我们以前在红外热风枪中使用了此传感器,该传感器可以感应特定物体(而不是环境物体)的温度而无需直接与物体接触。在这里,我们再次使用相同的传感器来计算物体的温度。MLX90614就是这样一种传感器,它使用IR能量来检测物体的温度。要了解有关红外和红外传感器电路的更多信息,请点击链接。
MLX90614 传感器是由Melexis Microelectronics集成系统制造的,其中嵌入了两个设备,一个是红外热电堆检测器(传感单元),另一个是信号调节DSP器件(计算单元)。它根据 Stefan-Boltzmann定律进行工作,该定律 规定所有物体都会发射IR能量,并且该能量的强度将与该物体的温度成正比。传感器中的传感单元测量目标物体发出多少红外能量,计算单元使用17位内置ADC将其转换为温度值,并通过I2C通信输出数据 协议。传感器同时测量物体温度和环境温度,以校准物体温度值。MLX90614传感器的功能在下面给出,有关更多详细信息,请参考MLX90614数据表。
电路原理图
下面给出了使用Arduino的基于RFID的非接触式温度传感器的电路图:
如电路图所示,由于我们将它们用作模块,因此连接非常简单,我们可以直接在面包板上构建它们。当有人扫描标签时,连接到EM18 Reader模块的BUZ引脚的LED变高。RFID模块以串行方式将数据发送到控制器。因此,RFID模块的发送器引脚连接到Arduino的接收器引脚。下表对连接进行了进一步分类:
Arduino纳米 |
EM18 RFID模块 |
5伏 |
Vcc |
地线 |
地线 |
5伏 |
SEL |
接收 |
Tx |
Arduino纳米 |
MLX90614 |
5伏 |
Vcc |
地线 |
地线 |
A5 |
SCL |
A4 |
SDA |
Arduino纳米 |
超声波传感器(HCSR-04) |
5伏 |
Vcc |
地线 |
地线 |
D5 |
触发 |
D6 |
回声 |
代码说明
我们必须编写一个Arduino代码,该代码可以从超声波传感器,MLX90614,EM18 RFID读取器模块读取数据,并将一个人的姓名和温度发送到Excel工作表。对于此代码,您必须下载Wire和MLX90614库。下载库后,将它们添加到您的Arduino IDE中。
该非接触式体温监测的完整代码在页面末尾给出。在这里,将以小片段说明相同的程序。
像往常一样,通过包含所有必需的库来启动代码。此处,Wire库用于使用I2C协议进行通信,而 Adafruit_MLX90614.h 库用于读取MLX90614传感器数据。
#包括
然后,我们定义与之连接的超声波传感器的引脚
const int trigPin = 5; const int echoPin = 6;
之后,定义变量以存储RFID模块,超声波传感器和MLX90614传感器数据。
持续时间长 整数距离 字符串RfidReading; 浮动TempReading;
在 void setup() 函数内部,我们初始化了用于调试的串行监视器以及MLX90614温度传感器。另外,将Trig和Echo引脚设置为输出和输入引脚。
void setup(){Serial.begin(9600); //使用串行监视器pinMode(trigPin,OUTPUT)初始化串行通信;pinMode(echoPin,INPUT); mlx.begin(); Initialize_streamer(); }
在 void loop() 函数内部,计算人与传感器之间的距离,如果该距离小于或等于25cm,则调用 reader() 函数扫描标签。
void loop(){digitalWrite(trigPin,LOW); delayMicroseconds(2); digitalWrite(trigPin,HIGH); delayMicroseconds(10); digitalWrite(trigPin,LOW); 持续时间= pulseIn(echoPin,HIGH); 距离=持续时间* 0.0340 / 2; if(距离<= 25){reader(); }
void reader() 函数用于读取RFID标签卡。将卡带到读取器模块附近后,读取器模块将读取串行数据并将其存储在输入变量中。
void reader(){if(Serial.available()){count = 0; while(Serial.available()&& count <12){输入= Serial.read(); 数++; delay(5);
在接下来的几行中,将扫描的卡数据与预定义的标签ID进行比较。如果标签ID与扫描的卡匹配,则读取人员的体温并将该体温和名称发送至excel表。
if(input == tag)标志= 1; else flag = 0; 数++; RfidReading =“ Ashish”; }} if(flag == 1){temp_read(); Write_streamer(); }
在 temp_read() 函数中,以摄氏度读取MLX90614传感器数据,并将其存储在 'TempReading' 变量中。
void temp_read(){TempReading = mlx.readObjectTempC();}
一旦硬件和软件准备就绪,就可以将程序上传到Arduino Nano板上了。程序上传后,超声波传感器便开始计算距离。当计算出的距离小于40厘米时,它将读取温度和卡。
从Arduino控制器将传感器数据存储到Excel工作表中
现在要将数据发送到Excel工作表,我们将使用PLX-DAQ。这是一个Excel插件软件,可帮助您将Arduino中的值直接写入笔记本电脑或PC上的Excel表中。使用链接下载文件。下载后解压缩该文件,然后单击.exe文件进行安装。它将在您的桌面上创建一个名为PLS-DAQ的文件夹。
现在,从桌面文件夹中打开“ PLX-DAQ电子表格”文件。如果在Excel上禁用了宏,那么您将看到一个安全块,如下图所示:
单击 选项->启用内容->完成->确定 以启用宏。之后,您将获得以下屏幕:
现在,将波特率选择为“ 9600”,并将Arduino连接到的端口,然后单击“连接”以开始数据流传输。您的值应该开始记录下来,如下图所示。
这是构建非接触式温度筛选设备并将数据存储在Excel工作表中的方法。
页面末尾提供了有效的视频和完整的代码。