0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用RFID制作一个自动点名考勤系统

科技观察员 来源:hackster.io 作者:hackster.io 2022-05-11 17:00 次阅读

作为一名教师,传统上的出勤(点名)是一项耗时的任务,如果自动化,教师可以专注于其他教学活动。在本项目中,RFID阅读器模块和RFID卡将用于实现自动考勤系统。

课程在密闭空间内进行,如果环境太热或太冷,很难听课。为了实现有效的学习,应保持教室内正确的物理环境。该项目将使用相对湿度和温度传感器(DHT11)来监控温度和湿度,并在值超出范围时发出通知。

库和定义

在开始代码之前,需要将库包含在程序中。定义了物理连接到Arduino板的引脚号。创建将用于数据采集的RFID接收器(mfrc522)和DHT传感器(dht)的实例。创建了一个名为student的变量,它是一个二维字符串数组,用于存储学生姓名和相关的RFID标签ID。

poYBAGJ7eT2AT-oKAADDdRZe2F8191.png

设置

setup()函数仅在板子上电或按下复位按钮时执行一次。串行连接以9600的波特率初始化。DHT传感器采集调用函数begin()开始采集。

调用一些ArduinoIoTCloud函数来初始化属性、开始连接、设置调试消息级别并打印任何调试信息

pYYBAGJ7eTmAdmgrAACWB8HSMak145.png

主要功能-循​​环

Arduino中的loop()函数包括SPI通信的开始和mfrc522的初始化。起初,这两个初始化是在设置阶段完成的,但由于ArduinoCloud更新时的错误而被移到循环中。它将引脚10更改为输入,中断SPI通信。解决方案是在每个循环上初始化SPI通信,以将引脚10重置为输出模式。

void loop() {
SPI.begin();
mfrc522.PCD_Init();
if ( mfrc522.PICC_IsNewCardPresent()) {
if (mfrc522.PICC_ReadCardSerial()) {
String content = "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
//Serial.println(content.substring(1));
content.toUpperCase();
for (int i = 0; i < 6; i++) {
if (content.substring(1) == student[i][0])
{
msg_Attendance = "Attendance Recorded for Student: " + student[i][1] ;
}
}
Serial.println(msg_Attendance);
}
}
dht_sensor_getdata();
delay(500);
ArduinoCloud.update();
}

mfrc522初始化后,调用PICC_IsNewCardPresent()函数。如果检测到新卡,PICC_ReadCardSerial()函数会从 RFID 卡中读取 ID 信息。ID 是一个字符串类型的变量,称为内容。它被转换为大写,以便与存储在程序定义部分中的学生ID 数组进行比较。当从卡中读取的 ID 与记录中的学生匹配时,会记录出勤情况并将其存储在变量msg_Attendance 中。

dht_sensor_getdata ()函数被调用,更多详细信息在下一节中。在调用ArduinoCloud.update()函数之前引入了 500 毫秒的短暂延迟。此函数将所有四个变量发送到云端:温度、湿度、msg_Attendance和msgTempHum 。

DHT传感器功能
创建函数dht_sensor_getdata()是为了从 DHT11 传感器读取湿度和温度数据。dht.h 库导入函数 readHumidity() 和 readTemperature()。

if-else 条件检查低温 (20ºC) 和高温 (27ºC) 的阈值,然后向仪表板发送消息。这可以通过执行器(打开或关闭空调)或真实教室中的警报来实现。

void dht_sensor_getdata()
{
float hm = dht.readHumidity();
Serial.print(F("Humidity "));
Serial.println(hm);
float temp = dht.readTemperature();
Serial.print(F("Temperature "));
Serial.println(temp);
humidity = hm;
temperature = temp;
if (temp > 27) {
msgTempHum = "Temperature = " + String (temperature) + " Humidity = " + String(humidity) + " -> High ";
}
else if (temp < 20) {
msgTempHum = "Temperature = " + String (temperature) + " Humidity = " + String(humidity) + " -> Low ";
}
else {
msgTempHum = "Temperature = " + String (temperature) + " Humidity = " + String(humidity) + " -> All ok ";
}
}

准备工作-设置云

要连接到ArduinoIoTCloud,首先我们需要创建一个帐户或登录。

要使用已经安装了所有核心和库的基于Web的编辑器,我们需要安装CreateAgentPlugin。该代理将识别通过USB连接到计算机的板。

进入网页编辑器页面后,我们可以看到板已连接/断开,编辑我们的代码并在完成后上传。

但是,还有其他两个选项可用:

经典离线ArduinoIDE1.8.13(集成开发环境)作为–用于本地传感器故障排除。

新的ArduinoIDE2.0-具有调试、代码突出显示和自动完成等新功能,目前处于beta阶段(准备此项目时)。

要选择IoTCloud菜单或Web编辑器,我们可以单击个人资料图片附近的右上角按钮。

poYBAGJ7eTGAQ_nvAABEPIhknwo346.png

一旦我们选择了物联网云菜单,就会有一些选项可用,但在这个项目中,我们将专注于创建事物、关联设备和准备仪表板。

pYYBAGJ7eS2AFvZkAAAkDilsHpM910.png

