سیستم کنترل تردد مبتنی بر RFID و ماژول EM-19 – قسمت اول

نوشته شده توسط

سلام به همه دوستانی که امروز این مطلب را برای مطالعه انتخاب کرده اند. مستقیم بریم سراغ اصل مطلب و اینکه بگم اصلا هدف از نوشتن و تهیه این مطلب چی هست و قراره در آخر به چه نتیجه ای برسیم. خیلی مختصر و مفید قراره با هم دیگه یک سیستم کنترل تردد مبتنی بر RFID طراحی و اون رو بسازیم. به نحوی که شما با زدن کارت یا تگ RFID میتونید قفل برقی یا خروجی رو فعال یا غیر فعال کنید. تمام مراحل گام به گام و کاملا رایگان (جاهای دیگه شما مجبوری برای اینکه همین آموزش را یاد بگیری هزینه پرداخت کنی -_-) در قالب چند آموزش برروی سایت قرار خواهد گرفت. از برنامه نویسی گرفته تا معرفی و سخت افزار که شما عزیزان بتونید از اون بصورت رایگان استفاده کنید و از اون توی پروژه های خودتون استفاده کنید.

خب تا اینجا کلیات کار رو گفتیم. اما اجازه بدید تا کمی هم درباره جزئیات با هم صحبت کنیم. طی این آموزش چند قسمتی، قرار هست که از صفر تا صد یک سیستم کنترل تردد مبتنی بر سیستم RFID پیاده سازی کنیم. جوری که شما میتونید اون رو با کمی خلاقیت متناسب با نیاز خودتون ارتقا بدید و در کاربرد یا پروژه خودتون استفاده کنید. در این سری آموزش قرار هست که یاد بگیریم چطور کد های تگ و یا کارت های RFID را بخونیم، چطور از آنها در کد نویسی استفاده کنیم، چطور این کد ها رو در حافظه میکروکنترلر که در این آموزش از آردوینو استفاده شده ذخیره کنیم و در انتها طراحی سخت افزار و پیاده سازی آن را پیش خواهیم برد.

شاید هم در آینده نزدیک یک آموزشی قرار دادم که بدون نیاز به برد آردوینو! بتونید پروژه خودتون رو پیش ببرید و فقط از میکروکنترلر استفاده کنید مثلا ATMEGA8. که این مورد بستگی به میزان ذوق و رضایت مندی شما عزیزان داره که اگر اینطور باشه باعث میشه منم سر ذوق بیام و آموزش اون رو با افتخار براتون روی سایت انتشار بدم. پس بریم که با هم شروع کنیم.


شرح آموزش

همانطور که در ابتدای مطلب ذکر شد، قراره که با هم دیگه اول کد های هر تگ یا کارت RFID رو بخونیم و بعد بیایم کد ها رو توی حافظه میکروکنترلر ذخیره کنیم. و در ادامه با برنامه نویسی که انجام میدیم مشخص میکنیم که اگر کد خوانده شده توسط RFID Reader همون کد های ذخیره شده و مجاز باشه، یک خروجی رو فعال کنیم. این خروجی میتونه هر چیزی باشه. مثلا قفل برقی کمد، قفل برقی درب ورودی ساختمان یا اتاق و… . در این آموزش از محیط برنامه نویسی و برد ARDUINO استفاده خواهد شد. در آینده این آموزش را در محیط برنامه نویسی کدویژن هم آماده خواهم کرد ( چه موقع رو نمیدونم هر وقت شما استقبال زیاد داشته باشید  😎 ).


وسایل مورد نیاز

فعلا همین ها نیاز هستش، اگر باز هم چیزی نیاز شد که در ادامه مراحل و در هر آموزش ذکر خواهم کرد و این لیست بالا رو هم بروز خواهم کرد. شما میتونید به جای ماژول EM-19 از ماژول EM-18 نیز استفاده کنید. کلیات کار به یک شکل هست ولی تفاوت در تعداد پایه های این دو ماژول هست و قابلیت هاشون که تفاوت زیادی ندارند. برای خرید ماژول EM-18 نیز میتونید از این لینک استفاده کنید.


