מעגל נעילת אבטחה RFID - קוד תוכנית מלא ופרטי בדיקה

נסה את הכלי שלנו לביטול בעיות





במאמר זה נראה כיצד ניתן להשתמש במעגל קורא RFID מבוסס ארדואינו לבקרת ממסר, אשר בתורו יכול לשמש ביישומי נעילת דלתות אבטחה.

סקירה כללית

אם עדיין לא בדקת את המאמר הקודם ב- RFID, אנא המשך לבדוק אותו, הוא כיסה את יסודות טכנולוגיית RFID .



אנו נזהה את התגים המורשים באמצעות UID. בקצרה UID הוא מספר הזיהוי הייחודי של התג, כאשר אתה סורק את הכרטיס שלך במשרד שלך או בכל מקום אחר, הוא מחלץ את ה- UID מהכרטיס.

ה- UID של הכרטיס נשמר במאגר המידע של משרדך והוא יזהה את בעל הכרטיס וירשם את הנוכחות שלך.



התג לא רק מעביר UID, אלא גם מעביר מידע אחר המאוחסן בתג, התגים בדרך כלל יכולים לאחסן בין 1KB ל- 4KB לפעמים אפילו יותר.

לא נדון כיצד לאחסן מידע בתגית, אך נדון במאמר עתידי. בהודעה זו אנו הולכים להשתמש במספר UID כדי לשלוט ב- ממסר ON / OFF .

המוטו של פרויקט זה הוא הפעלה / כיבוי של המכשיר, המחובר להתקנה הנתונה בסריקה באמצעות תג RFID מורשה.

ה- UID של הכרטיס מוגדר בתוכנית וכאשר מתגלה כרטיס מורשה, הוא יפעיל את הממסר בסריקה הראשונה וסריקתו שוב תבטל את הממסר.

אם מתגלה כרטיס לא מורשה כלשהו, ​​הוא ימסור הודעת שגיאה בצג הסדרתי וממשיך להמשיך במשימה הנוכחית ללא כל הפרעה.

כאן כשסורקים את הכרטיס המורשה, הממסר מפעיל / מבטל, ניתן להשתמש במנגנון זה בכל מקום, למשל ב: מערכת נעילת דלתות, שם צריך לסרוק כרטיס מורשה כדי לפתוח את הדלת.

איך זה עובד:

מעגל נעילת אבטחה RFID באמצעות Arduino

מעגל ה- RFID מורכב מ- LED המציין את מצב הממסר, טרנזיסטור BC 548 מניע את הממסר ודיודת 1N4007 מחוברת על פני הממסר כדי לעצור את ספייק המתח הגבוה ברגע ההחלפה.

אם ברצונך לחבר ממסר בעל דירוג מתח גבוה יותר (9 וולט או 12 וולט), באפשרותך לחבר אספקת + Ve חיצונית לממסר ו - אספקת ve לאדמה של סיכת GND של ארדואינו. אנא היזהר לכל היותר תוך כדי צעד זה, מכיוון שאתה עלול לפגוע בלוח אם החיבורים אינם תקינים.

השלב הבא לאחר השלמת הגדרת החומרה הוא העלאת הקוד כדי למצוא את ה- 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------------//

char UID [] = 'XX: XX: XX: XX' // הצב את ה- UID של התג שלך כאן.
החלף את XX: XX: XX: XX ב- UID שלך.

אב-טיפוס של המחבר אשר יכול לשמש ביעילות כמנעול אבטחה RFID חסין תמים לדלתות וכספות:

כאשר סריקת כרטיס מורשה:

כאשר סריקה של תג לא מורשה:

אם יש לך שאלות בנוגע למעגל נעילת האבטחה RFID של Arduino, אל תהסס לשאול למטה בסעיף ההערות.




קודם: בקרת שלב טריאק באמצעות פרופורציונאלי זמן PWM הבא: מעגל תאורת בטיחות מואר מעבר