خانه / دانش و مهارت / الکترونیک / آموزش آردوینو : روش ارتباط کارت خوان RFID با آردوینو [Arduino]

آموزش آردوینو : روش ارتباط کارت خوان RFID با آردوینو [Arduino]

تکنولوژی RFID یا شناسایی با امواج رادیویی، تکنولوژی ارتباط کوتاه بردی است که با آن می توان افراد یا اشیای مختلف را به وسیله کارت ها برچسب ها یا همان تگ (Tag) های RFID شناسایی کرد. این دستگاه ها امروزه کاربرد بسیار گسترده ای در زندگی ما دارند. برای مثال تمامی کارت های هوشمند مترو ، کارت های مکانیزه غذا خوری ها ، کارت های دانشجویی ، دزدگیر های فروشگاهی ، کارت های اتوبوس ، کارت های شناسایی ورود و خروج و … همگی از تکنولوژی RFID بهره می برند.
در این آموزش ، سعی می کنیم روش ارتباط RFID با آردوینو را به شما آموزش دهیم تا با روشی متفاوت و بهتر، دستگاه ها و قطعات RFID را به آردوینو (Arduino) وصل کرده و میان آردوینو و دستگاه های RFID ارتباط برقرار کرده و از این تکنولوژی استفاده کنید.
برقرار کردن ارتباط RFID با آردوینو می تواند در طراحی پروژه های آردوینوی کاربردی و صنعتی بسیار ضروری باشد. وقتی که آردوینو را مجهز به RFID می کنید می توانید کارت های RFID را به وسیله آن بنویسید و بخوانید. (پروژه های آردوینوی ساختنی را اینجا ببینید)

نحوه کارت دستگاه های RFID به زبان ساده:

دستگاه های RFID می توانند از روی کارت ها و تگ ها بخوانند و بنویسند. روی کارت ها و تگ ها یک تراشه قرار دارد که بر روی آن اطلاعاتی نوشته شده است .
هم دستگاه و هم کارت های RFID سیم پیچی در ساختار خود دارند. وقتی یک دستگاه کارت خوان در کنار یک کارت یا تگ قرار می گیرد، اطلاعات منحصر به فرد نوشته شده روی کارت (مخلوطی از کاراکتر و عدد) را از روی آن می خواند.
حالا شاید برای شما سوال پیش آمده باشد که این کارت ها و تگ ها که باتری ندارند! پس تراشه داخلی آن ها چگونه کار می کند ؟ این تراشه ها به واسطه القای الکترومغناطیسی روی سیم پیچ ها انرژی مورد نیاز خودشان را به دست می آورد ! در واقع سیم پیچ ها (Coil) هایی که روی هر دو قسمت دستگاه کارت خوان و کارت قرار دارد. وقتی این دو را به هم نزدیک می کنید ، سیم پیچ روی دستگاه ، جریان برقی را روی سیم پیچ کارت القا می کند و به همین سادگی کارت روشن می شود! تراشه طوری طراحی شده است که به محض روشن شدن شروع به مخابره داده های ذخیره شده در حافظه اش ، با امواج رادیویی می کند و دستگاه کارت خوان این اطلاعات را دریافت کرده و به شکل ارتباط سریال (Serial) آن را به جایی که شما می خواهید منتقل می کند.
هر دستگاه RFID که خریداری بکنید ، فراغ از جنس و نام و نشانش دارای پایه های خروجی اطلاعات به شکل سریال است . ما می توانیم این اطلاعات را به وسیله آردوینو ، رزبری پای ، میکرو کنترلر های AVR ، میکرو کنترلر های ARM و … از دستگاه کارت خوان تحویل گرفته و هر کاری که در نظر داریم با اطلاعات انجام دهیم. در این مقاله ما سعی داریم که طریقه وصل کردن RFID یا آردوینو را به شما آموزش دهیم .

برقرار کردن ارتباط کارت خوان RFID با آردوینو :