RFID چیست؟

بد نیست قبل از شروع، شرح مختصری درباره RFID ذکر کنم. اولا اینکه RFID مخفف شده عبارت “Radio Frequency Identification” و به معنی “سامانه شناسایی امواج رادیویی” هست. نمونه این سیستم ها را جاهای مختلفی دیدم مثل کارت های پارکینگ های عمومی، داخل فروشگاه های لباس، سیستم های حضور غیاب، کارت های اتوبوس و مترو، انبارش الکترونیکی، سیستم کنترل دام و طیور و خیلی از کاربرد های دیگه. در سیستم های مبتنی بر RFID ما نیاز به یکسری از تجهیزات خواهیم داشت. بخش اصلی این تجهیزات آنتن و گیرنده (Reader) می‌باشند. RFID ها در رنج فرکانسی 125KHz ،13.56MHz و UHF هستند. که گیرنده و آنتن هر کدوم فرق داره. و شما نمیتونید مثلا ریدر 125 کیلوهرتز رو برای تگ های مایفر که دارای فرکانس 13.5MHz هست استفاده کنی.
Tag هایی که در سیستم RFID مورد استفاده قرار خواهد گرفت، به دو دسته فعال و غیر فعال تقسیم خواهند شد. در نوع غیر فعال؛ تگ ها باطری نداشته و انرژی خودشون رو برای فعال سازی و ارسال اطلاعات از سیگنال هایی که از سمت آنتن ریدر دریافت میکنند تامین خواهند کرد. همین امر دلیلی میشه بر اینکه از لحاظ مسافت، فاصله تشخصی این نوع تگ ها محدود و کم شود.

بر خلاف تگ های غیر فعال، تگ های فعال انرژی مورد نیاز خودشون رو از باتری همراه خودشون تامیین خواهند کرد. پس در این نوع مسافت و فاصله تشخیص خیلی بیشتر خواهد شد و طبعا هزینه تهیه و خرید این نوع تگ ها بیشتر از نوع غیر فعال خواهند بود. نکته مهم در استفاده از این تگ ها، طول عمر باتری آنها هست. چرا که بعد از دشارژ باتری باید آن را تعویض یا اغلب خود تگ رو تعویض کنیم. که این امر نتیجه ای جز افزایش هزینه ها را در پی نخواهد داشت.

هر تگ یا برچسب RFID دارای یک کد منحصر به فرد و اختصاصی خود هست. بطوری که هیچ 2 کارت یا TAG ای وجود ندارد که دارای کد مشابه و یکسان باشند. در واقع سازنده های این تگ ها زیر نظر یک انجمن بین المللی نسبت به ساخت آنها اقدام خواهند کرد. هر تگ دارای 2 بخش آنتن مایکرواسترایپ و چیپ هست. در برخی از این چیپ ها متناسب با نیاز، مقداری حافظه نیز در نظر گرفته خواهد شد. از این حافظه میتوان مانند یک شناسنامه استفاده کرد. بطوری که هر اطلاعاتی مربوط به کنترل و دسترسی را میتواند مستقیم بر روی حافظه آن TAG ذخیره کنید.

تک RFID
RFID 125KHz

نمونه ای از تگ های سر کلیدی RFID

نمونه ای از کارت RFID با ابعاد کوچک
نمونه ای از کارت RFID با ابعاد بزرگ

در تصویر زیر میتوانید چند نمونه از ماژول های ریدر RFID رو مشاهده کنید. همچنین برای خرید انواع تگ و کارت های RFID و همینطور انواع ماژول های ریدر RFID به وبسایت مایکروالکام مراجعه کنید.

rf01d-id3
em19
kartach-ka-11

