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

ساخت قفل RFID با استفاده از آردوینو. قفل الکترونیکی RFID روی یک میکروکنترلر را خودتان انجام دهید

تگ EM4100 64 بیت داده را ذخیره می کند، به این معنی که طراحی باید شامل یک ثبات شیفت 64 بیتی باشد که از هشت رجیستر 8 بیتی 74HC165 تشکیل شده است. رجیستر پس از هر 64 شیفت برای بازنشانی داده ها و شروع مجدد دوباره تنظیم می شود. داده ها در ورودی های رجیستر به شرح زیر است:
  • الگوی زمان بندی: نه واحد
  • شناسه سازنده/نسخه: 2 بلوک 5 بیتی که 4 بیت آن داده و پنجمی برابری است.
  • شناسه منحصر به فرد: 8 بلوک 5 بیتی که 4 بیت آن داده و پنجمی برابری است.
  • Checksum: 4 بیت برابری، شمارش شده در هر ستون
  • بیت توقف: "0"

حتی برچسب های رمزگذاری شده نیز در برابر انواع حملات آسیب پذیر هستند. علاوه بر این، شبیه‌سازی برچسب‌ها در تلفن‌های هوشمند مجهز به NFC (که معمولاً در فرکانس 13.56 مگاهرتز کار می‌کنند) به طور فزاینده‌ای آسان‌تر می‌شود. فقط یک برنامه مدولاسیون فیلد را به درستی بنویسید و می توانید هر کاری که می خواهید انجام دهید.

به عنوان یک بهانه استاندارد، به شما یادآوری می کنم که نویسنده (و یک مترجم! - توجه داشته باشید ترجمه) هیچ مسئولیتی در قبال عواقب استفاده از اطلاعات این مقاله ندارد. خواننده باید مسئول تمام اعمال خود باشد.

قاب

گاهی خیلیخوش شانس. یک کیس زیبا همین الان که نمونه اولیه تمام شد و برد مدار چاپی سفارش داده شد، به کار می آید. و در این زمان بود که فلمینگ مونتاژ را به پایان رساند و دستگاه برش لیزری OSAA PhotonSaw را راه اندازی کرد. پس از یک سال کار بر روی پروژه، لیزر آماده برش قطعات اولیه خود است. Flemming و Roon تنظیمات نهایی را انجام می دهند و درب آلومینیومی کابینت لیزر را تعویض می کنند. می توانید تصور کنید که چقدر همه ما از دیدن کارکرد این چیز هیجان زده شدیم.

با کارکرد دستگاه، ما توانستیم پروژه خود را در آن آزمایش کنیم زندگی واقعی. محفظه تگ RFID ما از پلکسی گلاس 2 میلی متری ساخته شده بود. این بدنه اولین جسم ساخته شده روی PhotonSaw است، بله!

ایده قرار دادن سیم پیچ در قسمت بیرونی بدن به وجود آمد. در ابتدا تصمیم گرفته شد که از نیمی از ارتفاع بدنه استفاده شود، اما این در عمل جواب نداد (بنابراین از سوراخ های اضافی در اضلاع بلند استفاده نمی شود). سیم پیچ کاملاً در اطراف محیط کل بدنه قرار می گیرد، اگرچه من شک داشتم که سیم پیچ مستطیلی (105x55 میلی متر) برای ارتباطات الکترومغناطیسی معمولی بیش از حد بزرگ باشد.

سیم پیچ آزمایشی بدون هیچ گونه محاسباتی با سیم 0.4 میلی متری در 66 دور پیچ شد. و، بدیهی است، ما دوباره خوش شانس بودیم، زیرا سیم پیچ دقیقا همانطور که باید، با اندوکتانس 645 μH، با یک برچسب متصل فرکانس رزونانس 125.2 کیلوهرتز تبدیل شد. آزمایش روی درب خوان نشان داد که نمونه اولیه با این سیم پیچ به خوبی کار می کند.

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

دستگاه PhotonSaw هنوز در شرایط عالی نیست: حکاکی روی پوشش بالاییبه طور قابل توجهی به سمت پایین حرکت کرد. قبل از تولید باید نهایی شود. آخرین نسخهمسکن ها مسیرهای منحنی نیز در معرض خطای محاسباتی در نرم افزار قرار گرفتند زیرا پرتو به آن بازنگشت محل شروعپس از عبور از یک مسیر بسته اما به هر حال، منحنی ها واقعا صاف به نظر می رسند.

مونتاژ PCB

تابلوی سفارش داده شده رسید:

مونتاژ خیلی سخت نبود. خمیر لحیم کاری بر روی تخته شابلون شده بود، تمام قطعات قرار داده شد و سپس در یک کوره خانگی لحیم شدند.

از طریق خازن جداسازی (47 pF دارای مقاومت تقریباً 27 کیلو اهم در فرکانس 125 کیلوهرتز) و دیودهای محافظ، جریان به ریل های قدرت می رسد. انرژی حاصل از سیم پیچ برای حفظ ولتاژ تغذیه حدود 1 ولت کافی است. جریان می تواند به 250-500 μA برسد. با کمال تعجب، به نظر می رسد تراشه های 74HC با این منبع کار می کنند. متأسفانه، تحت این نوع تنش، چیزهای بسیار عجیبی رخ می دهد. تراشه‌های 74HC دارای مدار ریست داخلی هستند و باید از کارکرد آن اطمینان حاصل کنید. لطفاً توجه داشته باشید که غیرفعال کردن دیودهای حفاظتی کمکی نمی کند. در ورودی ریز مدارها دیودهای محافظ داخلی وجود دارد که در این حالت باز شده و همان کار را انجام می دهند.

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

علائم زیر مشاهده شد: برچسب برای مدتی کار می کند، در حالی که داده های صحیح را ارسال می کند. اگر سیم پیچ از خواننده خارج شود و سپس برگردانده شود، می توانید روی خاموش شدن برچسب شرط بندی کنید. گاهی اوقات کار می کند، گاهی اوقات نه. غیرفعال کردن PLL وضعیت را بدتر می کند. مصرف انرژی کم به این معنی است که خواننده گهگاه داده هایی را از برچسبی که خاموش است دریافت می کند. این همان چیزی است که "سیستم کارآمد انرژی" به معنای آن است.

دو راه حل وجود دارد: 1) کاهش خازن در مدار بازیابی سیگنال ساعتتا 15 pF و 2) یک مقاومت 22-100 کیلو اهم را بین منبع تغذیه و زمین وصل کنید تا انرژی اضافی تخلیه شود. روش دوم باعث افزایش نشتی در حین کار می شود و در کاهش ظرفیت خازن واقعاً ضروری نیست. با این حال، به عنوان یک گزینه ارائه شده است و هنوز هم بهتر از وضعیت نامشخص تراشه ها است.

مدولاسیون جریان یا ولتاژ

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

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

