آموزش راه اندازی rfid | تصور کن وارد یک فروشگاه مواد غذایی می‌شوی، سبد خریدت را با هر چیزی که لازم داری پر می‌کنی و بعد بدون اینکه جلوی صندوق توقف کنی، مستقیم از در فروشگاه خارج می‌شوی.
دیگر خبری از ایستادن در صف‌های طولانی و اسکن شدن تک‌تک کالاها توسط صندوقدار نیست!

آموزش راه اندازی rfid

آموزش راه اندازی rfid

آموزش راه اندازی rfid

این کار حالا به لطف فناوری RFID امکان‌پذیر شده است.

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

سیستم به‌صورت خودکار می‌فهمد چه چیزهایی خریده‌ای و بدون اینکه لازم باشد سبد را خالی کنی یا منتظر اسکن شدن هر کالا بمانی، هزینه را محاسبه و ثبت می‌کند.

اگر به ساخت یک پروژه RFID علاقه‌مند هستی (شاید نه در حد یک فروشگاه کامل، بلکه در مقیاس کوچک‌تر)، ماژول RC522 RFID Reader/Writer انتخاب بسیار مناسبی است.

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

فقط با چند اتصال ساده به برد آردوینو می‌توانی پروژه‌هایی مثل:

  • سیستم کنترل دسترسی (مثلاً درب هوشمند)
  • سیستم ثبت حضور و غیاب
  • سیستم مدیریت موجودی کالا
  • یا هر ایده خلاقانه دیگری

را پیاده‌سازی کنی.

خب، بیایید شروع کنیم! در ادامه با خانه رباتیک ایران همراه باشید.

آموزش راه اندازی rfid

آموزش راه اندازی rfid

فناوری RFID چیست و چگونه کار می‌کند؟

یک سیستم RFID (شناسایی با امواج رادیویی) از دو بخش اصلی تشکیل شده است:

Reader (خواننده)

Tag (تگ یا برچسب)

🔹 RFID Reader (خواننده)

خواننده RFID شامل یک ماژول فرکانس رادیویی و یک آنتن است که اطراف خود یک میدان الکترومغناطیسی با فرکانس بالا ایجاد می‌کند.

🔹 RFID Tag (تگ)

تگ RFID به شیء یا کالایی که می‌خواهیم شناسایی یا ردیابی کنیم متصل می‌شود.

بیشتر تگ‌ها پسیو (Passive) هستند؛ یعنی باتری یا منبع تغذیه جداگانه ندارند. آن‌ها تا زمانی که وارد میدان الکترومغناطیسی خواننده نشوند، غیرفعال باقی می‌مانند.

RFID چگونه کار می‌کند؟

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

این جریان کوچک، انرژی کافی برای روشن شدن میکروچیپ داخل تگ را فراهم می‌کند.

داخل این میکروچیپ اطلاعات مهمی درباره شیء موردنظر ذخیره شده است. وقتی تگ فعال شد، این اطلاعات را به خواننده ارسال می‌کند.

این فرآیند «بک‌اسکتر (Backscatter)» نام دارد.
این روش، تگ خودش سیگنال رادیویی جدید تولید نمی‌کند؛ بلکه سیگنال ارسالی خواننده را تغییر می‌دهد (یا به‌اصطلاح فنی، آن را مدوله می‌کند) و همان را بازمی‌گرداند.

در نهایت، خواننده این سیگنال تغییر یافته را دریافت کرده، اطلاعات را رمزگشایی می‌کند و آن را برای پردازش بیشتر به یک کامپیوتر یا میکروکنترلر (مثل آردوینو) ارسال می‌کند.

بیشتر تگ‌های RFID از نوع پسیو (Passive) هستند، نوع دیگری به نام اکتیو (Active) هم وجود دارد.

تگ‌های اکتیو دارای منبع تغذیه داخلی (مثل یک باتری کوچک) هستند. به همین دلیل می‌توانند در فاصله‌های بسیار بیشتری با خواننده ارتباط برقرار کنند، چون برای تأمین انرژی به میدان الکترومغناطیسی خواننده وابسته نیستند.

فرکانس‌های مختلف در RFID

سیستم‌های RFID در فرکانس‌های مختلفی کار می‌کنند و هر کدام کاربرد و مزایای خاص خودشان را دارند:

فرکانس پایین (LF – Low Frequency)

  • برد کوتاه‌تری دارند.
  • بیشتر در ردیابی حیوانات یا کارت‌های دسترسی استفاده می‌شوند.

