آموزش آردوینوپروژه های آردوینو

استارت خودرو با اثر انگشت و کارت RFID با آردوینو

سلام. استارت خودرو با اثر انگشت و کارت RFID با آردوینو را آماده کردیم.

روشن کردن ماشین با سنسور اثر انگشت و آردوینو

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

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

توضیحات ماژول خواننده RFID EM-18

ماژول خواننده RFID EM-18

برای یادگیری آردوینو (برنامه نویسی، ساخت ربات، ارتباط با اندروید) روی دوره آموزش آردوینو کلیک کنید.
برای یادگیری کامل الکترونیک روی دوره آموزش الکترونیک کلیک کنید.

RFID مخفف Radio Frequency Identification به معنی شناسایی فرکانس رادیویی است. هر کارت RFID دارای یک شناسه منحصر به فرد است که در آن قرار داده شده است. از خواننده RFID برای خواندن شماره RFID استفاده می شود. خواننده RFID EM-18 با سرعت 125 کیلوهرتز کار می کند و از آنتن داخلی بهره می برد و با منبع تغذیه 5 ولت می توان از آن استفاده کرد. این ماژول خروجی سریال به همراه خروجی weigand را فراهم می کند. دامنه عملکرد آن حدود 8-12 سانتی متر است. از این ماژول آرفید در بسیاری از پروژه ها استفاده میشود مثل :

  • سیستم حضور و غیاب مبتنی بر RFID
  • سیستم های امنیتی
  • دستگاه های رای گیری
  • قیمت گذاری جاده ای الکترونیکی

نحوه خواندن شماره برچسب های (تگ ها) آرفید توسط آردوینو

برچسب های (تگ ها) آرفید

خروجی ارائه شده توسط EM-18 RFID خواننده با فرمت 12 رقمی ASCII است. از 12 رقم اول 10 رقم اول شماره کارت و دو رقم آخر نتیجه XOR شماره کارت است. دو رقم آخر برای بررسی خطا استفاده می شوند.

به عنوان مثال ، شماره کارت 0200107D0D62 است که از خواننده خوانده می شود و سپس شماره کارت موجود در کارت به شرح زیر می باشد.

02 = مقدمه

00107D0D = 1080589 در دسیمال.

62 مقدار XOR برای (02 XOR 00 XOR 10 XOR 7D XOR 0D) است.

از این رو شماره کارت 0001080589 است

پیدا کردن شماره تگ RFID با آردوینو

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

int count = 0;
char card_no[12];
void setup()
{
   Serial.begin(9600);
}
void loop()
{
   if(Serial.available())
   {
      count = 0;
      while(Serial.available() && count < 12)
      {
         card_no[count] = Serial.read();
         count++;
         delay(5);
      }
      Serial.print(card_no);
   }
}

پس از بارگذاری موفقیت آمیز کد ، مانیتور سریال را باز کرده و میزان baud را روی 9600 تنظیم کنید. سپس کارت را در نزدیکی ماژول RFID EM18 قرار دهید. سپس کد 12 رقمی روی مانیتور سریال نمایش داده می شود. این مراحل را برای تمام برچسب های RFID استفاده شده انجام دهید و آن را برای مراحل بعدی یادداشت کنید.

مدار پروژه استارت خودرو با آردوینو و RFID

شماتیک مدار پروژه سیستم استارت خودرو با آردوینو در تصویر زیر نشان داده شده است.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

روشن کردن ماشین با سنسور اثر انگشت و تگ آرفید با Arduino

ما مدار را در یک برد نقطه ای اجرا کردیم و نتیجه مانند تصویر زیر شد :

مدار سیستم روشن کردن ماشین با اثر انگشت

قطعات مورد نیاز

  1. برد آردوینو نانو
  2. حسگر اثر انگشت R305
  3. ماژول خواننده RFID EM18
  4. ال سی دی کاراکتری 16*2
  5. موتور DC
  6. IC درایور موتور L293D
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

آشنایی با ماژول سنسور اثر انگشت R305

آشنایی با سنسور اثر انگشت R305

