02166766927 -02166703652
info@atrinelec.com تهران پاساژ امجد طبقه1 واحد 16
معرفی ماژول YLMF18(ریدر مایفر سریال)_جلسه اول

معرفی ماژول YLMF18(ریدر مایفر سریال)_جلسه اول

2018-10-09 20:59:17

معرفی ماژول YLMF18 به همراه شرح کامل دستورات کاربردی و نحوه برقراری ارتباط با کارت مایفر

معرفی ماژول YLMF18(ریدر مایفر سریال)_جلسه اول

در این مطلب یکی دیگر از ماژول های ریدر و رایتر RFID را معرفی می کنیم در مطالب قبلی نوعی دیگر از این ماژول ها را معرفی نمودیم و نحوه عملکرد آن و برنامه آن با نرم افزار بسکام را توضیح دادیم برای مشاهده معرفی ماژول RC522 به لینک زیر مراجعه نمایید.

معرفی ماژولRFID با شماره RC522

در ماژول RC522 از رابط SPI برای برقراری ارتباط با آن استفاده شده است ولی در ماژول  YLMF18 برای برقراری ارتباط از رابط سریال استفاده شده است در ادامه به شرح عملکرد دستورات کاربردی این ماژول می پردازیم.

مشخصات کلی این ماژول به شرح زیر می باشد:

  • تغذیه ماژول 5 ولت می باشد
  • با توجه به سخت افزار ماژول هم می توان بصورت سریال TTL با ماژول ارتباط برقرار کرد هم در صورتیکه آی سی Max232 را روی برد لحیم نمایید قادر خواهید بود از طریق RS232 با ماژول ارتباط برقرار نمایید.
  • میزان باودریت پیش فرض ماژول 19200  می باشد.
  • تا فاصله حدودا 6 سانتی متری بین ماژول و کارت مایفرمی توان اطلاعات را از کارت خواند یا روی آن داده ای را نوشت.

شماره پایه ها و وظیفه هر پایه در تصاویر زیر مشخص شده اند:

 

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

در ابتدا برای ارسال فرمان باید دو بایت که به عنوان Head نام گذاری شده اند ارسال شوند این مقادیر که در مبنای هگزا دسیمال می باشند برابر 0xAA , 0xBB هستند و پس از آن دو بایت که با عنوان Length مشخص شده اند طول داده ارسالی به ماژول را مشخص می نمایند. طول بسته ارسالی به ماژول از  Node ID آغاز می شود و تا XOR ادامه پیدا می کند. پس از طول بسته شماره آدرس مقصد یا Node ID را در دو بایت قرار می دهیم. پس از Node ID باید کد فرمان مورد نظر یا Function code را در دو بایت ارسال کنیم که لیست دستورات در ادامه توضیح داده می شوند. در ادامه با توجه به فرمان ارسالی اگر نیاز به داده ای بود پس از Function code قرار می دهیم و در انتها تمام بایت ها را از Node ID تا آخرین بایت Data با هم XOR می کنیم و در انتهای بسته ارسالی قرار می دهیم

 

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

مانند قالب فرمان، پاسخ دریافتی از ماژول با دو بایت Head با مقادیر   0xAA , 0xBB  آغاز می شود و پس از آن طول پاسخ نیز در دو بایت مشخص می شود . پس از طول بسته شماره آدرس مقصد یا Node ID در دو بایت می باشد پس از Node ID کد فرمان مورد نظر یا Function code در دو بایت توسط ماژول ارسال می شود .سپس یک بایت به عنوان وضعیت یا Status قرار داد که این بایت بسیار مهم می باشد و فقط در صورتی پاسخ دریافتی اعتبار دارد که این بایت صفر باشد در ادامه  اگر داده ای وجود داشت پس از Status  قرار می گیرد و در انتها تمام بایت ها  از Node ID تا آخرین بایت Data با هم XOR شده و در انتهای پاسخ ماژول قرار می گیرند.

شرح عملکرد فرمان ها:

:Initialize port 

با استفاده از این دستور می توان باودریت ماژول را تغییر داد که با توجه به کد دستور زیربایت باودریت مورد نظر را باید در بایت Baud_para قرار داد. فرمت قالب سریال بصورت 8 بیتی بهمراه یک Stop Bit و بدون Parity می باشد.

Initialize port :0x0101

"aa bb 06 00 00 01 01 "Baud_para" "xor Chk

مقدار باود ریت مورد نظر از جدول زیر قابل محاسبه است.

Set Led color:

از این دستور بیشتر برای تست ماژول استفاده می شود که با توجه به توضیحات زیرمی توان قالب مورد نظر را آماده و به ماژول ارسال کرد تا LED وضعیت مورد نظر ما را به خود بگیرد. که این کار را با قرار دادن کد مناسب در بخش Data قابل انجام است

Set Led color : 0x0107

aa bb 06 00 00 00 07 01 03 05 // set Red&green LED on

 

0 = LED_RED Off , LED_GREEN Off

1 = LED_RED On , LED_GREEN = Off

2 = LED_GREEN Off , LED_RED On

3 = LED_GREEN On , LED_RED On

Mifare Request:

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

Mifare Request , 0x0201

aa bb 06 00 00 00 01 02 req_code XOR

req_code=Request mode

req_code=0x52: request all Type A card In filed

req_code=0x26: request idle card

 

Mifare anticollision:

هر کارت مایفر دارای یک ID منحصر بفرد می باشد که طول آن 4 بایت است با استفاده از فرمان زیر می توان این ID را خواند .

Mifare anticollision , 0x0202

Function :card anticollision

Format : aa bb 05 00 00 00 02 02 00

Respond : aa bb 0a 00 52 51 02 02 00 46 ff a6 b8 a4

“46 ff a6 b8”is card serial number

 

Mifare Select:

برای انتخاب کارتی که در محدوده ماژول قرار دارد از فرمان زیر استفاده می کنیم که برای اینکار ابتدا باید ID کارت را از طریق Mifare anticollision بدست آورد و سپس آن را در قالب زیر مجددا به کارت ارسال نمود.

Mifare Select 0x0203 :

aa bb 09 00 00 00 03 02 xx xx xx xx XOR

Ninth to twelfth is card serial number 。

Sample : Host to Reader : aa bb 09 00 00 00 03 02 46 ff a6 b8 a6

Respond : aa bb 07 00 52 51 03 02 00 08 0a

Mifare Authentication2:

با استفاده از این دستور می توان به درون یک بلوک وارد شد که ابتدا باید کارت را انتخاب کرده باشیم و پس از آن با قرار دادن رمز بلوک مورد نظر در قالب زیر وارد بلوک گردیم. رمز پیش فرض بلوک ها برابر FF FF FF FF FF FF می باشد.

Mifare Authentication2 0x0207:

aa bb xx 00 00 00 07 02 Auth_mode Block xx xx xx xx xx xx XOR

Auth_mode= Authenticate mode ,0x60: KEY A ,0x61: KEY B

Block = Authenticate block

Sample  :Host to Reader : aa bb 0d 00 00 00 07 02 60 04 ff ff ff ff ff ff 61

Authenticate Block 4 Key A = “FF FF FF FF FF FF”

Respond : aa bb 06 00 52 51 07 02 00 06

Mifare Read:

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

Mifare Read 0x0208

Function :Read block

Format  :aa bb 06 00 00 00 08 02 Block XOR

Block = which block want read

Sample  :Host to Reader : aa bb 06 00 00 00 08 02 04 0e

Respond :aa bb 16 00 52 51 08 02 00 00 00 00 00 00 00 00 00 00 00 00 00 12 34 56 78 01

Tenth to sixteenth byte is Data

 

Mifare Write   :

پس از وارد شدن به بلوک مورد نظر می توانید داده ای را روی آن بنویسید که برای اینکار از دستور زیر استفاده می شود.

Mifare Write   0x0209

aa bb 16 00 00 00 09 02 Block

D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 Da Db Dc Dd De Df XOR

Sample  : write data to Block4

Host to Reader

aa bb 16 00 00 00 09 02 04 00 00 00 00 00 00 00 00 00 00 00 00 12 34 78 56 07

Respond: aa bb 06 00 52 51 09 02 00 08

برای برقراری ارتباط با مایفر و خواندن Card Serial Number می بایست پروسه زیر را انجام داد:

  • استفاده از فرمان Mifare Request
  • بررسی مقدار بازگشتی که شامل Status می باشد.در صورت صفر بودن به این معنی است که کارت مایفری در محدوده ریدر موجود است.
  • بعد از تشخیص کارت مایفر در محدوده با استفاده ازفرمان   Mifare anticollision شماره سریال کارت در پاسخ این تابع بدست می آید.(در صورت عدم پاسخ گویی صحیح مقدار غیر صفر بازگردانده خواهد شد.)

 دیتاشیت

برای دیدن آموزش جلسه دوم کلیک کنید.

به سبد خرید اضافه شد.
سبد خرید
Item removed. بازگرداندن