在本文中,我们将看到Arduino基RFID读取器电路如何用于控制继电器,从而可以在安全门锁应用中使用。
概述
如果您还没有检查以前的RFID文章,请继续查看它,它涵盖了RFID技术的基础知识。
我们将使用UID识别授权标记。在uNUSHELL UID中是标签的唯一标识号,当您在您的办公室或其他任何地方扫描卡时,它会从卡中提取UID。
该卡的UID保存在您的办公室数据库中,并将识别卡持有人并注册您的出席。
标记不仅传输UID,还可以传输存储在标签中的其他一些信息,这些标签通常可以将1KB存储到4KB,甚至更多。
我们不会讨论如何存储标签的信息,但是将在未来的文章中讨论。在此帖子中,我们将利用UID号码来控制继电器开/关。
该项目的座右铭是打开/关闭设备,该设备与带有授权RFID标签的扫描时与给定的设置连接。
该卡的UID在程序中定义,当检测到授权卡时,它将打开第一次扫描并再次扫描继电器,并再次停用继电器。
如果检测到任何未经授权的卡,它将在串行监视器上发出错误消息,并且继电器继续其当前任务而不会中断。
这里扫描授权卡时,继电器激活/停用,这种机制可以在任何地方使用,例如:门锁系统,需要扫描授权卡以打开门。
这个怎么运作:
RFID电路由指示中继状态的LED组成,BC 548晶体管驱动继电器和1N4007二极管在继电器上连接,以在切换时延伸高压尖峰。
如果要连接更高的电压额定继电器(9V或12V),您可以连接外部+ VE供电以继电器和arduino的GND引脚的电源。在进行此步骤时,请大心谨慎,因为如果连接不对,可能会损坏板。
完成硬件设置后的下一步是上传代码以查找标记的UID。
现在将下面的给定程序上传到Arduino,打开串行监视器并扫描标记。
要找到UID的程序:
#include
#include
#define ss_pin 10.
#define rst_pin 9.
MFRC522 RFID(SS_PIN,RST_PIN);
mfrc522 :: mifare_key键;
void setup()
{
Serial.Begin(9600);
spi.begin();
rfid.pcd_init();
}
void loop(){
if(!rfid.picc_isnewcardpresent())
返回;
if(!rfid.picc_readcardserial())
返回;
mfrc522 :: picc_type picctype = rfid.picc_gettype(rfid.uid.sak);
if(picctype!= mfrc522 :: picc_type_mifare_mini &&
picctype!= mfrc522 :: picc_type_mifare_1k &&
picctype!= mfrc522 :: picc_type_mifare_4k)
{
serial.println(f(“您的标记不属于mifare classic,您的卡/标签无法读取:(”));
返回;
}
字符串strid =“”;
for(字节i = 0; i <4; i ++){
Strid + =
(rfid.uid.uidbyte [i] <0x10?“0”:“”)+
String(rfid.uid.uidbyte [i],hex)+
(我!= 3?“:”:“”);
}
strid.percate();
serial.print(“您的卡的UID:”);
serial.println(Strid);
RFID.PICC_HALTA();
rfid.pcd_stopcrypto1();
}
串行监视器上的输出(示例):
您的卡的UID是:AA:BB:CC:DD
在串行监视器上,您将看到一些十六进制代码,这是标签的UID。注意它,将在下一个程序中使用以识别标记。
完成此步骤后,在相同的设置上上传以下代码。
识别卡和控制继电器的程序:
// --------------由r.girish开发的计划------------ //
#include
#include
#define ss_pin 10.
#define rst_pin 9.
int flag = 0;
int op = 8;
char uid [] =“xx:xx:xx:xx”;//将您的UID放在此处。
MFRC522 RFID(SS_PIN,RST_PIN);
mfrc522 :: mifare_key键;
void setup()
{
Serial.Begin(9600);
spi.begin();
rfid.pcd_init();
PinMode(OP,输出);
}
void循环()
{
if(!rfid.picc_isnewcardpresent())
返回;
if(!rfid.picc_readcardserial())
返回;
mfrc522 :: picc_type picctype = rfid.picc_gettype(rfid.uid.sak);
if(picctype!= mfrc522 :: picc_type_mifare_mini &&
picctype!= mfrc522 :: picc_type_mifare_1k &&
picctype!= mfrc522 :: picc_type_mifare_4k){
serial.println(f(“您的标记不属于mifare classic,无法读取您的标记:(”));
返回;
}
字符串strid =“”;
for(字节i = 0; i <4; i ++)
{
Strid + =
(rfid.uid.uidbyte [i] <0x10?“0”:“”)+
String(rfid.uid.uidbyte [i],hex)+
(我!= 3?“:”:“”);
}
strid.percate();
如果(Strid!= uid)
{
serial.println(“这是无效标签:(”);
serial.println(“***************************************”);
延迟(2000);
}
if(strid == uid && flag == 0)
{
标志= 1;
DigitalWrite(OP,高);
serial.println(“这是一个Vaild标签:)”);
serial.println(“状态:开启”);
serial.println(“***************************************”);
延迟(2000);
}
否则if(strid == uid && flag == 1)
{
标志= 0;
DigitalWrite(OP,低);
serial.println(“这是一个Vaild标签:)”);
serial.println(“状态:关闭”);
serial.println(“***************************************”);
延迟(2000);
}
RFID.PICC_HALTA();
rfid.pcd_stopcrypto1();
}
// --------------由r.girish开发的计划------------ //
char uid [] =“xx:xx:xx:xx”;//将您的UID放在此处。
替换xx:xx:xx:xx与您的UID。
作者的原型可以有效地用作门和保险箱的万无一失的RFID安全锁:
扫描授权卡时:
扫描未经授权的标签时:
如果您对此Arduino RFID安全锁电路有任何疑问,请随时在评论部分中询问。
你好呀!使用Atmega 2560编译代码,但不起作用。
嘿,请立即检查,并告诉我们是否仍然存在问题。
嗨Swagatam,只是想知道是否有任何方法可以将更多标签添加到代码中,我有3个不同的标签我想使用。
问候
杰夫
嗨Geoff,我将向文章的作者转发该问题的作者。
谢谢Swagatam,应该等待回复。
嗨杰夫,
是的,可以添加2个标签。我会尝试更新代码。
问候