风筝
发表于: 2019-11-24 10:17:20 | 显示全部楼层

正如我们许多人所知,计算机是在1871年左右发明的,但是直到1961年,我们才对它们进行了密码保护。在19年代初期,我们使用字母数字字符作为计算机的密码,如今,我们拥有多种类型的验证方法,例如密码、图案、手势、指纹识别、面部识别等等。但是,每次短暂休息后,登录办公计算机时,都比较费时。


因此,在本篇文章中,我们将学习如何使用RFID标签解锁Windows笔记本电脑。 Arduino开发板和RFID读写器始终连接到计算机,并且要解锁系统,我只需要在RFID阅读器上交换RFID标签即可。借助此Arduino RFID登录Windows项目,我可以非常快速地解锁系统,而无需输入任何密码,稍后,我计划使用办公室ID卡作为RFID标签,因为ID卡中已经装有RFID标签,并且我可以对Arduino进行编程验证。听起来很有趣,所以让我们开始吧……


所需的材料

●    Arduino UNO

●    RC522 RFID读写器

●    RFID标签

●    连接线

●    USB电缆


RC522 RFID模块

市场上有许多类型的RFID读写器,但是在本文中,我们使用了基于RC522 SPI的RFID模块。这很便宜并且可以在购物网站上轻松获得。这种RFID模块带有SPI、UART和I2C接口,但默认情况下,它使用SPI接口。 MFRC522 RFID读写器模块如下所示。

RC522-RFID-Module.jpg


在该项目中,上图的RC522 RFID模块连接到Arduino,而Arduino连接到计算机。将RFID标签放置在此读写器附近时,Arduino会读取rfid标签ID号并将其发送到计算机。


电路原理图

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

Circuit-Diagram-to-Interface-RC522-with-Arduino.png

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

RFID RC522
Arduino
VCC
3.3V
GND
GND
RST
D9
MISO
D12
MOSI
D11
SCK
D13
SDA/NSS
D10

Circuit-Connection-of-Interface-RC522-with-Arduino_0.jpg


设置RFID解锁系统

构建如上图所示的电路后,在Arduino与系统(笔记本电脑或PC)之间连接USB电缆。现在,用户需要找到Arduino的com端口。要找到com端口,可以使用设备管理器,也可以在Arduino IDE中找到它,如下所示。我的COM端口号是1;您的可能有所不同,请记下此COM端口号,因为以后将使用它。

Setting-up-the-RFID-Unlock-System.png

现在,用户需要将RC522 Arduino代码上传到您的Arduino模块。完整的代码在本页底部提供。代码上传后,打开串行监视器。然后将RFID标签放在RFID读写器上,您将在串口监视器上看到5个值。用户需要将其复制然后关闭串口监视器。

Serial-Monitor-ID.png

从下面的给定链接下载rfid_configuration文件夹。该链接将下载一个包含四个项目的ZIP文件。 rfid_configuration_arduino_windows_login.zip (252.11 KB, 下载次数: 75)


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

RFID-Credentials.png

然后保存并关闭此文件。现在返回并打开RFIDCredSettings记事本,更新其中的Arduino端口,然后保存并关闭。同样,我的COM端口号为1,用您的COM端口号更新它。其余设置为默认值,如下所示。

RFID-Cred-Settings.png

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

RFID-Configuration-Files_0.png

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

Login-to-Windows-Computers-using-RFID.png

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

Login-to-Windows-Computers-using-RFID.jpg

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


RFID Arduino代码

该项目的代码部分非常简单。首先,我们需要包括头文件并为RFID RST_PIN和SS_PIN定义引脚。如果尚未安装mfrc522库,则可以从该Github链接下载并进行添加。

  1. #include <SPI.h>
  2. #include <MFRC522.h>

  3. #define RST_PIN    9
  4. #define SS_PIN     10

  5. MFRC522 mfrc522(SS_PIN, RST_PIN);
  6. MFRC522: : MIFARE_KEY;
复制代码

然后在void setup()函数中,我们初始化了串行和SPI通信以及RFID读写器。

  1. void setup()
  2. {
  3. serial.begin(9600);
  4. while(!Serial);
  5. SPI.begin();
  6. mfrc522.PCD_Init();
  7. for(byte i = 0; i < 6; i++)
  8. Key.KeyByte[i] = 0xFF;
  9. serial.print('>');
  10. }
复制代码

现在在loop函数中,我们等待卡。

  1. void loop()
  2. {
  3. if( ! mfrc522.PICC_IsNewCardPresent() )
  4.    return;
  5. if( ! mfrc522.PICC_ReadCardSerial() )
  6.    return;
  7. send_tag_val (mfrc522.uid.uidByte, mfrc522.uid.size);
  8. delay(1000);
  9. }
复制代码

如果找到卡,称为RFID标签的send_tag_val数据将使用串行打印传输到系统。该串行打印值将与我们之前放置的文件进行比较,如果匹配,则窗口将自行解锁。

  1. void send_tag_val (byte *buffer, byte buffersize)
  2. {
  3.    serial.print("ID");
  4.    for (byte i = 0; i < buffersize; i++)
  5. {
  6.    serial.print(buffer[i], DEC);
  7.    serial.print(" ");
  8. }
  9.    serial.printIn(0, DEC);
  10.     serial.print('>');
  11. }
复制代码

希望您理解该项目并喜欢制作。如果您有任何问题,欢迎在本贴下面进行回复。


代码

本文使用的完整代码如下: main.rar (480 Bytes, 下载次数: 115)

跳转到指定楼层
11zhangjing11
发表于: 2020-6-10 09:57:20 | 显示全部楼层

把四个文件复制到C:\Windows\System32后,运行register文件后,并没有出现新的用户,请问是什么问题,仍然只有一个默认的administrator用户
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-24 19:36 , Processed in 0.046412 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表