خب برای اینکه دیگه خسته کننده و مطلب طولانی نشه، به همین حد توضیح مختصر بسنده میکنم و میریم سراغ آموزش اصلی. در صورتی که مشتاق به توضحیات بیشتر و تکمیلی تر بودید میتونید با یک سرچ توی گوگل به مطالعه بیشتر بپردازید.


معرفی ماژول EM-19

ماژول EM-19 در واقع نسل بعدی و بهبود یافته ماژول EM-18 می‌باشد. برای همین در ابتدای مطلب عرض کردم که زیاد تفاوتی نداره راه اندازی EM-18 و EM-19 با هم دیگه. از این ماژول برای شناسایی و دریافت کد های تگ/کارت های RFID با فرکانس 125KHZ استفاده می‌شود. این ماژول کاربردی دارای ویژگی های زیر می‌باشد:

  • ولتاژ کاری 2.7 تا 5.5 ولت
  • جریان مصرفی کمتر از 25mA
  • خروجی Wiegand26، سریال RS-232 و TTL
  • خروجی دیتا در دو حالت استاندارد های EM-18 و RF01D یا ID-12
  • کنترل رله و بازر توسط ارسال کامند از طریق پورت سریال

پایه های ماژول

شماره پایه نام پایه توضیحات
1 VCC ولت تا ۵ ولت
2 GND تغذیه منفی
3 BEEP OUT خروجی بازر ( فرکانس 1.9 کیلوهرتز)
4 EX ANT ورودی آنتن خارجی (اتصال به پین ۵ با استقاده از آنتن خارجی)
5 COM-ANT خروجی مشترک آنتن داخلی و خارجی
6 IN ANT ورودی آنتن داخلی (اتصال به پین ۵ با استقاده از جامپر)
7 RS232/TTL اگر 0 باشد ورودی و خروجی سریال در حالت RS-232 و اگر استفاده نشود در حالت TTL
8 SEL اگر 0 باشد دیتای خروجی در قالب RF01D و ID-12 و اگر استفاده نشود خروجی در حالت EM-18
9 TXD خروجی پورت سریال RS-232 و TTL
10 D1 خروجی دیتای 0 ارتباط Wiegand-26
11 D0 خروجی دیتای 1 ارتباط Wiegand-26
12 RXD  ورودی پورت سریال RS-232 و TTL
13 CODE ONLY اگر 0 باشد رله و بیزر فعال نشده و فقط دیتا ارسال میشود (کنترل رله و بیزر فقط توسط پورت سریال انجام میشود)
14 RELAY خروجی مثبت برای رله

شما میتونید مستقیم از طریق پورت سریال و ارسال دستور به ماژول به بعضی از ویژگی های اون دسترسی داشته باشید. که در زیر به آن اشاره شده است:

ردیف کاراکتر دستور نام دستور عملکرد
1 1 فعال کردن بازر فعال شدن بازر بمدت 200ms
2 2 فعال کردن بازر (طولانی) فعال شدن بازر بمدت 1500ms
3 3 فعال کردن رله (لحظه ای) فعال کردن رله بمدت 800ms
4 4 فعال کردن رله (دائمی) روشن کردن رله بطور دائم
5 5 خاموش کردن رله خاموش کردن رله

برای اینکه از دستورات جدول بالا استفاده کنید، باید پایه شماره 13 را به GND وصل شود تا با نزدیک شدن کارت به ماژول دیتا فقط از پورت سریال ارسال شده و رله یا بازر بعد از ارسال دستورات توسط کامپیوتر از طریق پورت سریال فعال شود. همچنین با ارسال یک کاراکتر از ‘1’ تا ‘5’، به پین شماره 12 یا RX ماژول میتوان به فعال یا غیر فعال کردن خروجی رله و بازر دسترسی کامل داشت.

اتصال آنتن خارجی به ماژول

