构建一个基于RFID的非接触式温度监测系统

自 covid-19 爆发以来,红外温度计被用作筛查工具,对机场、火车站和其他拥挤场所的人员进行扫描。这些扫描被用于识别潜在的 covid-19 患者。政府规定在进入办公室、学校或任何其他拥挤的地方之前必须对每个人进行扫描。
因此,在本教程中,我们将使用带有 arduino 的非接触式温度传感器构建一个基于 rfid 的非接触式温度监测系统。当员工扫描 rfid 卡时,它将使用非接触式红外温度计测量员工的体温,并将该员工的姓名和温度直接记录到 excel 表中。我们将使用 arduino nano、mlx90614、em18 rfid 阅读器和超声波传感器来构建这个项目。超声波传感器用于计算温度计与人之间的距离。温度计仅在距离小于 25 厘米时测量温度。它类似于基于rfid的考勤系统,它还记录每个人的体温。
所需组件
arduino纳米
em-18 射频识别模块
mlx90614 非接触式温度传感器
超声波传感器
面包板
跳线
em18 rfid阅读器模块
用于读取 125 khz 标签的广泛使用的 rfid 阅读器之一是 em-18 rfid 阅读器。这种低成本的 rfid 阅读器模块具有低功耗、小尺寸和易于使用的特点。em-18阅读器模块可以通过rs232和weigand26两种通讯接口提供输出。
em18 rfid 阅读器具有发送无线电信号的收发器。当 rfid 标签进入发射器信号范围时,该信号会到达卡内的转发器。标签从阅读器模块产生的电磁场中获取能量。然后转发器将无线电信号转换为可用的电力形式。接通电源后,应答器会将所有信息(例如特定 id)以 rf 信号的形式传输到 rfid 模块。然后这个数据使用uart通信发送到微控制器。
mlx90614 红外测温仪
在继续本教程之前,了解 mlx90614 传感器的工作原理非常重要。市场上有许多温度传感器,我们一直在将 dht11 传感器 和 lm35 广泛用于许多必须测量大气湿度或温度的应用。
我们之前在红外热枪中使用过这种传感器,它可以感应特定物体(不是环境)的温度,而无需直接接触物体。在这里,我们再次使用相同的传感器来计算物体的温度。mlx90614 就是这样一种传感器,它使用 ir 能量来检测物体的温度。
mlx90614 传感器由迈来芯微电子集成系统制造,它内置了两个器件,一个是红外热电堆探测器(传感单元),另一个是信号调理dsp器件(计算单元)。它基于 stefan-boltzmann 定律 工作,该定律指出所有物体都会发射 ir 能量,并且这种能量的强度将与该物体的温度成正比。传感器中的传感单元测量目标物体发射了多少红外能量,计算单元使用 17 位内置 adc 将其转换为温度值,并通过i2c 通信输出数据 协议。传感器测量物体温度和环境温度以校准物体温度值。
电路原理图
使用 arduino 的基于 rfid 的非接触式温度传感器的电路图如下所示:
如电路图所示,连接非常简单,因为我们将它们用作模块,我们可以直接在面包板上构建它们。当有人扫描标签时,连接到 em18 阅读器模块的 buz 引脚的 led 变为高电平。rfid模块向控制器串行发送数据;因此 rfid 模块的发送器引脚连接到 arduino 的接收器引脚。连接在下表中进一步分类:
代码说明
我们必须编写一个 arduino 代码,该代码可以从超声波传感器、mlx90614、em18 rfid 读取器模块读取数据,并将人的姓名和温度发送到 excel 表。
页面末尾给出了这种非接触式体温监测的完整代码。这里将用小片段解释相同的程序。
像往常一样,通过包含所有必需的库来启动代码。此处 wire 库用于使用 i2c 协议进行通信,adafruit_mlx90614.h库用于读取 mlx90614 传感器数据。
#include
#include  
然后我们定义我们已经建立连接的超声波传感器的引脚
常量 int trigpin = 5;常量 int echopin = 6;  
之后,定义变量来存储 rfid 模块、超声波传感器和 mlx90614 传感器数据。
持续时间长;整数距离;字符串 rfidreading;浮动 tempreading;  
在void setup()函数中,我们初始化用于调试的串行监视器和 mlx90614 温度传感器。此外,将 trig 和 echo 引脚设置为输出和输入引脚。
无效设置(){ 序列号.开始(9600);// 初始化与串行监视器的串行通信 pinmode(trigpin,输出); pinmode(echopin,输入); mlx.开始(); initialize_streamer();}  
在void loop()函数内部,计算人与传感器之间的距离,如果距离小于或等于 25cm,则调用reader()函数扫描标签。
无效循环(){ 数字写入(trigpin,低); 延迟微秒(2); 数字写入(trigpin,高); 延迟微秒(10); 数字写入(trigpin,低); 持续时间=脉冲输入(回声针,高); 距离 = 持续时间 * 0.0340 / 2; 如果(距离 <= 25){ 读者(); }  
void reader()函数用于读取 rfid 标签卡。一旦卡靠近读卡器模块,读卡器模块就会读取串行数据并将其存储在输入变量中。
无效的读者(){如果(串行。可用()) { 计数 = 0; 而(serial.available() && 计数 < 12) { 输入[计数] = serial.read(); 计数++; 延迟(5);  
在接下来的几行中,将扫描的卡片数据与预定义的标签 id 进行比较。如果标签 id 与扫描的卡匹配,则读取人员的温度并将人员的温度和姓名发送到 excel 表。
如果(输入[计数]==标签[计数])标志 = 1; 别的标志= 0;计数++; rfidreading = ashish; } } 如果(标志 == 1) { temp_read(); write_streamer(); }  
在temp_read()函数中,以摄氏度读取 mlx90614 传感器数据并将其存储在“tempreading”变量中。
无效临时读取(){ tempreading = mlx.readobjecttempc();}  
硬件和软件准备就绪后,就可以将程序上传到您的 arduino nano 板上了。一旦您的程序被上传,超声波传感器就会开始计算距离。当计算距离小于 40 厘米时,它会读取温度和卡片。
从 arduino 控制器将传感器数据存储到 excel 表中
现在要将数据发送到 excel 表,我们将使用plx-daq。它是一个 excel 插件软件,可帮助您将 arduino 中的值直接写入笔记本电脑或 pc 上的 excel 表中。使用链接下载文件。下载后解压文件并点击.exe文件进行安装。它将在您的桌面上创建一个名为pls-daq的文件夹。
现在从桌面文件夹中打开“plx-daq 电子表格”文件。如果您的 excel 上禁用了宏,您将看到如下图所示的安全块:
单击选项-》启用内容-》完成-》确定以启用宏。在此之后,您将看到以下屏幕:
现在选择波特率“9600”和你的arduino连接的端口,然后点击连接开始数据流。您的值应该开始被记录,如下图所示。
#include
#include
adafruit_mlx90614 mlx = adafruit_mlx90614();
字符标签[] =“180088fecca2”;// 替换为您自己的标签 id
字符输入[12];// 一个变量来存储正在呈现的标签 id
整数计数 = 0;// 在 input[] 字符数组中导航的计数器变量
布尔标志 = 0; // 一个存储标签匹配状态的变量
常量 int trigpin = 5;
常量 int echopin = 6;
持续时间长;
整数距离;
字符串 rfidreading;
浮动 tempreading;
无效设置()
{
序列号.开始(9600);// 初始化与串行监视器的串行通信
pinmode(trigpin,输出);
pinmode(echopin,输入);
mlx.开始();
initialize_streamer();
}
无效循环()
{
数字写入(trigpin,低);
延迟微秒(2);
数字写入(trigpin,高);
延迟微秒(10);
数字写入(trigpin,低);
持续时间=脉冲输入(回声针,高);
距离 = 持续时间 * 0.0340 / 2;
// serial.println(距离);
//serial.println(距离);
如果(距离 <= 40){
读者();
}
延迟(1000);
}
无效的读者()
{
if(serial.available())// 检查rfid阅读器串行缓冲区中是否有传入数据。
{
计数 = 0; // 将计数器重置为零
而(serial.available() && 计数 < 12)
{
输入[计数] = serial.read(); // 读取 1 个字节的数据并将其存储在 input[] 变量中
计数++;// 递增计数器
延迟(5);
}
如果(计数 == 12)//
{
计数=0;// 将计数器变量重置为 0
标志 = 1;
而(计数<12 && 标志!=0)
{
如果(输入[计数]==标签[计数])
标志 = 1; // 每次值匹配时,我们将标志变量设置为 1
别的
标志= 0;
计数++;// 增加 i
rfidreading = ashish;
}
}
if(flag == 1) // 如果 flag 变量为 1,则表示标签匹配
{
//serial.println(允许访问!);
temp_read();
write_streamer();
}
别的
{
// serial.println(拒绝访问); // 不正确的标签信息
}
for(count=0;count<12;count++)
{
输入[计数] = 'f';
}
计数 = 0; // 重置计数器变量
}
}
无效临时读取()
{
tempreading = mlx.readobjecttempc();
// serial.println(sensorreading1);
// serial.print(,);
//serial.print(环境);
//serial.print(mlx.readambienttempc());
//serial.print(c);
// serial.print(目标);
// serial.print(mlx.readobjecttempc());
// serial.print(c);
// 延迟(1000);
}
无效 initialize_streamer()
{
serial.println(cleardata); //清除以前项目留下的任何数据
serial.println(标签、日期、时间、温度、名称); //总是写label,表示它是第一行
}
无效的 write_streamer()
{
// serial.print(data); //总是写“data”来表示下面的数据
// serial.print(,); //使用“,”移动到下一列
// serial.print(date); //在excel中存储日期
// serial.print(,); //使用“,”移动到下一列
// serial.print(time); //在excel中存储日期
// serial.print(,); //使用“,”移动到下一列
serial.print(rfidreading); //在excel中存储日期
序列号.print(,); //使用“,”移动到下一列
serial.print(tempreading); //在excel中存储日期
序列号.print(,); //使用“,”移动到下一列
序列号.println(); //行尾移动到下一行
}

华为VoLTE解决方案可为用户提供丰富的业务体验
中南高科合肥智能制造产业园项目开工 项目总投资约10亿元
摩根大通建议苹果可以考虑巨资收购奈飞
vivo Z5x新机正式发布 颜值性能兼具
认识Optional并使用
构建一个基于RFID的非接触式温度监测系统
iphone8什么时候上市多少钱?iphone 8发布会时间确定,苹果8良心价6700起,买买买!
汽车电子电气系统的基础知识详解
串行总线和并行总线的区别
台积电2纳米即将改采全新的GAA基础,计划在2023年投产
高容量嵌入式存储将与手机插槽展开竞争
浅谈微型扬声器粘接应用中无影胶逐渐取代溶剂胶水的原因
通过网络搭建零信任架构的方法
土壤测试仪能测试哪些项目
系统的信号输入中,键盘因其结构简单而被广泛使用
凯米斯低功耗在线浊度传感器的解决方案
OceanBase的简介,它与MySQL的比较
区块链技术将如何改变我们的生活?
未来Micro LED将走向混合式转移
笔记本电脑厂商加速取消16:9屏幕