تصمیم گرفته شد که مدولاتور از حالت مدولاسیون ولتاژ به حالت مدولاسیون جریان تبدیل شود. برای حالت اول، مقاومت در مدار تخلیه بود و اکنون بین منبع و زمین وصل شده است. ولتاژ منبع دروازه در این مقاومت تا زمانی که مقداری درست بالای آستانه باز شدن ترانزیستور (0.9-1.1 V) باقی بماند، کاهش می یابد، که ترانزیستور را به حالت خطی. اکنون جریان عبوری از ترانزیستور بدون توجه به ولتاژ تخلیه پایدار خواهد بود.

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

نسخه 1 تمام شد

می توانید تغییرات ایجاد شده را مشاهده کنید تخته مدار چاپی. من یک خازن SMD 15 pF نداشتم، مجبور شدم یک خازن معمولی را با پایه لحیم کنم. مدولاتور مقاومت های اضافی را در منابع ترانزیستور به دست آورده است. در کل برای نسخه اول قابل قبول است.

(تصاویر قابل کلیک هستند)





نمایش ویدیویی

نتیجه

ممکن است فکر کنید که این پروژه که بر اساس منطق 7400 ساخته شده است، می تواند به عنوان طراحی مدار یکپارچهسازی با سیستمعامل طبقه بندی شود، اما این کاملاً درست نیست. اولاً، خانواده مدرن 74HC چندان قدیمی نیستند. ثانیا، مدارهای کم مصرف همیشه مرتبط هستند. ثالثا تک چیپس عناصر منطقی(مانند ماشه اشمیت استفاده شده) اغلب در تحولات مدرن. اغلب فراموش می شود که توسعه فناوری برای خانواده های قدیمی تر تراشه متوقف نمی شود. آنها به سادگی در برابر پس زمینه تنوع کلی کمتر قابل توجه بودند.

توسعه بخش آنالوگ دشوارتر از قسمت دیجیتال بود. تا حدی به دلیل فقدان مشخصات، اما عمدتا به دلیل سازش های زیادی که برای برآوردن پارامترها و عوارض جانبی پیش بینی نشده لازم است. طرح های دیجیتال گزینه های نسبتا کمی دارند، در حالی که طرح های آنالوگ معمولاً به تعادل بین معیارهای مختلف (و اغلب متضاد) نیاز دارند.

باید اعتراف کنم که تراشه های 74HC بسیار بسیار خوب ساخته شده اند. توسعه دهندگان می دانستند که چه کاری انجام می دهند و به موفقیت زیادی دست یافتند مصرف برق کم. در ابتدا شک داشتم که آیا تگ می تواند از توان غیرفعال کار کند یا خیر، اما پس از خواندن مشخصات، فقط موضوع طراحی مدار صحیح بود. اگرچه هنوز فرصت هایی برای بهینه سازی بخش های مختلف تگ وجود دارد.

حال بیایید ببینیم این پروژه در مسابقه 7400 2012 چگونه عمل خواهد کرد. درخواست شرکت در مسابقه در 31 نوامبر خاتمه می یابد. برای نویسنده آرزوی موفقیت داریم! - توجه داشته باشید ترجمه

برچسب ها: اضافه کردن برچسب

خواننده RFID - کارت و فوب کلید
روی میکروکنترلر ATtiny13

منبع: www.serasidis.gr
واسیلیس سراسیدیس

ترجمه: Vadim به سفارش RadioLotsman

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

هر سیستم شناسایی فرکانس رادیویی (RFID) از یک دستگاه خواندن (خواننده، خواننده یا بازپرس) و یک فرستنده (همچنین به عنوان برچسب RFID شناخته می شود، گاهی اوقات از اصطلاح برچسب RFID نیز استفاده می شود) تشکیل شده است. در این مقاله به یک دستگاه ساده برای خواندن کلیدهای RFID می پردازیم که از پروتکل EM4100 پشتیبانی می کنند و در فرکانس 125 کیلوهرتز کار می کنند. این نوعکلیدهای RFID می توانند به شکل جا کلیدی یا کارت اعتباری باشند (شکل زیر).

جزء اصلی خواننده میکروکنترلر است Atmel AVR ATtiny13 ، که شماره شناسایی منحصر به فرد 10 رقمی کلید را خوانده و به آن ارسال می کند رمزگذاری اسکیتوسط رابط سریال(UART) در 2400 bps به دستگاه میزبان. به عبارت دیگر، خواننده است ماژول جداگانه، به پردازنده یا میکروکنترلر اصلی سیستم متصل است (شکل 2).

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

بیایید ویژگی های اصلی مدار را در نظر بگیریم. میکروکنترلر از یک مدولاتور داخلی PWM برای تولید خروجی PB0 استفاده می کند پالس های مستطیلیبا فرکانس 125 کیلوهرتز اگر خروجی PB0 log باشد. 0 (لبه سقوط پالس)، ترانزیستور T1 در حالت بسته است و ولتاژ تغذیه +5 ولت از طریق مقاومت R1 به سیم پیچ L1 اعمال می شود. لبه بالارونده در خروجی PB0 (log 1) ترانزیستور T1 را باز می کند و ترمینال بالایی سیم پیچ به زمین متصل می شود. در این لحظه، سیم پیچ به موازات خازن C2 متصل می شود و یک ژنراتور LC (مدار نوسانی) را تشکیل می دهد. ترانزیستور 125000 بار در ثانیه سوئیچ می کند (125 کیلوهرتز). در نتیجه سیم پیچ یک سیگنال سینوسی با فرکانس 125 کیلوهرتز تولید می کند

ماژول خواننده یک میدان الکترومغناطیسی تولید می کند که انرژی آن برای تغذیه کلید RFID استفاده می شود. انتقال انرژی بین کلید RFID و خواننده بر اساس اصل عملکرد یک ترانسفورماتور معمولی است: سیم پیچ اولیه ترانسفورماتور یک emf القایی را در سایر سیم پیچ ها ایجاد می کند. برای مورد ما، سیم پیچ اولیه سیم پیچ خواننده است و سیم پیچ ثانویه سیم پیچ کلید RFID است. عناصر D1، C3 و R5 یک دمدولاتور سیگنال مدولاسیون دامنه را تشکیل می دهند.

تبادل داده بین کلید و خواننده

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

کلید RFID در مورد کلی 64 بیت داده را به ترتیب زیر ارسال می کند (شکل 6):

  1. 9 بیت اول (همیشه log. 1) بیت های شروع هستند که شروع تبادل داده را نشان می دهد.
  2. 4 بیت - کم اهمیت ترین بیت های کاربر شماره شناسایی(D00 - D03).
  3. 1 بیت (P0) - بیت برابری 4 بیت قبلی.
  4. 4 بیت مهم ترین بیت های شماره شناسایی کاربر (D04 - D07) هستند.
  5. 1 بیت (P1) - بیت برابری 4 بیت قبلی.
  6. 4 بیت - قسمت اول 32 بیت شماره سریالکلید RFID (D08 - D11).
  7. 1 بیت (P2) - بیت برابری 4 بیت قبلی.
  8. در مرحله بعد، گروه های 4 بیتی زیر از شماره سریال کلید ارسال می شوند که هر کدام یک بیت برابری دارند.
  9. سپس 4 بیت برابری ستون به ستون منتقل می شود. به عنوان مثال، بیت برابری PC0 برای بیت های D00، D04، D08، D12، D16، D20، D24، D28، D32 و D36.
  10. 1 بیت استاپ