قبل از هر کاری باید یاد بگیریم که باید چه پایه هایی از آردوینو را به دستگاه کارت خوان RFID متصل کنیم. نقشه مدار زیر به شما نشان می دهد که این کار را چگونه باید انجام داد. فقط باید به چند نکته توجه کنید.
نکته اول : ولتاژ تغذیه دستگاه های کارت خوان RFID با توجه به برند و مدل فرق می کند اما اکثر این دستگاه ها با ولتاژ 12 ولت کار می کنند. برای همین ما هم در مثال هایمان از همین ولتاژ استفاده می کنیم. اما اگر دستگاه های کارت خوانی دیدید که با ولتاژ 5 یا 9 ولت کار می کنند ، نگران نباشید . اصول قضیه فرقی نکرده است و مشکلی وجود ندارد.
نکته دوم : قبل از این که اقدام به خرید کارت خوان RFID و کارت ها یا تگ های RFID کنید ، توجه کنید که فرکانس کاری هر دو یکی بوده و این دو قطعه با هم سازگار باشند. اکثر محصولات موجود با فرکانس 125 کیلوهرتز کار می کنند. اما بهتر است قبل از خرید مطمئن شوید.
نکته سوم : اکثر دستگاه های RFID دارای دو استاندارد در خروجی سریالی خود هستند . یکی با استاندارد RS232 و دیگری با استاندارد TTL ، خروجی استاندارد TTL را می توانید مستقیما به آردوینو وصل کنید. اما خروجی RS232 باید ابتدا تبدیل به TTL شود. برای این کار هم می توانید از IC معروف MAX232 استفاده کنید .
حالا که با ریزه کاری های ابتدای کار آشنا شدید ، به اصل مطلب می پردازیم . عکس زیر روش وصل کردن و ارتباط RFID با آردوینو را نشان می دهد :

در ساختنی بخوانید :  در جشن ها خانه را با پروانه کاغذی تزیین کنید
نقشه مدار روش ارتباط کارت خوان RFID با آردوینو
نقشه مدار روش ارتباط کارت خوان RFID با آردوینو

اتصالات الکتریکی را دقیقا مثل عکس بالا پیاده کنید. مطمئن شوید که پایه زمین (Ground) آردوینو و کارت خوان RFID به هم وصل هستند.
حالا وقت آن است که قلاده آردوینو قدرت مند را رها کنید ! برای این کار از کتابخانه SoftwareSerial آردوینو که پایه های ارتباط دیجیتال سریالی با وسایل دیگر را فعال می کند استفاده می کنیم. ما پایه 9 آردوینو را به عنوان پایه Rx استفاده کردیم. (شما می توانید به جای این پایه از پایه Rx در آردوینو UNO استفاده کنید-این پایه همان پایه صفر است)

این هم کد برنامه نویسی :

 

توضیح کد برنامه نویسی آردوینو:

  () mySerial.available

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

mySerial.read ()

داده های ورودی از ماژول کارت خوان RFID را می خواند !

  () Serial.write

این تابع داده ها را روی نمایشگر سریال آردوینو چاپ می کند. پس عبارت Serial.write(mySerial.read()) ، داده های سریال خوانده شده از پایه سریال آردوینو را روی نمایشگر سریال آردوینو چاپ می کند !
منتظر اتفاقات عجیب و غریبی بودید ؟ شرمنده ، تمام شد ! برقرار کردن ارتباط کارت خوان RFID با آردوینو از روشن کردن یک LED با آردوینو هم ساده تر است ! یک عکس از نشان دادن اطلاعات خوانده شده روی مانیتور مجازی هم در زیر آورده شده است.

در ساختنی بخوانید :  با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید
ارتباط کارت خوان RFID با آردوینو کاملا برقرار است
ارتباط کارت خوان RFID با آردوینو کاملا برقرار است

نکات بیشتر ، مهارت بیشتر !

خب حالا که یاد گرفتید چگونه ارتباط کارت خوان RFID با آردوینو را برقرار کنید بیایید یک کد آردوینو بنویسیم که داده های خوانده شده از کارت خوان RFID را در یک آرایه ذخیره کند و آن ها را خط به خط روی مانیتور سریال نشان دهد. چرا که نه !