单击上图所示的“创建事物”后。我们遵循了这个项目中的步骤:

第1步-设备-将设备与我们的事物相关联

第2步-添加变量

第3步-更改网络设置

第4步-编辑草图,连接到串行监视器

第5步-准备仪表板

第6步-从发送到云端的板上获取数据并导出

第1步-设备

第一步是单击并选择设备。

poYBAGJ7eSeAXRNoAAAtk0QdlWU598.png

可以关联以前在IoT云中使用的任何设备,也可以设置新设备。

poYBAGJ7eSOAM438AABT1w7mYJs331.png

对于这个项目,我们将设备ArduinoMKRGSM1400与Thing相关联,但可以使用任何其他板,例如ArduinoMKRWiFI1010或NodeMCU

第2步-变量

第二步是添加变量:

poYBAGJ7eR-AFq8SAABTDr-hEeM315.png

单击添加变量后,您需要选择变量名称、类型、权限、更新策略和阈值。在这个项目中,创建了5个变量:

湿度——在仪表板上存储和显示相对湿度值

温度-在仪表板上存储和显示室温

msg_Attendance–显示学生出勤、姓名和时间

msgTempHum–显示温度和湿度以及任何警告

led-此LED用于快速故障排除以检查板/云连接

变量权限可以是:

读写——变量既可以作为输入也可以作为输出,数据可以从设备发送到云端,反之亦然

只读——变量只能作为输出,数据只能从设备发送到云端

变量更新策略可以是:

OnChange:只要值的变化大于或等于设置的阈值,变量就会更新到云端

定期:每次经过设置的秒数时,变量将更新到云端

该项目中使用的基本变量类型是:

布尔值-真或假(LED)

浮点数-带小数的数字(温度和湿度)

字符串-单词和句子(msg_Attendance和msgTempHum)

poYBAGJ7eQ6AXsdPAADClTOAIi4734.png

第3步-网络

设置好所有变量后,第三步是在configureNetwork中添加网络凭据

pYYBAGJ7eRWAU2ZqAAAr4L3AzzA173.png

在这个项目中,我们使用了具有如下凭据的ArduinoSIM卡:

poYBAGJ7eQmACWd7AABds1bsmwU235.png

如果您使用的是Wi-Fi设备,网络配置会有所不同。本地Wi-Fi名称不得包含空格。

pYYBAGJ7eQWAByk8AAA5J9bO06g177.png

第4步-草图

一小部分代码由ArduinoIoTCloud根据前三个步骤中添加的信息自动更新。您可以编辑草图,完整代码显示在本页底部。

pYYBAGJ7eQKABW__AAC5bAzdKrg378.png

检查串行监视器选项卡以排除连接故障。如果未连接到云端,我建议使用计算机中的本地ArduinoIDE并查看串行监视器上的消息。

第5步-仪表板

仪表板是物联网云设置的最后一部分,我们可以单击在仪表板选项卡中构建仪表板:

poYBAGJ7eP2AIFSLAABZ2SGtd3U704.png

要填充我们的仪表板,我们需要添加小部件。

pYYBAGJ7ePiAexDgAABiD90h6mo972.png

然后我们将一个变量链接到设置中的小部件。在这个项目中,我们添加了七个小部件,LED按钮、湿度和温度计、湿度和温度图表、温度和湿度消息以及考勤消息。

poYBAGJ7ePOAfEt-AACE1IWNUbw625.png

执行上述步骤的另一种方法是添加一个东西(这个项目的东西叫做SIM):

pYYBAGJ7eO-AUqoIAABX7peDn6U606.png

然后从Thing中选择变量:

pYYBAGJ7eOqAVqY6AAERyvPX5X0411.png

有两种类型的仪表板视图:移动视图

poYBAGJ7eOaAQ5rCAABqWtXFFpI845.png

和桌面视图:

pYYBAGJ7eOKABb6qAAErw5ewvXc372.png

第6步-下载历史数据

可以使用仪表板(i)上的“下载历史数据”选项从云中导出数据。

poYBAGJ7eNyATk0OAABPykPTxoU215.png

下载历史数据可以选择我们要下载的变量和时间段。

poYBAGJ7eNiAf9QPAAD9bid1qxQ440.png

您可以查看通过电子邮件接收并下载为CSV文件的考勤数据示例。

poYBAGJ7eNSAKyGUAAF_NziUF7o379.png

readme.txt文件包含变量名称、请求的时间段和希望我们“玩得开心!”的消息:

pYYBAGJ7eM-AdVkNAABDf2_g4X8565.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RFID
    +关注

    关注

    383

    文章

    5754

    浏览量

    234226
  • 考勤系统
    +关注

    关注

    0

    文章

    39

    浏览量

    11066