داده ها (توالی 64 بیتی) توسط کلید RFID منتقل می شود.

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

طراحی کویل.

سلف فریم لس در خواننده با قطر 120 میلی متر با سیمی به قطر 0.5 میلی متر پیچیده شده و دارای 58 چرخش است، اما نویسنده توصیه می کند هنگام سیم پیچی 2 تا 3 دور دیگر اضافه کنید. به منظور بهبود کارایی سیم پیچ و افزایش فاصله خواندن داده های کلید RFID، لازم است مدار نوسانی را کالیبره کنید. اگر با اتصال یک اسیلوسکوپ به نقطه اتصال بین R1 و L1، پیک های تحریف شده را روی صفحه دستگاه مشاهده کردید (شکل 7)، این نشان دهنده نیاز به کالیبره کردن سیم پیچ L1 است.

اعوجاج سیگنال تولید شده توسط سیم پیچ L1 نیاز به کالیبراسیون را نشان می دهد.

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

  1. پروب های اسیلوسکوپ را به نقطه اتصال بین R1 و L1 وصل کنید و با افزایش یا کاهش تعداد دور سیم پیچ L1، اعوجاج سیگنال را از بین ببرید.
  2. اگر اسیلوسکوپ ندارید، کلید RFID را به آرامی به سمت سیم پیچ حرکت دهید تا کلید شناسایی شود، همانطور که با نشان داده شده است. سیگنال صوتی. اگر کلید از فاصله 2 سانتی متری تشخیص داده شود، باید چندین چرخش اضافه/حذف شود و سپس دوباره فاصله ای را که می توان کلید را با اطمینان خوانده شود بررسی کرد. با استفاده از کالیبراسیون، نویسنده طرح به خواندن قابل اعتماد کلید RFID از 3 سانتی متر دست یافت.

هنگام برنامه ریزی میکروکنترلر، لازم است پیکربندی فیوز بیت های زیر را تنظیم کنید: بایت کم 0x7A و بایت بالا 0x1F (میکروکترلر از یک ژنراتور ساعت داخلی 9.6 مگاهرتز، تقسیم کننده کار می کند. فرکانس ساعتاز کار افتاده در 8). کد برنامه 1024 بایت را در حافظه میکروکنترلر اشغال می کند - از کل ظرفیت حافظه موجود میکروکنترلر ATtiny13 استفاده می شود. بنابراین، در آینده، هنگام گسترش عملکرد خواننده، بهتر است از یک 8 پین دیگر استفاده کنید میکروکنترلر AVRبه عنوان مثال ATtiny85.

دانلودها:

کد منبع برنامه میکروکنترلر (AVRStudio 6)، سیستم عامل (.hex) و مدار -

از سریال مورد علاقه همه (حداقل من واقعاً امیدوارم) "منظره ای از درون" - بیش از شش ماه. اینطور نیست که چیزی برای نوشتن یا صحبت کردن وجود نداشته باشد، فقط من غرق چیزهایی شدم که موضوع یکی از مقالات بعدی من در Habré خواهد شد (امیدوارم حذف نشود، زیرا خواهد شد. به طور کامل به موضوعات فناوری اطلاعات اختصاص داده شود). در همین حال، ما یک دقیقه رایگان داریم، بیایید بفهمیم RFID (شناسایی فرکانس رادیویی) چیست - با برچسب های ساده تری به آنها ملحق خواهند شد - یا چگونه یک قدم کوچک در فناوری زندگی میلیون ها و حتی میلیاردها نفر را به طرز چشمگیری تغییر داده است. سراسر دنیا.

پیشگفتار

من می خواهم فورا رزرو کنم.

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

با این حال، زندگی تنظیمات خود را انجام داد و همه چیزهایی که من موفق به یافتن آن شدم: یک نمودار کلی از دستگاه نسل جدیدی از برچسب ها، عکس هایی از آنچه که مثلاً یک خاطره باید شبیه باشد - حتی نمی دانم چرا این کار را انجام دادم. به این توجه نکنید (شاید فرصتی برای بهبود وجود داشته باشد؟!) و رسوایی ها، دسیسه ها، افشاگری های پردازنده های A5 از چیپ ورک.

بخش تئوری

طبق سنت، اجازه دهید با بخشی از قسمت مقدماتی شروع کنیم.
RFID
تاریخچه فناوری تشخیص فرکانس رادیویی - شاید اینگونه باشد که می توانیم همه انواع قابل تصور و غیرقابل تصور RFID (شناسایی فرکانس رادیویی) را نام ببریم - به دهه 40 قرن بیستم بازمی گردد، زمانی که اتحاد جماهیر شوروی، اروپا و ایالات متحده به طور فعال همه را توسعه دادند. انواع تکنولوژی الکترونیکی.

در آن زمان، هر محصولی که با برق کار می‌کرد، هنوز تازگی داشت، بنابراین دانشمندان با یک میدان شخم‌نخورده روبرو بودند: هر جا که می‌زدید، مانند منطقه سیاه زمین، یک دسته بیل - یک درخت رشد می‌کرد. خودتان قضاوت کنید: ماکسول قوانین خود را تنها نیم قرن پیش (در سال 1884) پیشنهاد کرد. و نظریه های مبتنی بر این معادلات 2-3 دهه بعد (بین سال های 1900 تا 1914) شروع به ظهور کردند، از جمله نظریه امواج رادیویی (از کشف آنها تا مدل های مدولاسیون سیگنال و غیره). به علاوه، تدارک و اجرای جنگ جهانی دوم اثر خود را در این منطقه به جا گذاشت.

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

اولین نمایش چیزی نزدیک به RFID مدرن در سال 1973 در آزمایشگاه تحقیقاتی انجام شد لوس آلاموزاو یکی از اولین اختراعات این نوع سیستم شناسایی یک دهه بعد - در سال 1983 - دریافت شد. جزئیات بیشتر در مورد تاریخچه RFID را می توان در ویکی و برخی سایت های دیگر (و) یافت.

با توجه به باتری داخلی، برچسب های فعال به طور قابل توجهی وجود دارد شعاع بزرگترکار، ابعاد، "پر کردن" پیچیده تر (می توانید یک دماسنج، رطوبت سنج، یا حتی یک تراشه موقعیت یابی کامل GPS را به برچسب اضافه کنید) و قیمت مربوطه.

برچسب ها را می توان به روش های مختلفی طبقه بندی کرد: بر اساس فرکانس کاری (LF - فرکانس پایین ~ 130 کیلوهرتز، HF - فرکانس بالا ~ 14 مگاهرتز و UHF - فرکانس فوق العاده بالا ~ 900 مگاهرتز)، بر اساس نوع حافظه داخل برچسب (خواندن- فقط، یک بار بنویس و یک بار بنویس). به هر حال، NFC، که مورد علاقه و تبلیغ همه تولیدکنندگان است، به محدوده HF اشاره دارد که دارای تعدادی از مشکلات شناخته شده است.