حقایقی که بهتر است به یاد داشته باشیم:

  • هر تگ RFID دارای یک شماره یکتای 12 کاراکتری است . ما این 12 کاراکتر را با استفاده از آردوینو می خوانیم.
  • ما به آرایه ای دو بعدی (شبیه جدول) نیاز داریم که بتوانیم اطلاعات چند تگ RFID را ذخیره کنیم . برای مثال برای 10 کارت RFID با
    به آرایه ای با 10 سطر و 12 ستون نیاز خواهیم داشت.

خب ، برنامه آردوینوی زیر یک اطلاعات 10 کارت RFID را در یک آرایه 2 بعدی (همان جدول خودمان) ذخیره می کند. این برنامه اطلاعات هر کارت را می خواند و هر یک از 12 کاراکتر آن را در یک سطر 12 ستونی نگه داری می کند.
سپس این اطلاعات روی مانیتور مجازی سریال درج خواهند شد.

 

این هم یک عکس از خروجی این برنامه:

ارتباط کارت خوان RFID با آردوینو و خواندن 10 کارت RFID و نشان دادن اطلاعات آن ها
ارتباط کارت خوان RFID با آردوینو و خواندن 10 کارت RFID و نشان دادن اطلاعات آن ها

توضیح برنامه آردوینو خواندن ده عدد کارت RFID :

متغیر read_count:

یک متغیر است که برای شمردن 12 کاراکتر هر تگ RFID استفاده شده است . این متغیر در ابتدا مقدار صفر داشت و داخل تایع RecieveData تغییر می یابد. وقتی این متغیر به عدد 12 رسید ، یعنی خواندن اطلاعات کارت به پایان رسیده است ، پس برنامه تابع StoreData() را فراخوانی می کند تا اطلاعات را ذخیره کند.
در داخل تایع StoreData() هر کدام از کاراکتر های داخل داده کارت RFID (که در یک آرایه یک بعدی 12 عضوی به نام RFID_data) ذخیره شده بودند. در اولین ردیف خالی از آرایه data_store (که دو بعدی است) ذخیره خواهند شد.
متغیر read_count بعد از انجام همه این عملیات دوباره در همان تابع StoreData() صفر می شود تا برای شمردن کاراکتر کارت بعدی آماده باشد.

در ساختنی بخوانید :  لوله درخشان ؛ یک پروژه الکترونیکی ساده ؛ اما زیبا و متفاوت

متغیر tag_count:

یک متغیر است که برای شمردن تعداد کارت های RFID شمرده شده استفاده می شود. این متغیر در تابع StoreData() افزایش پیدا می کند. چرا که تا زمانی که اطلاعات یک کارت به شکل کامل خوانده نشده باشد ، نباید کارت شمرده شود. این اتفاق در زمانی افتاده است که تابع StoreData() به شکل کامل اجرا شده باشد . در واقع تعداد اجرا شدن های تابع StoreData() همیشه برابر تعداد کارت هایی است که به شکل کامل خوانده شده اند !

متغیر data_temp:

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

متغیر RFID_data :

این آرایه یک بعدی ، همان طور که در بالا گفته شد ، حامل تمام 12 کاراکتر موجود در حافظه کارتی است که خواندنش به پایان رسیده است.

متغیر data_store:

یک آرایه 2 بعدی است که اطلاعات 10 کارت 12 کاراکتری را ذخیره می کند. یعنی 10 سطر و 12 ستون دارد. اطلاعات کامل هر کارت RFID در یک سطر از این جدول ذخیره خواهد شد..

متغیر disp_control:

یک متغیر از نوع جبری بولی (Boolean) است که برای کنترل تعداد دفعاتی که برنامه تابع PrintData() را اجرا می کند استفاده می شود. ما داده های هر کارت RFID را وقتی کارت جدید به طور کامل خوانده شد به نمایش می گذاریم .

این توضیح تمام متغیر هایی بود که در این برنامه استفاده شده بود . البته اگر کمی با برنامه نویسی آردوینو و یا هر زبان دیگر برنامه نویسی آشنایی داشته باشید به سادگی می توانید این برنامه را بفهمید.همان طور که مشاهده می کنید کل برنامه در 3 تابع خلاصه شده است !
همان طور که می دانید ، آردوینو هر چیزی را که در داخل loop() بنویسید را دوباره و دوباره و تا ابد اجرا خواهد کرد. ما با استفاده هوشمندانه از متغیر ها توانستین اطلاعات کارت های RFID را خوانده و آن را به شکل دلخواه خود به نمایش در آوریم . حالا ببنیم هر کدام از توابع این برنامه چه وظیفه ای بر عهده داشتند.

