আমি কীভাবে একটি আরডুইনো দিয়ে আরএফআইডি-আরসি 522 ব্যবহার করব?


11

আমি আমার স্থানীয় মেকারস্পেসের জন্য একটি প্রকল্পে কাজ করছি, আমাদের সীমিত বাজেট রয়েছে তাই আমি ইবেতে আরএফআইডি-আরসি 522 এল'চ্যাপ'ও আরএফআইডি / এনএফসি পাঠক ব্যবহার করার আশা করছিলাম, আমি এসপিআই ভিত্তিক কয়েকটি বোর্ড পেয়েছি, তারা কাজ করে, তবে তারা কাজ করে তাদের জন্য কোড উদাহরণগুলি সীমাবদ্ধ।

আমি বেশ কয়েকটি পৃথক গ্রন্থাগার পেয়েছি এবং এটিতে স্থিতি পেয়েছি: https://github.com/ljos/MFRC522

সমস্যাটি হ'ল অনলাইনে উপলভ্য সমস্ত কোডই কিছু চীনা ছেলেরা পাইথন কোড থেকে উদ্ভূত হয়েছে যা লোকেরা অনুবাদ করেছে এবং একটি আরডিনো লাইব্রেরিতে হ্যাক করেছে।

কোডটি কাজ করে তবে মিফারে কার্ডগুলি বোঝায় 4, 7 বা 10 বাইট ইউআইডি রয়েছে এবং উদাহরণ / গ্রন্থাগারটি 5 বাইট সিরিয়াল নম্বর ফিরিয়ে দিচ্ছে।

কোনও ডকুমেন্টেশন নেই এবং এনএক্সপি ডেটাশিটটি বোধগম্য নয় ... অতিরিক্তভাবে এটি বেশিরভাগ কার্ডের সাথে কাজ করে বলে মনে হচ্ছে, তবে এটি মাস্টারকার্ড পেওয়েভ কার্ডগুলির সাথে কাজ করে না যা আইএসও 14443 স্ট্যান্ডার্ডের সাথে খাপ খায়। এমএফআরসি 500 এর উপর ভিত্তি করে আরও ব্যয়বহুল আরডিএম 880 পাঠক সূক্ষ্মভাবে কাজ করে এবং একটি দুর্দান্ত গ্রন্থাগার রয়েছে তবে ব্যয়টি বাস্তবায়নটিকে অসম্ভব করে তোলে।

সুতরাং, কেউ কি আমাকে এই এনএক্সপি এমএফআরসি 522 ভিত্তিক ইউনিট সমস্ত আইএসও 14443 কার্ড থেকে ইউআইডি পড়তে সহায়তা করতে পারেন?

#include <SPI.h>
#include <MFRC522.h>

#define RFID_SS  10
#define RFID_RST 5

MFRC522 rfid( RFID_SS, RFID_RST );

void setup() {
  SPI.begin();
  Serial.begin(115200);
  rfid.begin();
}

void loop() {
  byte data[MAX_LEN];
  byte uid[5];

  if ( rfid.requestTag( MF1_REQIDL, data ) == MI_OK ) {
    if ( rfid.antiCollision( data ) == MI_OK ) {
      memcpy( uid, data, 5 );
      for ( int i = 0; i < 5; i++ ) {
        Serial.print( uid[i], HEX );
        Serial.print( ' ' );
      }
      Serial.println();
    }
  }
}

এটি সম্ভবত সমস্যা নয়, তবে আপনার uidঅ্যারের দৈর্ঘ্য ৫. আপনি যেহেতু 10 বাইট ফলাফল চান তাই আপনি কি আরও বড় অ্যারে ব্যবহার করার চেষ্টা করেছিলেন?
asheeshr

হ্যাঁ, আমি করেছি কিন্তু এটি কোনও উপকারে আসে না, আসলে অন্য পাঠক মনে হয় কেবল 4 বাইট সংখ্যা ফিরে আসে এবং শালীন উদাহরণ কোড সহ এটি একটি আলাদা মেক, খুব বিভ্রান্ত।
অজান্তে রোজ 17'11

উত্তর:


6

দুঃখিত, তবে আমি অবশ্যই আপনার 'এনএক্সপি ডেটাশিটটি বোধগম্য নয়' এর সাথে একমত নই । এমএফআরসি 522 ডেটাশিটের প্রথম পৃষ্ঠা থেকে:

'মন্তব্য: এমএফআরসি 522, এমএফআরসি 522, ম্যফার মিনি, এমএফএআর 1 কে, মফার 4 কে, এমএফএআরআর আলট্রালাইট, এমএফএআরই ডিজায়ার ইভি 1 এবং এমএফএআরপি প্লাস আরএফ সনাক্তকরণ প্রোটোকলগুলির সমস্ত রূপগুলিকে সমর্থন করে'

এখানে বলা হয়েছে যে এমএফআরসি 522 আইএসও / আইসিসি 14443 এর কেবল একটি অংশকে কভার করেছে following নীচে এনএক্সপি আরসি 522 নিখোঁজ রয়েছে:

* এমএফএআরএইচআরএভিআর ইভি 1 (এএসএস এনক্রিপশন অন্তর্ভুক্ত)

এমএফএসআরএফায়ার ইভি 2 (এমআইস্মার্ট অ্যাপ্লিকেশন, লেনদেন ম্যাক, আনলিমিটেড অ্যাপ্লিকেশনগুলি এমএফআরই প্লাস ড্রপ-ইন প্রতিস্থাপনের সাথে সার্টিফাইড সুরক্ষা স্তর (এইএস 128 ভিত্তিক) সহ এমএফআরই ক্লাসিকের প্রতিস্থাপন)

এমএফএআরএএএম স্যাম এভি 2 (সুরক্ষিত অ্যাক্সেস মডিউল যা ক্রিপ্টোগ্রাফিক কী এবং ক্রিপ্টোগ্রাফিক ফাংশনগুলির সুরক্ষিত স্টোরেজ সরবরাহ করে) *

এগুলি সম্ভবত ব্যাঙ্ক কার্ডে ব্যবহৃত হয়। আবার, এমএফআরসি 500 ডেটাশিটের প্রথম পৃষ্ঠা থেকে:

'আইএসও / আইসিসি 14443 এ এর ​​সমস্ত প্রোটোকল স্তর সমর্থিত।'

বিভিন্ন ধরণের জন্য কতটি আইডি বাইট রয়েছে তা জানতে আপনাকে বিভিন্ন এমএফএআরই / আইএসও / আইসিসি 14443 স্পেসের মাধ্যমে লাঙল করতে হবে (আমি সন্দেহ করি যে ডাইভারেন্ট টাইপগুলি ভিন্ন পরিমাণে বাইট ফেরত দেয়)।

সুতরাং, মূলত, আপনি বিভ্রান্ত। ব্যয়বহুল এমএফআরসি 500-ভিত্তিক পাঠকের জন্য বসন্ত। আমি ধরে নিয়েছি যে উচ্চ ব্যয়ের সাথে আপনি একটি উচ্চ-শ্রেণীর এপিআই, ডকুমেন্টেশন এবং উদাহরণ বা এমনকি (হাঁফ!) প্রযুক্তি সমর্থন পাবেন।

চিয়ার্স


1
আপনি ঠিক বলেছেন যে এমএফআরসি 522 এটি সমর্থন করে না, তবে আপনি ভুল যে এমএফআরসি 500 হ'ল সমাধান, সেই ডিভাইসটি কেবল এমএফআরই ক্লাসিক, এমএফএআরই 1 কে (এস 50) এবং এমএফএআর 4 কে (এস 70) কার্ড সমর্থন করে।
অজান্তে রোজ

1
এছাড়াও এমএফআরসি 522 মডিউলটি <£ 3 এবং এমএফআরসি 500 হ'ল 30 ডলার।
অজান্তে রোজ

1

MFRC522 :: অনুরোধট্যাগ (2 য় প্যারামিটারের প্রথম দুটি বাইটে ( উপরে আপনার উদাহরণে ডেটা )) কার্ডের ধরণটি প্রদান করে । এটি কোন ধরণের কার্ড তা নির্ধারণ করতে আপনাকে এই মানটি দেখতে হবে। আইডির প্রয়োজনীয় এন বাইট প্রিন্ট করতে এই তথ্যটি ব্যবহার করুন ।

একটি চিম্টিতে, আপনি পুরো 16 বাইট (MAX_LEN) ফেলে দিতে পারেন এবং আপনার বিভিন্ন কার্ডের ধরণের সাহায্যে পরীক্ষা করতে পারেন যে কোন বাইটগুলি একটি ডিস্ট্রিমেন্টিক পদ্ধতিতে পরিবর্তিত হচ্ছে, যাতে আপনাকে আইডির সঠিক দৈর্ঘ্য নির্ধারণ করতে দেয়।

এবং যদি এটি আপনার কিছুটা সময় সাশ্রয় করে তবে আপনি যদি সেই লাইব্রেরির স্ব-পরীক্ষামূলক ক্রিয়াকলাপগুলি কল করেন - getFirmwareVersion () এবং ডিজিটালসেল্টেস্টপাস (); এটি আবার এমএফআরসি 522 কল করা প্রয়োজন :: আবার (শুরু করুন), অন্যথায় আরএফআইডি আইডিগুলি পড়া সম্ভব নয় (অবশ্যই লেখার সময়।)


1

সর্বাধিক জনপ্রিয় ব্যবহার করার চেষ্টা করুন।

https://github.com/miguelbalboa/rfid

এটি আমার জন্য কাজ করছে। এটি আপনার ইচ্ছা অনুযায়ী ইউআইডি ফিরিয়ে দেয়। ইউডের উদাহরণটি পাওয়া মাত্র অন্যান্য ফাংশনগুলি সরিয়ে ফেলুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.