فرکانس بالا (HF – High Frequency)

  • تعادل خوبی بین برد و سرعت انتقال داده دارند.
  • مناسب برای کتابخانه‌ها، کارت‌های بانکی و پروژه‌های دانشجویی و آردوینو

فرکانس فوق‌العاده بالا (UHF – Ultra High Frequency)

  • برد خواندن بیشتری دارند.
  • مناسب برای انبارها و خطوط تولید صنعتی که کالاها با سرعت حرکت می‌کنند.

ماژول RC522

ماژول RFID مدل RC522 در محدوده فرکانس بالا (HF) و به طور خاص در ۱۳.۵۶ مگاهرتز کار می‌کند.

این ویژگی باعث می‌شود برای پروژه‌هایی که نیاز به خواندن کارت از فاصله چند سانتی‌متری دارند بسیار مناسب باشد، مثل:

  • قفل الکترونیکی درب
  • سیستم حضور و غیاب
  • نمایشگرهای تعاملی

آشنایی با سخت‌افزار (Hardware Overview)

ماژول RC522 که بر پایه چیپ MFRC522 شرکت NXP ساخته شده، یکی از ارزان‌ترین گزینه‌های RFID موجود در بازار است.

به همین دلیل انتخابی عالی برای پروژه‌های دانشجویی و آزمایشگاهی محسوب می‌شود.

🔹 تگ‌های همراه ماژول

معمولاً این ماژول همراه با دو نوع تگ عرضه می‌شود:

  • یک کارت شبیه کارت بانکی
  • یک جاکلیدی (Key Fob)

هر دوی این تگ‌ها دارای ۱ کیلوبایت حافظه (۱KB) هستند.

شاید ۱ کیلوبایت کم به نظر برسد، اما برای بسیاری از پروژه‌ها کاملاً کافی است.

نکته جالب اینجاست که RC522 فقط خواننده نیست؛ بلکه می‌تواند اطلاعات جدید هم روی تگ‌ها بنویسد.

یعنی می‌توانی:

  • پیام دلخواه ذخیره کنی
  • کد شناسایی اختصاصی تعریف کنی
  • شناسه کاربر بنویسی
  • یا هر داده‌ای که پروژه‌ات نیاز دارد.

استاندارد ارتباطی

ماژول RC522 در فرکانس ۱۳.۵۶MHz کار می‌کند و با تگ‌هایی سازگار است که از استاندارد ISO 14443A پیروی می‌کنند.

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

روش‌های ارتباط با آردوینو

برای اتصال RC522 به میکروکنترلر (مثل آردوینو) چند روش وجود دارد:

  • SPI (سریع‌ترین روش)
  • I2C
  • UART

این انعطاف‌پذیری باعث می‌شود بتوانی بسته به پروژه و نوع بردت، روش مناسب را انتخاب کنی.

قابلیت مهم: Interrupt

یکی از ویژگی‌های جالب RC522 قابلیت ایجاد وقفه (Interrupt) است.

به جای اینکه آردوینو مدام بپرسد:
«آیا کارت نزدیک هست؟ آیا کارت نزدیک هست؟» ماژول خودش وقتی کارت را تشخیص دهد، به آردوینو اطلاع می‌دهد.

این باعث می‌شود:

  • مصرف انرژی کمتر شود.
  • برنامه سریع‌تر و بهینه‌تر کار کند.

ولتاژ کاری

ماژول RC522 با ولتاژ ۲.۵ تا ۳.۳ ولت کار می‌کند.

اما خبر خوب این است که پایه‌های ارتباطی آن تحمل ۵ ولت (۵V Tolerant) دارند.

یعنی می‌توانی آن را مستقیماً به آردوینو ۵ ولتی وصل کنی و معمولاً نیازی به مبدل سطح ولتاژ (Logic Level Converter) نخواهی داشت.

مشخصات فنی (Technical Specifications)

  • محدوده فرکانس: ۱۳.۵۶ MHz (باند ISM)
  • رابط ارتباطی: SPI / I2C / UART
  • ولتاژ کاری: ۲.۵V تا ۳.۳V
  • جریان مصرفی در حالت فعال: ۱۳ تا ۲۶ میلی‌آمپر
  • جریان در حالت خاموش (Power Down): حدود ۱۰ میکروآمپر
  • ورودی‌های منطقی: سازگار با ۵ ولت
  • برد خواندن: حدود ۵ سانتی‌متر

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

ماژول RC522 دارای ۸ پایه برای اتصال به آردوینو یا سایر میکروکنترلرهاست.
هر پایه وظیفه مشخصی دارد (که معمولاً شامل VCC، GND، RST، SDA، SCK، MOSI، MISO و IRQ می‌شود).