RecieveData () :

همان طور که می دانید ، این تابع هر کاراکتر ارسالی از کارت خوان RFID را از روی بافر سریال آردوینو می خواهند و ما به تابع دستور دادیم که بعد از خواندن ، نتیجه را در متغیر data_temp ذخیره کند.
سپس با یک به یک این کاراکتر ها را در آرایه RFID_data ذخیره کرده و هر بار به تعداد متغیر read_count یکی اضافه می کنیم.

StoreData () :

این تابع برای این طراحی شده است که اطلاعات کامل خوانده شده یک کارت RFID را در آرایه اصلی data_store ذخیره می کند.
اینجا بهتر است این را هم اضافه کنیم که وقتی کارت به شکل کامل خوانده شده است ، متغیر read_count باید دارای مقدار 12 باشد. پس اگر شرطی قرار دهید که در آن بگویید “تنها زمانی اجازه داری اطلاعات خوانده شده را در آرایه data_store ذخیره کنی که متغیر read_count برابر با 12 باشد” ، در واقع تضمین کرده اید که اطلاعات کامل کارت RFID در data_store ذخیره خواهد شد.

منبع

خلاصه مطلب
روش ارتباط کارت خوان RFID با آردوینو [Arduino]
عنوان مطلب
روش ارتباط کارت خوان RFID با آردوینو [Arduino]
توضیح کوتاه
آموزش وصل کردن آردوینو به دستگاه کارت خوان RFID
نویسنده

بیشتر بخوانید:

آموزش ساخت: دستکش لمسی بلوتوثی Gravity بسازید... در ساختنی امروز طرز ساخت یک دستکش را می آموزید که یک دستگاه ورودی یا input device برای عینک های AR یا همان واقعیت افزوده یا هدست های AR می باشد. این م...
پروژه آردوینو : یک هیولا برای زیرمیز بسازید... در این ساختنی یک پروژه آردوینو جالب و متفاوت را برایتان آماده کرده ایم: هیولای زیرمیزی. این جعبه صداهای ترسناک تولید می کند و وقتی لامپ ها خاموش شوند،...
چراغ مخفی؛ یک آزمایش الکترونیکی جالب با سنسور و آردوینو... در این ساختنی درباره ایده یک آزمایش الکترونیکی جالب با سنسورهای نرم خواهید خواند. این آزمایش الکترونیکی در واقع یک مدار است که زیر یک مارپیچ قرار می گ...
آموزش ساخت : یک دوربین مداربسته بسازید در این پست ساختنی طرز ساخت یک دوربین مداربسته را می آموزید. این دوربین مداربسته یک دوربین امنیتی عادی نیست و میتواند از طریق ایمیل با شما تماس بگیرد و...
آموزش ساخت گیرنده FM با برد آردوینو و ماژول TEA5767... اگر می خواهید ایستگاه رادیویی خودتان را بسازید یا با دوستان تان ارتباط رادویویی برقرار کنید، قبلاً از هر چیز به یک فرستنده FM و گیرنده FM نیاز دارید. ...
گوشی پزشکی الکترونیکی بسازید ! پروژه های الکترونیکی می توانند بسیار سرگرم کننده باشند. مخصوصا این که با ساختن این پروژه ها چیزهایی بسازید که در عمل به دردتان خواهد خورد. برای مثال ی...

درباره مهرداد جمالی

مهرداد جمالی
مهرداد جمالی ، متولد 1367 ، دانش آموخته رشته لیسانس مهندسی مخابرات دانشگاه ملی زنجان و دانشجوی ارشد مدیریت صنعتی است. وی بنیان گذار اصلی پروژه ساختنی و یکی از مدیران ارشد وبسایت است.

پیشنهاد می کنیم

سیستم روشنایی هوشمند با قابلیت نصب روی وسایل مختلف بسازید

حتماً برای شما هم پیش آمده که به رختخواب رفته و خاموش کردن لامپ ها …

پاسخ دهید