تو این پروژه بهتون نشون میدیم که چجوری میشه با استفاده از Arduino و چند تا قطعه ساده یک قفل هوشمند مجهز به RFID ساخت.
فرض کنین یک قفل نامرئی دارید که قط خودتون کلیدش رو دارین و بدون اینکه لازم باشه بهش دست بزنین میتونین بازش کنین، جالبه، نه؟ امروز قراره با استفاده از Arduino و چند تا قطعه ساده یک قفل هوشمند مجهز به RFID بسازیم.
فناوری به کار رفته در این پروژه در صنایع زیادی کاربرد داره. کسایی که در ادارات مدرن کار میکنن یا از وسایل حمل و نقل عمومی استفاده میکنن بدون شک هر روز با این فناوری سر و کار دارن. RFID دادههایی که در تراشه کارت یا دانگل ذخیره شدن رو تشخیص میده، اونا رو با فهرستی از تگها که قبلاً اسکن شدن مقایسه میکنه.
ما با استفاده از ماژول Mifare MFRC522 reader یک مدار آزمایشی برای کنترل دسترسی ساختیم تا قفل رو باز و بسته کنیم. برای دسترسی دادن یا عدم دسترسی به تگهای مختلف از یک کیبورد مستر استفاده میکنیم و یک LED readout ساده میسازیم تا بدونیم چه اتفاقاتی تو سیستم در جریانه.
از یک سولنوئید (solenoid) هم استفاده میکنیم که در نقش قفل عمل کنه. همچنین از یک MOSFET هم استفاده میکنیم تا بدون هیچ خطری و با استفاده از Arduino اون رو فعال و غیرفعال کنه.
MRFC522 reader میتونه دادههای تراشههای RC522 رو بخونه، دادهها رو در این تراشه رایت کنه و اونا رو در Arduino’s EEPROM ذخیره کنه. این قطعه در پروژههایی که خودتون میسازین خیلی به دردتون میخوره و تو سیستمهای ساده امنیت خانه هم خیلی کاربرد داره. از این قطعه میشه در کنار سیستمهای هشدار و سیستمهای دوربین امنیتی استفاده کرد.
قطعات مورد نیاز برای ساخت قفل مجهز به RFID
قطعات مورد نیاز
-
Arduino. ما از یک Uno استفاده کردیم، اما از سایر بردهای Arduino هم میشه استفاده کرد
-
3 عدد مقاومت 220 اهم
-
1 عدد مقاوم 10k اهم
-
مافست Logic-level N channel
-
ماژول MFRC522 با حداقل 2 کارت/ fobs برای خواندن. بیشتر این ماژولها از هر کدوم فقط یک دونه دارن و میتویند اونا رو به قیمت 80 الی 150 هزارتومن تهیه کنید.
-
LEDهای قرمز، آبی و سبز
-
سلونوئید 12v
-
منبع تغذیه 12v
-
Breadboard و سیمهای جامپر
ماژول MFRC522
نقطه قوت این پروژه ماژول MFRC522 هست که علاوه بر یک کارت و یک fob یک تراشه s50 هم داره که هر کدومشون شناسه UID منحصر به فرد خودش رو ذخیره میکنه. این ماژولها عملکرد یکسانی دارن فقط ظاهرشون با هم فرق میکنه.
در مرحله اول کتابخانه MFRC522 رو در Library Manager برد Arduino IDE جستوجو و نصب کنین. یا به جای اون میتونین کتابخانه رو دانلود و به صورت دستی در پوشه کتابخانهها نصب کنین.
این کتابخانه شامل یک دیاگرام Fritzing هم هست که من اون رو حاشیهنویسی کردم تا شیوۀ اتصال ماژول به Arduino رو بهتون نشون بدم.
نکته: این برد با برق 3.3v (نه 5v) کار میکنه، پس حواستون باشه که اون رو به پین درست وصل کنین.
برای تِست این پروژه، از قسمت File > Examples > MFRC522 > DumpInfo ،DumpInfo رو باز کنین و در برد Arduino بارگذاریش کنین. سریال مانیتور رو باز کنین و یکی از objectهای RFID رو نزدیک reader قرار بدین. تصویری شبیه تصویر زیر باید مشاهده کنید.
اگر خطای
MIFARE_Read() failed: Timeout in communication
یا
PCD_Authenticate() failed: Timeout in communication
رو دریافت کردین نگران نباشین. احتمالاً این خطا به این معنیه که تگ رو به اندازه کافی نزدیک به reader قرار ندادین تا تمامی دادهها رو بخونه. مادامی که UID کارت رو دارین ( که به محض اینکه در محدوده reader قرارش بگیره، reader اون رو میخونه)، به کار میفته. اگر کلا reading رو دریافت نکردین، سیمکشی پروژه رو چک کنین و دوباره تستش کنین.
سایر اجزای مدار
حالا که مطمئن شدیم ماژول کار میکنه، سایر اجزای مدار رو اضافه میکنیم. سایر قطعات رو به این شکل وصل کنین:
- منبع تغذیه 12v ( که در حال حاضر قطعش کردیم) به ریلهای breadboard وصل میشن. پین GND برد Arduino و پین GND ماژول MFRC522 رو به ریل ground وصل کنین.
- LEDها رو به پین 2، 3 و 4 و با استفاده از مقاومت 220 اهم به ریل ground وصل کنین.
- پایه gate (سمت چپ تصویر) ماژول MOSFET رو به پین 5 و با استفاده از مقاومت 10k اهم به ground وصل کنین. پایه drain (وسط) رو به ترمینال منفی سلونوئید 12v و پایه source (راست) رو به ریل ground وصل کنین.
- ترمینال مثبت رو به سلونوئید !2v و VIN برد Arduino رو به ریل 12v بردبورد وصل کنین.
به کمک این Setup، هر زمان که یک سیگنال HIGH از برد Arduino به MOFSET میفرستیم، جریان میتونه به سلونوئید منتقل بشه. از سلونوئیدهایی که نیروی بیشتری تولید میکنن، سرعت بالاتری دارن یا برای مدیریت بار بیشتر طراحی شدهاند هم میتونین استفاده کنین، اما به ترنسفورمری نیاز دارین که برقی بالاتر از 12v به Arduino برسونه. حتماً حواستون به datasheet ماژول MOSFET باشه تا overload نشه.
در پایان این مدار چیزی شبیه به تصویر زیر خواهد بود.
ویرایش و تغییرات سورس کد
بعد از ساخت مدار، نوبت به Arduino Sketch میرسه. کتابخانه MFRC522 دارای یک نمونه sketch به نام Access Control هست که دقیقاً همون کاری رو میکنه که ما به دنبالشیم. Arduino رو به کامپیوتر وصل کنین و File > Examples > MFRC522 > AccessControl رو در Arduino IDE باز کنین.
اطللاعات زیادی هم در نمونه sketch و هم در صفحه گیتهاب کتابخانه وجود داره. ما فقط چند تا خط رو تغییر دادیم. شما میتونین کدی که ما تغییر دادیم و اصلاح کردیم رو از GitHub Gist دانلود کنین.
باید بدونین که این Skecth با استفاده از یک آنود معمولی برای مداری با یک RGB LED طراحی شده. ما از آنود استفاده نمیکنیم پس این خط رو حذف کنین.
//#define COMMON_ANODE
حالا، پینهای LED رو با پینهایی که در sketch تعریف کردیم، تطبیق بدید.
#define redLed 3 // Set Led Pins
#define greenLed 4
#define blueLed 2
پین رله رو باید تغییر بدیم (هرچند که از MOFSET استفاده میکنیم) تا با Setupمون سازگاری داشته باشه.
#define relay 5 // Set MOSFET Pin
برای اینکه بعدها بتونیم راحتتر مدت زمان باز بودن قفل رو تغییر بدیم، یک متغیر براش ایجاد میکنیم.
int lockDelay=10000; // lock stays open for 10 seconds.
فقط یک تغییر دیگه باید ایجاد کنیم. در پایین متد loop، در یک if statement متدی به نام granted(300) وجود داره. باید این متد رو تغییر بدیم تا از متغیر lockDelay استفاده کنه.
granted(lockDelay);
// Open the door lock for lockDelay duration
Sketch رو با یک اسم جدید ذخیره کنین و اون رو در Arduino بارگذای کنین. حالا سریال مانیتور رو باز کنین. اولین باری که این کار رو انجام میدین، ازتون میخواد که چیزی رو اسکن کنین تا به عنوان مستر کارت ازش استفاده کنه. کارت رو نزدیک به reader نگه دارید و UID کارت در سریال مانیتور به همراه پیام Everything Ready نشون داده میشه.
Master key آماده است. برد Arduino رو از کامپیوتر جدا کنین. جزئیات master key در EEPROM برد Arduino ذخیره میشه حتی بعد از اینکه برق قطع میشه.
تست کارکرد پروژه قفل RFID
یک بار دیگه سیمکشی رو چک کنین تا مطمئن بشین همه چی سر جای خودش قرار گرفته و منبع تغذیه 12v رو وصل کنین. توجه داشته باشین که باید حواستون به duty cycle سلونوئید باشه. سلونوئید ارزان قیمتی که من ازش استفاده میکنم یک duty cycle صددرصدی نداره و به همین دلیل، مدت زمان زیادی نباید قفل باشه. برای اینکه این setup همیشگی باشه، از یک سلونوئید با duty cycle صددرصدی استفاده کنین. یک گزینه بهتر هم سلونوئید NC (normally closed) هست که وقتی برقش قطع بشه قفل میشه. به عبارت دیگه، اگه کسی بخواد وارد سیستم بشه به آسونی نمیتونه اونو دور بزنه.
وقتی که برق مدار قفل RFID وصل شد، LED آبی باید روشن بشه، اینجوری متوجه میشیم دستگاه کار میکنه. اگر مستر کارت رو نزدیک reader بگیریم در حالت admin قرار میگیره و تمام LEDها شروع به چشمکزدن میکنن. زمانیکه LEDها در حال چشمکزدن هستن میتونین کارتها یا fobهای دیگه رو نزدیک به reader بگیرین تا به کسی دسترسی بدین یا دسترسی رو ازش بگیرید. LED سبز برای دسترسی دادن و LED آبی برای اینه که دسترسی رو سلب کنین. برای خارج شدن از حالت admin یک بار دیگه از مستر کارت استفاده کنین.
حالا اگر یک کارت یا fob که دسترسی داره رو نزدیک reader بگیرید، LED سبز چشمک میزنه و قفل باز میشه. اگر LED قرمز چشمک زد به این معنیه که کاربر دسترسی نداره.
جمعبندی
در این نوشتار، به صورت خلاصه کار با دستگاههای RFID در پروژههایی که خودتون میخواید بسازید رو بهتون نشون دادیم، اما این پروژه امنیت زیادی نداره و بهتون توصیه میکنیم از این قفل در خونهتون استفاده نکنین.
این پروژه رو میتونین با یک جعبه تست کنین و با استفاده از سلونوئید قفلش کنین. یک وسیله خاص رو داخل جعبه بذارید و سعی کنین با استفاده از master key مشخص کنین که چه کسی میتونه دسترسی داشته باشه یا نداشته باشه.
میتونین به جای سلونوئید هم از یک رشته LED استفاده کنین و RFID اونا رو فعال کنه. این ایده رو میتونین برای نشون دادن دادههای دیگه مثل رمز وایفای به کار ببندین: برای مثال، زمانی که کارت یا fob رو نزدیک reader میگیرید، رمز وایفای در یک صفحه کوچک نمایش داده یشه.