آموزش راه اندازی rfid

آموزش راه اندازی rfid

توضیح پایه‌های ماژول RC522

🔹 VCC

این پایه وظیفه تأمین برق ماژول را دارد.
ماژول به ولتاژی بین ۲.۵ تا ۳.۳ ولت نیاز دارد، بنابراین می‌توانی آن را به پایه ۳.۳V آردوینو وصل کنی.

⚠️ نکته مهم:
اگر اشتباهی آن را به پایه ۵V وصل کنی، احتمال دارد ماژول برای همیشه آسیب ببیند.

🔹 RST (Reset)

این پایه برای ریست کردن یا قرار دادن ماژول در حالت خاموش (Power-Down) استفاده می‌شود.

  • اگر این پایه به زمین (LOW) وصل شود → ماژول وارد حالت خاموش می‌شود.
    در این حالت:

اسیلاتور متوقف می‌شود.
پایه‌های ورودی غیرفعال می‌شوند.

  • وقتی سیگنال از LOW به HIGH تغییر کند → ماژول ریست شده و دوباره فعال می‌شود.

🔹 GND

پایه زمین است و باید به پایه GND آردوینو وصل شود.

🔹 IRQ

این پایه برای ارسال وقفه (Interrupt) استفاده می‌شود.
وقتی کارت RFID نزدیک شود، این پایه به آردوینو اطلاع می‌دهد.

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

پایه‌های ارتباطی (چندمنظوره)

🔹 MISO / SCL / Tx

این پایه بسته به نوع ارتباط، عملکرد متفاوتی دارد:

  • در حالت SPI → پایه MISO (داده از ماژول به آردوینو)
  • در حالت I2C → پایه SCL (کلاک سریال)
  • در حالت UART → پایه Tx (ارسال داده از ماژول)

🔹 MOSI

در حالت SPI، داده از آردوینو به ماژول از این پایه ارسال می‌شود.

🔹 SCK (Serial Clock)

در حالت SPI، پالس‌های کلاک از آردوینو به ماژول از طریق این پایه ارسال می‌شود.

🔹 SS / SDA / Rx

این هم یک پایه چندمنظوره است:

  • در حالت SPI → پایه SS (Slave Select)
  • در حالت I2C → پایه SDA (داده سریال)
  • در حالت UART → پایه Rx (دریافت داده)

معمولاً روی برد کنار این پایه یک علامت مربعی وجود دارد که به شناسایی سایر پایه‌ها کمک می‌کند.

آموزش راه اندازی rfid

آموزش راه اندازی rfid

آموزش راه اندازی rfid

آموزش راه اندازی rfid

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

حالا که با پایه‌ها آشنا شدیم، برویم سراغ سیم‌کشی.

مرحله ۱: اتصال تغذیه

VCC ماژول → ۳.۳V آردوینو
GND ماژول → GND آردوینو

مرحله ۲: اتصال ریست و وقفه

پایه RST → به یک پایه دیجیتال آردوینو (مثلاً پایه ۹)
پایه IRQ → در این پروژه وصل نمی‌شود.
(چون کتابخانه‌ای که استفاده می‌کنیم از وقفه پشتیبانی نمی‌کند.)

مرحله ۳: اتصال SPI

برای ارتباط سریع، بهتر است از SPI سخت‌افزاری آردوینو استفاده کنیم.

در آردوینو UNO یا Nano V3.0 پایه‌های SPI به این صورت هستند:

SCK → پایه ۱۳
MISO → پایه ۱۲
MOSI → پایه ۱۱
SS (CS) → پایه ۱۰

اگر از برد دیگری استفاده می‌کنی، حتماً مستندات رسمی آردوینو را بررسی کن.

جدول خلاصه اتصالات

RC522 Module Arduino
VCC ۳.۳V
GND GND
RST ۹
MISO / SCL / Tx ۱۲
MOSI ۱۱
SCK ۱۳
SS / SDA / Rx ۱۰

بعد از انجام این اتصالات، سخت‌افزار آماده است و می‌توانی وارد مرحله برنامه‌نویسی شوید. 👌

نصب کتابخانه RC522

برقراری ارتباط با RC522 ممکن است در نگاه اول پیچیده به نظر برسد، اما نگران نباشید! کتابخانه‌ای به نام MFRC522 وجود دارد که کار خواندن و نوشتن تگ‌ها را بسیار ساده می‌کند. این کتابخانه به صورت پیش‌فرض در Arduino IDE نصب نیست و باید آن را اضافه کنیم.