收藏 人收藏

    评论

    相关推荐

    利用RFID技术建立智能服装管理系统

    线上掼蛋平台,使得掼蛋竞技更加便捷,玩家可以随时随地参与比赛,同时也能通过算法匹配水平相当的对手。通过在牌上或桌上安装RFID标签,可以实现自动计分,当牌局结束时,系统能立即显示出每位选手的得分,提高了计分的准确性和效率。例如,
    的头像 发表于 03-11 16:47 139次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>RFID</b>技术建立智能服装管理<b class='flag-5'>系统</b>

    射频识别RFID

    2.4GHz微波与其进行信息传递。也即是说,先利用低频信号精确定位,再利用高频信号快速传输数据。其通常应用场景为:在高频信号所能所覆盖的大范围中,在不同位置安置多个低频阅读器用于激
    发表于 02-28 11:31

    远程RFID自动识别系统的研究

    电子发烧友网站提供《远程RFID自动识别系统的研究.pdf》资料免费下载
    发表于 11-06 10:24 0次下载
    远程<b class='flag-5'>RFID</b><b class='flag-5'>自动识别系统</b>的研究

    基于RFID的车辆自动化智能管理系统研究

    电子发烧友网站提供《基于RFID的车辆自动化智能管理系统研究.pdf》资料免费下载
    发表于 10-24 10:52 0次下载
    基于<b class='flag-5'>RFID</b>的车辆<b class='flag-5'>自动</b>化智能管理<b class='flag-5'>系统</b>研究

    基于RFID技术CFS智能仓库系统的解决方案

    系统是在现有CFS仓库管理中引入RFID技术,对CFS仓库中的入库、出库、调拨、移库移位、库存盘点等各个作业环节进行自动化的数据采集,在仓库作业区域实施无线网络覆盖,实现叉车和工作人员调度信息及作业
    发表于 09-19 08:20

    RFID电商仓储管理系统实现自动化的货物识别和跟踪

    ,为您的电商业务带来更多机遇。   在传统的仓储管理中,人工操作和条形码扫描是主要手段。然而,这种方法存在一些弊端,例如耗时、易出错等。RFID电商仓储管理系统利用RFID标签和读写器
    的头像 发表于 08-09 14:39 922次阅读

    RFID出入库管理系统

    RFID(射频识别)技术作为一种先进的自动识别技术,已经广泛应用于各个领域,仓库管理系统就是其中之一。RFID仓储管理系统
    的头像 发表于 07-31 11:37 537次阅读
    <b class='flag-5'>RFID</b>出入库管理<b class='flag-5'>系统</b>

    如何构建一个基于RFID考勤系统

    在这篇文章中,我们将构建一个基于RFID考勤系统,该系统可以记录给定时间窗口内 12 名学生/教职员工的出勤情况,该系统最多可以记录每人
    的头像 发表于 07-27 10:30 751次阅读
    如何构建一个基于<b class='flag-5'>RFID</b>的<b class='flag-5'>考勤</b><b class='flag-5'>系统</b>?

    什么是智慧工地人脸识别考勤系统

    。 西安智维拓远人脸识别考勤管理系统通过采用先进的人脸识别信息化考勤设备,实现现场施工人员的出勤电子化智能管理,实现查询考勤报表、统计和查询考勤
    的头像 发表于 07-26 17:59 633次阅读

    基于QT设计的人脸考勤打卡签到系统

    文章针对当前常用考勤方式中普遍存在的代签到、考勤数据整合较慢等问题,利用华为云的人脸识别技术实现了一种基于QT框架设计的在线考勤系统。该
    的头像 发表于 07-10 16:17 1309次阅读
    基于QT设计的人脸<b class='flag-5'>考勤</b>打卡签到<b class='flag-5'>系统</b>

    如何制作RFID Arduino门禁系统

    电子发烧友网站提供《如何制作RFID Arduino门禁系统.zip》资料免费下载
    发表于 06-27 10:34 3次下载
    如何<b class='flag-5'>制作</b><b class='flag-5'>RFID</b> Arduino门禁<b class='flag-5'>系统</b>

    基于Arduino和Google Spreadsheet的考勤系统

    电子发烧友网站提供《基于Arduino和Google Spreadsheet的考勤系统.zip》资料免费下载
    发表于 06-25 15:30 1次下载
    基于Arduino和Google Spreadsheet的<b class='flag-5'>考勤</b><b class='flag-5'>系统</b>

    使用Arduino基于RFID考勤系统

    电子发烧友网站提供《使用Arduino基于RFID考勤系统.zip》资料免费下载
    发表于 06-25 11:51 0次下载
    使用Arduino基于<b class='flag-5'>RFID</b>的<b class='flag-5'>考勤</b><b class='flag-5'>系统</b>

    使用Arduino的基于RFID考勤系统

    电子发烧友网站提供《使用Arduino的基于RFID考勤系统.zip》资料免费下载
    发表于 06-14 11:08 0次下载
    使用Arduino的基于<b class='flag-5'>RFID</b>的<b class='flag-5'>考勤</b><b class='flag-5'>系统</b>

    捷易科技智能点名球:让班级管理更高效、更智能的利器

    管理中的点名考勤问题,我司推出了一款全新的智能化点名设备——智能点名球。捷易科技智能点名球采用了先进的人脸识别技术,可以实现
    的头像 发表于 04-12 11:46 553次阅读
    捷易科技智能<b class='flag-5'>点名</b>球:让班级管理更高效、更智能的利器