دائرة قفل أمان RFID - رمز البرنامج الكامل وتفاصيل الاختبار

دائرة قفل أمان RFID - رمز البرنامج الكامل وتفاصيل الاختبار

سنرى في هذه المقالة كيف يمكن استخدام دائرة قارئ RFID القائمة على Arduino للتحكم في المرحل ، والذي يمكن استخدامه بدوره في تطبيقات قفل الباب الأمني.



ملخص

إذا لم تكن قد تحققت بعد من مقالة RFID السابقة ، فالرجاء المضي قدمًا في التحقق منها ، فقد غطت أساسيات تقنية RFID .

سنقوم بتحديد العلامات المصرح بها باستخدام UID. باختصار ، UID هو رقم التعريف الفريد للعلامة ، عندما تقوم بمسح بطاقتك في مكتبك أو في أي مكان آخر ، فإنه يستخرج UID من البطاقة.





يتم حفظ المعرف الفريد للبطاقة في قاعدة بيانات مكتبك وسوف يتعرف على حامل البطاقة ويسجل حضورك.

لا تقوم العلامة بنقل UID فحسب ، بل تنقل أيضًا بعض المعلومات الأخرى المخزنة في العلامة ، ويمكن للعلامات بشكل عام تخزين من 1 كيلوبايت إلى 4 كيلوبايت في بعض الأحيان.



لن نناقش كيفية تخزين المعلومات على العلامة ، ولكن ستتم مناقشتها في مقالة مقبلة. في هذا المنشور ، سنستخدم رقم UID للتحكم في التتابع ON / OFF .

يتمثل شعار هذا المشروع في تشغيل / إيقاف تشغيل الجهاز المتصل بالإعداد المحدد عند المسح باستخدام علامة RFID المعتمدة.

يتم تحديد UID الخاص بالبطاقة في البرنامج وعندما يتم الكشف عن البطاقة المصرح بها ، سيتم تشغيل التتابع في المسح الأول وسيعمل مسحه مرة أخرى على إلغاء تنشيط التتابع.

إذا تم اكتشاف أي بطاقة غير مصرح بها ، فستظهر رسالة خطأ على الشاشة التسلسلية وسيواصل الترحيل مهمته الحالية دون أي انقطاع.

هنا عندما يتم مسح البطاقة المصرح بها ضوئيًا ، يتم تنشيط / إلغاء تنشيط المرحل ، ويمكن استخدام هذه الآلية في أي مكان ، على سبيل المثال في: نظام قفل الباب ، حيث يلزم مسح البطاقة المصرح بها لفتح الباب.

كيف تعمل:

دائرة قفل أمان RFID باستخدام Arduino

تتكون دائرة RFID من LED الذي يشير إلى حالة المرحل ، ويقوم الترانزستور BC 548 بتشغيل التتابع ويتم توصيل الصمام الثنائي 1N4007 عبر التتابع لإيقاف ارتفاع الجهد العالي في لحظة التبديل.

إذا كنت ترغب في توصيل مرحل ذو جهد أعلى (9 فولت أو 12 فولت) ، فيمكنك توصيل مصدر خارجي + V بالمرحل و- إمداد الأرض بمسمار 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 ()
}

الإخراج على الشاشة التسلسلية (مثال):

المعرف الفريد لبطاقتك هو: AA: BB: CC: DD

على الشاشة التسلسلية ، سترى بعض التعليمات البرمجية السداسية العشرية ، وهي المعرف الفريد العمومي للعلامة. قم بتدوينها ، والتي سيتم استخدامها في البرنامج التالي لتحديد العلامة.
بعد اكتمال هذه الخطوة ، قم بتحميل الكود أدناه على نفس الإعداد.

برنامج التعرف على البطاقة والتحكم بالترحيل:

//---------------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 char [] = 'XX: XX: XX: XX' // ضع معرفك الفريد لعلامتك هنا.
استبدل XX: XX: XX: XX بالمعرف الفريد الخاص بك.

النموذج الأولي للمؤلف والذي يمكن استخدامه بشكل فعال كقفل أمان RFID مضمون للأبواب والخزائن:

عند فحص بطاقة معتمدة:

عند فحص علامة غير مصرح بها:

إذا كانت لديك أي أسئلة بخصوص دائرة قفل الأمان Arduino RFID ، فلا تتردد في طرحها أدناه في قسم التعليقات.




السابق: التحكم في الطور Triac باستخدام PWM Time Proportional في المادة التالية: دائرة ضوء أمان المشاة المضيئة