ماژول ثبت اثر انگشت R305 یک سنسور نوری است که با استفاده از پردازش نوری اطلاعات را ثبت میکند. یکی ازویژگی های مهم این ماژول قابلیت تنظیم سطح امنیت توسط کاربر میباشد. شما میتوانید درجه امنیتی را بین 1 تا 5 تغییر دهید که این مقدار به طور پیشفرض 3 میباشد. این ماژول ها دارای سرعت بالایی میباشند.

همچنین طول عمر این حسگر اثر انگشت 100 میلیون بار تشخیص اثر انگشت است. در این پروژه ما میتوانیم بیش از 200 اثر انگشت ذخیره کنیم فقط توجه داشته باشید که هر اثر انگشت یک آیدی منحصر به فرد داشته باشد.

ثبت اثر انگشت در سنسور

برای ثبت یک اثر انگشت در ماژول R305 مراحل زیر را انجام دهید.

1. در Arduino IDE ، به File > Examples > Adafruit Fingerprint Sensor Library > Enroll بروید.

2. کدها را در آردوینو بارگذاری کنید و مانیتور سریال را با سرعت 9600 باز کنید.

پین سریال را در برنامه به SoftwareSerial mySerial(12, 11) تغییر دهید.

3. شما باید یک شناسه برای اثر انگشتی را که می خواهید ذخیره کنید، وارد کنید. از آنجا که این اولین اثر انگشت ما است ، در گوشه بالا سمت چپ 1 تایپ کرده و سپس ، روی دکمه Send کلیک کنید.

ثبت یک اثر انگشت در ماژول R305

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

برنامه نویسی آردوینو پروژه استارت ماشین بدون کلید

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

قبل از شروع برنامه، باید کتابخانه های مورد نیاز سنسور اثر انگشت را نصب کنیم. در اینجا ما از “Adafruit_Fingerprint.h” برای استفاده از سنسور اثر انگشت R305 استفاده کرده ایم. بنابراین اول از همه کتابخانه را باید از لینک مقابل دانلود کنید : کتابخانه سنسور اثرانگشت R305

در ابتدای کد Arduino، ما کتابخانه “Adafruit_Fingerprint.h” را برای استفاده از سنسور اثر انگشت R305 فراخوانی کرده ایم. سپس درگاه سریال را که سنسور اثر انگشت در آن متصل است تعریف میکنیم. در اینجا، ما از ارتباط سریال UART استفاده میکنیم و پین 12 را به عنوان RX و پین 11 را به عنوان پین TX اعلام میکنیم.

#include <Adafruit_Fingerprint.h> // فراخوانی کتابخانه سنسور اثر انگشت
#include <LiquidCrystal.h> // فراخوانی کتابخانه ال سی دی کاراکتری
SoftwareSerial mySerial(12,11); // تعریف پین های سریال
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

در مرحله بعد تمام متغیرها را که در کل کد استفاده خواهد شد اعلام میکنیم. سپس پین های اتصال LCD کاراکتری به آردوینو تعریف میکنیم.

char input[12];
int count = 0;
int a = 0;
const int rs = 6, en = 7, d4 = 2, d5 = 3, d6 = 4, d7 = 5;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

در مرحله بعد در loop()، کدی برای بدست آوردن شماره 12 رقمی مخصوص هر تگ RFID نوشته شده است که آن را در یک آرایه ذخیره میکند.

count = 0;
    while (Serial.available() && count < 12)
    {
      input[count] = Serial.read();
      count++;
      delay(5);
    }

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

if ((strncmp(input, "3F009590566C", 12) == 0) && (a == 0)) // تعریف شماره کارت مورد نظر
      {
        lcd.setCursor(0, 0);
        lcd.print("License Valid         ");
        lcd.setCursor(0, 1);
        lcd.print("Welcome               ");
        delay(1000);
        a = 1;
        fingerprint();
      }

در مرحله بعد ، یک تابع getFingerprintID نوشته شده است که اثر انگشت فعلی را با اثر انگشت ثبت شده مطابقت میدهد.

int getFingerprintID()
{
  uint8_t p = finger.getImage();
  if (p != FINGERPRINT_OK)  return -1;
  p = finger.image2Tz();
  if (p != FINGERPRINT_OK)  return -1;
  p = finger.fingerFastSearch();
  if (p != FINGERPRINT_OK)  return -1;
  return finger.fingerID;
}