مراحل نصب:

۱. نرم‌افزار Arduino IDE را باز کن.
۲. روی آیکون Library Manager در سمت چپ کلیک کن.
۳. در قسمت جستجو بنویس:
`mfrc522`
۴. کتابخانه‌ای که توسط Github Community منتشر شده را پیدا کن.
۵. روی دکمه Install کلیک کن.

اکنون کتابخانه آماده استفاده است.

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

بعد از نصب کتابخانه:

۱. در Arduino IDE وارد منوی File → Examples شوید.
۲. به بخش MFRC522 بروید.
۳. برنامه نمونه DumpInfo را انتخاب کنید.

این برنامه یک تگ RFID را می‌خواند و تمام اطلاعات ذخیره‌شده روی آن را در Serial Monitor نمایش می‌دهد.

اجرای برنامه خواندن کارت

حالا برنامه (Sketch) را روی آردوینو آپلود کن و Serial Monitor را باز کن.

وقتی کارت یا جاکلیدی RFID را به ماژول نزدیک کنی، اطلاعاتی روی صفحه نمایش داده می‌شود، از جمله:

  • شناسه یکتای کارت (UID)
  • مقدار حافظه کارت
  • و حتی محتوای کامل حافظه ۱ کیلوبایتی آن

فقط دقت کن کارت را تا پایان خواندن اطلاعات، ثابت و نزدیک ماژول نگه داری.

ساختار حافظه MIFARE Classic 1K

برای اینکه بتوانی به‌درستی از کارت استفاده کنی، باید بدانی حافظه آن چگونه سازماندهی شده است.

حافظه ۱ کیلوبایتی کارت مثل یک ساختمان آپارتمانی منظم تقسیم‌بندی شده است:

  • کل حافظه به ۱۶ سکتور (Sector) تقسیم شده است.
    (شماره‌گذاری از ۰ تا ۱۵)
  • هر سکتور شامل ۴ بلاک (Block) است.
    (شماره‌گذاری از ۰ تا ۳)
  • هر بلاک می‌تواند ۱۶ بایت داده ذخیره کند.

اگر محاسبه کنیم:

۱۶ سکتور × ۴ بلاک × ۱۶ بایت = ۱۰۲۴ بایت = ۱ کیلوبایت

به همین دلیل به آن کارت ۱K می‌گویند.

نکته مهم درباره بلاک‌ها

در هر سکتور:

بلاک‌های ۰، ۱ و ۲ → قابل استفاده برای ذخیره داده‌های ما
بلاک شماره ۳ → به نام Sector Trailer

Sector Trailer چیست؟

آخرین بلاک هر سکتور (بلاک ۳) شامل اطلاعات خاصی به نام Access Bits است.

این بخش تعیین می‌کند:

  • کدام بلاک‌ها قابل خواندن هستند.
  • کدام بلاک‌ها قابل نوشتن هستند.
  • و چه سطح دسترسی‌ای دارند.

به همین دلیل نمی‌توانیم از بلاک شماره ۳ برای ذخیره داده دلخواه استفاده کنیم.

در نتیجه: هر سکتور فقط ۳ بلاک قابل نوشتن دارد.
یعنی: ۳ بلاک × ۱۶ بایت = ۴۸ بایت فضای قابل استفاده در هر سکتور

بلاک سازنده (Manufacturer Block)

یک استثنا هم وجود دارد: بلاک شماره ۰ در سکتور ۰
یعنی: Sector 0 – Block 0

این بلاک به نام Manufacturer Block شناخته می‌شود.

این بلاک شامل:

اطلاعات کارخانه سازنده
شناسه یکتای کارت (UID)
اطلاعات سخت‌افزاری چیپ

⚠️ هشدار بسیار مهم:

هرگز سعی نکن این بلاک را تغییر دهی یا بازنویسی کنی.

اگر این کار را انجام دهی ممکن است:

  • کارت برای همیشه قفل شود.
  • دیگر قابل استفاده نباشد.
آموزش راه اندازی rfid

آموزش راه اندازی rfid

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

حالا که خواندن کارت را یاد گرفتی، بیایید یک مرحله جلوتر برویم:

می‌خواهیم اطلاعات دلخواه خودمان را روی کارت ذخیره کنیم و بعد دوباره آن را بخوانیم.

در این آزمایش یاد می‌گیری:

  • چطور داده روی کارت بنویسی
  • چطور آن را دوباره بخوانی
  • و چطور حافظه کارت را مدیریت کنی

