সুচিপত্র:
ভিডিও: AVR/Arduino RFID রিডার UART কোড সহ C: 4 টি ধাপে
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:04
আরএফআইডি হল ক্রেজ, সর্বত্র পাওয়া যায় - ইনভেন্টরি সিস্টেম থেকে ব্যাজ আইডি সিস্টেম পর্যন্ত। আপনি যদি কখনও কোন ডিপার্টমেন্টাল স্টোরে গিয়ে থাকেন এবং প্রবেশদ্বার/প্রস্থান পয়েন্টে সেই মেটাল-ডিটেক্টর-দেখানো জিনিসগুলির মধ্য দিয়ে হেঁটেছেন, তাহলে আপনি আরএফআইডি দেখেছেন। আরএফআইডি স্থাপনের জন্য ভাল তথ্য খুঁজে পাওয়ার জন্য বেশ কয়েকটি জায়গা রয়েছে এবং এই নির্দেশযোগ্য একটি AVR- এ প্যারালাক্স আরএফআইডি রিডার (সিরিয়াল টিটিএল) ইনস্টল করার উপর দৃষ্টি নিবদ্ধ করে, সিরিয়াল ইনপুট পড়ার জন্য প্রয়োজনীয় সি কোডের উপর জোর দিয়ে। কোডটি সি তে আছে এবং কোন বাহ্যিক লাইব্রেরি ব্যবহার করে না। আসলে, এটি আরএফআইডি রিডারের বড রেটের সাথে সিঙ্ক্রোনাইজ করে এবং এটির সাথে সংযুক্ত ডিজিটাল পিন পড়ে ইউআরএটি ব্যবহার না করে সরাসরি 2400 বড কথা বলে। উত্তেজিত? আমিও.
ধাপ 1: পণ্য পান
আপনার নিম্নলিখিত অংশগুলির তালিকা প্রয়োজন হবে:
- RFID রিডার (লম্বা #28140 $ 39.99)
- RFID ট্যাগ (লম্বা #32397 $ 0.99)
- AVR বা Arduino ক্লোন (যদি আপনি একটি স্টক AVR ব্যবহার করেন, আপনার একটি max232, 5 x 1uF ক্যাপাসিটার, এবং একটি DE9 সংযোগকারীও প্রয়োজন হবে)
- Solderless breadboard
চ্ছিক
- 4 পজিশন হেডার
- তারের
(এবং ট্যাগ তথ্যের যোগাযোগের জন্য max232 ইত্যাদি) আপনি RS232 এর মাধ্যমে ট্যাগ ডেটা পাঠানোর পরিবর্তে আপনার প্রিয় LCD স্ক্রিনটি সংযুক্ত করতে পারেন।
ধাপ 2: অংশগুলি সংযুক্ত করুন
জিনিসগুলির হার্ডওয়্যার দিকটি বেশ সহজ। আমার আরএফআইডি রিডারকে সরাসরি আমার রুটিবোর্ডে onুকিয়ে দেওয়ার পরিবর্তে আমি দ্রুত একটি ক্যাবল বানানোর সিদ্ধান্ত নিয়েছি যাতে আমি আরএফআইডি রিডারকে একটু ভালোভাবে সরাতে পারি। এর জন্য, আমি শুধু একটি মহিলা সকেট হেডার স্ট্রিপ থেকে 4 টি অবস্থান কেটে ফেলেছিলাম এবং তিনটি তারে সোল্ডার করেছি। বৈদ্যুতিক টেপ ঘেটো সংযোগকারী সম্পন্ন করেছে। আরএফআইডি রিডারের 4 টি সংযোগ রয়েছে:
- Vcc
- সক্ষম করুন
- আউট
- Gnd
আপনি সম্ভবত এটি অনুমান করেছেন, Vcc +5V এবং Gnd কে মাটিতে সংযুক্ত করুন। যেহেতু আরএফআইডি রিডার এত বেশি বিদ্যুৎ ব্যবহার করে, আপনি বিভিন্ন পয়েন্টে এটি বন্ধ এবং চালু করতে সক্ষম পিনটি টিপতে পারেন। আমি কেবল এটি চালু রাখা বেছে নিয়েছি। কারণ এটি উল্টানো, আপনি এটিকে সক্রিয় করতে কম টানবেন। বিকল্পভাবে, আপনি এটি মাটিতে সংযুক্ত করতে পারেন। আমি PIND3 এর সাথে সংযুক্ত করেছি যদি আমি সিদ্ধান্ত নিই আমাকে সক্রিয়/নিষ্ক্রিয় করার বিকল্পগুলি দিতে। আউট পিন যেখানে পাঠক একটি ট্যাগ পড়ার পর তার সিরিয়াল ডেটা পাঠায়। আমি এটাকে PIND2 এর সাথে সংযুক্ত করেছি। উল্লেখ্য, লম্বা মহাবিশ্বে লাল মানে গো। অর্থাৎ, সবুজ এলইডি মানে ইউনিট নিষ্ক্রিয় এবং নিষ্ক্রিয়, আর লাল এলইডি মানে ইউনিট সক্রিয়। * কুঁচকে* ফিগার যান।
ধাপ 3: কোড লিখুন
আরএফআইডি রিডার থেকে তথ্য পড়তে, আপনাকে জানতে হবে কখন একটি ট্যাগ জমা দেওয়া হয়েছে, সিরিয়াল পোর্ট থেকে ডেটা টানুন, তারপর এটি কোথাও পাঠান।
RFID রিডার ডেটা ফরম্যাট
প্যারালাক্স আরএফআইডি রিডার একটি নির্দিষ্ট, হিমবাহের গতিতে 2400 বাউডের ডেটা পাঠায়। একটি RFID ট্যাগ হল 10 বাইট। ত্রুটি সনাক্তকরণ/সংশোধন করার অনুমতি দেওয়ার জন্য, যেহেতু পাঠককে এলোমেলো শব্দ থেকে বন্ধ করা যেতে পারে, তাই 10-বাইট আরএফআইডি একটি স্টার্ট এবং স্টপ সেন্টিনেল দ্বারা আবদ্ধ। শুরু সেন্টিনেল হল লাইন ফিড (0x0A) এবং স্টপ সেন্টিনেল হল ক্যারেজ রিটার্ন (0x0D)। এটা এই মত দেখাচ্ছে:
[সেন্টিনেল শুরু করুন | বাইট 1 | বাইট 2 | বাইট 3 | বাইট 4 | বাইট 5 | বাইট 6 | বাইট 7 | বাইট 8 | বাইট 9 | বাইট 10 | সেন্টিনেল বন্ধ করুন]এই তিনটি প্রাথমিক পদক্ষেপ।
কখন একটি ট্যাগ জমা দেওয়া হয়েছে তা জানুন
আমি AVR- এ একটি পিন চেঞ্জ ইন্টারাপ্ট ব্যবহার করেছি যা ফার্মওয়্যারকে জানিয়ে দেয় যে একটি পর্যবেক্ষণ করা পিনে একটি পরিবর্তন ঘটেছে। এর জন্য AVR কনফিগার করা সহজ এবং পতাকা সেট করা প্রয়োজন, MCU কে আপনি কোন পিনটি পর্যবেক্ষণ করতে চান তা বলুন এবং গ্লোবাল ইন্টারাপ্ট বিট সেট করুন। PCINT কনফিগার করুন
BSET (PCICR, PCIE2); // পিন পরিবর্তন ইন্টারাপ্ট কন্ট্রোল রেজিস্টার pcie2 BSET (PCMSK2, PCINT18); // PCINT18 (PD2) BSET (SREG, 7) এর জন্য পিন পরিবর্তন বিরতি সক্ষম করুন; // SREG I-bit সেট করুনআপনার ইন্টারাপ্ট সার্ভিস রুটিন লিখুন আপনি আপনার ISR সংক্ষিপ্ত রাখতে চান তাই আমার ইন্টারাপ্ট ভেক্টরে আমি পুরো বাইট, বিট বাই বিট পড়ি এবং বাইটটি একটি গ্লোবাল ভোলাটাইল ক্যারেক্টার অ্যারেতে সংরক্ষণ করি। আমি প্রতিটি বাধায় নিম্নলিখিতগুলি করি:
- আমি শুরুতে আছি কিনা তা নিশ্চিত করুন
- 2400 বউড (আরএফআইডি রিডারের গতি) এ মাঝারি পালসের দিকে সময়কে কেন্দ্র করুন
- শুরু বিট এড়িয়ে যান এবং পরবর্তী বিটের মাঝখানে থামুন
- প্রতিটি স্বাক্ষরবিহীন পূর্ণসংখ্যায় পড়ুন
- যখন আমি 8 বিট পেয়েছি, একটি অক্ষর অ্যারে বাইট রাখুন
- যখন আমি 12 বাইট সংগ্রহ করেছি, MCU কে জানাতে হবে যে ট্যাগটি ত্রুটি সনাক্তকরণের জন্য পড়া হয়েছে।
আমি মিকাল হার্টের সফটসিরিয়াল কোডটি পরিবর্তন করেছি যিনি সিরিয়াল রুটিনে পরীক্ষামূলকভাবে নির্ধারিত বিলম্বের জন্য ডেভিড মেলিসের কোড পরিবর্তন করেছিলেন।
RS232 আউটপুট পার্স করুন
PCINT রুটিনে RF232 রিডার থেকে RS232 আউটপুট পড়ার কোড থাকে।
// এটি ইন্টারাপ্ট হ্যান্ডলার ISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // start bit goes low return uint8_t বিট = 0; TunedDelay (CENTER_DELAY); // কেন্দ্র শুরুতে (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // একটু বাদ দাও, ভাই… যদি (BCHK (PIND, RFID_IN)) BSET (bit, x); অন্যথায় BCLR (বিট, এক্স); } TunedDelay (INTRABIT_DELAY); // skip stop bit RFID_tag [rxIdx] = bit; ++ rxIdx; যদি (rxIdx == 12) bDataReady = 1;}
আপনার ট্যাগ প্রদর্শন করুন
প্রধান (), (চিরকাল) লুপের সময়, আমি দেখতে চাই যে bDataReady সেট করা হয়েছে কিনা, ইঙ্গিত করে যে পুরো RFID কাঠামো পাঠানো হয়েছে। আমি তারপর এটি একটি বৈধ ট্যাগ (অর্থাত্ শুরু এবং স্টপ অক্ষর যথাক্রমে 0x0A এবং 0x0D হয়) দেখতে চেক, এবং যদি তাই হয়, আমি এটি আমার RS232 সংযোগ পাঠান।
জন্য (;;) {যদি (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("স্টার্ট বাইট:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ n স্টপ বাইট:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("R nRFID Tag:"); জন্য (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)); যদি (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
ধাপ 4: কোড এবং বিদায়
এই পৃষ্ঠায় প্রাসঙ্গিক কোড সহ একটি জিপ ফাইল রয়েছে। এটি AVR স্টুডিও 4.16 এ লেখা হয়েছিল। আপনি যদি প্রোগ্রামারের নোটপ্যাড, গ্রহন, বা vi (বা অন্য কিছু) ব্যবহার করেন তবে আপনাকে একটি বিশ্বস্ত মেকফিলকে ডিরেক্টরিতে অনুলিপি করতে হবে এবং এই ফাইলগুলিকে সোর্স লাইনে যুক্ত করতে হবে। 16MHz MCU যদি আপনি একটি ভিন্ন ঘড়ির ফ্রিকোয়েন্সি চালাচ্ছেন, তাহলে আপনাকে পরীক্ষামূলকভাবে বাউড রেট ডালগুলির কেন্দ্রস্থলে টিউন করা বিলম্বগুলি নির্ধারণ করতে হবে আমি আশা করি এই নির্দেশনাটি আপনাকে কোনভাবে সাহায্য করেছে। এটি কিভাবে উন্নত করা যায় সে সম্পর্কে আপনার কোন পরামর্শ থাকলে আমাকে জানাতে দ্বিধা করবেন না!
প্রস্তাবিত:
Arduino গাড়ী বিপরীত পার্কিং সতর্কতা সিস্টেম - ধাপে ধাপে: 4 টি ধাপ
Arduino গাড়ী বিপরীত পার্কিং সতর্কতা সিস্টেম | ধাপে ধাপে: এই প্রকল্পে, আমি Arduino UNO এবং HC-SR04 অতিস্বনক সেন্সর ব্যবহার করে একটি সহজ Arduino কার রিভার্স পার্কিং সেন্সর সার্কিট ডিজাইন করব। এই Arduino ভিত্তিক কার রিভার্স এলার্ট সিস্টেম একটি স্বায়ত্তশাসিত ন্যাভিগেশন, রোবট রেঞ্জিং এবং অন্যান্য পরিসরের জন্য ব্যবহার করা যেতে পারে
Arduino Uno ধাপে ধাপে ধাপে ধাপে (8-ধাপ): 8 টি ধাপ
Arduino Uno ধাপে ধাপে ধাপে ধাপে (8-ধাপ): অতিস্বনক শব্দ ট্রান্সডুসার L298N Dc মহিলা অ্যাডাপ্টার একটি পুরুষ ডিসি পিন Arduino UNO ব্রেডবোর্ড দিয়ে কিভাবে এটি কাজ করে: প্রথমে, আপনি Arduino Uno এ কোড আপলোড করুন (এটি ডিজিটাল সজ্জিত একটি মাইক্রোকন্ট্রোলার এবং এনালগ পোর্ট কোড রূপান্তর করতে (C ++)
XBee 3: 18 টি ধাপে মাইক্রোপাইথন কোড কিভাবে ডাউনলোড করবেন (ছবি সহ)
XBee 3 এ মাইক্রোপিথন কোড কিভাবে ডাউনলোড করবেন: মাইক্রোপাইথন হল একটি প্রোগ্রামিং ভাষা যা পাইথন 3.0 দ্বারা অনুপ্রাণিত যা মাইক্রোকন্ট্রোলারগুলিতে কাজ করে, যেমন XBee 3। । যাইহোক, আমি ফাউ
DIY Arduino রোবোটিক আর্ম, ধাপে ধাপে: 9 টি ধাপ
DIY Arduino রোবোটিক আর্ম, ধাপে ধাপে: এই টিউটোরিয়ালটি আপনাকে শেখাবে কিভাবে নিজের দ্বারা একটি রোবট আর্ম তৈরি করতে হয়
NODEMcu ইউএসবি পোর্ট কাজ করছে না? ইউএসবি ব্যবহার করে কোড টিটিএল (এফটিডিআই) মডিউলে আপলোড করুন মাত্র 2 ধাপে: 3 ধাপে
NODEMcu ইউএসবি পোর্ট কাজ করছে না? মাত্র 2 ধাপে ইউএসবি থেকে টিটিএল (এফটিডিআই) মডিউল ব্যবহার করে কোড আপলোড করুন: ইউএসবি থেকে টিটিএল মডিউল থেকে নডেমকুতে অনেক তারের সাথে সংযুক্ত হয়ে ক্লান্ত, এই নির্দেশাবলী অনুসরণ করুন, কোডটি মাত্র 2 ধাপে আপলোড করুন। NODEMcu কাজ করছে না, তাহলে আতঙ্কিত হবেন না। এটি কেবল ইউএসবি ড্রাইভার চিপ বা ইউএসবি সংযোগকারী