برچسب های دیگر
متأسفانه، هزینه برچسب‌های RFID در مقایسه با سایر انواع شناسایی بسیار زیاد است، بنابراین، به عنوان مثال، ما هنوز هم مواد غذایی و سایر کالاهای سنتی را با استفاده از بارکد (یا بارکد)، گاهی اوقات کدهای QR، و محافظت به اصطلاح ضد برچسب های سرقت (یا EAS - نظارت بر مقاله الکترونیکی) محافظت در برابر سرقت را فراهم می کند.

سه نوع رایج (همه عکس ها از ویکی گرفته شده اند):

اکتشافات شگفت انگیز زیادی در پیش روی ما وجود دارد، گاهی اوقات کاملا غیر منتظره و البته پورنو سخت گیک در قالب HD!

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

بخش عملی

بنابراین، چه علائمی در دنیای اطراف ما یافت شد:


ستون سمت چپ از بالا به پایین: نقشه مترو مسکو، پاس Aeroexpress، یک کارت پلاستیکیبرای دسترسی به ساختمان، یک برچسب RFID ارائه شده توسط شرکت Perekrestok در نمایشگاه RosNanoForum-2011. ستون سمت راست از بالا به پایین: برچسب EAS فرکانس رادیویی، برچسب EAS آکوستومغناطیسی، بلیط جایزه حمل و نقل عمومی مسکو با نوار مغناطیسی، کارت بازدید کننده RFID RosNanoForum حتی شامل دو برچسب است.

اولین موردی که اعلام می شود کارت مترو مسکو است - بیایید شروع کنیم.

در اولین دایره. بلیط مترو مسکو
ابتدا کارت را در آب معمولی خیس کنید تا لایه‌های کاغذی که قلب این «علامت» را پنهان می‌کنند، بردارید.


نقشه خالی متروی مسکو

حال بیایید با بزرگنمایی کم با استفاده از میکروسکوپ نوری به دقت به آن نگاه کنیم:


عکس های میکرو از یک تراشه کارت برای دسترسی به مترو مسکو

تراشه کاملاً محکم ثابت شده است و می خواهم اشاره کنم که هر 4 "پا" به آنتن وصل شده است - این برای مقایسه با یک برچسب RFID دیگر برای ما مفید خواهد بود. با تا زدن پایه پلاستیکی در جایی که تراشه قرار دارد و کمی تکان دادن آن از این طرف به سمت دیگر، به راحتی آزاد می شود. در نتیجه، یک تراشه به اندازه یک چشم سوزنی داریم:


میکروگراف های نوری تراشه بلافاصله پس از جدا شدن از آنتن

خوب، بیایید با این ترفند بازی کنیم:


تغییر موقعیت فوکوس از لایه پایین به لایه بالا

حالا برای کمی دسیسه.

شایعاتی وجود دارد که میکرون در حال توسعه و تولید تراشه برای متروی مسکو است قدرت خودبا استفاده از فناوری مشابه Mifare (حداقل، اتصال به آنتن متفاوت است - پاها شکل متفاوتی دارند). در 22 آگوست، بدون اعلان جنگ و خیانتکارانه درخواستی برای Mikron ارسال کرد تا مشخص کند که آیا این تراشه اصولاً در جایی دیده می شود یا خیر، تا 3.11 هیچ پاسخی دریافت نکرد. یکی از روزنامه نگاران (یعنی الکساندر ارلیخ) در فروم IXBT نیز قصد داشت توضیح دهد. این اطلاعاتاز نمایندگان Mikron، اما در این لحظههمه چیز هنوز وجود دارد، یعنی نمایندگان رسمی Micron از پاسخ دادن به سؤال مستقیماً مطرح شده اجتناب می کنند.

بلیت مورد بحث در بالا ظاهراً در شرکت Mikron (Zelenograd) ساخته شده است (یا فقط روی آنتن نصب شده است) - پیوندهای زیر را ببینید - با استفاده از فناوری NXP، یک شرکت مشهور در محافل RFID، که به وضوح توسط 3 بزرگ به آن اشاره شده است. حروف و سال انتشار فناوری (و شاید سال تولید) روی لایه متالیزاسیون بالای تراشه. اگر فرض کنیم که سال 2009 به سال راه اندازی این فناوری اشاره دارد و مخفف CUL1V2 به عنوان Circuit ULtralite 1 Version 2 رمزگشایی شده است (این فرض با این خبر نیز تأیید می شود)، در وب سایت NXP می توانید شرح مفصلی از این موارد پیدا کنید. چیپس (دو خط آخر لیست)

به هر حال، سال گذشته سفری به کارخانه میکرون (گزارش های عکس و تصویری) برای شرکت کنندگان المپیاد اینترنتی در فناوری نانو ترتیب داده شد، بنابراین بی معنی است که بگوییم تجهیزات آنجا بیکار هستند، بلکه بیانیه "مردی با کت سفید" که برچسب ها را با استانداردهای 70 نانومتری تولید می کنند، من آن را زیر سوال می برم ...

با توجه به آمار جمع آوری شده پس از تجزیه و تحلیل تراشه های 109 بلیط مترو (نمونه نسبتاً نماینده)، طبق توزیع عادی، شانس یافتن یک بلیط "غیر معمول" ~ 109^1/2 یا حدود 10٪ است، اما آنها با ذوب می شوند. هر بلیط باز شده...

یک چشم دقیق قبلاً متوجه تفاوت اصلی بین دو تراشه Mifare - کتیبه Philips2001 شده است. در واقع، در سال 1998، فیلیپس سازنده میکروالکترونیک آمریکایی Mikron (با Zelenograd Mikron ما اشتباه نشود) خریداری کرد. و در سال 2006، NXP از فیلیپس جدا شد.

همچنین به راحتی می توان به علامت CLU1V1C توجه کرد که بر اساس موارد فوق به معنای Circuit ULTralite 1 Version 1C است. یعنی این تگ سلف Mifare است که توسط مترو مسکو استفاده می شود و بنابراین در پارامترهای اصلی خود با آن سازگار است. با این حال، مانند مورد قبلی، سال 2001 نشان دهنده سال توسعه و اجرای فناوری یا سال تولید است. عجیب است که Aeroexpress از برچسب های قدیمی استفاده می کند ...

در دایره سوم. یک کارت پلاستیکی
یک روز تصمیم گرفتم به یکی از دوستانم مقاله ها و عکس های حبرهبر را نشان دهم. سپس پرسید که آیا او چیزی دارد یا خیر کارت غیر ضروریبرای مقاله بعدی در مورد RFID. در آن زمان، او تازه برای تحصیل در EPFL نقل مکان کرده بود و کارتی به من داد که امکان دسترسی به یکی از ساختمان‌های دانشگاه دولتی مسکو را فراهم می‌کرد. بر این اساس، کارت بدون هیچ علامتی است و من حتی مطمئن نیستم که چیزی روی آن نوشته شده باشد، به جز کلید معمولی برای ورود به ساختمان.
کارت کاملاً پلاستیکی است ، بنابراین بلافاصله آن را به معنای واقعی کلمه چند ده دقیقه در استون قرار می دهیم:


گرفتن حمام استون

همه چیز در داخل بسیار استاندارد است - یک آنتن و یک تراشه، با این حال، معلوم شد که روی یک قطعه کوچک PCB است. متأسفانه، بدون هیچ علامت شناسایی - یک نام معمولی چینی. تنها چیزی که می توانید در مورد این تراشه و کارت بدانید این است که آنها به استاندارد TK41 ساخته شده اند. تعداد زیادی از این کارت ها در فروش مانند ali-baba و dealextreme وجود دارد.

در دایره چهارم. چهارراه
در مرحله بعد، من می خواهم به دو برچسب ارائه شده در نمایشگاه RosNanoForum 2011 نگاه کنم. اولین آنها با رقت انگیزی عالی ارائه شد و گفت که این تقریباً نوشدارویی برای دزدان و دزدی از مغازه است. و به طور کلی، این برچسب به فروشگاه ها اجازه می دهد تا به طور کامل به سلف سرویس روی بیاورند. متأسفانه معلوم شد که مدیر مؤثر در مسائل فیزیک مدرسه کمی بیش از کاملاً بی کفایت است. و پس از پیشنهاد آزمایش اثربخشی آن و برچسب با استفاده از آهنربای قوی متصل به تگ، به سرعت موضوع را خاموش کرد ...

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


برچسب جدید برای فروشگاه های زنجیره ای Perekrestok

ما مانند Mifare عمل می کنیم، آن را با دقت از پایه پلیمری و آنتن جدا کرده و روی میز میکروسکوپ نوری قرار می دهیم:


میکروعکس های نوری از یک برچسب در نظر گرفته شده برای استفاده در SmartShop

در یک تصادف خوش شانس (یا چسب ما را ناامید کرد، یا این مورد هدف بود)، علامت به سرعت از پایه جدا شد و سطح آن بدون هیچ اثری از چسب باقی ماند. توجه شما را به این نکته جلب می کنم که اگر Mifare هر 4 کنتاکت را به آنتن متصل کرده باشد (در هر انتها 2 کنتاکت) در اینجا می بینیم که دو کنتاکت به دو پد کوچک که با آنتن در تماس نیستند وصل می شوند.

بیایید کمی با تمرکز بازی کنیم بخش های مختلفبرچسب ها:


تغییر تمرکز...


حداکثر بزرگنمایی یک میکروسکوپ نوری

آخرین عکس در بالا سمت چپ ظاهرا یک ماژول حافظه EEPROM را نشان می دهد، زیرا حدود یک سوم از سطح تراشه را اشغال می کند و ساختار "معمولی" دارد.

امروز در مورد ماژول RFID RC522 بر اساس تراشه MFRC522 صحبت خواهم کرد. منبع تغذیه 3.3 ولت، محدوده تشخیص تا 6 سانتی متر. طراحی شده برای خواندن و سوابق RFIDبرچسب ها با فرکانس 13.56 مگاهرتز. فرکانس در در این موردبسیار مهم است، زیرا برچسب های RFID در سه محدوده فرکانس وجود دارند:


  • علامت های محدوده LF (125-134 کیلوهرتز)

  • برچسب های باند HF (13.56 مگاهرتز)

  • برچسب های باند UHF (860-960 مگاهرتز)

این ماژول خاص با برچسب های باند HF، به ویژه با پروتکل MIFARE کار می کند.

برای کار با ماژول می توانید استفاده کنید کتابخانه استاندارد RFID گنجانده شده است آردوینو IDEبا این حال، کتابخانه دیگری وجود دارد که به طور خاص برای این ماژول نوشته شده است - MFRC522 (1 مگابایت). هر دو کتابخانه بسیار راحت هستند، اما MFRC522 موارد بیشتری دارد توابع ویژه، امکان کاهش کد نهایی برنامه را تا حد امکان فراهم می کند.

ارتباط

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

MFRC522 آردوینو اونو آردوینو مگا آردوینو نانو نسخه 3

آردوینو لئوناردو/میکرو

آردوینو پرو میکرو
RST 9 5 D9 RESET/ICSP-5 RST
SDA (SS) 10 53 D10 10 10
MOSI 11 (ICSP-4) 51 D11 ICSP-4 16
میسو 12 (ICSP-1) 50 D12 ICSP-1 14
SCK 13 (ICSP-3) 52 D13 ICSP-3 15
3.3 ولت 3.3 ولت 3.3 ولت استابلایزر 3.3 ولت استابلایزر 3.3 ولت استابلایزر 3.3 ولت
GND GND GND GND GND GND

پین‌های کنترلی SS(SDA) و RST در طرح مشخص شده‌اند، بنابراین اگر برد شما با بردی که در مثال‌هایم استفاده می‌کنم متفاوت است و من از UNO R3 استفاده می‌کنم، پایه‌های جدول را در ابتدای طرح مشخص کنید. :


#define SS_PIN 10 #define RST_PIN 9

مثال شماره 1: خواندن شماره کارت

بیایید به یک مثال از کتابخانه RFID - cardRead نگاه کنیم. داده های کارت را نمایش نمی دهد، بلکه فقط تعداد آن را نشان می دهد که معمولاً برای بسیاری از کارها کافی است.


#include #include #define SS_PIN 10 #define RST_PIN 9 RFID rfid(SS_PIN, RST_PIN); // داده های مربوط به شماره کارت در 5 متغیر ذخیره می شود، ما آنها را به خاطر می آوریم تا بررسی کنیم که آیا قبلاً چنین کارتی را خوانده ایم int serNum0. int serNum1; int serNum2; int serNum3; int serNum4; void setup() ( Serial.begin(9600); SPI.begin(); rfid.init(); ) void loop() (if (rfid.isCard()) ( if (rfid.readCardSerial()) ( // اگر (rfid.serNum != serNum0 && rfid.serNum != serNum1 && rfid.serNum != serNum2 && rfid.serNum != serNum3 && rfid.serNum != serNum4) شماره کارت را با شماره کارت قبلی مقایسه کنید (/ * اگر کارت جدید است، */ Serial.println(" ") را بخوانید؛ Serial.println("کارت پیدا شد")؛ serNum0 = rfid.serNum؛ serNum1 = rfid.serNum؛ serNum2 = rfid.serNum؛ serNum3 = rfid .serNum؛ serNum4 = rfid.serNum؛ //خروجی شماره کارت Serial.println("شماره کارت:"); Serial.print("دسامبر:"); Serial.print(rfid.serNum,DEC); Serial.print( )", ")؛ سریال .print(rfid.serNum,DEC); Serial.print(")؛ Serial.print(rfid.serNum,DEC); Serial.print(")؛ Serial.print( rfid.serNum,DEC); Serial.print("); Serial.print(rfid.serNum,DEC); Serial.println(" "); Serial.print ("Hex:"); Serial.print(rfid .serNum,HEX); Serial .print(")؛ Serial.print(rfid.serNum,HEX); Serial.print(""); Serial.print(rfid.serNum,HEX); Serial.print(", "); Serial.print(rfid.serNum,HEX); Serial.print(", "); Serial.print(rfid.serNum,HEX); Serial.println(" "); ) else ( /* اگر این کارت قبلاً خوانده شده است، فقط نقطه */ Serial.print("."); ) ) ) rfid.halt(); )

