|
正如我们许多人所知,计算机是在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模块连接到Arduino,而Arduino连接到计算机。将RFID标签放置在此读写器附近时,Arduino会读取rfid标签ID号并将其发送到计算机。
电路原理图 下面给出了将RFID RC522与Arduino连接的完整电路图。
如您所见,连接非常简单。由于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 |
设置RFID解锁系统 构建如上图所示的电路后,在Arduino与系统(笔记本电脑或PC)之间连接USB电缆。现在,用户需要找到Arduino的com端口。要找到com端口,可以使用设备管理器,也可以在Arduino IDE中找到它,如下所示。我的COM端口号是1;您的可能有所不同,请记下此COM端口号,因为以后将使用它。
现在,用户需要将RC522 Arduino代码上传到您的Arduino模块。完整的代码在本页底部提供。代码上传后,打开串行监视器。然后将RFID标签放在RFID读写器上,您将在串口监视器上看到5个值。用户需要将其复制然后关闭串口监视器。
从下面的给定链接下载rfid_configuration文件夹。该链接将下载一个包含四个项目的ZIP文件。
rfid_configuration_arduino_windows_login.zip
(252.11 KB, 下载次数: 75)
解压缩ZIP文件后,进入名为32位或64位的文件夹(根据您的操作系统),然后打开名为RFIDcredentials.txt 的记事本。粘贴RFID值并更新系统用户名和密码。如果要添加两张卡,则在第二行中添加相同的凭据,如下所示。
然后保存并关闭此文件。现在返回并打开RFIDCredSettings记事本,更新其中的Arduino端口,然后保存并关闭。同样,我的COM端口号为1,用您的COM端口号更新它。其余设置为默认值,如下所示。
现在复制所有四个项目并将其粘贴到C:\Windows\System32中。如果它要求任何许可,只需给出或单击“是”。现在运行注册文件以注册更改。
运行注册文件时,您可能会看到以下对话框。
点击是,然后按确定。现在锁定系统,该用户将看到当前用户可用的另一个用户选项。
现在,用户可以使用RFID卡解锁系统。也就是,现在我们不需要输入密码,只需将RFID标签放在RFID读写器上,窗口就会立即解锁。
RFID Arduino代码 该项目的代码部分非常简单。首先,我们需要包括头文件并为RFID RST_PIN和SS_PIN定义引脚。如果尚未安装mfrc522库,则可以从该Github链接下载并进行添加。 - #include <SPI.h>
- #include <MFRC522.h>
- #define RST_PIN 9
- #define SS_PIN 10
- MFRC522 mfrc522(SS_PIN, RST_PIN);
- MFRC522: : MIFARE_KEY;
复制代码
然后在void setup()函数中,我们初始化了串行和SPI通信以及RFID读写器。 - void setup()
- {
- serial.begin(9600);
- while(!Serial);
- SPI.begin();
- mfrc522.PCD_Init();
- for(byte i = 0; i < 6; i++)
- Key.KeyByte[i] = 0xFF;
- serial.print('>');
- }
复制代码
现在在loop函数中,我们等待卡。 - void loop()
- {
- if( ! mfrc522.PICC_IsNewCardPresent() )
- return;
- if( ! mfrc522.PICC_ReadCardSerial() )
- return;
- send_tag_val (mfrc522.uid.uidByte, mfrc522.uid.size);
- delay(1000);
- }
复制代码
如果找到卡,称为RFID标签的send_tag_val数据将使用串行打印传输到系统。该串行打印值将与我们之前放置的文件进行比较,如果匹配,则窗口将自行解锁。 - void send_tag_val (byte *buffer, byte buffersize)
- {
- serial.print("ID");
- for (byte i = 0; i < buffersize; i++)
- {
- serial.print(buffer[i], DEC);
- serial.print(" ");
- }
- serial.printIn(0, DEC);
- serial.print('>');
- }
复制代码
希望您理解该项目并喜欢制作。如果您有任何问题,欢迎在本贴下面进行回复。
代码 本文使用的完整代码如下:
main.rar
(480 Bytes, 下载次数: 115)
|