در گاهی موارد شما نیاز دارید تا بجای در دسترس قرار دادن مستقیم ماژول در دید کاربر، آن را با فاصله تا کاربر قرار دهید! فرض کنید دستگاه و ریدر شما پشت درب قرار گرفته است. پس کاربر برای زدن کارت خود نیاز به به یک آنتن خارجی دارد تا آن را به ماژول وصل کنیم و در دسترس کاربر قرار دهیم تا کاربر به راحتی بتواند از آن استفاده نماید (حداکثر 1-2 متر). برای این کار باید به پایه های 4 و 5 آنتن خارجی خود را وصل کنید. همچنین برای استفاده از ماژول بدون آنتن خارجی میتوانید از آنتن داخلی ماژول استفاده کنید. برای این کار از نحوه اتصالات طبق تصویر زیر میتوانید عمل کنید. تصویر سمت راست برای استفاده در حالت آنتن داخلی و تصویر سمت چپ برای اتصال آنتن خارجی می‌باشد.

In-Ext Antenna

در تصویر زیر یک نمونه آنتن خارجی RFID را مشاهده میکنید که میتونید برای خرید برای خرید آنتن خارجی RFID با فرکانس 125KHz به وبسایت مایکروالکام مراجعه کنید.

آنتن RFID خارجی

 


شماتیک

طبق دیتاشیت ماژول برای راه اندازی ماژول EM-19 نیاز به مدار زیر هست:

EM-19 Schematic

همچنین برای اتصال ماژول EM-19 به آردوینو به مدار زیر نیاز دارید:

نحوه اتصال ماژول به آردوینو
نحوه اتصال ماژول به آردوینو

بعد از سیم بندی و اطمینان از آن به مرحله بعدی میریم که برنامه نویسی رو شروع کنیم. همانطور که در شماتیک مشخص است، سیم بندی آن چیز پیچیده ای نیست. صرفا از این شماتیک برای اتصال ماژول به آردوینو خواندن کد های تگ های RFID استفاده خواهیم کرد.

در مدار بالا شما میتونید اتصال پایه TX آردوینو به RX ماژول رو قطع کنید چون فعلا نیازی نداریم بهش. همچنین میتونید بین پایه شماره 3 ماژول و GND یک عدد LED وصل کنید تا وقتی که کارتی توسط ماژول خوانده شد، LED روشن شود.


برنامه نویسی

خب تا اینجا با کلیات کار و ماژول EM-19 آشنا شدید. در این قسمت میخواهیم نحوه کد نویسی در محیط نرم افزار Arduino IDE رو برای دریافت کد هر کدام از تگ ها بررسی کنیم. برای نمایش کد هر تگ از سریال مانیتور Arduino IDE استفاده خواهیم کرد.

در ابتدا یک متغییر از نوع رشته برای ذخیره دیتا خوانده شده از ماژول معرفی میکنیم:

String input_data = "";

در تابع setup پورت سریال را فراخوانی میکنیم و اون رو فعال خواهیم کرد. همینطور BaudRate اون روی 9600 تنظیم خواهیم کرد. فراموش نکنید موقع باز کردن سریال مانیتور هم باودریت رو روی عدد 9600 قرار بدید حتما.

Serial.begin(9600);
Serial.println("RFID Reader...");
delay(500);
Serial.println("Please Insert Your Card...");

خب در آخر هم نوبت به خواندن دیتا های خروجی ماژول میشه. برای اینکار از یک شرط استفاده خواهیم کرد. هنگامی که خروجی ماژول فعال شد که این مورد منوط به این هست که یک کارت به ماژول نزدیک شده باشه، شرط برقرار خواهد شد و دستورات ساب آن اجرا می‌شود.

if(Serial.available())
{
        input_data = Serial.readString();
        Serial.print("Your Card ID is: ");
        Serial.println(input_data);
        Serial.println("_____________________");
}

سورس کد کامل:

String input_data = "";
void setup() 
{
    Serial.begin(9600);
    Serial.println("RFID Reader...");
    delay(500);
    Serial.println("Please Insert Your Card...");
}