طرح آپلود شده، LED پاور روی ماژول روشن می شود، اما ماژول به کارت پاسخ نمی دهد؟ نیازی به وحشت یا دویدن برای جستجوی نمونه های «درست» کار نیست. به احتمال زیاد، به سادگی هیچ تماسی روی یکی از پین ها وجود ندارد - سوراخ های روی تخته کمی بزرگتر از ضخامت جامپر هستند، بنابراین ارزش تلاش برای تنظیم مجدد آنها را دارد. آیا LED روی برد روشن نیست؟ سعی کنید جامپر منتهی به 3.3 ولت را تغییر دهید و مطمئن شوید که به 3.3 ولت روی برد متصل است؛ تامین برق 5 ولت می تواند به راحتی برد شما را از بین ببرد.

بیایید بگوییم همه چیز برای شما کار می کند. سپس، تگ های RFID در مانیتور را بخوانید درگاه سریالموارد زیر را خواهیم دید:


در اینجا من 3 تگ مختلف را خواندم و همانطور که می بینید او هر 3 را با موفقیت خواند.

مثال شماره 2: خواندن داده ها از کارت

بیایید یک گزینه پیچیده تر را در نظر بگیریم - نه تنها شماره کارت، بلکه تمام داده های موجود برای خواندن را نیز می خواند. این بار بیایید نمونه ای از کتابخانه MFRC522 - DumpInfo را مثال بزنیم.


#include #include #define RST_PIN 9 // #define SS_PIN 10 // MFRC522 mfrc522(SS_PIN, RST_PIN); // ایجاد نمونه MFRC522 void setup() ( Serial.begin(9600)؛ // راه اندازی مانیتور پورت سریال در حالی که (!Serial)؛ // هیچ کاری انجام ندهید تا زمانی که باز شود (برای آردوینو در تراشه ATMEGA32U4) SPI.begin( )؛ // راه‌اندازی گذرگاه SPI mfrc522.PCD_Init(); // راه‌اندازی ماژول RFID ShowReaderDetails(); // نمایش داده‌های مربوط به ماژول MFRC522 Serial.println(F("PICC را اسکن کنید تا UID، نوع و بلوک‌های داده را ببینید ..." )); ) void loop() (// به دنبال نقشه جدید if (! mfrc522.PICC_IsNewCardPresent()) ( return; ) // یکی از کارت ها را انتخاب کنید if (! mfrc522.PICC_ReadCardSerial()) ( return; ) // داده های خروجی از کارت mfrc522.PICC_DumpToSerial(&2.uid)5 ) ) void ShowReaderDetails() ( // دریافت شماره نسخه ماژول بایت v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg); Serial.print(F("MFRC522 Software Version: 0x")); Serial.print(v, HEX); if (v == 0x91) Serial.print(F(" = v1.0")); other if (v == 0x92) Serial.print(F(" = v2.0"))؛ در غیر اینصورت Serial.print( F (" (نامشخص)")); Serial.println("")؛ // وقتی 0x00 یا 0xFF دریافت می کنیم، انتقال داده خراب می شود اگر ((v == 0x00) || (v == 0xFF)) ( سریال println.

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

در نتیجه، با خواندن داده ها از کارت، نوع، شناسه و داده های آن را از 16 بخش حافظه دریافت می کنیم. لازم به ذکر است که کارت های استاندارد MIFARE 1K از 16 سکتور، هر سکتور از 4 بلوک و هر بلوک حاوی 16 بایت داده تشکیل شده است.


مثال شماره 3: نوشتن یک شناسه جدید روی کارت

در این مثال به تغییر شناسه کارت (UID) خواهیم پرداخت. مهم است بدانید که همه کارت ها از تغییر شناسه پشتیبانی نمی کنند. کارت ممکن است قابل بازنویسی باشد، اما این فقط به این معنی است که داده ها قابل بازنویسی هستند. متأسفانه کارت هایی که در دست داشتم از بازنویسی UID پشتیبانی نمی کردند، اما برای هر صورت کد طرح را در اینجا ارائه خواهم کرد.


#include #include /* یک UID جدید در اینجا تنظیم کنید */ #define NEW_UID (0xDE, 0xAD, 0xBE, 0xEF) #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::کلید MIFARE_Key; void setup() ( Serial.begin(9600); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); Serial.println(F("هشدار: این مثال UID کارت قابل تغییر UID شما را بازنویسی می کند، با احتیاط استفاده کنید!"))؛ برای (بایت i = 0؛ i< 6; i++) { key.keyByte[i] = 0xFF; } } void loop() { if (! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial()) { delay(50); return; } // Считываем текущий UID Serial.print(F("Card UID:")); for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); } Serial.println(); // Записываем новый UID byte newUid = NEW_UID; if (mfrc522.MIFARE_SetUid(newUid, (byte)4, true)) { Serial.println(F("Wrote new UID to card.")); } // Halt PICC and re-select it so DumpToSerial doesn"t get confused mfrc522.PICC_HaltA(); if (! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial()) { return; } // Считываем данные с карты Serial.println(F("New UID and contents:")); mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); delay(2000); }

مثال شماره 4: نوشتن اطلاعات روی کارت

در نهایت این چیزی است که ما برای مدت طولانی به آن رسیده ایم - ضبط داده ها روی کارت. "شیرین" ترین بخش کار با ماژول، توانایی کپی کردن یک کارت موجود، اضافه کردن یا تغییر چیزی است، این بسیار جالب تر از خواندن آن است.

بیایید یکی از بلوک های داده روی نقشه را تغییر دهیم:


#include #include #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::کلید MIFARE_Key; void setup() ( Serial.begin(9600); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); // کلید را آماده کنید // از کلید FFFFFFFFFFFFFFh استفاده کنید که استاندارد برای کارت های خالیبرای (بایت i = 0؛ i< 6; i++) { key.keyByte[i] = 0xFF; } Serial.println(F("Scan a MIFARE Classic PICC to demonstrate read and write.")); Serial.print(F("Using key (for A and B):")); dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE); Serial.println(); Serial.println(F("BEWARE: Data will be written to the PICC, in sector #1")); } void loop() { // Ждем новую карту if (! mfrc522.PICC_IsNewCardPresent()) return; // Выбираем одну из карт if (! mfrc522.PICC_ReadCardSerial()) return; // Показываем подробности карты Serial.print(F("Card UID:")); dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); Serial.println(); Serial.print(F("PICC type: ")); byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); Serial.println(mfrc522.PICC_GetTypeName(piccType)); // Проверяем совместимость if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("This sample only works with MIFARE Classic cards.")); return; } // В этом примере мы используем первый сектор данных карты, блок 4 byte sector = 1; byte blockAddr = 4; byte dataBlock = { // Данные, которые мы запишем на карту 0x01, 0x02, 0x03, 0x04, // 1, 2, 3, 4, 0x05, 0x06, 0x07, 0x08, // 5, 6, 7, 8, 0x08, 0x09, 0xff, 0x0b, // 9, 10, 255, 12, 0x0c, 0x0d, 0x0e, 0x0f // 13, 14, 15, 16 }; byte trailerBlock = 7; byte status; byte buffer; byte size = sizeof(buffer); // Аутентификация Serial.println(F("Authenticating using key A...")); status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { Serial.print(F("PCD_Authenticate() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); return; } // Показываем текущие данные сектора Serial.println(F("Current data in sector:")); mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector); Serial.println(); // Читаем данные из блока Serial.print(F("Reading data from block ")); Serial.print(blockAddr); Serial.println(F(" ...")); status = mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.print(F("Data in block ")); Serial.print(blockAddr); Serial.println(F(":")); dump_byte_array(buffer, 16); Serial.println(); Serial.println(); // Аутентификация Serial.println(F("Authenticating again using key B...")); status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, trailerBlock, &key, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { Serial.print(F("PCD_Authenticate() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); return; } // Записываем данные в блок Serial.print(F("Writing data into block ")); Serial.print(blockAddr); Serial.println(F(" ...")); dump_byte_array(dataBlock, 16); Serial.println(); status = mfrc522.MIFARE_Write(blockAddr, dataBlock, 16); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Write() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.println(); // Читаем данные снова, чтобы проверить, что запись прошла успешно Serial.print(F("Reading data from block ")); Serial.print(blockAddr); Serial.println(F(" ...")); status = mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.print(F("Data in block ")); Serial.print(blockAddr); Serial.println(F(":")); dump_byte_array(buffer, 16); Serial.println(); Serial.println(F("Checking result...")); byte count = 0; for (byte i = 0; i < 16; i++) { if (buffer[i] == dataBlock[i]) count++; } Serial.print(F("Number of bytes that match = ")); Serial.println(count); if (count == 16) { Serial.println(F("Success:-)")); } else { Serial.println(F("Failure, no match:-(")); Serial.println(F(" perhaps the write didn"t work properly...")); } Serial.println(); // Выводим данные Serial.println(F("Current data in sector:")); mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector); Serial.println(); mfrc522.PICC_HaltA(); mfrc522.PCD_StopCrypto1(); } void dump_byte_array(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], HEX); } }

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


اکنون، با آموختن خواندن و نوشتن بلوک‌های داده‌های کارت، می‌توانید با برچسب‌هایی که به احتمال زیاد دارید آزمایش کنید - مجوزها، کارت‌های سفر حمل و نقل عمومی. خواندن و نوشتن داده‌های این کارت‌ها را امتحان کنید، چند پاس تکراری هرگز ضرری ندارد، درست است؟)

