در این پروژه، ما به شما آموزش میدهیم که چگونه با استفاده از برد آردوینو، یک قفل درب هوشمند بسازید که تنها با نزدیک کردن یک تگ یا کارت RFID خاص باز میشود و تا زمانی که کارت مقابل گیرنده قفل قرار نگیرد ، بسته باقی میماند.
برای ساخت این قفل، شما به قطعاتی مانند برد آردوینو، ماژول RFID، رله، قفل برقی و چند قطعه الکترونیکی دیگر نیاز دارید. با استفاده از نرمافزار آردوینو، شما میتوانید برنامهای بنویسید که به برد آردوینو دستور دهد تا با خواندن اطلاعات از تگ RFID، قفل را باز یا بسته کند.
توضیح فناوری RFID
RFID مخفف عبارت Radio Frequency Identification به معنای شناسایی رادیویی است. این فناوری بیسیم در بسیاری از صنایع برای ردیابی افراد، کنترل دسترسی، مدیریت زنجیره تأمین، ردیابی کتابهای کتابخانه، سیستمهای عوارضی و غیره استفاده میشود.
یک گیرنده RFID دستگاهی است که برای جمعآوری اطلاعات از یک تگ RFID استفاده میشود. این تگها برای ردیابی اشیاء مختلف به کار میروند. امواج رادیویی برای ارسال دادهها از تگ به گیرنده استفاده میشوند.
چگونه RFID کار میکند؟
یک سیستم RFID از دو بخش اصلی تشکیل شده است: یک ترانسپوندر یا تگ که روی شیء موردنظر یا همان کارت شناسایی قرار دارد و یک ترنسیور یا گیرنده.
گیرنده RFID شامل یک ماژول فرکانس رادیویی، یک واحد کنترل و یک سیمپیچ آنتن است که یک میدان الکترومغناطیسی با فرکانس بالا تولید میکند. از سوی دیگر، تگ معمولاً یک قطعه غیرفعال است که فقط شامل یک آنتن و یک میکروچیپ الکترونیکی است، بنابراین وقتی به میدان الکترومغناطیسی گیرنده نزدیک میشود، به دلیل القای الکترومغناطیسی، ولتاژی در سیمپیچ آنتن آن ایجاد میشود و این ولتاژ به عنوان منبع تغذیه برای میکروچیپ عمل میکند.
RFID با آردوینو
این توضیحی در مورد اصول اولیه کارکرد RFID بود. اکنون بیایید ببینیم چگونه میتوانیم از RFID با آردوینو استفاده کنیم و قفل درب RFID خود را بسازیم. ما از تگهای مبتنی بر پروتکل MIFARE و گیرنده RFID MFRC522 استفاده خواهیم کرد که قیمت بسیار کمی دارند.
این تگها دارای 1 کیلوبایت حافظه و یک میکروچیپ میباشند که میتواند عملیات محاسباتی انجام دهد. فرکانس کاری آن 13.56 مگاهرتز است و فاصله عملیاتی تا 10 سانتیمتر بسته به هندسه آنتن دارد. اگر یکی از این تگها را به یک منبع نور نزدیک کنیم، میتوانیم آنتن و میکروچیپی را که قبلاً توضیح داده شد، ببینیم.
ولتاژ ورودی: 3.3 ولت
فرکانس: 13.56 مگاهرتز
قطعات مورد نیاز برای ساخت دربازکن RFID با آردوینو
برای پروژه ساخت دربازکن RFID با آردوینو، به قطعات زیر نیاز دارید:
برد آردوینو
مغز متفکر پروژه است و وظیفه کنترل تمام عملیات را بر عهده دارد.
ماژول RFID MFRC522
این ماژول سیگنالهای RFID را میخواند و به آردوینو منتقل میکند.
تگهای RFID (13.56 مگاهرتز)
این تگها حاوی اطلاعاتی هستند که توسط ماژول RFID خوانده میشوند.
رله
برای فرمان باز کردن در استفاده میشود. در اینجا رله از نوع بوبین 5 ولت استفاده شده تا از همان تغذیهی آردوینو بتوان استفاده کرد.
بردبورد (Bread Board)
برای اتصال آسان و سریع قطعات به کار میرود.
سیم جامپر
برای ایجاد ارتباط بین قطعات مختلف استفاده میشود.
کابل میکرو USB
برای تغذیه آردوینو و آپلود برنامه روی آن استفاده میشود.
✅نکته
نرمافزار موردنیاز
Arduino IDE، این نرمافزار محیط برنامهنویسی آردوینو، برای نوشتن و آپلود کد روی برد آردوینو استفاده میشود.
تا این مرحله، شما با قطعات مورد نیاز برای ساخت دربازکن RFID آشنا شدید. با تهیه این قطعات و نصب نرمافزار آردوینو، آماده شروع پروژه هستید. در مراحل بعدی، به نحوه اتصال قطعات به یکدیگر و نوشتن برنامه برای کنترل قفل خواهیم پرداخت.
شماتیک مدار برای پروژه دربازکن RFID با آردوینو
ماژول گیرنده RFID از پروتکل SPI که ک پروتکل ارتباطی سریال است برای برقراری ارتباط با برد آردوینو استفاده میکند به همین دلیل باید اتصالات را مطابق شماتیک انجام دهیم. توجه داشته باشید که باید پین VCC ماژول را به 3.3 ولت آردوینو متصل کنیم، اما برای سایر پینها نیازی به نگرانی نیست زیرا آنها تا 5 ولت را تحمل میکنند.
اتصالات پینها
- MOSI: به پین 11 آردوینو متصل میشود (ارسال دیتا از سمت مستر به اسلیو)
- MISO: به پین 12 آردوینو متصل میشود (ارسال دیتا از سمت اسلیو به مستر)
- SCK: به پین 13 آردوینو متصل میشود (کلاک)
- SS/SDA: به پین 10 آردوینو متصل میشود (پین انتخاب اسلیو است و برای انتخاب دستگاهی که میخواهیم با آن ارتباط برقرار کنیم، استفاده میشود)
- RST: به پین 9 آردوینو متصل میشود (پین ریست است و برای ریستکردن ماژول استفاده میشود)
- LED: به پینهای 4، 5 و GND آردوینو متصل میشود. (برای نشان دادن وضعیت ماژول و موفقیتآمیز بودن عملیات خواندن تگ)
- رله / خروجی قدرت: به پینی از آردوینو که برای کنترل رله است متصل میشود. (برای باز و بسته کردن قفل)
دانلود کتابخانه برای ساخت دربازکن RFID با آردوینو
قبل از دانلود کتابخانه، باید محیط برنامهنویسی آردوینو (Arduino IDE) را نصب کنید.
کتابخانه موردنیاز برای این پروژه
کتابخانه RFID
این کتابخانه توسط Miguel Balboa ایجاد شده است و برای کار با ماژولهای RFID MFRC522 در آردوینو طراحی شده است. کتابخانه RFID را از لینک (https://github.com/miguelbalboa/rfid) میتوانید دانلود کنید.
در IDE آردوینو به این مسیر بروید: Sketch > Include Library > Add .ZIP Library
فایل زیپ دانلود شده را انتخاب کنید تا لایبرری نصب شود.
کتابخانه RFID شامل مجموعهای از توابع و کلاسها است که به شما امکان میدهد به راحتی با ماژول RFID MFRC522 ارتباط برقرار کرده و اطلاعات را از تگهای RFID بخوانید. به عبارت دیگر، این کتابخانه کار با سختافزار را برای شما سادهتر میکند و شما میتوانید به جای نوشتن کدهای پیچیده برای کنترل ماژول، از توابع آماده کتابخانه استفاده کنید.
اطمینان حاصل کنید که پوشه کتابخانه را در مسیر صحیح قرار دادهاید. در غیر این صورت، آردوینو IDE قادر به پیدا کردن کتابخانه نخواهد بود.
خواندن اطلاعات از تگ RFID
اکنون که مدار شما آماده است، مراحل زیر را دنبال کنید:
- به منوی File (فایل) در محیط برنامهنویسی آردوینو بروید.
- سپس به مسیر Examples (مثالها) و سپس MFRC522 و در نهایت DumpInfo بروید.
- کد مثال را باز کنید و آن را بر روی برد آردوینوی خود آپلود کنید.
Go to File > Examples > MFRC522 > DumpInfo > Upload the code.
- پس از آپلود کد، مانیتور سریال را باز کنید. در این قسمت، اطلاعاتی که از تگ RFID خوانده میشود نمایش داده خواهد شد.
- یک کارت RFID را به ماژول RFID نزدیک کنید.
- در مانیتور سریال، عبارت “Card UID: xx xx xx xx” را مشاهده خواهید کرد. اعداد xx xx xx xx نشاندهندهی UID (شناسه یکتا) کارت شما هستند. این UID را یادداشت کنید، زیرا در مراحل بعدی به آن نیاز خواهید داشت.
UID یک کد منحصر به فرد است که به هر کارت RFID اختصاص داده میشود. این کد مانند اثر انگشت برای کارت شما عمل میکند و به شما امکان میدهد تا کارت خود را از کارتهای دیگر تشخیص دهید.
- هنگام واردکردن UID کارت در برنامه، به حروف بزرگ و کوچک دقت کنید.
- برای اطمینان از صحت UID، چندین بار کارت را به ماژول RFID نزدیک کرده و UID را بخوانید.
برنامه نویسی آردوینو برای ساخت دربازکن RFID
اکنون به مرحله نهایی پروژه یعنی نوشتن و آپلود برنامه روی برد آردوینو رسیدیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 #define LED_G 5 //define green LED pin #define LED_R 4 //define red LED #define RELAY 3 //relay pin #define BUZZER 2 //buzzer pin #define ACCESS_DELAY 2000 #define DENIED_DELAY 1000 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 pinMode(LED_G, OUTPUT); pinMode(LED_R, OUTPUT); pinMode(RELAY, OUTPUT); pinMode(BUZZER, OUTPUT); noTone(BUZZER); digitalWrite(RELAY, LOW); Serial.println("Put 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) == "83 23 38 BB") //change here the UID of the card/cards that you want to give access { Serial.println("Authorized access"); Serial.println(); delay(500); digitalWrite(RELAY, HIGH); digitalWrite(LED_G, HIGH); delay(ACCESS_DELAY); digitalWrite(RELAY, LOW); digitalWrite(LED_G, LOW); } else { Serial.println(" Access denied"); digitalWrite(LED_R, HIGH); tone(BUZZER, 300); delay(DENIED_DELAY); digitalWrite(LED_R, LOW); noTone(BUZZER); } } |
کپی و آپلود کد
در محیط آردوینو از طریق منوی File و انتخاب New Sketch یک پروژهی جدید بسازید و کدی که برای کنترل قفل RFID شما نوشته شده است را در محیط برنامه نویسی آردوینو کپی کنید. این کد شامل دستوراتی است که به آردوینو می گوید چگونه با ماژول RFID ارتباط برقرار کند، اطلاعات کارت را بخواند و بر اساس آن، قفل را باز و بسته کند.
پس از کپیکردن کد، دکمه وریفای و سپس آپلود را در محیط آردوینو بزنید تا کد به برد آردوینو منتقل شود.
مونتاژ نهایی
برد آردوینو را به منبع تغذیه (مانند باتری) متصل کنید.
قفل برقی را به خروجی آردوینو متصل کنید. دقت کنید که اتصال صحیح مثبت و منفی قفل برقی بسیار مهم است.
ماژول RFID را در قسمت بیرونی درب نصب کنید تا بهراحتی بتوان کارت را به آن نزدیک کرد.
وقتی کارتی با UID مشخص (که قبلاً در برنامه تعریف شده است) به ماژول RFID نزدیک شود، آردوینو UID کارت را خوانده و با UID ذخیره شده در برنامه مقایسه میکند. اگر UIDها یکسان باشند، آردوینو به قفل برقی فرمان میدهد تا قفل را باز کند. در غیر این صورت، هیچ اتفاقی نمیافتد.
✅نکات
- برای افزایش امنیت سیستم، میتوانید از الگوریتمهای رمزنگاری برای محافظت از اطلاعات کارت استفاده کنید.
- از یک منبع تغذیه پایدار برای آردوینو و قفلبرقی استفاده کنید.
- قبل از نصب نهایی سیستم، آن را در یک محیط تست آزمایش کنید تا از عملکرد صحیح آن اطمینان حاصل کنید.
با طی کردن این مراحل، شما توانستهاید یک قفل درب هوشمند مبتنی بر RFID بسازید. این پروژه یک شروع عالی برای ورود به دنیای اتوماسیون و اینترنت اشیا است.
تبریک! پروژه شما با موفقیت به پایان رسید!
اکنون شما یک قفل درب هوشمند ساختهاید که با استفاده از کارتهای RFID کار میکند. این پروژه نه تنها یک دستاورد فنی محسوب میشود، بلکه میتواند کاربردهای عملی زیادی نیز داشته باشد.
حالا که شما اصول کار با آردوینو و ماژولهای RFID را یاد گرفتید، میتوانید پروژه خود را گسترش دهید و ویژگیهای جدیدی به آن اضافه کنید. در اینجا چند ایده برای توسعه پروژه شما ارائه شده است:
- افزودن صفحه کلید: میتوانید یک صفحه کلید به پروژه خود اضافه کنید تا علاوه بر کارتهای RFID، بتوانید با وارد کردن یک رمز عبور هم درب را باز کنید. این کار باعث افزایش امنیت سیستم میشود.
- استفاده از نمایشگر LCD: با استفاده از یک نمایشگر LCD میتوانید اطلاعات بیشتری را در اختیار کاربر قرار دهید، مانند نمایش وضعیت قفل، تاریخ و زمان، و پیامهای خطا.
- اضافه کردن سنسورهای دیگر: میتوانید سنسورهای دیگری مانند سنسور دما، رطوبت یا حرکت را به پروژه اضافه کنید تا عملکردهای خودکار بیشتری را ایجاد کنید. به عنوان مثال، میتوانید قفل را به گونهای برنامهریزی کنید که در صورت تشخیص حرکت در اطراف درب به طور خودکار باز شود.
- ایجاد یک سیستم هشدار: با افزودن یک آژیر یا چراغ چشمکزن، میتوانید یک سیستم هشدار ساده ایجاد کنید که در صورت تلاش برای باز کردن غیرمجاز درب فعال شود.
سخن پایانی
فناوری RFID با ارائه راهکارهایی سریع، دقیق و بدون نیاز به تماس فیزیکی، تحولی شگرف در حوزه شناسایی و ردیابی اشیاء ایجاد کرده است. این فناوری به دلیل مزایای فراوان خود، از قبیل سرعت بالا، دقت بالا و قابلیت خواندن چندین تگ به صورت همزمان، در صنایع مختلف از جمله تولید، بهداشت و درمان، لجستیک و امنیت مورد استفاده گسترده قرار میگیرد.
با این حال، همانند هر فناوری دیگری، RFID نیز با چالشهایی مانند امنیت و استانداردسازی روبرو است. با پیشرفت روزافزون فناوری و تلاشهای مستمر برای رفع این چالشها، انتظار میرود که شاهد توسعه روزافزون کاربردهای RFID در آینده باشیم. کاربردهایی مانند اینترنت اشیا، بلاکچین و واقعیت افزوده، پتانسیلهای جدیدی را برای این فناوری فراهم میکنند. برای کسب اطلاعات بیشتر در مورد فناوری RFID و کاربردهای متنوع آن، مطالعه مقالات و منابع علمی معتبر توصیه میشود.
منبع : instructables