ماژول RFID RC522 یک نقطه شروع عالی برای مبتدیانی است که علاقه مند به ایجاد انواع برنامه های کاربردی مبتنی بر RFID هستند. در این مقاله به بررسی RFID و نحوه عملکرد آن می پردازیم و از ماژول RC522 برای خواندن و نوشتن بر روی تگهای RFID و نمایش شناسه آنها بر روی LCD یا پورت سریال استفاده می کنیم. در پایان این مقاله ، میتوانید یک سیستم خواننده RFID ساده ایجاد کنید و نحوه عملکرد فناوری RFID را درک کنید.
به لطف فناوری RFID ، دیگر روزهایی که مردم در صف های طولانی در فروشگاه مواد غذایی منتظر می ماندند گذشته است. با یک راهحل تسویهحساب خودکار مبتنی بر RFID، میتوانید سبد خرید خود را پر کنید و درست از در خارج شوید. دیگر نیازی نیست منتظر بمانید تا کسی هر کالای موجود در سبد خرید شما را یکی یکی قیمت کالا را حساب کند . اکنون با کمک تگهای RFID متصل به اقلام، هر کالای موجود در سبد خرید تقریباً فوراً شناسایی و قیمت آن محاسبه می شود .
استفاده گسترده از سیستم های RFID ناشی از سرعت، قابلیت اطمینان و مزایای مقرون به صرفه این فناوری است.
موضوعاتی که در این مقاله به آنها پرداخته خواهد شد :
RFID چیست و چگونه کار می کند؟
RFID مخفف عبارت Radio Frequency Identification (شناسایی فرکانس رادیویی) است و اساساً فناوری است که به ما امکان می دهد داده های هویتی مفیدی را در اشیاء معمولی که روزانه استفاده می کنیم ذخیره کنیم. به این اشیاء که برای حمل چنین داده هایی ساخته شده اند، برچسب های RFID یا تگ می گویند.
یک سیستم RFID از یک ترانسپوندر (برچسب RFID) تشکیل شده است که به عنوان مثال به یک شی متصل شده یا در داخل آن قرار دارد و شامل یک شناسه منحصر به فرد (UID) و همچنین یک دستگاه خواندن/نوشتن برای خواندن شناسه و داده ها و برای نوشتن داده ها بر روی آن است.
تگ های RFID در شکل های مختلفی وجود دارند ، ممکن است به شکل یک کارت مستطیلی یا جاسوییچی یا حتی می تواند یک دکمه، یک برچسب، یک دستبند باشد.
اگرچه این برچسب ها ممکن است کاغذ یا لاستیک باشند، اما بسیاری از آنها به گونه ای ساخته می شوند که دارای مدارهای خیلی کوچک در آنها باشند. مدارهای موجود در آنها یک دستگاه ذخیره سازی کوچک دارند که به آنها اجازه می دهد داده هایی را که حمل می کنند ذخیره کنند.
یک سیستم شناسایی RFID از دو جزء اصلی تشکیل شده است:
- RFID tag (برچسب متصل به شی مورد شناسایی)
- RFID reader (خواننده/نویسنده که برچسب را می خواند در این پروژه ماژول RC522)
تگ های RFID، این تگ ها برای انتقال داده ها به خواننده RFID استفاده می شوند. برای انجام این کار، این تگها حاوی یک ریزتراشه هستند که اطلاعات را ذخیره می کند و یک آنتن برای دریافت و ارسال سیگنال حاوی داده های آن، همانطور که در شکل بالا نشان داده شده است.
تگ های RFID معمولاً دستگاه های غیرفعال یا passive هستند، به این معنی که برای کار کردن به باتری نیاز ندارند. بنابراین، تگ های غیرفعال باید قبل از اینکه بتوانند داده ها را انتقال دهند، توسط خواننده RFID تغذیه شوند. علاوه بر این، تگهای RFID از یک ماده محافظ نیز تشکیل شدهاند که در اشکال و اندازههای مختلف وجود دارد که قطعات را در کنار هم نگه میدارد و از آنها در برابر شرایط مختلف محیطی محافظت میکند.
یک RFID reader شامل یک ماژول فرکانس رادیویی و یک آنتن است که یک میدان الکترومغناطیسی با فرکانس بالا تولید می کند. در حالی که tag معمولاً یک دستگاه Passive است (غیرفعال که باتری ندارد). این شامل یک ریزتراشه است که اطلاعات را ذخیره و پردازش می کند و یک آنتن برای دریافت و ارسال سیگنال.
هنگامی که tag به RFID reader نزدیک می شود، RFID reader یک میدان الکترومغناطیسی ایجاد می کند. این باعث می شود الکترون ها از طریق آنتن tag حرکت کنند و متعاقباً تراشه را تغذیه می کنند. سپس تراشه با ارسال اطلاعات ذخیره شده خود به RFID reader در قالب یک سیگنال رادیویی دیگر پاسخ می دهد. RFID reader سیگنال رادیویی را شناسایی و تفسیر می کند و داده ها را به کامپیوتر یا میکروکنترلر ارسال می کند.
ماژول RFID RC522
ماژول RC522 RFID مبتنی بر آی سی MFRC522 از کمپانی NXP یکی از ارزان ترین گزینه های RFID است که می توانید آن را با قیمتی مناسب از بازار تهیه کرد . معمولاً یک تگ کارت RFID مستطیلی شکل و یک تک به شکل جاسوییچی همراه ماژول RC522 ارایه می شود . این تگ ها دارای حافظه ای با ظرفیت 1 کیلوبایت می باشند . با وجود حافظه یک کیلو بایتی ما می توانیم پیام یا رمز دلخواه خودمان را بر روی tag بنویسیم .
اولین گام خرید یک مجموعه RFID متشکل از یک خواننده/نویسنده RFID RC522 با تراشه MRFC522، فوب کلید S50 RFID (برچسبهای کلیدی آیسی) و کارت RFID S50 (کارت هوشمند نازک) بود، که میتوان آن را با قیمت ارزان خریداری کرد.
دانلود دیتاشیت : https://github.com/DFRobot/Wiki/blob/master/DFR0231-H/res/MF1S50YYX_V1.pdf
ماژول RFID خوان RC522 برای ایجاد میدان الکترومغناطیسی 13.56 مگاهرتز و ارتباط با تگ های RFID (تگ های استاندارد ISO 14443A) طراحی شده است.
ماژول RC522 RFID می تواند با یک میکروکنترلر از طریق پورت SPI با حداکثر سرعت داده 10 مگابیت در ثانیه ارتباط برقرار کند. همچنین این ماژول از پروتکل های I2C و UART پشتیبانی می کند.
ماژول دارای یک پین وقفه است. این پین مفید است زیرا به جای اینکه دائماً از ماژول RFID بپرسید “آیا کارتی در دسترس است” . ماژول هنگامی که یک tag در مجاورت آن قرار می گیرد به ما هشدار می دهد.
ولتاژ کار ماژول از 2.5 تا 3.3 ولت متغیر است، اما خبر خوب این است که پایه های ماژول قابلیت تحمل 5 ولت را دارند، بنابراین می توانیم به راحتی آن را بدون استفاده از مبدل سطح منطقی به میکروکنترلرهای با ولتاژ کاری 5 ولتی متصل کنیم.
در اینجا مشخصات کامل وجود دارد:
PIN OUT یا پایه های ماژول RC522
ماژول RC522 در مجموع دارای 8 پین است که آن را به دنیای خارج متصل می کند. اتصالات به شرح زیر است:
VCC : تغذیه ماژول را تامین می کند و می تواند از 2.5 تا 3.3 ولت باشد.به یاد داشته باشید که اتصال آن به پایه 5 ولت احتمالا ماژول شما را از بین می برد!
RST : ورودی برای Reset و Power down می باشد . وقتی این پین در سطح منطقی low یا 0 میآید، ماژول خاموش میشود. با این کار تمام ورودیهای جریان داخلی از جمله نوسان ساز خاموش میشود و پایههای ورودی از دنیای خارج جدا میشوند. در لبه بالارونده، ماژول reset یا تنظیم مجدد می شود.
GND : پین زمین است و باید به پایه GND متصل شود.
IRQ : یماژول RFID-RC522 می تواند در صورت سپری شدن مدت زمان طولانی بدون شناسایی برچسب RFID به حالت خواب برود تا در مصرف برق صرفه جویی شود. پین IRQ یک پایه وقفه است که می تواند به میکروکنترلر هنگامی که یک tag RFID در مجاورت آن قرار می گیرد هشدار دهد. به عبارت دیگر، پین IRQ به ماژول کمک می کند تا بیدار شود.
MISO / SCL / Tx : به ترتیب به عنوان Master-In-Slave-Out هنگامی که رابط SPI فعال است، به عنوان ساعت سریال زمانی که رابط I2C فعال است، و به عنوان یک خروجی داده سریال زمانی که رابط UART فعال است، عمل می کند.
MOSI : ورودی SPI ماژول RC522 است.
SCK : پالس های ساعت ارائه شده توسط SPI bus Master را می پذیرد.
SS/SDA/RX : زمانی که رابط SPI فعال است به عنوان ورودی سیگنال، زمانی که رابط I2C فعال است به عنوان داده سریال و هنگامی که رابط UART فعال است به عنوان ورودی داده سریال عمل می کند .
مراحل ارتباط بین ماژول RC522 با تگ های RFID
زمانی که ما ماژول RFID RC522 را روشن می کنیم و یک مایفر کارت یا تگ جاسوییچی به آن نزدیک می کنیم . برای احراز هویت و انجام عملیات خواندن و نوشتن بر روی حافظه tag مراحل زیر به ترتیب انجام می شود .
درخواست استاندارد Select standard / all
پس از اینکه ماژول روشن و بازنشانی می شود (Power-On Reset) . کارت به یک درخواست REQA یا (بیدارباش)WUPA پاسخ می دهد.
حلقه ضد برخورد Anticollision loop
در حلقه ضد برخورد، شناسه یک کارت خوانده می شود. در صورت وجود چندین کارت در محدوده آنتن ماژول RC522 ، می توان کارت ها را با شناسه آنها تشخیص داد و برای عملیات های بعدی ، یک کارت را با شناسه آن انتخاب کرد .
کارت های انتخاب نشده به حالت بیکار باز می گردند و منتظر دستور درخواست جدید می مانند.
انتخاب کارت Select card
با دستور انتخاب کارت، ماژول RC522 یک کارت را برای احراز هویت و عملیات مربوط به حافظه انتخاب می کند.
کارت کد Select AcKnowledge (SAK) را برمی گرداند که نوع کارت انتخابی را تعیین می کند.
پارامتر SAK یا Select AcKnowledge برای تگ های 4 کیلو بایتی عدد 18 و برای تگ های 1 کیلو بایتی عدد 08 می باشد (جدول 1).
احراز هویت سه مرحله ای Three pass authentication
پس از انتخاب یک کارت، ماژول RC522 محل دسترسی حافظه را مشخص می کند و از کلید KEY مربوطه برای روش احراز هویت سه مرحله ای استفاده می کند.
پس از احراز هویت موفق، تمام دستورات و پاسخ ها رمزگذاری می شوند.
نکته: دستور HLTA باید پس از احراز هویت موفقیت آمیز به صورت رمزگذاری شده به PICC ارسال شود تا پذیرفته شود.پارامتر PICC به تگ های RFID بدون تماس گفته می شود .
پس از احراز هویت، هر یک از عملیات زیر ممکن است بر روی حافظه انجام شود.
• Read block (خواندن از بلوک)
• Write block (نوشتن در بلوک)
• Decrement (کاهش) : محتویات یک بلوک را کاهش می دهد.
• Increment (افزایش) : محتویات یک بلوک را افزایش می دهد.
• Restore (بازیابی) : محتویات یک بلوک را به بافر انتقال داخلی منتقل می کند.
• Transfer (انتقال) : محتویات بافر انتقال داخلی را در یک value block(بلوک مقدار) می نویسد.
یکپارچگی داده ها Data integrity
مکانیسم های زیر در پیوند ارتباطی بدون تماس بین ماژول RC522 و کارت برای اطمینان از انتقال داده بسیار قابل اعتماد پیاده سازی شده است:
• 16 بیت CRC در هر بلوک
• Parity bits برای هر بایت
• بررسی تعداد بیت
• کدگذاری بیت برای تمایز بین “1”، “0” و “بدون اطلاعات”
• نظارت بر کانال (توالی پروتکل و تجزیه و تحلیل جریان بیت)
توالی احراز هویت سه مرحله ای Three pass authentication
1. ماژول RC522 بخش یا sector مورد نظر را مشخص می کند و کلید A یا B را انتخاب می کند.
2. کارت کلید رمز و شرایط دسترسی را از sector trailer می خواند. سپس کارت شماره ای را به عنوان چالش برای خواننده ارسال می کند (مرحله اول).
3. ماژول RC522 پاسخ را با استفاده از کلید رمز و ورودی اضافی محاسبه می کند. پاسخ، همراه با یک چالش تصادفی از ماژول RC522 ، به کارت منتقل می شود (مرحله دوم).
4. کارت با مقایسه آن با چالش خود پاسخ ماژول RC522 را تأیید می کند و سپس پاسخ چالش را محاسبه کرده و آن را ارسال می کند (مرحله سوم).
5. ماژول RC522 پاسخ کارت را با مقایسه آن با چالش خود تأیید می کند. پس از ارسال اولین چالش تصادفی، ارتباط بین کارت و خواننده رمزگذاری می شود.
رابط فرکانس رادیویی RF interface
رابط RF مطابق استاندارد ISO/IEC 14443A برای کارت های هوشمند بدون تماس است.
برای عملکرد، میدان فرکانس رادیویی از ماژول rc522 همیشه باید وجود داشته باشد (با مکث های کوتاه هنگام ارسال)، زیرا برای منبع تغذیه کارت و تگ ها استفاده می شود .
برای هر دو جهت ارتباط داده تنها یک بیت شروع در ابتدای هر فریم وجود دارد. هر بایت با یک بیت parity (parity فرد) در انتها منتقل می شود. ابتدا LSB بایت با کمترین آدرس بلوک انتخاب شده ارسال می شود.
حداکثر طول فریم 163 بیت است . شامل 16 بایت دیتا (16byte x 9bit) + 2 بایت CRC(2byte x 9bit) + یک 1 بیت شروع ( 1start bit) .
ساختار حافظه RFID tag
مایفر RFID یا MIFARE برگرفته از عبارت ( MIkron FARE Collection System) یک نام تجاری از شرکت NXP برای تراشه RFID پسیو است که در کارت ها، تگ ها و لیبل های RFID مورد استفاده قرار گرفته است.
طرح بندی حافظه RFID tag یک کیلوبایتی از خانواده محصولات MIFARE در قالب 16 Sector (بخش 0 تا 15) سازماندهی شده است. هر sector به 4 Block (بلوک 0 تا 3) تقسیم شده است و هر block از 16 Byte (بایت 0 تا 15) تشکیل شده است و هر بلوک می تواند 16 بایت داده (از 0 تا 15) را ذخیره کند.
16sectors x 4blocks x 16bytes of data = 1024 bytes = 1K memory
تمام اطلاعات مفید در مورد tag از جمله شناسه منحصر به فرد tag (UID)، اندازه حافظه و کل 1K حافظه به همراه بخش ها (sectror) و بلوک ها (block) در تصویر زیر مشخص شده است.
انواع بلوکها در ساختار حافظه
Manufacturer block بلوک سازنده
این اولین بلوک (block 0) از سکتور اول (sector 0) است. این بلوک حاوی اطلاعات سازنده آی سی و شناسه منحصر به فرد (UID) است. اطلاعات سازنده در این بلوک در کارخانه تولید کننده ، برنامه ریزی شده و از نوشتن بر روی آن محافظت می شود. پارامتر UID آی دی منحصر به فرد هر tag می باشد که در تصویر بالا با رنگ قرمز نمایش داده شده است.
هر تگ RFID دارای یک شماره UID (Unique Identification) منحصر به فرد است که بسته به نوع تگ می تواند 4 یا 7 بایت طول داشته باشد. با این حال، از زمان معرفی UID 7 بایتی، UID 4 بایتی دیگر منحصر به فرد نیست و بنابراین به عنوان یک شماره NUID (Not Unique Identification) نیز نامیده می شود. اما برای سادگی، من از اصطلاح UID برای اعداد UID 4 بایتی نیز استفاده خواهم کرد.
شماره SAK کدی است که از روی تگ RFID قابل خواندن است و نوع تگ را به صورت عدد نشان می دهد. با کتابخانه ای که من استفاده می کنم، از شماره SAK نیز می توان برای خروجی نوع برچسب در متن ساده استفاده کرد.
تگ هایی که من برای آزمایش استفاده کردم MIFARE Classic S50 با حافظه 1 کیلوبایتی و شماره UID 4 بایتی است.
SAK عددی است که نوع تگ را برمی گرداند، به عنوان مثال:
0x08 برای MIFARE 1K
0x18 برای MIFARE 4K
0x11 برای MIFARE PLUS
هشدار: به یاد داشته باشید این UID برای هر کارت منحصر به فرد است و تغییر اطلاعات ذخیره شده در بلوک سازنده بسیار خطرناک است و می تواند کارت را برای همیشه قفل کند.
Data blocks بلوک های داده
همه سکتور ها شامل 4 بلوک هستند که فقط 3 بلوک اول هر سکتور برای ذخیره داده ها استفاده می شود . سکتور 0 فقط شامل دو بلوک داده است زیرا بلوک سازنده فقط خواندنی است و مجاز نیستیم بر روی آن بنویسیم.
بلوک های داده را می توان توسط بیت های دسترسی برای عملیاتهای زیر پیکربندی کرد:
• read/write blocks (بلوک های خواندن/نوشتن)
• value blocks (بلوک های مقدار)
بلوک های داده 16 بایتی تگ های RFID می توانند به عنوان بلوک های خواندن/نوشتن یا به عنوان بلوک های مقدار استفاده شوند. بهعنوان بلوکهای خواندن/نوشتن، بلوکها فقط با کاراکتر نوشته میشوند و کاراکترها میتوانند دوباره خوانده شوند.
بلوکهای دادهای که بهعنوان بلوکهای ارزشی تعریف میشوند، هر کدام میتوانند حاوی یک مقدار عددی باشند. بلوکهای ارزش نه تنها میتوانند خوانده و نوشته شوند، بلکه میتوان آنها را افزایش، کاهش داد، در حافظه فرار ذخیره کرد و از آنجا دوباره ذخیره کرد .
بلوک های مقدار را می توان برای مثال به عنوان برنامه های کاربردی کیف الکترونیکی ، که در آن مقدار پول شارژ و ذخیره می شود و با دستوراتی مانند افزایش و کاهش مقدار آن کنترل می شود .
Value blocks بلوک های مقدار
بلوک های مقدار امکان انجام عملکردهای کیف الکترونیکی را فراهم می کنند (فرمان های معتبر عبارتند از: خواندن،نوشتن، افزایش، کاهش، بازیابی، انتقال).بلوک های مقدار دارای قالب داده ثابت هستند که امکان تشخیص و تصحیح خطا و مدیریت پشتیبان را فراهم می کند.
یک بلوک مقدار در قالب شکل زیر نوشته می شود :
• value : یک مقدار 4 بایتی امضا شده می باشد . بایت با کمترین اهمیت در آدرس با کمترین اهمیت ذخیره می شود . بایتهای که علامت منفی یا Negative بالای آن می باشد با استاندارد مکمل دو ذخیره می شوند .
یک مقدار (value) به دلایل یکپارچگی و امنیت داده ها، سه بار ذخیره می شود . دو بار بصورت غیر معکوس و یکبار بصورت معکوس (Negative) ذخیره می شود .
محدوده اعداد معتبر از نوع “int32_t” یا “long” و بازه آن از -2،147،483،648 تا +2،147،483،647 می باشد .
• adr : نشان دهنده یک آدرس 1 بایتی است که می تواند برای ذخیره سازی آدرس یک بلوک هنگام اجرای یک عملیات بر روی value استفاده شود . بایت آدرس چهار بار ذخیره می شود ، دو بار معکوس و دو بار غیر معکوس . در حین عملیات افزایش، کاهش، بازیابی و انتقال ، آدرس بدون تغییر باقی می ماند. فقط از طریق نوشتن می توان آن را تغییر داد .
Sector trailer بخش راه انداز
آخرین block (بلوک 3) هر sector یا بخش ، Sector Trailer نامیده می شود. Sector Trailers به ترتیب بلوک های 3، 7، 11، … 59 و 63 هستند .
این block شامل کلیدهای KeyA (اجباری) و KeyB (اختیاری) و بیت های دسترسی یا Access Bits است که دسترسی خواندن و نوشتن را برای 3 بلوک قبل (Data block) در هر سکتور فراهم می کند.
Sector Trailer برای هر بلوک حاوی کلیدهای KeyA (بایت 0 تا 5) و KeyB (بایت 10 تا 15) است. بایت های 6 تا 9 شامل Access Bits هستند . این بیت ها علاوه بر دسترسی خواندن و نوشتن ، دسترسی نوع (data یا value) بلوک های داده را نیز مشخص می کنند.
بیت های دسترسی در بایت های 6 تا 9 ذخیره می شوند. تنظیمات کارخانه برای Access Bits بایت های 6 تا 9 مقادیر 0xFF، 0x07، 0x80، و 0x69 است. با این حال، تنها سه بایت اول (بایت 6 تا 8) به عنوان بیت دسترسی استفاده می شود. بایت 9 را می توان برای برنامه ها استفاده کرد.
اگر KeyB مورد نیاز نباشد و استفاده نشود ، 6 بایت آخر Sector Trailer(بایت 10 تا 15) را می توان به عنوان بایت Data استفاده کرد.
رمز پیشفرض برای باز کردن قفل هر سکتور تعداد شش بایت 0xFF می باشد . این رمز بصورت پیش فرض توسط کارخانه سازنده مقدار 0xFF تنظیم شده است . این رمز قابل تغییر است و هر سکتور را می توان با KeyA یا KeyB رمزگذاری کرد. برای اولین آزمایش، توصیه می شود کلیدهای KeyA و KeyB را تغییر ندهید. در صورت تغییر رمز هر سکتور ، 3 بلوک دیتای آن سکتور قفل می شود .
احتیاط: بدون آگاهی مناسب از عملکرد بیت های دسترسی، نباید آنها را تغییر دهید. تغییر نادرست بیت های دسترسی یک سکتور می تواند منجر به مسدود شدن غیرقابل برگشت کل سکتور شود!
شرایط دسترسی برای Sector Trailer
بسته به بیت های دسترسی Access Bits برای Sector Trailer (بلوک 3) دسترسی خواندن/نوشتن به کلیدها و بیت های دسترسی به صورت «never» ، «KeyA»، «KeyB» یا Key A|B (کلید A یا کلید B) مشخص شده است.
هنگام تولید تراشه در کارخانه ، بیت های دسترسی برای Sector Trailer و KeyA از پیش تعریف شده است (جدول 8).
Access Bits یا بیت های دسترسی بصورت پیشفرض تنظیم کارخانه برای Sector Trailer معادل “001” می باشد (جدول 5 . کادر قرمز رنگ) و به معنای این است که KeyA هرگز قابل خواندن نیست(جدول 6) ، به همین علت است که موقع خواندن KeyA مقدار 0 برگردانده می شود (جدول 5 . کادر آبی رنگ ، بایت های 0 الی 5) .
KeyA هرگز قابل خواندن نیست اما با اعتبارسنجی خود KeyA ، قابل نوشتن است (جدول 6).
Access Bits با اعتبارسنجی KeyA ، هم قابل نوشتن و هم قابل خواندن است(جدول 5 .کادر سبز رنگ ، بایت های 6 الی 8) . یعنی اگر موقع عملیات اعتبار سنجی مقدار KeyA نادرست باشد ، عملیات خواندن و نوشتن قابل اجرا نمی باشد .
KeyB با اعتبارسنجی کلید KeyA ، قابل خواندن و نوشتن است . چون بصورت پیش فرض توسط کارخانه مقدار کلید های KeyA و KeyB برابر با FF FF FF FF FF FF هگز برنامه ریزی شده است ، موقع خواندن KeyB مقدار FF FF FF FF FF FF برگردانده می شود (جدول 5 . کادر نارنجی رنگ ، بایت های 10 الی 15) .
شرایط دسترسی برای Data Blocks
بسته به بیت های دسترسی برای بلوک های داده (بلوک های 0…2) دسترسی خواندن/نوشتن به عنوان «never» ، «KeyA»، «KeyB» یا Key A|B (کلید A یا کلید B) مشخص شده است.
تنظیم Access Bits یا بیت های دسترسی مربوطه ، دستورات قابل اجرا برای بلوک های دیتا را به شکل زیر تعریف می کنند.
• بلوک خواندن/نوشتن: عملیات خواندن و نوشتن مجاز است.
• بلوک مقدار: به عملیات بر روی مقدار value امکان افزایش، کاهش، انتقال و بازیابی را می دهد.
برای مثال با شرایط دسترسی “001” فقط خواندن و کاهش امکان پذیر است . منعکس کننده یک کارت غیر قابل شارژ است. برای شرایط دسترسی ‘110’ امکان نوشتن با KeyB وجود دارد و شارژ مجدد کارت با استفاده از KeyB امکان پذیر است .
• بلوک سازنده: شرایط فقط خواندنی است و تحت تأثیر تنظیمات بیت های دسترسی قرار نمی گیرد!
به صورت پیش فرض تنظیمات کارخانه ، شرایط دسترسی Access Bits برای همه بلوک های یک سکتور به شکل زیر می باشد . این جدول بسته به نیاز کاربر جهت خواندن یا نوشتن بر روی بلوک های یک سکتور ، مطابق جدول های 6 و 7 مقدار دهی می شود .
با قرار دادن مقادیر شرایط دسترسی ها در جدول 8 درون جدول 9 ، مقادیر بایت های 6،7،8 برای ناحیه Access Bits بدست می آید .
توجه : بیت هایی که بالای سر آنها علامت منفی یا Invert قرار دارد باید بصورت معکوس قرار داده شود مثلا اگر مقدار بیت 0 باشد در حالت بدون علامت مقدار 0 و در حالت علامت دار مقدار 1 را قرار می دهیم . با قرار دادن بیت ها مطابق جدول 9 ، مقادیر بایت های 6 و 7 و 8 بدست می آید که برابر FF 07 80 هگز می باشد .
1 2 3 |
Byte 6 = 11111111 = FF Byte 7 = 00000111 = 07 Byte 8 = 10000000 = 80 |
در ویدیوهای زیر برای نمایش تابع printf بجای استفاده از uart از itm و کنسول swv استفاده شده است ، آموزش استفاده تابع printf در stm32 را از این لینک https://micronik.ir/stm32-itm دنبال نمایید .
در این ویدیو به بررسی اجمالی ماژول rfid rc522 و نحوه عملکرد rfid پرداخته می شود .
در این ویدیو با ساختار حافظه tag های rfid با حافظه 1k بایتی آشنا می شویم و به بررسی بخشهای sector , block , manofacture block , sector trailer می پردازیم .
در این ویدیو به بررسی نحوه احراز هویت tag های rfid توسط KEYA,KEYB می پردازیم .
دراین ویدیو نوشتن دیتا بر روی مایفر کارت rfid توسط ماژول rc522 با میکروکنترلر stm32 را خواهید آموخت .
در این ویدیو خواندن دیتا از حافظه tag mifare کارت توسط ماژول rc522 با میکروکنترلر stm32 را خواهید آموخت .
در این ویدیو ابتدا دو تا از بلوکهای دیتا را به فرمت value block پیکربندی می کنیم سپس دو عدد را داخل value block می نویسیم و توسط دستور increment و decrement مقدار های داخل value block را افزایش و کاهش می دهیم .
در این ویدیو تنظیم بیت های دسترسی access bits برای عملیات read/write در حافظه trailer bock , data block در هر sector را خواهید آموخت .
در این ویدیو تغییر کلید KEYB در ماژول rfid rf522 و انجام authenticate توسط KEYB جدیدی که برای تگ مایفر تعریف می شود را خواهید آموخت .
برای کار با ماژول RC522 کتابخانه به همراه چندین مثال تهیه شده است که توسط این کتابخانه می توانید عملیات خواندن و نوشتن ، افزایش و کاهش و … را بر روی تگ های خود انجام دهید .