RFID(射频识别)是一种廉价且可访问的技术。它可用于许多应用中,例如访问控制,安全性,资产跟踪,人员跟踪等。您已经在酒店,办公室和许多其他地方看到过RFID门锁系统,只需要将卡放在RFID读取器附近一秒钟,门就会打开。我们在许多基于RFID的项目中使用了RFID阅读器和标签。
在之前的文章中,我们构建了一个简单的RFID门锁,这次我们使用一个真正的电磁门锁,并通过RFID和Arduino对其进行控制。此处,霍尔效应传感器和磁铁用于检测门的移动。霍尔效应传感器将放置在门框上,磁铁将放置在门本身上。当霍尔效应传感器和磁体相互靠近时,霍尔效应传感器将处于低电平状态,门将保持关闭状态;当传感器和磁体未闭合时,则意味着门已打开并且霍尔传感器处于高电平状态州。我们将使用此霍尔效应机制自动锁定和解锁门。要了解有关霍尔传感器及其工作原理的更多信息,请点击链接。
所需组件
- Arduino Uno
- RFID-RC522模块
- 12v电磁锁
- 继电器模块
- 霍尔效应传感器
- 10kΩ电阻
- 蜂鸣器
电磁锁
电磁锁在电子机械锁机构上起作用。这种类型的锁具有一个带有倾斜切口的嵌条和一个良好的安装支架。接通电源后,DC会产生磁场,该磁场会使子弹在内部移动并使门保持在解锁位置。子弹将保持其位置,直到断电为止。断开电源后,子弹会向外移动并锁定门。在锁定状态下它不使用任何电源。要驱动电磁锁,您需要一个可提供12V @ 500mA的电源。
电路原理图
下面给出了使用Arduino的电磁门锁的电路图。
下表列出了Arduino与RFID之间的连接。蜂鸣器的正极引脚连接到Arduino的数字引脚4,而GND引脚连接到Arduino的接地引脚。在霍尔效应传感器的VCC和OUT引脚之间使用10K电阻。电磁锁通过继电器模块连接到Arduino。
RFID针 | Arduino Uno针 |
SDA | 数字10 |
SCK | 数字13 |
摩西 | 数字11 |
味噌 | 数字12 |
问卷 | 未连接 |
地线 | 地线 |
RST | 数字9 |
3.3伏 | 3.3伏 |
霍尔效应传感器引脚 | Arduino Uno针 |
5伏 | 5伏 |
地线 | 地线 |
出 | 3 |
根据电路图将性能板上的所有组件焊接完毕后,如下图所示:
代码说明
本文档末尾提供了此Arduino电磁锁的完整代码。在这里,我们将逐步解释该代码以更好地理解。
通过包含所有必需的库来启动代码。在这里,它仅需要两个库,一个用于Arduino和RFID之间的SPI通信,另一个用于RFID模块。这两个库都可以从下面给出的链接下载:
- SPI.h
- MFRC522.h
现在定义蜂鸣器,电磁锁和RFID模块的引脚
内部蜂鸣器= 4; const int LockPin = 2; #define SS_PIN 10 #define RST_PIN 9
然后将锁定引脚和蜂鸣器引脚定义为输出,并将霍尔效应传感器引脚定义为输入,并启动SPI通信。
pinMode(LockPin,OUTPUT); pinMode(蜂鸣器,输出); pinMode(霍尔传感器,输入); SPI.begin(); //启动SPI总线mfrc522.PCD_Init(); //启动MFRC522
在 空循环内 ,读取霍尔传感器的值,当其变低时,关闭门。
状态= digitalRead(hall_sensor); Serial.print(状态); 延迟(3000); if(state == LOW){digitalWrite(LockPin,LOW); Serial.print(“门关闭”); digitalWrite(Buzzer,HIGH); delay(2000); digitalWrite(Buzzer,LOW);}
在空循环功能内部,它将检查是否存在新的RFID卡,如果存在新的卡,则它将检查卡的UID。对于有效的卡,它将打开锁;否则,它将打印“ 您无权。 '结束时提供的视频中显示了完整的工作。
如果(!mfrc522.PICC_IsNewCardPresent()){返回; } //如果((mfrc522.PICC_ReadCardSerial()){返回; } //在串行监视器上显示UID String content =“”;字节字母for(字节i = 0; i <mfrc522.uid.size; i ++){content.concat(String(mfrc522.uid.uidByte <0x10?“ 0”:“”)); content.concat(String(mfrc522.uid.uidByte,HEX)); } Serial.println(); Serial.print(“ Message:”); content.toUpperCase(); if(content.substring(1)==“ 60 4E 07 1E”)//在此处更改您要授予访问权限的卡的UID {digitalWrite(LockPin,HIGH); Serial.print(“门已解锁”); digitalWrite(Buzzer,HIGH); delay(2000); digitalWrite(Buzzer,LOW); } else {Serial.println(“您未被授权”); digitalWrite(Buzzer,HIGH); delay(2000); digitalWrite(蜂鸣器,低); }}
测试RFID电磁锁
一旦准备好代码和硬件,就可以开始测试电磁门锁项目。在这里,我们已将所有组件焊接在穿孔板上,以便可以轻松将其安装在门上。
因此要进行测试,请将穿孔板安装在门框上,并在门上安装磁铁,以便可以检测到门的运动。下图显示了如何将磁铁和霍尔传感器固定在门上。
现在,扫描您的授权RFID卡以打开门锁。电磁门锁将保持打开状态,直到霍尔效应传感器的输出高。现在,当门在关闭时再次到达霍尔传感器附近时,霍尔效应传感器的状态会由于磁场(由门上附着的磁体产生)而变为“低”,并且锁将再次关闭。
代替使用霍尔效应传感器,您可以引入延迟以使门在规定的时间内保持打开状态。
完整的代码和工作视频如下。另外,请使用其他技术检查其他类型的门锁。