مقدمه
شاید تابحال به این موضوع فکرکردهباشید که چه اتفاقی میافتاد اگر همه برای خودشان یک ID خاص دیجیتال داشتند و برای کارهای شخصی خود از همان ID برای کارهای روزمره مثل خریدکردن و کارهای بانکی و… استفاده میکردند. واقعا فکر دور از ذهنی نیست بلکه بهراحتی با ماژول RFID RC522 البته در محیطهای کوچکتر کاملا قابل پیادهسازی است. چون در این مقاله میخواهیم توسط آردوینو و RFID RC522 این پروژه را برای یک محیط کوچکتر(خانواده پیادهسازی کنیم) بهطوریکه هر شخصی یک کارت مجزا دارد که برای تمامی کارها باید حتما از ID خاص خود استفادهکند درصورتیکه از تگ موردنظر استفادهنکند RFID RC522 تگ موردنظر را شناسایی نخواهد کرد و درنتیجه سیستم عمل نخواهد کرد. خب برای اینکه شروع کنیم باید وسایل موردنظر کار را که شامل موارد زیر هستند را تهیهکنیم. برد آردوینو(فرقی نمیکند چه مدلی باشد مهم بخش کدنویسی است که روی هر آردوینوای جواب میدهد پس زیاد این بخش را سخت نگیرید.) RFID RC522 RFID TAG ( بستهبه نیاز شما کاملا میتواند دلخواه باشد). خب قبلاز اینکه وارد شماتیک و برنامهنویسی شویم بد نیست که درمورد RFID توضیحاتی را بدهیم.(میدونم کسلکنندس برای خیلیاز شماها ولی باور کنید دید بهتری میده بهتون)
RFID چیست؟
سامانهٔ بازشناسی با امواج رادیویی(Radio Frequency Identification) (به اختصار RFID) سامانهٔ شناسایی بیسیمی است که قادربه تبادل دادهها بهوسیلهٔ برقراری اطّلاعات بین یک Tag که به یک کالا، شئ، کارت و… متّصل شدهاست و یک بازخوان(Reader) است. سامانههای RFID از سیگنالهای الکترونیکی و الکترومغناطیسی برای خواندن و نوشتن دادهها بدون تماس بهرهگیری میکنند. اصولاً به هر سیستمی که قادربه خواندن و تشخیص اطلاعات افراد یا کالاها باشد سیستم شناسایی یا Identification System گفته میشود. بطورکلی شناسایی خودکار و نگهداری دادهها(AIDC) روشی است که طی آن تجهیزات سختافزاری یا نرمافزاری قادربه خواندن و تشخیص دادهها بدون کمک گرفتن از یک فرد هستند. بارکدها، کدهای دو بعدی، سیستمهای انگشت نگاری، سامانهٔ شناسایی بااستفادهاز فرکانس رادیویی، سیستم شناسایی بااستفادهاز قرنیه چشم و صدا و… ازجمله این راهکارها میباشند. یکیاز جدیدترین مباحث موردتوجه دانشمندان جهت شناسایی افراد یا کالاها استفادهاز سیستم شناسایی بااستفادهاز فرکانس رادیویی میباشد. خب در همین حد برای فهم کلی عملکرد کافیاست برای اطلاعات بیشتر به ویکیپدیا مراجعه کنید.
شماتیک RFID RC522 توسط برد آردوینو
کدنویسی RFID RC522 با آردوینو
خب طبق معمول به یکیاز بخشهای جذاب و پرچالش الکترونیک رسیدیم. کدی که میخواهیم بنویسیم شامل موارد زیر میباشد:
- خواندن ID تگ موردنظر
- شناسایی تگ تعریفشده در سیستم
- انجام دستورات موردنظر پساز شناسایی تگ تعریفشده
خب قبلاز اینکه وارد کدنویسی شویم ابتدا لازماست که کتابخانه مربوط به این پروژه را اضافهکنیم تا درحینکار با توابع این کتابخانه دچار مشکل نشویم. برای این کار لازم است که طبق تصاویری که در ادامه میگذاریم عمل کنید.
خب پساز نصب کتابخانه مربوط به RFID RC522 نوبت به کدنویسی و ارتباط این ماژول با آردوینو میرسد.
#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(); pinMode(8,OUTPUT); تنظیمات اولیه جهت اماده سازی ارتباط بین دیوایسها تنظیم خروجی جهت تست سختافزاری } 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) == "A3 B6 CB 2C") //change here the UID of the card/cards that you want to give access { Serial.println("DAD"); Serial.println(); digitalWrite(8,HIGH); delay(3000); } else if (content.substring(1) == "0B E7 2C 83") //change here the UID of the card/cards that you want to give access { Serial.println("MOM"); Serial.println(); digitalWrite(8,LOW); delay(3000); } else { Serial.println(" Access denied"); delay(3000); } دراین بخش اگر دقت کنید کاملا خوانا است و عملکرد ان به این صورت است که منتظر خواندن تگ میباشد درصورتیکه ID تگ ها برابر با ID که تعریف کردهایم باشد در سریال مانیتور اسم هایی که مشخص شدهاند را نمایش میدهد و در واقع یکی از تگها یک LED را روشن میکند و دیگری LED را خاموش میکند. }
خب نکتهای که وجود دارد این است که بعداز این آموزش بهراحتی میتوانید در پروژههای مختلف از RFID RC522 استفادهکنید. البته با رعایت یکسری اصول بهینهسازی که حتما باید در کد انجامگیرد. بهعنوان یک راهنمایی میخواهیم یک سایت آموزش آردوینو را به شما مخاطبان و همراهان عزیز معرفیکنیم که برای شروع کار آموزشهای خوبی را دارد که فکر نمیکنم خالی از لطف باشد. برای وارد شدن به سایت اینجا کلیک کنید. امیدوارم که این اموزش هم برای شما مفید واقعشدهباشد.
منبع:سیسوگ