این همه، مشترک شوید و نشریات را دنبال کنید. دفعه بعد به شما می گویم و نحوه استفاده از استاندارد را به شما نشان می دهم نمایش کاراکتر 1602 کاراکترهای سفارشی را اضافه می کند، که اساساً گرافیک را به نمایشگر اضافه می کند.

  • برنامه نویسی میکروکنترلر
  • همانطور که می دانید بسیاری از سیستم های دسترسی از کارت های RFID استاندارد EM-Marin با فرکانس 125 کیلوهرتز استفاده می کنند. تلفن داخلی خانه من نیز از این قاعده مستثنی نبود. یک مشکل - خوب است که یاد بگیرید چگونه چنین کارت هایی را کپی کنید، زیرا برچسب قیمت برای کپی کردن آنها دلگرم کننده نیست. البته، تعداد زیادی طرح کپی آنلاین وجود دارد (و چینی ها دستگاه های کپی خود را به قیمت سکه می فروشند - با این حال، آنها اغلب رمز عبور خود را هنگام کپی کردن روی دیسک ها قرار می دهند)، اما چرا دستگاه کپی خود را نمی سازید؟ این همان چیزی است که مقاله زیر در مورد آن است.

    ارزش آن را دارد که توسعه یک دستگاه کپی را با پیدا کردن اینکه چنین علائمی در چه مواردی می توان کپی کرد شروع کرد؟ پس از خواندن انجمن ها، می توانید متوجه شوید که رایج ترین جاهای خالی برای کپی T5577، T5557، EM4305 هستند.

    اکنون به یک نمودار نیاز داریم. بیایید قسمت آنالوگ چنین دستگاه کپی را از RECTO بگیریم و آن را به میکروکنترلر atmega8 متصل کنیم. بیایید یک مبدل سطح برای اتصال به پورت COM بر اساس max232 اضافه کنیم (کسانی که مایلند می توانند از ST232 یا چیز دیگری برای اتصال از طریق USB استفاده کنند، اما من یک پورت COM روی کامپیوترم و همچنین یک آداپتور USB-COM دارم، بنابراین این وظیفه من سرپا نشد).

    شما این نمودار را دریافت خواهید کرد:

    او چگونه است؟ دنبال کننده امیتر دوگانه، مدار نوسانی، آشکارساز و فیلترهای RC. با توجه به اینکه فیلترهای RC دارای ثابت زمانی متفاوتی هستند، با مقایسه سطوح ولتاژ بین مراحل، می توان تغییر سیگنال تگ RFID را جدا کرد. این کار توسط مقایسه کننده تعبیه شده در atmega8 انجام می شود. تولید سیگنال 125 کیلوهرتز توسط کنترلر PWM ساخته شده در atmega8 ارائه خواهد شد.

    ترکیب یک تگ RFID و یک خواننده یک ترانسفورماتور را تشکیل می دهد که در آن تگ سیم پیچ ثانویه است. اطلاعات توسط برچسب با تغییر بار سیم پیچ ثانویه منتقل می شود. در نتیجه جریان در سیم پیچ خواننده (سیم پیچ اولیه) تغییر می کند. قسمت آنالوگ فوق مدار وظیفه جداسازی این پالس های جریان را بر عهده دارد. مدار نوسانیباید پیکربندی شود حداکثر ولتاژ V نقطه کنترلبه عنوان مثال، پیچیدن/پیچ دادن پیچ های یک سیم پیچ. درست است ، آنها می گویند که بهتر است ولتاژ کمی کمتر از حداکثر باشد - پایدارتر کار می کند. من حدود 40 ولت در نقطه آزمایشم دارم.

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

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

    و خیلی ساده است. فرض کنید شماره کارت مطابق با nibbles دارای فرم است AB CD EF GH IJ. نقشه این را نشان می دهد:

    1) نه واحد در ابتدا؛
    2) Nibble A;
    3) برابری Nibble A (1 بیت).
    4) Nibble B;
    5) برابری Nibble B (1 بیت)؛

    16) Nibble I;
    17) برابری Nibble I (1 بیت)؛
    18) Nibble J;
    19) Nibble parity J (1 بیت).
    20) نوک توازن ستونی برای نیبل ها A B C D E F G H I J;
    21) بیت 0.

    همه 64 بیت را می خوانیم، رمزگشایی می کنیم و 40 بیت از کد کارت را دریافت می کنیم. منطقی است که اگر خودمان چنین کدی را صادر کنیم، سیم پیچ کارت متصل به ریدر را ببندیم، شبیه ساز کارت خواهیم داشت. اما اکنون ما به او علاقه ای نداریم.

    ما خواندن نقشه را یاد گرفته ایم، اما چگونه می توانیم داده ها را به نقشه منتقل کنیم؟ برای این کار کافیست فرکانس 125 کیلوهرتز را مطابق پروتکل ارتباطی با کارت روشن یا خاموش کنید. در طول "سکوت" خواننده، کارت با انرژی ذخیره شده تغذیه می شود.

    خالی های T5557/T5577 از نظر پروتکل های ضبط کاملاً با یکدیگر سازگار هستند، با این حال حداقل و حداقل کمی متفاوت هستند. حداکثر بارپالس ها (خوشبختانه زمان های T5557 با T5577 همپوشانی دارند). EM4305 پروتکل ضبط متفاوتی دارد.

    برای ضبط T5557 از کد BolshoyK استفاده کردم. جدول زیر پارامترهای سیگنال برای کلید T5557 را نشان می دهد.

    ضبط با سیگنال StartGape شروع می شود - شما باید سیگنال 125 کیلوهرتز را برای تقریبا 300 میکرو ثانیه خاموش کنید. این یک سیگنال به کارت است که داده ها اکنون شروع به انتقال به آن خواهند کرد. در مرحله بعد، باید اطلاعات را به قسمت خالی منتقل کنید. رمزگذاری داده های ارسالی همان منچستر است.

    قسمت های خالی T5557/T5577 و EM4305 چند منظوره هستند و می توانند انواع متفاوتمدولاسیون ها، رمزهای عبور پشتیبانی و موارد دیگر. هر دیسک روی برد دارای مجموعه ای از بلوک های 32 بیتی است. هدف این بلوک ها متفاوت است. برخی از آنها یک کد کلید صادر شده دارند (دو بلوک طول می کشد). در دیگران - پیکربندی. ثالثاً، شناسه سازنده. ما از عملکرد محدودی استفاده خواهیم کرد، بنابراین کسانی که می‌خواهند معنی همه این بیت‌ها را بفهمند، می‌توانند به اسناد خالی نگاه کنند (من آن را به آرشیو پیوست کرده‌ام).

    بلوک ها در دو صفحه (0 و 1) جمع آوری شده اند.

    در صفحه صفر یک بلوک پیکربندی با شاخص 0 وجود دارد. این چیزی است که ما تنظیم خواهیم کرد. برای T5557/T5577 ما بایت های پیکربندی زیر را خواهیم داشت: 0x00.0x14.0x80.0x40 مطابق با جدول مستندات (حالت های انتخاب شده توسط یک بیت را با رنگ قرمز مشخص کردم):

    بنابراین، ما انتخاب کردیم: فرکانس انتقال داده RF/64 (125 KHz/64)، رمزگذاری نوع منچستر، صدور بلوک تا دوم (در بلوک های 1 و 2 ما کد صادر شده توسط کارت را خواهیم داشت). قبل از نوشتن، یک آپکد (2 بیت اپکد) و یک بیت لچ (قفل بیت) باید ارسال شود. اپکدهای 10b و 11b قبل از نوشتن داده برای صفحات 0 و 1 قرار می گیرند (کمترین بیت شماره صفحه را مشخص می کند، بیت مهم ترین بیت کد نوشتن صفحه را مشخص می کند). برای opcode 10b (همه کارها با صفحه صفر انجام می شود) و 0b برای بیت لچ صادر می کنیم. پس از انتقال تمامی این داده ها، لازم است آدرس سه بیتی صفحه ای که قرار است نوشته شود، منتقل شود. تمام انتقال داده ها برای T5557/T5577 از مهم ترین بیت به کم اهمیت ترین بیت انجام می شود.

    با تنظیم کد کارت در بلوک های 1 و 2 و پیکربندی در بلوک 0، می توانید یک تگ RFID تکراری دریافت کنید. همانطور که می بینید، همه چیز ساده است.

    نوع بعدی خالی ها EM4305 است. پس مجبور شدم خودم با ضبط این بلانک بکنم. همچنین از بلوک های 32 بیتی تشکیل شده است، اما هدف آنها متفاوت است.

    رمزگذاری داده های ارسال شده به کارت بر اساس تفاوت در یک بازه زمانی است. اگر در بازه زمانی اختلاف بود صفر و اگر نبود یک است. کلمه پیکربندی در بایت 4 ذخیره می شود و برای خودم آن را به صورت زیر تعریف کردم: 0x5F,0x80,0x01,0x00 (رمزگذاری منچستر، RF/64، کلمه خروجی 6). در کلمات 5 و 6 کد کارت را می نویسم (همان 64 بیتی که کارت تولید می کند). EM4305 مستلزم این است که انتقال از کم‌ترین بیت به مهم‌ترین بیت انجام شود. کارت درک می کند که پس از دادن ترکیبی از تکانه ها، مبادله با آن آغاز می شود:

    1. ما زمین را در 48 میکرو ثانیه خاموش می کنیم.
    2. زمین را به مدت 96 میکروثانیه روشن می کنیم.
    3. زمین را با سرعت 320 میکرو ثانیه خاموش کنید.
    4. با سرعت 136 میکروثانیه زمین را روشن می کنیم.
    5. فیلد را تا دستور بعدی غیرفعال کنید.
    دستور نوشتن یک بلوک روی نقشه به صورت زیر ارسال می شود:
    1. دنباله ای از تکانه های بالا را ارسال می کنیم.
    2. ما 0b می فرستیم.
    3. ما CC0-CC1 و برابری P. را ارسال می کنیم (0101b برای ضبط، جداول زیر را ببینید).
    4. ما آدرس بلوک (جدول را ببینید)، دو صفر انتهایی و برابری آدرس را ارسال می کنیم.
    5. ما داده های بلوک (32 بیت) را منتقل می کنیم.

    فرمت فرمان


    کدهای دستوری

    قالب آدرس بلوک

    این تنظیمات EM4305 خالی و کد آن را تنظیم می کند.

    در واقع، یک دستگاه کپی ساده به هیچ چیز دیگری نیاز ندارد.

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

    و در اینجا ویدیویی از کار دستگاه کپی بر روی صفحه نمایش LPH9157-02 وجود دارد.

    بهترین مقالات در این زمینه