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

发布时间:2023-04-04  

  自 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两种通讯接口提供输出。

pYYBAGL0wy2AWW12AAUMI_qFKik669.png

pYYBAGL0wymAc5c3AAFaDp8IA6k751.png

  EM18 RFID 阅读器具有发送无线电信号的收发器。当 RFID 标签进入发射器信号范围时,该信号会到达卡内的转发器。标签从阅读器模块产生的电磁场中获取能量。然后转发器将无线电信号转换为可用的电力形式。接通电源后,应答器会将所有信息(例如特定 ID)以 RF 信号的形式传输到 RFID 模块。然后这个数据使用UART通信发送到微控制器。


  MLX90614 红外测温仪

  在继续本教程之前,了解 MLX90614 传感器的工作原理非常重要。市场上有许多温度传感器,我们一直在将 DHT11 传感器 和 LM35 广泛用于许多必须测量大气湿度或温度的应用。


  我们之前在红外热枪中使用过这种传感器,它可以感应特定物体(不是环境)的温度,而无需直接接触物体。在这里,我们再次使用相同的传感器来计算物体的温度。MLX90614 就是这样一种传感器,它使用 IR 能量来检测物体的温度。

poYBAGL0wyWATIlDAAGu3hKqwV8045.png

  MLX90614 传感器由迈来芯微电子集成系统制造,它内置了两个器件,一个是红外热电堆探测器(传感单元),另一个是信号调理DSP器件(计算单元)。它基于 Stefan-Boltzmann 定律 工作,该定律指出所有物体都会发射 IR 能量,并且这种能量的强度将与该物体的温度成正比。传感器中的传感单元测量目标物体发射了多少红外能量,计算单元使用 17 位内置 ADC 将其转换为温度值,并通过I2C 通信输出数据 协议。传感器测量物体温度和环境温度以校准物体温度值。


  电路原理图

  使用 Arduino 的基于 RFID 的非接触式温度传感器的电路图如下所示:

pYYBAGL0wyGAOmWhAAETA-TxyI8846.png

  如电路图所示,连接非常简单,因为我们将它们用作模块,我们可以直接在面包板上构建它们。当有人扫描标签时,连接到 EM18 阅读器模块的 BUZ 引脚的 LED 变为高电平。RFID模块向控制器串行发送数据;因此 RFID 模块的发送器引脚连接到 Arduino 的接收器引脚。连接在下表中进一步分类:

poYBAGL0wx2AHEVBAAAm07ESAZE924.png

pYYBAGL0wxmAXpiGAAYW2KstDWg981.png

  代码说明

  我们必须编写一个 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 上禁用了宏,您将看到如下图所示的安全块:

poYBAGL0wxGAJeTAAACKohngWio120.png

  单击选项-》启用内容-》完成-》确定以启用宏。在此之后,您将看到以下屏幕:

poYBAGL0ww2ALe-7AAF9Ak-6Ycg783.png

  现在选择波特率“9600”和你的Arduino连接的端口,然后点击连接开始数据流。您的值应该开始被记录,如下图所示。

pYYBAGL0wwmAbjX-AAGOG16raGo313.png

#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(); //行尾移动到下一行
}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    磁铁如果退磁,退磁速度会很快,部分退磁后,会导致电机的电流持续增加,能耗上升,用电成本增加,同时电机可能随时会出现故障。 所以,今天小编带大家了解无刷电机里面的磁铁需要选择耐温多少温度。 首先,我们......
    家用10、6、4、2.5平方电线安全电流是多少,能带多少千瓦?; 在用电过程中,不同线径能带多少电流?能承受多大功率?是人们经常提及的问题。同时......
    组件   Arduino纳米   EM-18 射频识别模块   MLX90614 非接触式温度传感器   超声波传感器   面包板   跳线   EM18 RFID阅读器模块   用于读取 125 kHz 标签......
    技术RFID标签的温度监测 RFID标签的温度监测:在药品运输过程中,RFID标签能够实时监测温度变化,一旦温度超出设定范围,系统会自动报警,确保药品质量。 斑马技术抗金属标签 抗金属打印机和标签:专为......
    材料等也都有不同分类。 性能参数 :包括载流量(前面多次提到,决定电缆能承载多大电流)、耐压等级(能承受的最高电压)、绝缘电阻(反映绝缘性能好坏)、电缆......
    才能保证发电机正常工作。 绝缘等级为B级的绝缘材料,主要是由云母、石棉、玻璃丝经有机胶胶合或浸渍而成的。 问:一般电机在多高的温度下能够正常工作?电机最多能够承受多高的温度......
    为此考虑引入RFID标签。开发了特有的轮胎内置RFID标签的米其林为了将这些产品管理扩展到更广泛的市场,力争比传统RFID标签更进一步降低成本并提高通信可靠性。 村田......
    射频识别标签性能测试研究;在实际应用中,RFID系统的应用要综合考虑位置、距离、温度、湿度、干扰等诸多影响系统性能的因素。未经过测试的RFID系统,系统整体性能不明确,可能会影响实际应用效果,甚至......
    会指定测试时的具体电压数值。经过耐压测试只能说明产品的绝缘结构能承受该试验电压,不能说明产品的绝缘结构究竟能承受多高的电压。如果进行绝缘材料的应用研究和电器设备的设计,需要测定绝缘强度时,就要进行击穿测试。击穿......
    设备传输的电磁能实现供电。当读取设备扫描无源RFID标签时,会向标签传输能量,从而使芯片和天线获得足够的电力,将信息传回读取设备。 这些产品可在−40°C至+85°C温度范围的严苛条件下工作,并具......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>