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

نگاهی به داخل: RFID و سایر برچسب ها. ساخت قفل RFID با استفاده از آردوینو

خواننده 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) و مدار -

  • برنامه نویسی میکروکنترلر
  • همانطور که می دانید بسیاری از سیستم های دسترسی از کارت های 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 وجود دارد.

    تگ 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
    • مسابقه 7400
    • مهندسی بیش از حد
    • منطق
    • همه جا چنگک می زند
    افزودن برچسب

    امروز در مورد ماژول 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 با آردوینو برای ایجاد یک سیستم قفل ساده است. به زبان ساده- قفل RFID

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

    این آموزش از یک تگ RFID با آردوینو استفاده می کند. دستگاه شناسه منحصر به فرد (UID) هر تگ RFID را که در کنار خواننده قرار می دهیم می خواند و آن را روی صفحه نمایش OLED نمایش می دهد. اگر UID تگ باشد مقدار از پیش تعریف شدهکه در حافظه آردوینو ذخیره می شود، سپس پیغام Unlocked را روی نمایشگر خواهیم دید. اگر شناسه منحصربه‌فرد با مقدار از پیش تعریف‌شده برابر نباشد، پیام "قفل نشده" ظاهر نمی‌شود - عکس زیر را ببینید.

    قلعه بسته است

    قفل باز است

    قطعات مورد نیاز برای ایجاد این پروژه:

    • خواننده RFID RC522
    • صفحه نمایش OLED
    • تخته نان
    • سیم ها

    توضیحات بیشتر:

    • باتری (پاوربانک)

    هزینه کل اجزای پروژه تقریباً 15 دلار بود.

    مرحله 2: RFID Reader RC522

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

    همین تراشه در برچسب‌های فوب کلید RFID نیز وجود دارد.

    هر تگ RFID دارای یک شماره منحصر به فرد است که آن را شناسایی می کند. این UID است که بر روی صفحه نمایش OLED نشان داده شده است. به جز این UID، هر تگ می تواند داده ها را ذخیره کند. این نوع کارت می تواند تا 1000 داده را ذخیره کند. چشمگیر است، اینطور نیست؟ این ویژگی امروز مورد استفاده قرار نخواهد گرفت. امروزه تنها چیزی که مورد توجه است شناسایی یک کارت خاص توسط UID آن است. هزینه ریدر RFID و این دو کارت RFID حدود 4 دلار است.

    مرحله 3: صفحه نمایش OLED

    این درس از یک نمایشگر 0.96 اینچی 128x64 I2C OLED استفاده می کند.

    این خیلی نمایشگر خوببرای استفاده با آردوینو این صفحه نمایش OLEDو این بدان معنی است که او دارد مصرف برق کم. مصرف برق این نمایشگر حدود 10-20 میلی آمپر است و بستگی به تعداد پیکسل دارد.

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

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

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

    مرحله 4: اتصال تمام قطعات

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