void loop() 
{
    if(Serial.available())
    {
        input_data = Serial.readString();
        Serial.print("Your Card ID is: ");
        Serial.println(input_data);
        Serial.println("_____________________");
    }

}

برای دانلود سورس کد این پروژه می‌توانید از این لینک استفاده کنید.


مشاهده نتیجه

بعد از ذخیره و آپلود کد های بالا برروی آردوینو، پنجره سریال ماینتور آردوینو را باز کنید. ابتدا  حتما باودریت را روی 9600 تنظیم کنید. در غیر اینصورت چیزی روی سریال مانیتور پرینت نخواهد شد.

راه اندازی سیستم کنترل تردد مبتنی بر RFID ماژول EM-19
راه اندازی سیستم کنترل تردد مبتنی بر RFID ماژول EM-19

بعد از باز کردن پنجره سریال مانیتور تصویری شبیه زیر خواهید داشت:

مشاهده نتیجه روی سریال مانیتور
مشاهده نتیجه روی سریال مانیتور

به محض اینکه ماژول یک کارت یا تگ RFID با فرکانس 125KHz را حس کند، شماره ID آن را به آردوینو ارسال و برروی سریال مانیتور نمایش داده خواهد شد. این کد شامل 12 تا عدد یا حرف در کنار هم دیگه هست. البته در تصاویر زیر کد ها را بخاطر دلایل امنیتی محو کردم یک قسمتش رو 😥 . 

نمونه ای از یک خوانده شده: 2400ABC60455

مشاهده نتیجه روی سریال مانیتور
مشاهده نتیجه روی سریال مانیتور

و به همین صورت برای سایر تگ های 125KHz دیگر:

مشاهده نتیجه روی سریال مانیتور
مشاهده نتیجه روی سریال مانیتور

خب دوستان در این جا قسمت اول این آموزش به اتمام رسید. امیدوارم که مطلب خوبی رو در اختیارتون قرار داده باشم و به بزرگواری خودتون کم و کاستی اون رو ببخشید. به زودی سایر قسمت های بعدی این آموزش نیز تهیه خواهد شد و لینک اش رو در همین مطلب قرار خواهم داد. البته اگر فیدبک خوب نشون بدید و سر شوق ام بیارید برای ادامه این آموزش 😉 .

امیدوارم از این آموزش کمال بهره را برده باشید. در صورتی که هرگونه نظر یا سوال داشتید درباره این آموزش لطفا اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. و در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد. اگر این مطلب براتون مفید بود، اون رو حتما با دوستانتون به اشتراک بگذارید. همینطور میتونید اون رو پس از اجرای عملی توی اینستاگرام با هشتگ microelecom# به اشتراک بگذارید و پیج مایکروالکام (microelecom@) رو هم منشن کنید.

۱۰ دیدگاه برای “سیستم کنترل تردد مبتنی بر RFID و ماژول EM-19 – قسمت اول

  1. سلام
    ببخشید من هر چقدر کارت را میزنم هیچ چیزی نشان نمی دهد همه سیم کشی ها هم درست است کد درست هست فقط نمیدون چرا کار نمی کنه من از اردینو لئوناردو استفاده می کنم

  2. سلام خسته نباشید من یک ال ای دی هم برای تست گذاشتم تگ که نزدیک میشه ال ای دی روشن میشه ولی شماره تگ نشون داده نمیشه مشکل از فرکانس تگ هست؟

  3. ممنون بابت این آموزش که قرار دادید. توضیحات جامع و خوبی بود. من که شخصا مشتاق شدم برای دنبال کردن بقیه قسمت هاش. لطفا سریع تر قرار بدید آموزشش را برای پروژه درسی نیاز دارم. تشکر

    1. سلام دوست عزیز؛
      ممنون نظر لطفتون هست. خوشحالم که این آموزش تونسته موثر باشه -_۰.
      انشالله سعی میکنم قسمت های بعدی این آموزش سریع تر آماده بشه و در دسترس قرار بدم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.