如何使用RFID标签解锁Windows笔记本电脑

描述

  我们中的许多人都知道计算机是在 1871 年左右发明的,但直到 1961 年我们才对它们进行密码保护。在 19 年代早期,我们使用大头针和字母数字字符作为计算机的密码,今天我们有许多类型的验证方法,如密码、大头针、图案、手势、指纹识别、面部识别等等。但是,每次我在短暂休息后回到办公室电脑时,登录到我的办公室电脑仍然是一件痛苦的事。

  因此,在这个项目中,我们将学习如何使用 RFID 标签解锁 Windows 笔记本电脑。Arduino 板和 RFID 阅读器将始终连接到计算机并解锁系统,我只需将 RFID 标签交换到 RFID 阅读器上。有了这个Arduino RFID windows 登录项目,我可以非常快速地解锁系统,而无需输入任何密码,后来我计划使用我的办公室身份证作为 RFID 标签,因为我的身份证已经有一个 RFID 标签,我可以编程Arduino 来验证它。听起来很有趣,所以让我们开始吧……

  所需材料:

  Arduino UNO(可以使用任何 Arduino)

  RC522 RFID阅读器

  射频识别标签

  连接线

  USB电缆

  RC522 RFID 模块:

  市场上有许多类型的 RFID 阅读器,但在这个项目中,我们使用了基于 RC522 SPI 的 RFID 模块。这在在线购物网站上很便宜且很容易获得。这是 RFID 具有 SPI、UART 和 I2C 接口,但默认情况下,它带有 SPI 接口。MFRC522 RFID 阅读器模块如下所示。

RFID

  在这个项目中,上面显示的RC522 RFID 模块连接到 Arduino,而 Arduino 本身连接到计算机。当 RFID 标签放置在此阅读器附近时,Arduino 会读取 rfid 标签 ID 号并将其发送到计算机。

  电路原理图:

  下面给出了将RFID RC522 与 Arduino 接口的完整电路图。

RFID

  如您所见,连接非常简单。由于 RFID 模块使用 SPI 通信,我们已将 MISO、MOSI、SCK 和 NSS 引脚连接到 Arduino Uno 板的 SPI 引脚。RFID 模块由 Arduino 的 5V 引脚供电。Arduino UNO 本身将始终连接到笔记本电脑,因此我们可以通过笔记本电脑的 USB 端口为其供电。连接详细信息如下表所示。

RFID

RFID

  设置 RFID 解锁系统:

  电路搭建完成后,如上图所示,将 Arduino 和系统(笔记本电脑或 PC)之间的 USB 线连接起来。现在用户需要找到 Arduino 的 com 端口。要查找 com 端口,您可以使用设备管理器,也可以在 Arduino IDE 中找到它,如下所示。我这里的 COM 端口号是 1;您的可能会有所不同,请记下此 COM 端口号,以便稍后使用。

RFID

  现在用户需要将RC522 Arduino 代码上传到您的 Arduino 模块。本页底部给出了完整的代码;代码的解释也将在本文后面讨论。代码上传后打开串口监视器。然后将 RFID 标签放在 RFID 阅读器上,您将在串行监视器上看到 5 个值。用户需要复制它并关闭串行监视器。我的值显示在下面的串行监视器快照中。

RFID

  解压缩 ZIP 文件后,进入名为 32 位或 64 位文件夹的文件夹(根据您的操作系统)并打开名为 RFIDcredentials.txt 的记事本。粘贴 RFID 值并更新系统用户名和密码。如果要添加两张卡,请在第二行添加相同的凭据,如下所示。

RFID

  然后保存并关闭此文件。现在回来打开 RFIDCredSettings 记事本并更新其中的 Arduino 端口,然后保存并关闭。我的 COM 端口号再次为 1,用您的 COM 端口号更新它。将其余部分保留为默认值,如下所示。

RFID

  现在复制所有四个项目并将它们粘贴到 C:\Windows\System32。如果它要求任何许可,只需给予或单击是。现在运行注册文件来注册更改。

RFID

  当您运行注册文件时,您可能会看到以下对话框。

RFID

  按是然后确定。现在锁定系统,用户将看到当前用户可用的另一个用户选项。

RFID

  现在用户可以使用 RFID 卡解锁系统。这意味着,现在我们不需要输入密码,只需将 RFID 标签放在 RFID 阅读器上,窗户就会立即解锁。

  RFID Arduino 代码:

  该项目的编码部分简单易行;给出了相同的解释。首先,我们需要包含头文件并为 RFID RST_PIN 和 SS_PIN 定义引脚。如果您尚未安装mfrc522 库,您可以从以下链接下载并添加它。

 #include

 

#include 

#define RST_PIN 9
#define SS_PIN 10

MFRC522 mfrc522(SS_PIN,RST_PIN);
MFRC522::MIFARE_KEY;

 

然后在 void setup 中,我们已经初始化了串口和SPI 通信以及 RFID 阅读器

 

无效设置()
{
序列号.开始(9600);
而(!串行);
SPI.开始();
mfrc522.PCD_Init();
for(字节 i = 0; i < 6; i++)
Key.KeyByte[i] = 0xFF;
serial.print('>');
}

 

现在在循环功能中,我们正在等待卡片。

 

无效循环()
{
如果(!mfrc522.PICC_IsNewCardPresent())
   返回;
如果(!mfrc522.PICC_ReadCardSerial())
   返回;
send_tag_val (mfrc522.uid.uidByte, mfrc522.uid.size);
延迟(1000);
}

 

如果卡片发现 send_tag_val 调用一个 RFID 标签数据,将使用串行打印将数据传输到系统。这个序列打印值将与我们之前放置的文件进行比较,如果匹配,windows 将自行解锁。

 

void send_tag_val (byte *buffer, byte buffersize)
{
   序列号.print("ID");
   对于(字节 i = 0;i < 缓冲区大小;i++)
{
   serial.print(缓冲区 [i],DEC);
   序列号.print("");
}
   serial.printIn(0, DEC);
    serial.print('>');
}

 

#include


#include





#define RST_PIN 9


#define SS_PIN 10





MFRC522 mfrc522(SS_PIN,RST_PIN);


MFRC522::MIFARE_Key 密钥;





无效设置()


{


序列号.开始(9600);


而(!串行);


SPI.开始();


mfrc522.PCD_Init();


对于(字节 i = 0;i < 6;i++)


key.keyByte[i] = 0xFF;


Serial.print('>');


}





无效循环()


{


如果(!mfrc522.PICC_IsNewCardPresent())


返回;


如果(!mfrc522.PICC_ReadCardSerial())


返回;


send_tag_val(mfrc522.uid.uidByte, mfrc522.uid.size);


延迟(1000);


}





void send_tag_val(byte *buffer, byte bufferSize)


{


Serial.print("ID:");


对于(字节 i = 0;i < 缓冲区大小;i++)


{


Serial.print(buffer[i], DEC);


序列号.print("");


}


Serial.println(0, DEC);


Serial.print('>');


}
 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分