基于温度的非接触式考勤系统,采用NodeMCU和MLX90614红外测温仪
扫描二维码
随时随地手机看文章
新冠肺炎疫情爆发后,非接触式测温设备越来越受欢迎,大多数采用红外温度传感器。这个装置在没有任何身体接触的情况下测量人的体温。今天我们还将使用NodeMCU和Arduino IDE来接口MLX90614红外温度传感器。
因此,在本教程中,我们将使用NodeMCU, MLX90614红外温度计,EM18 RFID读取器和超声波传感器构建基于物联网的智能员工温度筛选系统。它可以用非接触式红外温度传感器测量员工的体温,并将员工的姓名和体温发送到一个网页上,该网页可以通过互联网从任何地方监控。网页将时间、人名和温度存储在一个表中。超声波传感器用于测量传感器与人之间的距离,因此MLX90614传感器可以在传感器与人之间的距离小于20cm时测量温度,以获得更好的精度。
组件的要求
•NodeMCU ESP8266
•EM18 RFID模块
•MLX90614红外温度计
•超声波传感器
•电路试验板
•跳线
EM18 RFID阅读器模块
EM18 RFID读写器模块是一种低成本,低功耗,小尺寸和易于使用的设备,是开发RFID系统的理想选择。该模块用于读取125 kHz标签,并通过UART和RS232转换器直接连接到任何微控制器或PC。它可以通过UART/Wiegand26提供输出。
阅读器模块带有片上天线,可以通过5V电源供电。当您扫描读取模块上的RFID卡时,卡内的应答器将所有信息(例如以RF信号形式的特定ID)传输到RFID模块。该读卡器模块还有一个BUZ引脚,可用于连接蜂鸣器以检测有效的RFID卡。
我们以前使用相同的EM18 RFID模块来构建智能购物车。
MLX90614红外温度传感器
在这里,我们与NodeMCU连接了一个名为MLX90614的非接触式温度传感器。它是一种用于非接触式温度传感的红外温度计。它出厂校准了一个数字SM总线输出,可以完全访问在最高温度范围内测量的温度,分辨率为0.02°C,它可以用来测量特定物体的温度,范围从-70°C到382.2°C,在室温下精度约为0.5C。
它内嵌两个器件,一个是红外热电堆探测器(传感单元),另一个是信号调理应用处理器。它的工作原理基于斯蒂芬-玻尔兹曼定律,该定律指出,任何不低于绝对零度(0°K)的物体都会在红外光谱中发出与其温度成正比的光。传感器的传感单元利用发射的光来测量物体的温度。
线路图
使用ESP8266 NodeMCU的红外测温仪电路图如下:
如电路图所示,连接非常简单,因为我们已经将它们用作模块,我们可以直接在面包板上构建它们。当有人扫描标签时,连接到EM18阅读器模块的BUZ引脚的LED会变高。RFID模块以串行方式向控制器发送数据;因此RFID模块的发送端引脚连接到NodeMCU的接收端引脚。连接进一步分类如下表所示:
编程NodeMCU
这个红外温度筛选项目的完整代码可以在页面的末尾找到。这里将以小片段的形式解释相同的程序。
NodeMCU代码
这部分代码将读取超声波传感器、MLX90614和RFID模块,并将这些数据发送到web服务器。在编写NodeMCU之前,从给定的链接中安装所需的库:
Wire.h
Adafruit_MLX90614.h
通过包含所有必需的库来启动代码。这里Wire库用于使用I2C协议进行通信,Adafruit_MLX90614.h库用于读取MLX90614传感器数据。
然后,输入你的Wi-Fi名称和密码。
然后在接下来的几行中,我们定义了连接超声波传感器的引脚。我们已经将三角引脚连接到D5,回声引脚连接到D6
之后,定义变量来存储RFID模块、超声波传感器和MLX90614传感器数据和卡ID。
handleRoot()函数在我们使用NodeMCU IP地址在浏览器中打开网页时执行。
在void setup()函数内部,使用begin()函数初始化波特率和MLX90614传感器,并使用server.begin()函数初始化网页。然后使用Wi-Fi名称和密码将模块与Wi-Fi连接。另外,将三角和回声引脚设置为输出和输入引脚。
要了解有关超声波传感器及其三角和回声引脚的更多信息,请遵循我们之前基于超声波传感器的项目。
在void loop()函数内部,计算人与传感器之间的距离,如果距离小于或等于20cm,则调用reader()函数扫描标签。
当距离小于20 CM时,将调用void reader()函数,在此函数中,我们将扫描的卡数据与预定义的标签ID进行比较。如果标签ID与扫描的卡匹配,则读取该人的体温,并将该人的体温和姓名发送给WebServer。
在temp_read()函数中,以摄氏度为单位读取MLX90614传感器数据,并将其存储在‘ TempReading ’变量中。
网页的HTML代码
标签用于告诉web浏览器我们正在使用哪个版本的html来编写html代码。
在标签之间编写的代码将被浏览器读取。标签用于定义网页的标题、标题行和样式。中写入的数据是浏览器中选项卡的名称。标签用于给表格和标题行设置样式。
标签用于包含jQuery。jQuery是JavaScript库。标记中的getData函数用于从NodeMCU获取数据并更新数据表。
XMLHttpRequestobject用于从web服务器请求数据。所有浏览器都有一个内置的XMLHttpRequest对象,用于从服务器请求数据。使用XMLHttpRequest,我们可以在不重新加载页面的情况下更新网页,从服务器请求数据,从服务器接收数据,并可以向服务器发送数据。在这里,我们使用这个对象从NodeMCU获取该人的温度和姓名,并在不刷新网页的情况下更新数据表。
XMLHttpRequest对象的open和send方法用于向服务器发送请求。xhttp的语法。开放如下:
测试红外线温度计
准备好硬件和程序后,将程序上传到NodeMCU。现在打开波特率为9600的串行监视器,获得NodeMCU的IP地址。超声波传感器不断计算距离。当您与传感器之间的计算距离小于20厘米时,扫描您的卡,如果您的卡被授权,MLX传感器将读取您的温度。要检查网页上的数据,在web浏览器中输入您的IP地址,您的网页将如下所示:
本文编译自iotdesignpro