در صورتی که مطابقت وجود داشته باشد، وسیله استارت میخورد و در غیر اینصورت پیام اثر انگشت اشتباه نمایش داده میشود.

int fingerprintID = getFingerprintID();
        delay(50);
        if (fingerprintID == 1)
        {
          lcd.setCursor(0, 0);
          lcd.print("Access Granted        ");
          lcd.setCursor(0, 1);
          lcd.print("Vehicle Started       ");
          digitalWrite(9,HIGH);
          digitalWrite(10,LOW);
          while(1);
        }

بنابراین ما با آردوینو یک سیستم استارت اتومبیل با اثرانگشت طراحی میکنیم که دارای دولایه حفاظتی است.

موارد موجود در فایل : شماتیک کامل مدار ، سورس کامل

دانلود فایل های پروژه

برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید.

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

تصویر از محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید) سعی میکنم تمام نظرات را پاسخ دهم.

12 نظر

  1. سلام مهندس وقت بخیر
    اگر بخوایم هنگام نزدیک شدن مثلا در فاصله ی دومتری در ها خودکار باز بشن(مثل ماشین های بروز) از چه ماژولی میتونیم استفاده کنیم ک قابلیت تعریف فاصله بصورت رادیویی داشته باشه؟!؟!

    1. سلام عزیز، اگر از فاصله 2 متری میخواهید ماژول بلوتوث گزینه بهتری هست.

  2. سلام مهندس وقت بخیر؛تشکر بابت توضیحات خوبتون در مورد این پروژه؛من این پروژه رو ساختم ودارم استفاده میکنم.فقط یک مشکل ریزی که وجود داره اینه که وقتی یک اثرانگشت اشتباه وارد بشه سیستم هیچ واکنشی نداره منظورم اینه که مثل rfidنیست که اگه کارت اشتباه رو قرار بدیم تو ی ال سی دی اعلام کنه.اگه ممکن باشه که به کد ها این رو هم اضافه کنید که اثرانگشت اشتباه هم رو اعلام کنه خیلی خوب میشه.بازم تشکر خسته نباشید

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

  3. سلام مهندس خسته نباشید؛من به جای rfid em18از مدلrdm6300استفاده کردم.حالا وقتی میخوام شماره ی کارت رو در مانیتور سریال بخونم شماره ها به صورت ناواضح و کاراکترهای ناشناس مثلا مربع یا فلش و… ظاهر میشن و کد12رقمی کارت برای من نمایش داده نمیشه.ممنون میشم اگر کمک کنید این مشکل حل بشه

    1. سلام عزیز. استفاده از ماژول های دیگه میتونه باعث بوجود اومدن این تداخل ها بشه. از کد مربوط به ماژولتون استفاده کنید یا این کد را با ماژولتون هماهنگ کنید.

  4. سلام وقت بخیر؛شماره ی کارت rfidبه دست اومده رو باید تو کدوم قسمت کد بنویسم؟

    1. سلام عزیز در این قسمت های کد:
      if ((strncmp(input, “3F009590566C”, 12) == 0) && (a == 0))
      به جای 3F009590566C شماره کارت رو وارد کنید.

  5. سلام..وقت بخیر…
    مهندس امکانش هست به جای سنسور R305 از سنسور دیگه ای که زیباتر باشه استفاده کرد..برای نصب در خودرو خیلی جالب نیست این سنسور..ممنون

    1. سلام جناب، در این صورت نیاز به تغییر در کدنویسی پروژه خواهد بود.

  6. سلام وقت بخیر یه سوال
    اول اینکه طریق نصب روی خودرو هم لطفا آموزش بدید.
    دوم انیکه اون موتور DC چه کاری رو انجام میده روی خودرو؟
    ممنون میشم جوابمو بدید

    1. سلام جناب. طریقه نصب روی خودرو که در مبحث کاری ما نیست و بستگی به نوع ماشین میتونه مختلف باشه. موتور DC هم نمایشی هست. شما میتونید به جای موتور DC یک رله بذارید که با استفاده از اون استارت ماشین فعال بشه.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *