به نام خدا
ساخت مدار RFID با استفاده از آردوینو
در این پروژه قصد داریم تا با تکنولوژی RFID و طرز کار با آن آشنا شویم. در اینجا جتسجوی تگ های RFID و نحوه ی خواندن آن ها را بررسی خواهیم کرد. برای این کار از ماژول RFID یعنی RC522 و آردوینو استفاده می کنیم.
استفاده از تگ های RFID
بدون شک تمامیه افرادی که این پست را مطالعه می کنند حداقل یک بار از RFID برای دسترسی های امنیتی استفاده کرده اند. کارت های الکرتونیکی که با خود جابجا می کنید همگی یک چیپ الکترونیکی دارند که در آن اطلاعاتی ذخیره شده است. برخلاف بارکد که باید شکل آن توصط دستگاه خوانده شود ، RFID تنها با نزدیک شدن به محل مورد نظر قادر به خواندن اطلاعات می باشد. اکثر کارت های هوشمند امروزی ما از تکنولوژی RFID استفاده می کنند. این به این معنی ست که هیچ توانی برای خواندن اطالاعات آن ها نیاز نیست. توان لازم برای چیپ RFID از طریق خود سیستم دریافت اطلاعات ایجاد می شود. فاصله ی بین چیپ RFID تا دستگاه خواننده بستگی به نوع کاربرد آن از چند میلیمتر تا حدود چند متر می باشد.
همانطور که مشاهده می شود ، یک قطعه PCB اطراف سیستم خواننده وجود دارد. همچنینی شیار های خمیده ای وجود دارد که موجی الکترو مغناطیسی در حدود ۱۳٫۵۶ مگا هرتز ایجاد می کنند. چیپ RFID این موج را به عنوان توان لازم دریافت می کنند و سپس دستگاه خواننده می تواند اطلاعات RFID را بخواند.
شماتیک مدار :
در شکل بالا شماتیک و اتصالات مدار را مشاهده می کنید. تو جه شود که ولتاژ کاری ماژول RC522 3.3 ولت می باشد. پس آن را به ۵ ولت متصل نکنید زیرا برد دچار آسیب خواهد شد.
قبل از آپلود کردن کد ابتدا کتابخانه ی RFID را از لینک زیر دانلود کنید.
دانلود فایل
کدبرنامه:
#include <SPI.h> #include <MFRC522.h> #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 (); }
سلام، با تشکر از آموزش خوبتون،
فقط این خروجیش چیکار میکنه؟
مثلا میشه به رله وصل کرد ؟
سلام. ممنون
بله میتونید به رله وصل کنید