قبل از اینکه وارد توضیح خط‌به‌خط شویم، برنامه (Sketch) مربوط به نوشتن روی کارت را روی آردوینو آپلود کن و ببین چگونه کار می‌کند.

وقتی کد را اجرا کنید و یک کارت را اسکن کنید، باید خروجی را در مانیتور سریال ببینید.

آموزش راه اندازی rfid

توضیحات کد:

برنامه با وارد کردن دو کتابخانه مهم آغاز می‌شود: SPI.h، که به آردوینو در ارتباط با ماژول RFID با استفاده از پروتکل SPI کمک می‌کند، و MFRC522.h، که حاوی توابعی برای کنترل ماژول RFID است.

سپس پین‌هایی که ماژول RFID را به آردوینو وصل می‌کنند را تعریف می‌کنیم:

بعد از آن، یک نمونه (instance) از کلاس MFRC522 ایجاد می‌کنیم که به ما امکان تعامل با ماژول RFID را می‌دهد. همچنین کلید امنیتی را تعریف می‌کنیم تا بتوانیم داده‌ها را به کارت بخوانیم و بنویسیم.

سپس، ما Sector#0 Block#2 را به عنوان مکان حافظه‌ای که می‌خواهیم داده‌های خود را در آن ذخیره کنیم انتخاب می‌کنیم. به یاد داشته باشید، کارت‌های RFID به بخش‌هایی تقسیم می‌شوند و هر بخش شامل چهار بلاک است. بسیار مهم است که هرگز به بلاک #۳ از هیچ بخش.write نکنید چرا که این بلاک، بلاک Sector Trailer است و تنظیمات امنیتی را نگه می‌دارد. به‌طور تصادفی نویشتن روی این بلاک می‌تواند کل بخش کارت را غیرقابل استفاده کند.

برای ذخیره داده‌های ما، یک آرایه از ۱۶ بایت به نام blockcontent تعریف می‌کنیم و مقدار آن را برابر با “Last-Minute-Engg” قرار می‌دهیم. اگر هرگز بخواهید محتوای یک بلاک را محو کنید، می‌توانید به سادگی آن را با صفرها بازنویسی کنید.

برای تأیید اینکه فرایند نوشتن با موفقیت انجام شده است، ما همچنین آرایه‌ای دیگر به نام readbackblock تعریف می‌کنیم. جالب است که این آرایه طولی برابر با ۱۸ بایت دارد نه ۱۶ بایت. دلیل این امر این است که تابع MIFARE_Read از کتابخانه MFRC522 به یک بافر حداقل ۱۸ بایت نیاز دارد، با وجود اینکه هر بلاک در واقع فقط ۱۶ بایت داده دارد.

در تابع setup() سه مورد را مقداردهی اولیه می‌کنیم: ارتباط سریال تا بتوانیم پیام‌ها را به Serial Monitor ارسال کنیم، ارتباط SPI تا آردوینو با ماژول RFID صحبت کند، و خود ماژول RFID با استفاده از تابع mfrc522.PCD_Init().

یادآوری: پیش از این با استفاده از ساختار MIFARE_Key و با نام key، کلید امنیتی را تعریف کرده‌ایم. این کلید یک آرایه از شش بایت است که برای دسترسی به کارت RFID استفاده می‌شود. در اینجا آن را با مقداردهی به تمامی شش بایت به 0xFF مقداردهی اولیه می‌کنیم.

به خاطر داشته باشید که تمام کارت‌های جدید RFID به طور پیش‌فرض کلید امنیتی آن‌ها برابر با 0xFF است. با این حال، اگر کارت قبلاً برنامه‌نویسی شده باشد، ممکن است کلید متفاوتی داشته باشد. در این صورت باید کلید صحیح را بدانید تا بتوانید به حافظه کارت دسترسی پیدا کنید.

در حلقه loop()، برنامه به طور مداوم به دنبال کارت RFID جدید می‌گردد. هنگامی که کارتی شناسایی شد، شماره سریال یکتای کارت را می‌خواند. پس از شناسایی کارت، به ادامه داده‌های ذخیره‌شده در blockcontent را به بلاک شماره ۲ می‌نویسیم. پس از اتمام فرایند نوشتن، بلافاصله داده‌های همان بلاک را دوباره می‌خوانیم تا تأیید کنیم با موفقیت نوشته شده است. در نهایت، داده‌های بازیابی‌شده روی Serial Monitor چاپ می‌شود.

آموزش راه اندازی rfid

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

آماده سازی فرم
لطفا صبر کنید

فرم ساز آسان