RFID Security Lock Circuit - รหัสโปรแกรมฉบับสมบูรณ์และรายละเอียดการทดสอบ

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในบทความนี้เราจะมาดูกันว่าวงจรเครื่องอ่าน RFID ที่ใช้ Arduino สามารถใช้ในการควบคุมรีเลย์ได้อย่างไรซึ่งสามารถใช้ในแอปพลิเคชั่นล็อคประตูเพื่อความปลอดภัยได้

ภาพรวม

หากคุณยังไม่ได้ตรวจสอบบทความ RFID ก่อนหน้านี้โปรดตรวจสอบก่อนซึ่งครอบคลุมถึง พื้นฐานของเทคโนโลยี RFID .



เราจะระบุแท็กที่ได้รับอนุญาตโดยใช้ UID สรุปสั้น ๆ ว่า UID คือหมายเลขประจำตัวที่ไม่ซ้ำกันของแท็กเมื่อคุณสแกนบัตรของคุณที่สำนักงานหรือที่อื่น ๆ ระบบจะดึง UID ออกจากการ์ด

UID ของบัตรจะถูกบันทึกไว้ในฐานข้อมูลของสำนักงานของคุณและจะจดจำผู้ถือบัตรและลงทะเบียนการเข้าร่วมของคุณ



แท็กไม่เพียง แต่ถ่ายโอน UID เท่านั้น แต่ยังถ่ายโอนข้อมูลอื่น ๆ ที่เก็บไว้ในแท็กโดยทั่วไปแท็กสามารถจัดเก็บจาก 1KB ถึง 4KB ได้ในบางครั้ง

เราจะไม่พูดถึงวิธีการจัดเก็บข้อมูลบนแท็ก แต่จะกล่าวถึงในบทความในอนาคต ในโพสต์นี้เราจะใช้หมายเลข UID เพื่อควบคุมไฟล์ รีเลย์เปิด / ปิด .

คำขวัญของโครงการนี้คือการเปิด / ปิดอุปกรณ์ซึ่งเชื่อมต่อกับการตั้งค่าที่กำหนดในการสแกนด้วยแท็ก RFID ที่ได้รับอนุญาต

UID ของการ์ดถูกกำหนดไว้ในโปรแกรมและเมื่อตรวจพบการ์ดที่ได้รับอนุญาตการ์ดจะเปิดรีเลย์ในการสแกนครั้งแรกและการสแกนอีกครั้งจะปิดการทำงานของรีเลย์

หากตรวจพบการ์ดที่ไม่ได้รับอนุญาตการ์ดจะแสดงข้อความแสดงข้อผิดพลาดบนมอนิเตอร์แบบอนุกรมและรีเลย์ทำงานปัจจุบันต่อไปโดยไม่หยุดชะงัก

ที่นี่เมื่อสแกนบัตรที่ได้รับอนุญาตรีเลย์จะเปิดใช้งาน / ปิดการใช้งานกลไกนี้สามารถใช้ได้ทุกที่ตัวอย่างเช่นในระบบล็อคประตูซึ่งต้องสแกนบัตรที่ได้รับอนุญาตเพื่อเปิดประตู

มันทำงานอย่างไร:

RFID Security Lock Circuit โดยใช้ Arduino

วงจร RFID ประกอบด้วย LED ซึ่งระบุสถานะของรีเลย์ทรานซิสเตอร์ BC 548 จะขับเคลื่อนรีเลย์และไดโอด 1N4007 เชื่อมต่อผ่านรีเลย์เพื่อจับกุมเข็มไฟฟ้าแรงสูงในทันทีที่เปลี่ยน

หากคุณต้องการเชื่อมต่อรีเลย์พิกัดแรงดันไฟฟ้าที่สูงขึ้น (9V หรือ 12V) คุณสามารถเชื่อมต่อแหล่งจ่าย + Ve ภายนอกเข้ากับรีเลย์และ - จ่ายไฟเข้ากับกราวด์ของพิน GND ของ arduino โปรดใช้ความระมัดระวังอย่างที่สุดในขณะที่ทำตามขั้นตอนนี้เนื่องจากคุณอาจทำให้บอร์ดเสียหายได้หากการเชื่อมต่อไม่ถูกต้อง

