در این مقاله میخواهیم نحوهی استفادهاز RFID ریدر مدل RC522 را بیانکنیم. با ما همراه باشید تا با مشخصات این RFID بیشتر آشناشوید و همچنین نمونه پروژهای از آن بااستفادهاز آردوینو را ببینید.
RFID:
درواقع RFID کلمه اختصاری بازشناسایی با امواج رادیویی است. RFID از میدان مغناطیسی برای انتقال اطلاعات در فاصله کوتاه استفاده میکند. میتوان درمواردی همچون شناسایی افراد، معاملات و… از آن استفادهکرد. میتوانید از سیستم RFID برای بازکردن درب استفادهکنید. بدینصورت که تنها شخص با کارت دارای اطلاعات مناسب میتواند واردشود. سیستمRFID بهمنظور شناسایی از برچسبهایی که به اشیاء متصل میشوند استفادهمیکند. بهعنوانمثال در تصویرزیر، یک جاکلیدی (keychain) و یک کارت الکترومغناطیسی را میبینید که هر تگ شناسه(UID) مخصوصبهخود دارد.
سیستمRFID از فرستنده و گیرنده رادیویی دوطرفه نیز استفاده میکند. بدینصورتکه ریدر یک سیگنال به تگ ارسال میکند و پاسخ آنرا میخواند.
مشخصات ماژول RC522 :
- ولتاژ ورودی: 3.3V
- قیمت: حدود ۲۱هزار تومان (البته بهتر است قیمت روز بازار ایران را مد نظر قرار دهیم)
- فرکانس: 13.56 مگاهرتز
دانلود کتابخانه RC522 :
در اینجا کتابخانهای که برای این پروژه نیازدارید قراردارد:
- کتابخانه RFID نوشتهشده توسط miguelbalboa را از اینجا دانلودکنید.
- کتابخانه RFID را از حالت زیپ خارج کنید.
- کتابخانه RFID را در آردوینو IDE خود نصب کنید.
- آردوینو IDE خود را دوباره راه اندازی کنید.
اتصالات پینها:
پین | اتصال به Arduino Uno |
SDA | Digital 10 |
SCK | Digital 13 |
MOSI | Digital 11 |
MISO | Digital 12 |
IRQ | unconnected |
GND | GND |
RST | Digital 9 |
3.3V | 3.3V |
توجهداشتهباشید که تغذیه باید ۳.۳ولت باشد.
مدار:
خواندن اطلاعات از تگ RFID :
پساز اینکه مدارتان آمادهشد به File > Examples > MFRC522 > DumpInfo بروید و کدتان را آپلود کنید. پساز نصب کتابخانه RFID این کد در کتابخانه شما دردسترس است. سپس سریال مانیتور را بازکنید. تصویریمشابه شکلزیر را میببینید.
کارت RFID یا keychain را به ریدر نزدیککنید و تازمانیکه تمام اطلاعات نمایشدادهشود، ریدر و تگ را نزدیکهم نگهدارید.
این اطلاعاتیاست که میتوانید از کارت بخوانید، ازجمله UID کارت که در تصویر با کادر زرد مشخصشدهاست. این اطلاعات در حافظه ذخیره میشود و همانطورکه در تصویر مشاهدهکردید به سطر و ستون تقسیم میشود. شما ۱۰۲۴بایت ذخیرهسازی داده دارید که به ۱۶بخش تقسیمشده و هر بخش توسط دو کلید A و B محافظت میشود. UID کارت خود را یادداشتکنید، زیرا بعداً به آن نیاز دارید. کد زیر را آپلودکنید:
/* * * All the resources for this project: http://randomnerdtutorials.com/ * Modified by Rui Santos * * Created by FILIPEFLOP * */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. void setup() { Serial.begin(9600); // Initiate a serial communication SPI.begin(); // Initiate SPI bus mfrc522.PCD_Init(); // Initiate MFRC522 Serial.println("Approximate your card to the reader..."); Serial.println(); } void loop() { // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //Show UID on serial monitor Serial.print("UID tag :"); String content= ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } Serial.println(); Serial.print("Message : "); content.toUpperCase(); if (content.substring(1) == "BD 31 15 2B") //change here the UID of the card/cards that you want to give access { Serial.println("Authorized access"); Serial.println(); delay(3000); } else { Serial.println(" Access denied"); delay(3000); } }
درقسمتی از کد بالا شما باید (”if (content.substring(1) == “REPLACE WITH YOUR UID را تغییردهید و UID کارت خود را که قبلاً یادداشت کردهاید بنویسید.
نمایش:
اکنون کد خود را روی آردوینو آپلود کنید و پنجره سریال مانیتور را بازکنید.
اگر کارتی که UID آن را وارد کردهاید نزدیککنید تصویرزیر را خواهیددید:
و اگر کارت با UID غیرمنطبق نزدیکشود پیغام عدمپذیرش نمایشداده میشود:
منبع: سیسوگ