ขั้นตอนต่อไปหลังจากเสร็จสิ้นการตั้งค่าฮาร์ดแวร์คือการอัปโหลดโค้ดเพื่อค้นหา UID ของแท็กของคุณ
ตอนนี้อัปโหลดโปรแกรมที่ระบุด้านล่างไปยัง arduino เปิดจอภาพอนุกรมและสแกนแท็ก

โปรแกรมค้นหา UID:

#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN)
MFRC522::MIFARE_Key key
void setup()
{
Serial.begin(9600)
SPI.begin()
rfid.PCD_Init()
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return
if ( ! rfid.PICC_ReadCardSerial())
return
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('Your tag is not of type MIFARE Classic, your card/tag can't be read :('))
return
}
String StrID = ''
for (byte i = 0 i <4 i ++) {
StrID +=
(rfid.uid.uidByte[i]<0x10? '0' : '')+
String(rfid.uid.uidByte[i],HEX)+
(i!=3?':' : '' )
}
StrID.toUpperCase()
Serial.print('Your card's UID: ')
Serial.println(StrID)
rfid.PICC_HaltA ()
rfid.PCD_StopCrypto1 ()
}

เอาต์พุตบนมอนิเตอร์แบบอนุกรม (ตัวอย่าง):

UID ของการ์ดของคุณคือ AA: BB: CC: DD

บนมอนิเตอร์แบบอนุกรมคุณจะเห็นรหัสฐานสิบหกซึ่งเป็น UID ของแท็ก จดบันทึกไว้ซึ่งจะใช้ในโปรแกรมถัดไปเพื่อระบุแท็ก
หลังจากขั้นตอนนี้เสร็จสิ้นให้อัปโหลดโค้ดด้านล่างในการตั้งค่าเดียวกัน

โปรแกรมระบุการ์ดและรีเลย์ควบคุม:

//---------------Program developed by R.Girish------------//
#include
#include
#define SS_PIN 10
#define RST_PIN 9
int flag=0
int op=8
char UID[] = 'XX:XX:XX:XX' //Place your UID of your tag here.
MFRC522 rfid(SS_PIN, RST_PIN)
MFRC522::MIFARE_Key key
void setup()
{
Serial.begin(9600)
SPI.begin()
rfid.PCD_Init()
pinMode(op,OUTPUT)
}
void loop()
{
if ( ! rfid.PICC_IsNewCardPresent())
return
if ( ! rfid.PICC_ReadCardSerial())
return
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('Your tag is not of type MIFARE Classic, your tag can't be read :('))
return
}
String StrID = ''
for (byte i = 0 i <4 i ++)
{
StrID +=
(rfid.uid.uidByte[i]<0x10? '0' : '')+
String(rfid.uid.uidByte[i],HEX)+
(i!=3?':' : '' )
}
StrID.toUpperCase()
if(StrID!=UID)
{
Serial.println('This is an invalid tag :(')
Serial.println('***************************************')
delay(2000)
}
if (StrID==UID && flag==0)
{
flag=1
digitalWrite(op,HIGH)
Serial.println('This is a vaild tag :)')
Serial.println('Status: ON')
Serial.println('***************************************')
delay(2000)
}
else if(StrID==UID && flag==1)
{
flag=0
digitalWrite(op,LOW)
Serial.println('This is a vaild tag :)')
Serial.println('Status: OFF')
Serial.println('***************************************')
delay(2000)
}
rfid.PICC_HaltA ()
rfid.PCD_StopCrypto1 ()
}
//---------------Program developed by R.Girish------------//

ถ่าน UID [] = 'XX: XX: XX: XX' // วาง UID ของแท็กที่นี่
แทนที่ XX: XX: XX: XX ด้วย UID ของคุณ

ต้นแบบของผู้แต่งซึ่งสามารถใช้เป็นล็อคความปลอดภัย RFID สำหรับประตูและตู้นิรภัยได้อย่างมีประสิทธิภาพ:

เมื่อสแกนบัตรที่ได้รับอนุญาต:

เมื่อมีการสแกนแท็กที่ไม่ได้รับอนุญาต:

หากคุณมีคำถามใด ๆ เกี่ยวกับวงจรล็อคความปลอดภัย Arduino RFID นี้โปรดอย่าลังเลที่จะถามด้านล่างในส่วนความคิดเห็น




ก่อนหน้านี้: Triac Phase Control โดยใช้ PWM Time Proportional ถัดไป: วงจรไฟส่องสว่างทางม้าลายเพื่อความปลอดภัย