আরডুইনোতে ইলেকট্রনিক লক। আরডুইনোর ইলেক্ট্রনিক সামনের দরজার তালায় অস্বাভাবিক সমন্বয় লক

আরডুইনো হল সেরা সিস্টেমকোনো সরঞ্জাম অনুলিপি করতে। বেশিরভাগ ধারণা তাকে ছাড়া ফলপ্রসূ হতে পারে না। দীর্ঘকাল ধরে এই ধারণাটি রয়েছে: আরডুইনোতে একটি বিশেষ সংমিশ্রণ লক তৈরি করা। এটি খুলতে, আপনাকে একটি নির্দিষ্ট কী ধরে রাখতে হবে। এই ক্ষেত্রে, লক খোলা উচিত নয়, যদিও আপনি সঠিক বোতামটি জানেন। এটি খুলতে, আপনাকে পেশী মেমরি ব্যবহার করে নির্দিষ্ট বিরতি বজায় রাখতে হবে। একজন অপরাধী এমন কাজ করতে পারে না। কিন্তু এ সবই একটি তত্ত্ব মাত্র।

এটি একত্রিত করার জন্য আপনাকে একটি বিশেষ আয়তক্ষেত্রাকার পালস ডিভাইস, সেইসাথে বেশ কয়েকটি কাউন্টার এবং একটি গাদা ব্যবহার করতে হবে। কিন্তু সমাপ্ত ডিভাইসবড় সামগ্রিক মাত্রা থাকবে এবং ব্যবহার করা অসুবিধাজনক হবে। একটি নিয়ম হিসাবে, এই ধরনের চিন্তা আপনি পীড়িত. আমার স্বপ্নকে সত্যি করার প্রথম ধাপ ছিল Arduino এর জন্য একটি প্রোগ্রাম তৈরি করা। এটি একটি কম্বিনেশন লক হিসেবে কাজ করবে। এটি খোলার জন্য, আপনাকে একটি কী নয়, একাধিক টিপতে হবে এবং এটি একই সাথে করতে হবে। সমাপ্ত ডায়াগ্রাম এই মত দেখায়:

ছবির মান সেরা নয়, তবে সংযোগটি মাটিতে তৈরি করা হয়েছে, D3, D5, D7, D9 এবং D11৷

কোড নিচে দেওয়া হল:

Const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; বাইট a = 0; বাইট b = 0; বাইট c = 0; বাইট d = 0; স্বাক্ষরবিহীন দীর্ঘ সময় = 0; //মিলিস() স্বাক্ষরবিহীন লং টেম্প = 0 মান লাগে এমন সবকিছু ভুলে যাবেন না; //অস্বাক্ষরবিহীন লং বাইট কীয়া = ( 0, 0, 0, 0, 0, 0, 0, 0); //প্রকৃত কোড বাইট কীবি = (1, 1, 1, 1, 0, 1, 0, 0); বাইট কীসি = ( 1, 0, 1, 0, 1, 1, 1, 0); বাইট k = 0; void setup() ( pinMode(ina, INPUT_PULLUP); //3 ইনপুটগুলি বোতামগুলির সাথে সংযুক্ত পিনমোড(inb, INPUT_PULLUP); পিনমোড(inc, INPUT_PULLUP); pinMode(ledPin, OUTPUT); // বিল্ট-ইন LED 13 তারিখে পিন পিনমোড(7, আউটপুট); পিনমোড(11, আউটপুট); ডিজিটালরাইট(7, কম); //গ্রাউন্ড ডিজিটালরাইট(11, কম) প্রতিস্থাপন করুন; সময় = মিলিস(); //সময়ের জন্য প্রয়োজনীয় ) void blinktwice() ( // LED DigitalWrite(ledPin, HIGH); বিলম্ব(100); digitalWrite(ledPin, LOW); delay(100); digitalWrite(ledPin, HIGH); বিলম্ব(100); digitalWrite(ledPin, LOW); delay(200); ) void loop() ( if(k==0) ( blinktwice(); //প্রম্পট লিখতে ) if (k == 8) ( digitalWrite(ledPin, HIGH); বিলম্ব(3000); k = 0 ; ) a = digitalRead(ina); //সংকেত স্তরগুলি বোতামগুলি থেকে পড়া হয় - চাপা/চাপানো হয় না b = digitalRead(inb); c = digitalRead(inc); বিলম্ব(100); //পরবর্তী যদি - মিথ্যা পজিটিভের বিরুদ্ধে সুরক্ষা, আপনাকে if((digitalRead(ina) == a)&&(digitalRead(inb) ==b)&&(digitalRead(inc)==c)) ( if (a ==) ব্যবহার করতে হবে না keya[k]) ( if (b == keyb[k]) ( if (c == keyc[k]) ( k++; ) ) ) ) যদি (k==1) (যদি (d ==0) ( সময় = মিলি (); d++; ) ) temp = millis(); temp = temp - সময়; যদি (টেম্প > 10000) ( k=0; d=0; সময় = মিলি (; ) )

কোড সম্পর্কিত অপ্রয়োজনীয় প্রশ্ন এড়াতে, কিছু পয়েন্ট স্পষ্ট করা উচিত। সেটআপ ফাংশনটি পোর্ট বরাদ্দ করতে ব্যবহৃত হয়। পরবর্তী ফাংশনটি হল Input_Pullup, যা পিনের ভোল্টেজকে 5 V দ্বারা বাড়ানোর জন্য প্রয়োজনীয়। এটি একটি প্রতিরোধক ব্যবহার করে করা হয়। এই ধন্যবাদ, বিভিন্ন শর্ট সার্কিট ঘটবে না। বৃহত্তর সুবিধার জন্য, এটি blinktwice ফাংশন ব্যবহার করার সুপারিশ করা হয়. সাধারণভাবে, বিভিন্ন প্রোগ্রাম তৈরি করার সময়, আপনাকে অন্যান্য ফাংশন চেষ্টা করতে হবে।

ফাংশন বরাদ্দ করার পরে, পোর্ট থেকে সংকেত পড়া হয়। বোতাম টিপলে, এটি 1 নম্বর দ্বারা নির্দেশিত হবে, এবং যদি না হয়, 2 দ্বারা। পরবর্তী, সমস্ত মান বিশ্লেষণ করা হয়। উদাহরণস্বরূপ, 0,1,1 এর মতো একটি সংমিশ্রণ উপস্থিত হয়েছে। এর মানে হল যে প্রথম কী টিপুন, কিন্তু অন্য দুটি নয়। যদি সমস্ত মান সত্য হয়, তাহলে শর্ত 8ও সত্য। এটি সামনের প্যানেলে আলোকিত LED দ্বারা নির্দেশিত হয়। এর পরে, আপনাকে একটি নির্দিষ্ট কোড লিখতে হবে যা দরজা খুলতে ব্যবহার করা হবে।

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

অগ্রগতি স্থির থাকে না এবং অ্যাপার্টমেন্ট, গ্যারেজ এবং বাড়ির দরজায় "স্মার্ট লক" ক্রমবর্ধমানভাবে প্রদর্শিত হচ্ছে।

আপনি যখন আপনার স্মার্টফোনে একটি বোতাম টিপবেন তখন অনুরূপ একটি লক খোলে। সৌভাগ্যবশত, স্মার্টফোন এবং ট্যাবলেট ইতিমধ্যেই আমাদের দৈনন্দিন জীবনে প্রবেশ করেছে। কিছু ক্ষেত্রে, "স্মার্ট লক" এর সাথে সংযুক্ত থাকে ক্লাউড পরিষেবা"Google ড্রাইভের মতো এবং এটিকে দূরবর্তীভাবে খুলুন৷ উপরন্তু, এই বিকল্পটি অন্য লোকেদের দরজা খোলার অ্যাক্সেস দেওয়া সম্ভব করে তোলে৷

এই প্রকল্পের একটি DIY সংস্করণ বৈশিষ্ট্য হবে স্মার্ট লকআরডুইনোতে, যা পৃথিবীর যেকোনো জায়গা থেকে দূরবর্তীভাবে নিয়ন্ত্রণ করা যায়।

এছাড়াও, প্রকল্পটি একটি আঙ্গুলের ছাপ সনাক্ত করার পরে তালা খোলার ক্ষমতা যুক্ত করেছে। এই উদ্দেশ্যে, একটি ফিঙ্গারপ্রিন্ট সেন্সর একত্রিত করা হবে। দরজা খোলার উভয় বিকল্পই Adafruit IO প্ল্যাটফর্ম দ্বারা চালিত হবে।

এই ধরনের একটি লক আপনার স্মার্ট হোম প্রকল্পের একটি দুর্দান্ত প্রথম পদক্ষেপ হতে পারে।

ফিঙ্গারপ্রিন্ট সেন্সর সেট আপ করা হচ্ছে

একটি ফিঙ্গারপ্রিন্ট সেন্সরের সাথে কাজ করার জন্য, Arduino এর জন্য একটি চমৎকার লাইব্রেরি রয়েছে, যা সেন্সর সেট আপ করার প্রক্রিয়াটিকে ব্যাপকভাবে সহজ করে তোলে। এই প্রকল্পটি Arduino Uno ব্যবহার করে। একটি Adafruit CC3000 বোর্ড ইন্টারনেটের সাথে সংযোগ করতে ব্যবহৃত হয়।

পাওয়ার সংযোগ দিয়ে শুরু করা যাক:

  • আরডুইনো বোর্ড থেকে 5V পিনটিকে লাল পাওয়ার রেলের সাথে সংযুক্ত করুন;
  • Arduino থেকে GND পিন সোল্ডারলেস সার্কিট বোর্ডের নীল রেলের সাথে সংযোগ করে।

ফিঙ্গারপ্রিন্ট সেন্সর সংযোগের দিকে এগিয়ে যাওয়া যাক:

  • প্রথমে পাওয়ার সংযোগ করুন। এটি করার জন্য, লাল তারটি +5 V রেলের সাথে এবং কালো তারটি GND রেলের সাথে সংযুক্ত থাকে;
  • সেন্সরের সাদা তারটি আরডুইনোতে পিন 4 এর সাথে সংযোগ করে।
  • সবুজ তার মাইক্রোকন্ট্রোলারে পিন 3 এ যায়।

এখন CC3000 মডিউলে যাওয়া যাক:

  • আমরা CC3000 বোর্ড থেকে IRQ পিনটিকে Arduino-এ 2 পিন করার জন্য সংযুক্ত করি।
  • VBAT - 5 পিন করতে।
  • CS - 10 পিন করতে।
  • এর পরে, আপনাকে SPI পিনগুলিকে Arduino এর সাথে সংযুক্ত করতে হবে: MOSI, MISO এবং CLK - যথাক্রমে 11, 12 এবং 13 পিনের সাথে।

ঠিক আছে, শেষে আপনাকে শক্তি সরবরাহ করতে হবে: ভিন - আরডুইনো 5V (আপনার সার্কিট বোর্ডে লাল রেল), এবং GND থেকে GND (ব্রেডবোর্ডে নীল রেল)।

সম্পূর্ণরূপে একত্রিত প্রকল্পের একটি ফটো নীচে দেখানো হয়েছে:

অ্যাডাফ্রুট আইও-তে ডেটা লোড করবে এমন একটি স্কেচ তৈরি করার আগে, আপনাকে সেন্সরে আপনার আঙ্গুলের ছাপের তথ্য স্থানান্তর করতে হবে। অন্যথায়, তিনি ভবিষ্যতে আপনাকে চিনতে পারবেন না;)। আমরা আলাদাভাবে Arduino ব্যবহার করে ফিঙ্গারপ্রিন্ট সেন্সর ক্যালিব্রেট করার পরামর্শ দিই। আপনি যদি এই সেন্সরের সাথে প্রথমবার কাজ করেন, তাহলে আমরা আপনাকে ক্রমাঙ্কন প্রক্রিয়া এবং ফিঙ্গারপ্রিন্ট সেন্সরের সাথে কাজ করার জন্য বিস্তারিত নির্দেশাবলীর সাথে পরিচিত হওয়ার পরামর্শ দিই।

আপনি যদি ইতিমধ্যে এটি না করে থাকেন, অনুগ্রহ করে Adafruit IO-এর সাথে একটি অ্যাকাউন্ট তৈরি করুন৷

এর পরে, আমরা আরডুইনোতে একটি "স্মার্ট লক" বিকাশের পরবর্তী পর্যায়ে যেতে পারি: যথা, একটি স্কেচ তৈরি করা যা অ্যাডাফ্রুট আইও-তে ডেটা প্রেরণ করবে। যেহেতু প্রোগ্রামটি বেশ বিশাল, এই নিবন্ধে আমরা শুধুমাত্র এর প্রধান অংশগুলিকে হাইলাইট করব এবং বিবেচনা করব এবং তারপরে আমরা গিটহাবের একটি লিঙ্ক সরবরাহ করব, যেখানে আপনি সম্পূর্ণ স্কেচটি ডাউনলোড করতে পারেন।

সমস্ত প্রয়োজনীয় লাইব্রেরি লোড করে স্কেচ শুরু হয়:

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত

# "Adafruit_MQTT.h" অন্তর্ভুক্ত করুন

#অন্তর্ভুক্ত করুন "Adafruit_MQTT_CC3000.h"

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত >

এর পরে, আপনাকে আপনার ওয়াইফাই নেটওয়ার্কের পরামিতিগুলি সন্নিবেশ করে, SSID এবং পাসওয়ার্ড নির্দিষ্ট করে স্কেচটি সামান্য সংশোধন করতে হবে:

#WLAN_SECURITY WLAN_SEC_WPA2> সংজ্ঞায়িত করুন

উপরন্তু, আপনার Adafruit IO অ্যাকাউন্টে লগ ইন করতে আপনাকে অবশ্যই আপনার নাম এবং AIO কী লিখতে হবে:

# AIO_SERVERPORT 1883 সংজ্ঞায়িত করুন

# AIO_USERNAME "adafruit_io_name" সংজ্ঞায়িত করুন

# AIO_KEY "adafruit_io_key"> সংজ্ঞায়িত করুন

নিম্নলিখিত লাইনগুলি ফিঙ্গারপ্রিন্ট সেন্সর থেকে ডেটা ইন্টারঅ্যাক্ট এবং প্রক্রিয়াকরণের জন্য দায়ী৷ যদি সেন্সর সক্রিয় করা হয় (আঙ্গুলের ছাপ মিলেছে), সেখানে "1" থাকবে:

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/feeds/fingerprint";

Adafruit_MQTT_Publish ফিঙ্গারপ্রিন্ট = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

উপরন্তু, আমাদের সেন্সরের জন্য SoftwareSerial অবজেক্টের একটি উদাহরণ তৈরি করতে হবে:

সফটওয়্যার সিরিয়াল mySerial(3, 4);

এর পরে আমরা আমাদের সেন্সরের জন্য একটি বস্তু তৈরি করতে পারি:

Adafruit_Fingerprint আঙুল = Adafruit_Fingerprint(&mySerial);

স্কেচের ভিতরে আমরা নির্দেশ করি যে কোন ফিঙ্গারআইডি ভবিষ্যতে লকটি সক্রিয় করবে। এই উদাহরণটি 0 ব্যবহার করে, যা সেন্সর দ্বারা ব্যবহৃত প্রথম ফিঙ্গারপ্রিন্টের আইডির সাথে মিলে যায়:

int fingerID = 0;

এর পরে, আমরা কাউন্টার শুরু করি এবং আমাদের প্রকল্পে বিলম্ব করি। মূলত আমরা চাই লকটি একবার খুলে গেলে স্বয়ংক্রিয়ভাবে নিযুক্ত হয়ে যাক। এই উদাহরণটি 10 ​​সেকেন্ডের বিলম্ব ব্যবহার করে, তবে আপনি আপনার প্রয়োজন অনুসারে এই মানটি সামঞ্জস্য করতে পারেন:

int activationCounter = 0;

int lastActivation = 0;

int activationTime = 10*1000;

সেটআপ() ফাংশনের বডিতে, আমরা ফিঙ্গারপ্রিন্ট সেন্সর চালু করি এবং নিশ্চিত করি যে CC3000 চিপ আপনার ওয়াইফাই নেটওয়ার্কের সাথে সংযুক্ত আছে।

loop() ফাংশনের বডিতে আমরা Adafruit IO এর সাথে সংযোগ করি। নিম্নলিখিত লাইন এর জন্য দায়ী:

Adafruit IO প্ল্যাটফর্মের সাথে সংযোগ করার পরে, আমরা শেষ আঙ্গুলের ছাপ পরীক্ষা করি। যদি এটি মেলে এবং লকটি সক্রিয় না হয়, আমরা প্রক্রিয়াকরণের জন্য Adafruit IO-তে "1" পাঠাই:

যদি (আঙুলের ছাপ আইডি == আঙ্গুলের আইডি && লকস্টেট == মিথ্যা) (

Serial.println(F("অ্যাক্সেস দেওয়া হয়েছে!"));

lockState = সত্য;

Serial.println(F("ব্যর্থ"));

Serial.println(F("ঠিক আছে!"));

লাস্ট অ্যাক্টিভেশন = মিলিস();

যদি লুপ() ফাংশনের মধ্যে লকটি সক্রিয় করা হয় এবং আমরা উপরে নির্দেশিত বিলম্বের মান পর্যন্ত পৌঁছেছি, আমরা "0" পাঠাই:

যদি ((activationCounter - lastActivation > activationtime) && lockState == true) (

lockState = মিথ্যা;

যদি (! fingerprint.publish(state)) (

Serial.println(F("ব্যর্থ"));

Serial.println(F("ঠিক আছে!"));

আপনি GitHub এ কোডের সর্বশেষ সংস্করণ ডাউনলোড করতে পারেন।

এটা আমাদের প্রকল্প পরীক্ষা করার সময়! Arduino এর জন্য প্রয়োজনীয় সমস্ত লাইব্রেরি ডাউনলোড এবং ইনস্টল করতে ভুলবেন না!

আপনি স্কেচে সমস্ত প্রয়োজনীয় পরিবর্তন করেছেন এবং আপনার Arduino এ আপলোড করেছেন তা নিশ্চিত করুন। এর পরে, সিরিয়াল মনিটর উইন্ডোটি খুলুন।

যখন Arduino সংযোগ করে ওয়াইফাই নেটওয়ার্ক, ফিঙ্গারপ্রিন্ট সেন্সর লাল হয়ে যাবে। সেন্সরে আপনার আঙুল রাখুন। আইডি নম্বরটি সিরিয়াল মনিটরের উইন্ডোতে প্রদর্শিত হওয়া উচিত। যদি এটি মেলে তবে "ঠিক আছে!" বার্তাটি প্রদর্শিত হবে। এর মানে হল যে ডেটা অ্যাডফ্রুট আইও সার্ভারে পাঠানো হয়েছে।

একটি LED এর উদাহরণ ব্যবহার করে লকটির আরও কনফিগারেশনের জন্য ডায়াগ্রাম এবং স্কেচ

এখন প্রজেক্টের সেই অংশে যাওয়া যাক যা দরজার লক নিয়ন্ত্রণের জন্য সরাসরি দায়ী। সংযোগ করতে তারবিহীন যোগাযোগএবং লকটি সক্রিয়/নিষ্ক্রিয় করার জন্য, আপনার একটি অতিরিক্ত Adafruit ESP8266 মডিউল প্রয়োজন হবে (ESP8266 মডিউলটি Adafruit থেকে হতে হবে না)। নীচের উদাহরণটি ব্যবহার করে, আপনি মূল্যায়ন করতে পারেন যে Adafruit IO ব্যবহার করে দুটি প্ল্যাটফর্মের (Arduino এবং ESP8266) মধ্যে ডেটা বিনিময় করা কতটা সহজ।

এই বিভাগে আমরা তালা দিয়ে সরাসরি কাজ করব না। পরিবর্তে, আমরা কেবল LEDটিকে পিনের সাথে সংযুক্ত করব যেখানে লকটি পরে সংযুক্ত হবে। এটি আমাদের লক ডিজাইনের বিশদ বিবরণ না দিয়ে আমাদের কোড পরীক্ষা করার সুযোগ দেবে।

স্কিমটি বেশ সহজ: প্রথমে ব্রেডবোর্ডে ESP8266 ইনস্টল করুন। এর পরে, LED ইনস্টল করুন। ভুলে যাবেন না যে LED এর দীর্ঘ (ধনাত্মক) পা একটি প্রতিরোধকের মাধ্যমে সংযুক্ত। প্রতিরোধকের দ্বিতীয় লেগটি ESP8266 মডিউলের পিন 5 এর সাথে সংযুক্ত। আমরা ESP8266-এ GND পিনের সাথে LED-এর দ্বিতীয় (ক্যাথোড) সংযোগ করি।

সম্পূর্ণরূপে একত্রিত সার্কিট নীচের ফটোতে দেখানো হয়েছে।


এখন আসুন আমরা এই প্রকল্পের জন্য যে স্কেচটি ব্যবহার করছি তা দেখি। আবার, কোডটি বেশ বড় এবং জটিল, তাই আমরা শুধুমাত্র এর প্রধান অংশগুলি দেখব:

আমরা প্রয়োজনীয় লাইব্রেরি সংযোগ করে শুরু করি:

#অন্তর্ভুক্ত

# "Adafruit_MQTT.h" অন্তর্ভুক্ত করুন

# "Adafruit_MQTT_Client.h" অন্তর্ভুক্ত করুন

ওয়াইফাই সেটিংস কনফিগার করা হচ্ছে:

#WLAN_SSID "আপনার_wifi_ssid" সংজ্ঞায়িত করুন

#WLAN_PASS "আপনার_ওয়াইফাই_পাসওয়ার্ড" সংজ্ঞায়িত করুন

#WLAN_SECURITY WLAN_SEC_WPA2 সংজ্ঞায়িত করুন

আমরা Adafruit IO পরামিতিগুলিও কনফিগার করি। আগের অধ্যায়ের মতই:

# AIO_SERVER "io.adafruit.com" সংজ্ঞায়িত করুন

# AIO_SERVERPORT 1883 সংজ্ঞায়িত করুন

# AIO_USERNAME "adafruit_io_username" সংজ্ঞায়িত করুন

# AIO_KEY "adafruit_io_key" সংজ্ঞায়িত করুন

আমরা নির্দেশ করি যে আমরা কোন পিনের সাথে LED সংযুক্ত করেছি (ভবিষ্যতে এটি আমাদের লক বা রিলে হবে):

int relayPin = 5;

ফিঙ্গারপ্রিন্ট সেন্সরের সাথে মিথস্ক্রিয়া, আগের বিভাগে যেমন:

const char LOCK_FEED PROGMEM = AIO_USERNAME "/feeds/lock";

Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

সেটআপ() ফাংশনের বডিতে আমরা ইঙ্গিত করি যে যে পিনের সাথে LED কানেক্ট করা হয়েছে সেটি আউটপুট মোডে কাজ করা উচিত:

পিনমোড (রিলেপিন, আউটপুট);

loop() লুপের মধ্যে, আমরা প্রথমে চেক করি যে আমরা Adafruit IO এর সাথে সংযুক্ত কিনা:

এর পরে, আমরা কী সংকেত প্রাপ্ত হচ্ছে তা পরীক্ষা করি। যদি "1" প্রেরণ করা হয়, আমরা পূর্বে ঘোষিত পিনটি সক্রিয় করি, যার সাথে আমাদের LED সংযুক্ত রয়েছে। যদি আমরা "0" পাই, আমরা যোগাযোগটিকে "নিম্ন" অবস্থায় স্থানান্তর করি:

Adafruit_MQTT_Subscribe *সাবস্ক্রিপশন;

যখন ((সাবস্ক্রিপশন = mqtt.readSubscription(1000))) (

যদি (সাবস্ক্রিপশন == &লক) (

Serial.print(F("Got:"));

Serial.println((char*)lock.lastread);

// স্ট্রিং ডেটাতে কমান্ডটি সংরক্ষণ করুন

স্ট্রিং কমান্ড = স্ট্রিং((char*)lock.lastread);

যদি (কমান্ড == "0") (

ডিজিটাল রাইট (রিলেপিন, কম);

যদি (কমান্ড == "1") (

ডিজিটাল রাইট (রিলেপিন, উচ্চ);

অনুসন্ধান সর্বশেষ সংস্করণআপনি GitHub এ স্কেচ খুঁজে পেতে পারেন.

এটা আমাদের প্রকল্প পরীক্ষা করার সময়. আপনার Arduino এর জন্য প্রয়োজনীয় সমস্ত লাইব্রেরি ডাউনলোড করতে ভুলবেন না এবং আপনি স্কেচে সঠিক পরিবর্তন করেছেন কিনা তা পরীক্ষা করে দেখুন।

ESP8266 চিপ প্রোগ্রাম করতে, আপনি একটি সাধারণ USB-FTDI রূপান্তরকারী ব্যবহার করতে পারেন।

আরডুইনোতে স্কেচ আপলোড করুন এবং সিরিয়াল মনিটর উইন্ডো খুলুন। এই পর্যায়ে, আমরা অ্যাডফ্রুট আইও-এর সাথে সংযোগ করতে সক্ষম হয়েছি কিনা তা পরীক্ষা করে দেখেছি: আমরা উপলব্ধ কার্যকারিতা আরও দেখব।

প্রকল্প পরীক্ষা করা হচ্ছে

এখন পরীক্ষা শুরু করা যাক! আপনার Adafruit IO এর ব্যবহারকারী মেনুতে যান, ফিড মেনুর অধীনে। আঙুলের ছাপ এবং লক চ্যানেলগুলি তৈরি করা হয়েছে কিনা তা পরীক্ষা করুন (নিচের প্রিন্ট স্ক্রিনে আঙ্গুলের ছাপ এবং লক লাইনগুলি রয়েছে):


যদি সেগুলি বিদ্যমান না থাকে তবে আপনাকে সেগুলি ম্যানুয়ালি তৈরি করতে হবে।

এখন আমাদের আঙ্গুলের ছাপ এবং লক চ্যানেলগুলির মধ্যে ডেটা বিনিময় নিশ্চিত করতে হবে। ফিঙ্গারপ্রিন্ট চ্যানেল যখন "1" মান নেয় তখন লক চ্যানেলটিকে অবশ্যই "1" মান নিতে হবে এবং এর বিপরীতে।

এটি করার জন্য, আমরা একটি খুব শক্তিশালী Adafruit IO টুল ব্যবহার করি: ট্রিগার। ট্রিগারগুলি মূলত এমন শর্ত যা আপনি কনফিগার করা চ্যানেলগুলিতে প্রয়োগ করতে পারেন। অর্থাৎ, তারা দুটি চ্যানেলকে আন্তঃসংযোগ করতে ব্যবহার করা যেতে পারে।

Adafruit IO-তে ট্রিগার বিভাগ থেকে একটি নতুন প্রতিক্রিয়াশীল ট্রিগার তৈরি করুন। এটি ফিঙ্গারপ্রিন্ট সেন্সর এবং লক চ্যানেলগুলির মধ্যে ডেটা বিনিময় করার ক্ষমতা প্রদান করবে:


উভয় ট্রিগার কনফিগার করা হলে এটি দেখতে কেমন হওয়া উচিত:

সমস্ত ! এখন আমরা আসলে আমাদের প্রকল্প পরীক্ষা করতে পারেন! আমরা সেন্সরে আমাদের আঙুল রাখি এবং দেখি কিভাবে Arduino একটি LED দিয়ে চোখ বুলাতে শুরু করে যা ডেটা ট্রান্সমিশনের সাথে মিলে যায়। এর পরে, ESP8266 মডিউলের LED জ্বলতে শুরু করবে। এর মানে হল যে এটি MQTT এর মাধ্যমে ডেটা গ্রহণ করা শুরু করেছে। সার্কিট বোর্ডের LEDও এই মুহুর্তে চালু করা উচিত।

আপনি স্কেচে সেট করার বিলম্বের পরে (ডিফল্ট 10 সেকেন্ড), LED বন্ধ হয়ে যাবে। অভিনন্দন! আপনি বিশ্বের যে কোনও জায়গা থেকে আপনার আঙুলের ছাপ দিয়ে LED নিয়ন্ত্রণ করতে পারেন!

একটি ইলেকট্রনিক লক সেট আপ করা হচ্ছে

আমরা প্রকল্পের শেষ অংশে পৌঁছেছি: আরডুইনো এবং একটি ফিঙ্গারপ্রিন্ট সেন্সর ব্যবহার করে সরাসরি ইলেকট্রনিক লক সংযোগ এবং নিয়ন্ত্রণ করা। প্রকল্পটি সহজ নয়, আপনি উপরে উপস্থাপিত ফর্মের সমস্ত উত্স ব্যবহার করতে পারেন, তবে একটি LED এর পরিবর্তে একটি রিলে সংযোগ করুন।

লকটি সরাসরি সংযুক্ত করতে, আপনার অতিরিক্ত উপাদানগুলির প্রয়োজন হবে: একটি 12 V পাওয়ার সাপ্লাই, পাওয়ার সংযোগের জন্য একটি জ্যাক, একটি ট্রানজিস্টর (V এই উদাহরণে IRLB8721PbF MOSFET ব্যবহার করা হয়, কিন্তু অন্য একটি ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ, একটি TIP102 বাইপোলার ট্রানজিস্টর। আপনি যদি বাইপোলার ট্রানজিস্টর ব্যবহার করেন তবে আপনাকে একটি প্রতিরোধক যোগ করতে হবে।

নিচে দেখানো বৈদ্যুতিক চিত্র ESP8266 মডিউলে সমস্ত উপাদান সংযুক্ত করা হচ্ছে:


মনে রাখবেন যে আপনি যদি একটি MOSFET ট্রানজিস্টর ব্যবহার করেন তবে আপনার ESP8266 মডিউলের পিন 5 এবং ট্রানজিস্টরের মধ্যে একটি প্রতিরোধকের প্রয়োজন হবে না।

সম্পূর্ণরূপে একত্রিত প্রকল্পটি নীচের ছবিতে দেখানো হয়েছে:


FTDI মডিউল ব্যবহার করে ESP8266 মডিউলটিকে পাওয়ার করুন এবং 12V পাওয়ার সাপ্লাইকে জ্যাকের সাথে সংযুক্ত করুন। আপনি সংযোগের জন্য উপরে প্রস্তাবিত পিনগুলি ব্যবহার করলে, আপনাকে স্কেচে কিছু পরিবর্তন করতে হবে না।

এখন আপনি সেন্সরে আপনার আঙুল রাখতে পারেন: লকটি আপনার আঙ্গুলের ছাপের প্রতিক্রিয়া হিসাবে কাজ করা উচিত। নীচের ভিডিওটি স্বয়ংক্রিয় স্মার্ট লক প্রকল্পটি কার্যে দেখায়:

স্মার্ট লক প্রকল্পের আরও উন্নয়ন

আমাদের প্রকল্পে মুক্তি দূরবর্তী নিয়ন্ত্রণআপনার আঙ্গুলের ছাপ ব্যবহার করে দরজার তালা।

নির্দ্বিধায় পরীক্ষা করুন, স্কেচ পরিবর্তন করুন এবং বাঁধাই করুন। উদাহরণস্বরূপ, আপনি দরজা প্রতিস্থাপন করতে পারেন ইলেকট্রনিক লকআপনার 3D প্রিন্টার, ম্যানিপুলেটর বা কোয়াডকপ্টারের শক্তি নিয়ন্ত্রণ করতে রিলেতে...

আপনি আপনার বিকাশ করতে পারেন স্মার্ট হাউস"উদাহরণস্বরূপ, আরডুইনোতে দূরবর্তীভাবে একটি সেচ ব্যবস্থা সক্রিয় করুন বা একটি ঘরে লাইট চালু করুন... ভুলে যাবেন না যে আপনি অ্যাডফ্রুট আইও ব্যবহার করে প্রায় সীমাহীন সংখ্যক ডিভাইস একই সাথে সক্রিয় করতে পারেন৷

আপনার মন্তব্য, প্রশ্ন এবং শেয়ার করুন ব্যক্তিগত অভিজ্ঞতানিচে. নতুন নতুন আইডিয়া এবং প্রকল্পের জন্ম হয় প্রায়ই আলোচনায়!

একটি RF কী দ্বারা নিয়ন্ত্রিত একটি দরজার লক প্রবর্তন করা হচ্ছে৷

লকটি এইভাবে কাজ করে: আমাদের কী (RFID ট্যাগ) উপস্থাপন করা হয়েছে - লকটি বন্ধ হয়ে গেছে, আবার চাবিটি উপস্থাপন করা হয়েছে - লকটি খোলা হয়েছে। লকটির ক্রিয়াকলাপটি কল্পনা করতে, ছয়টি দ্বি-রঙের এলইডি (লাইন) ব্যবহার করা হয়েছিল। বন্ধ করার সময়, একটি লাল আলো জ্বলে, যখন খোলা হয়, একটি সবুজ আলো জ্বলে। অন্য কারো চাবি আনলে লাল এলইডি জ্বলে উঠবে।

আমি গাড়ির সেন্ট্রাল লকিং ড্রাইভটিকে অ্যাকচুয়েটর হিসাবে ব্যবহার করার সিদ্ধান্ত নিয়েছি। আপনি একটি নতুন কিনতে পারেন, বা একটি ব্যবহৃত এক, দামের পার্থক্য বড় নয়, তাই আমি একটি নতুন ব্যবহার করেছি, এটি আরও নির্ভরযোগ্য। ড্রাইভ রডটি ল্যাচের সাথে সংযুক্ত। ল্যাচ এখনও সোভিয়েত, শক্তিশালী। এবং আমার শক্তিশালী "ভাংচুরবিরোধী" দরকার নেই।

"মেশিন" দুটি তারের মাধ্যমে নিয়ন্ত্রিত হয়। একটি পোলারিটি রডকে প্রসারিত করে, বিপরীত পোলারিটি রডটিকে প্রত্যাহার করে। 12 ভোল্টের একটি ভোল্টেজে, কারেন্ট হল 6 অ্যাম্পিয়ার, অনেক...
"মেশিনে" কোন সীমা সুইচ নেই।

লক সার্কিটে (ডিজাইন অনুসারে) একটি গ্যারান্টিযুক্ত পাওয়ার সাপ্লাই রয়েছে এই তথ্যের ভিত্তিতে, ~220 ভোল্টের ক্ষতি হলে লকটির অপারেশন নিশ্চিত করতে ব্যাটারিটি 12 ভোল্টের। "মেশিন" এর জন্য একটি সেতু নিয়ন্ত্রণ সার্কিট তৈরি করেছে। সার্কিটের একটি বিশেষ বৈশিষ্ট্য হ'ল এর অরৈখিকতা, যা লক মেকানিজমের নির্ভরযোগ্য অপারেশন নিশ্চিত করে এবং একই সাথে "মেশিন" এবং কী ট্রানজিস্টরগুলির মৃদু অপারেশন।

ডায়াগ্রামে (উপরে), "ক্লোজ" বাহুটি লাল রঙে হাইলাইট করা হয়েছে এবং "খোলা" বাহুটি সবুজ রঙে হাইলাইট করা হয়েছে। অস্ত্র পৃথকভাবে চালিত হয়, প্রতিরোধকের মাধ্যমে (বিদ্যুৎ সরবরাহে অবস্থিত)। মিথ্যা ইতিবাচকতা দূর করতে সেতু অস্ত্রের শক্তি বিভাজন চালু করা হয়েছিল।

ব্যাখ্যা: 33-ওহম প্রতিরোধকের (পাওয়ার সাপ্লাই ডায়াগ্রামে), 12 ভোল্টের একটি ভোল্টেজ ক্যাপাসিটরকে চার্জ করে (প্রতিটি বাহুতে 2000-μF)। যখন Arduino_ProMini কন্ট্রোলার থেকে কন্ট্রোল ভোল্টেজ আসে, 168 PVT322 অপটোকপলারের মাধ্যমে "ক্লোজ" ইনপুট (বা অনুরূপভাবে "ওপেন"-এ) - সংশ্লিষ্ট কী আর্মটি খোলে। এই ক্ষেত্রে, নিম্নলিখিতগুলি ঘটে: কীগুলি খোলার মুহুর্তে, ক্যাপাসিটারগুলি থেকে শক্তি শক্তিশালীভাবে "মেশিন" এর মোটরটিকে "টান" দেয়। ক্যাপাসিটার স্রাব হওয়ার সাথে সাথে (এটি দ্রুত ঘটে), "মেশিন" এর মোটরটি প্রতিরোধক দ্বারা সীমিত কারেন্ট দ্বারা চালিত হয় (33 ওহমস)। এর জন্য ধন্যবাদ, লকটি "বন্ধ" - "খোলা" প্রক্রিয়ার শেষে, রডটি বেশ ধীরে ধীরে চলে।

ইঞ্জিন নিয়ন্ত্রণের এই পদ্ধতিটি সর্বোত্তম।

পাওয়ার সাপ্লাই সার্কিট হল ট্রান্সফরমার। সাধারণভাবে, লক সার্কিট একটি 12-ভোল্ট, 2.8-Ah ব্যাটারি দ্বারা চালিত হয়। এবং পাওয়ার সাপ্লাই সার্কিট তার নামমাত্র স্তরে ব্যাটারি বজায় রাখে। পাওয়ার LED বিদ্যুৎ সরবরাহের স্বাভাবিক অপারেশন নির্দেশ করে।

সমস্ত ডায়োড হল 1N4007 (আমি ডায়াগ্রামে নির্দেশ করতে ভুলে গেছি, এবং ব্যক্তি একটি প্রশ্ন জিজ্ঞাসা করেছেন - কোনটি?)।

(1) একটি সর্বোচ্চ বর্তমান সীমাবদ্ধ করা হয়েছে. প্রতিরোধক আর 1 উপরের বর্তমান থ্রেশহোল্ড 300 mA এ সেট করা হয়েছে।
অবিচ্ছেদ্য স্টেবিলাইজার LM317-এ (2) ভোল্টেজ স্টেবিলাইজার একত্রিত। স্থিতিশীলতা ভোল্টেজ একটি প্রতিরোধক দ্বারা সামঞ্জস্য করা হয়আর 2 . ব্যাটারির ভোল্টেজ 13.7 ভোল্ট হওয়া উচিত।

ব্যাটারি থেকে ভোল্টেজ তিনটি পয়েন্টে সরবরাহ করা হয়।
প্রতিরোধকের মাধ্যমে (33-ওহম প্রতিটি) অন (এক্স), (ওয়াই) - "মেশিন" মোটরের "ড্রাইভার" কীগুলির বাহুতে পাওয়ার সাপ্লাই।

যা হাতে এসেছে তা থেকে আমি আমার বেশিরভাগ ডিভাইস একত্রিত করি। এই প্রকল্পটি ব্যতিক্রম নয়। একটি আবাসন হিসাবে আমি হাউজিং ব্যবহার করি :) ইলেকট্রনিক ব্যালাস্ট থেকে:

LEDs No.-2... No.-7 দুই রঙের। তারা একটি লাইনে অবস্থিত। লকটি "খোলা" এবং "বন্ধ" করার প্রক্রিয়াগুলি কল্পনা করতে ব্যবহৃত হয়। শোভা।

এই পাঠে আমরা শিখব কিভাবে করতে হয় সহজ সিস্টেম, যা একটি ইলেকট্রনিক কী (ট্যাগ) ব্যবহার করে লকটি আনলক করবে।

ভবিষ্যতে, আপনি কার্যকারিতা পরিমার্জন এবং প্রসারিত করতে পারেন। উদাহরণস্বরূপ, ফাংশন যোগ করুন "নতুন কী যোগ করা এবং মেমরি থেকে অপসারণ করা।" বেস ক্ষেত্রে, আসুন একটি সাধারণ উদাহরণ বিবেচনা করি যেখানে প্রোগ্রাম কোডে একটি অনন্য কী শনাক্তকারী প্রি-সেট করা আছে।

এই টিউটোরিয়ালে আমাদের প্রয়োজন হবে:

প্রকল্পটি বাস্তবায়ন করতে আমাদের লাইব্রেরিগুলি ইনস্টল করতে হবে:

2) এখন আপনাকে একটি Buzzer সংযোগ করতে হবে, যা একটি সংকেত শোনাবে যদি চাবিটি কাজ করে এবং লকটি খোলে, এবং লকটি বন্ধ হয়ে গেলে একটি দ্বিতীয় সংকেত।

আমরা নিম্নলিখিত ক্রমানুসারে বুজার সংযোগ করি:

আরডুইনো বুজার
5V ভিসিসি
জিএনডি জিএনডি
পিন 5 আইও

3) একটি সার্ভো ড্রাইভ আনলকিং প্রক্রিয়া হিসাবে ব্যবহার করা হবে। আপনার প্রয়োজনীয় আকার এবং সার্ভো ড্রাইভ যে শক্তি তৈরি করে তার উপর নির্ভর করে যেকোন সার্ভো ড্রাইভ নির্বাচন করা যেতে পারে। সার্ভোর 3টি পরিচিতি রয়েছে:

নীচের ছবিতে আমরা কীভাবে সমস্ত মডিউল সংযুক্ত করেছি তা আপনি আরও স্পষ্টভাবে দেখতে পারেন:

এখন, সবকিছু সংযুক্ত থাকলে, আপনি প্রোগ্রামিং এ এগিয়ে যেতে পারেন।

স্কেচ:

#অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত // "RFID" লাইব্রেরি। # সংজ্ঞায়িত করুন SS_PIN 10 # সংজ্ঞায়িত করুন RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); স্বাক্ষরবিহীন দীর্ঘ uidDec, uidDecTemp; // দশমিক বিন্যাসে ট্যাগ নম্বর সংরক্ষণ করতে সার্ভো সার্ভো; void সেটআপ() ( Serial.begin(9600); Serial.println("কার্ডের জন্য অপেক্ষা করছে..."); SPI.begin(); // SPI আরম্ভ / Init SPI বাস। mfrc522.PCD_Init(); // আরম্ভ MFRC522 / Init MFRC522 কার্ড। servo.attach(6); servo.write(0); // একটি বন্ধ অবস্থায় servo সেট করুন ) void loop() ( // একটি নতুন লেবেল অনুসন্ধান করুন যদি (! mfrc522.PICC_IsNewCardPresent() ) ( ফেরত; ) // একটি লেবেল নির্বাচন করুন যদি (! mfrc522.PICC_ReadCardSerial()) ( ফেরত; ) uidDec = 0; // আউটপুট ক্রমিক সংখ্যাট্যাগ. জন্য (বাইট i = 0; i< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

আসুন আরও বিশদে স্কেচটি দেখি:

কার্ডের ইউআইডি (ট্যাগ) খুঁজে বের করার জন্য, আপনাকে এই স্কেচটি আরডুইনোতে লিখতে হবে, উপরে বর্ণিত সার্কিটটি একত্রিত করতে হবে এবং কনসোল খুলতে হবে (সিরিয়াল পোর্ট মনিটরিং)। আপনি যখন RFID ট্যাগ স্পর্শ করবেন, কনসোল একটি সংখ্যা প্রদর্শন করবে

ফলস্বরূপ UID অবশ্যই নিম্নলিখিত লাইনে প্রবেশ করাতে হবে:

যদি (uidDec == 3763966293) // ট্যাগের Uid তুলনা করুন, যদি এটি প্রদত্ত একের সমান হয়, তাহলে সার্ভো ড্রাইভ ভালভটি খুলে দেয়।

প্রতিটি কার্ডের একটি অনন্য শনাক্তকারী রয়েছে এবং এটি পুনরাবৃত্তি হয় না। এইভাবে, যখন আপনি কার্ডটি উপস্থাপন করেন যার সনাক্তকারী আপনি প্রোগ্রামে সেট করেছেন, সিস্টেমটি একটি সার্ভো ড্রাইভ ব্যবহার করে অ্যাক্সেস খুলবে।

ভিডিও:

আজকের পাঠটি একটি সাধারণ লকিং সিস্টেম তৈরি করতে Arduino-এর সাথে একটি RFID রিডার কীভাবে ব্যবহার করতে হয়, সহজ কথায়- RFID লক।

RFID (ইংরেজি রেডিও ফ্রিকোয়েন্সি আইডেন্টিফিকেশন, রেডিও ফ্রিকোয়েন্সি আইডেন্টিফিকেশন) হল বস্তুর স্বয়ংক্রিয় শনাক্তকরণের একটি পদ্ধতি যেখানে তথাকথিত ট্রান্সপন্ডার, বা RFID ট্যাগগুলিতে সংরক্ষিত ডেটা রেডিও সংকেত ব্যবহার করে পড়া বা লেখা হয়। যেকোনো RFID সিস্টেমে একটি রিডিং ডিভাইস (রিডার, রিডার বা প্রশ্নকর্তা) এবং একটি ট্রান্সপন্ডার থাকে (আরএফআইডি ট্যাগ নামেও পরিচিত, কখনও কখনও RFID ট্যাগ শব্দটিও ব্যবহৃত হয়)।

এই টিউটোরিয়ালটি Arduino এর সাথে একটি RFID ট্যাগ ব্যবহার করবে। ডিভাইসটি প্রতিটি RFID ট্যাগের অনন্য শনাক্তকারী (UID) পড়ে যা আমরা রিডারের পাশে রাখি এবং এটি OLED ডিসপ্লেতে প্রদর্শন করে। যদি ট্যাগের UID পূর্বনির্ধারিত মানের সমান হয় যা Arduino মেমরিতে সংরক্ষিত থাকে, তাহলে আমরা ডিসপ্লেতে "Unlocked" বার্তা দেখতে পাব। যদি অনন্য আইডি পূর্বনির্ধারিত মানের সমান না হয়, তাহলে "আনলকড" বার্তাটি প্রদর্শিত হবে না - নীচের ছবি দেখুন।

দুর্গ বন্ধ

তালা খোলা

এই প্রকল্পটি তৈরি করতে প্রয়োজনীয় অংশগুলি:

  • RFID রিডার RC522
  • OLED ডিসপ্লে
  • রুটি বোর্ড
  • তার

অতিরিক্ত তথ্য:

  • ব্যাটারি (পাওয়ারব্যাঙ্ক)

প্রকল্পের উপাদানগুলির মোট খরচ ছিল প্রায় $15।

ধাপ 2: RFID রিডার RC522

প্রতিটি RFID ট্যাগে একটি ছোট চিপ থাকে (ছবিতে দেখানো সাদা কার্ড)। আপনি যদি এই RFID কার্ডে একটি ফ্ল্যাশলাইট জ্বালিয়ে দেন, আপনি দেখতে পাবেন ছোট চিপ এবং এর চারপাশে থাকা কয়েল। এই চিপে পাওয়ার জেনারেট করার জন্য ব্যাটারি নেই। এটি এই বৃহৎ কয়েল ব্যবহার করে তারবিহীনভাবে পাঠকের কাছ থেকে শক্তি গ্রহণ করে। 20 মিমি দূর থেকে এইরকম একটি RFID কার্ড পড়া সম্ভব।

একই চিপ RFID কী fob ট্যাগেও বিদ্যমান।

প্রতিটি RFID ট্যাগের একটি অনন্য নম্বর থাকে যা এটি সনাক্ত করে। এটি সেই UID যা OLED ডিসপ্লেতে দেখানো হয়। এই UID ব্যতীত, প্রতিটি ট্যাগ ডেটা সংরক্ষণ করতে পারে। এই ধরনের কার্ডে 1 হাজার পর্যন্ত ডেটা সংরক্ষণ করা যায়। চিত্তাকর্ষক, তাই না? এই বৈশিষ্ট্য আজ ব্যবহার করা হবে না. আজ, আগ্রহের বিষয় হল তার UID দ্বারা একটি নির্দিষ্ট কার্ড সনাক্ত করা। RFID রিডার এবং এই দুটি RFID কার্ডের দাম প্রায় $4।

ধাপ 3: OLED ডিসপ্লে

পাঠটি একটি 0.96" 128x64 I2C OLED মনিটর ব্যবহার করে৷

এটি Arduino এর সাথে ব্যবহার করার জন্য একটি খুব ভাল ডিসপ্লে। এটি একটি OLED ডিসপ্লে এবং এর মানে এটিতে কম পাওয়ার খরচ রয়েছে। এই ডিসপ্লের পাওয়ার খরচ প্রায় 10-20mA এবং এটি পিক্সেল সংখ্যার উপর নির্ভর করে।

ডিসপ্লেটির রেজোলিউশন 128 বাই 64 পিক্সেল এবং আকারে ছোট। দুটি ডিসপ্লে অপশন আছে। তাদের মধ্যে একটি একরঙা, এবং অন্যটি, পাঠে ব্যবহৃত একটির মতো, দুটি রঙ প্রদর্শন করতে পারে: হলুদ এবং নীল। স্ক্রিনের উপরের অংশটি কেবল হলুদ হতে পারে এবং নীচের অংশটি কেবল নীল হতে পারে।

এই OLED ডিসপ্লেটি খুব উজ্জ্বল এবং একটি দুর্দান্ত এবং খুব সুন্দর লাইব্রেরি রয়েছে যা অ্যাডাফ্রুট এই ডিসপ্লের জন্য তৈরি করেছে। এটি ছাড়াও, ডিসপ্লেটি একটি I2C ইন্টারফেস ব্যবহার করে, তাই Arduino এর সাথে সংযোগ করা অবিশ্বাস্যভাবে সহজ।

Vcc এবং GND ছাড়া আপনাকে শুধুমাত্র দুটি তারের সংযোগ করতে হবে। আপনি যদি আরডুইনোতে নতুন হন এবং আপনার প্রকল্পে একটি সস্তা এবং সহজ ডিসপ্লে ব্যবহার করতে চান, তাহলে এখানে শুরু করুন।

ধাপ 4: সমস্ত অংশ সংযুক্ত করা হচ্ছে

Arduino Uno বোর্ডের সাথে যোগাযোগ খুবই সহজ। প্রথমে রিডার এবং ডিসপ্লে উভয়ের সাথে পাওয়ার সংযোগ করা যাক।

সতর্কতা অবলম্বন করুন, আরএফআইডি রিডার অবশ্যই Arduino Uno থেকে 3.3V আউটপুটের সাথে সংযুক্ত থাকতে হবে বা এটি ক্ষতিগ্রস্ত হবে।

যেহেতু ডিসপ্লেটি 3.3V এও কাজ করতে পারে, তাই আমরা উভয় মডিউল থেকে VCC কে ব্রেডবোর্ডের পজিটিভ রেলের সাথে সংযুক্ত করি। এই বাসটি তখন Arduino Uno থেকে 3.3V আউটপুটের সাথে সংযুক্ত হয়। তারপরে আমরা উভয় গ্রাউন্ড (GND) কে ব্রেডবোর্ড গ্রাউন্ডিং বাসের সাথে সংযুক্ত করি। তারপরে আমরা ব্রেডবোর্ড GND বাসটিকে Arduino GND এর সাথে সংযুক্ত করি।

OLED ডিসপ্লে → Arduino

SCL → এনালগ পিন 5

SDA → এনালগ পিন 4

RFID রিডার → Arduino

আরএসটি → ডিজিটাল পিন 9

IRQ → সংযুক্ত নয়

MISO → ডিজিটাল পিন 12

MOSI → ডিজিটাল পিন 11

SCK → ডিজিটাল পিন 13

SDA → ডিজিটাল পিন 10

আরএফআইডি রিডার মডিউল আরডুইনোর সাথে যোগাযোগ করতে SPI ইন্টারফেস ব্যবহার করে। তাই আমরা Arduino UNO থেকে হার্ডওয়্যার SPI পিন ব্যবহার করতে যাচ্ছি।

আরএসটি পিন ডিজিটাল পিন 9 এ যায়। আইআরকিউ পিনটি সংযোগ বিচ্ছিন্ন থাকে। MISO পিন ডিজিটাল পিন 12-এ যায়। MOSI পিন ডিজিটাল পিন 11-এ যায়। SCK পিন ডিজিটাল পিন 13-এ যায় এবং অবশেষে SDA পিন ডিজিটাল পিন 10-এ যায়। এটাই।

RFID রিডার সংযুক্ত আছে। এখন আমাদের I2C ইন্টারফেস ব্যবহার করে আরডুইনোতে OLED ডিসপ্লে সংযোগ করতে হবে। তাই ডিসপ্লেতে থাকা SCL পিনটি পিন 5 এর এনালগ পিনে যায় এবং ডিসপ্লেতে থাকা SDA পিনটি এনালগ পিন 4-এ যায়। এখন যদি আমরা প্রজেক্ট চালু করি এবং রিডারের কাছে RFID কার্ড রাখি, আমরা দেখতে পাব যে প্রকল্পটি ভাল কাজ করছে।

ধাপ 5: প্রকল্প কোড

প্রকল্প কোড কম্পাইল করার জন্য, আমাদের কিছু লাইব্রেরি অন্তর্ভুক্ত করতে হবে। প্রথমত, আমাদের MFRC522 Rfid লাইব্রেরি দরকার।

এটি ইনস্টল করতে, যান স্কেচ -> লাইব্রেরি অন্তর্ভুক্ত করুন -> লাইব্রেরি পরিচালনা করুন(লাইব্রেরি ব্যবস্থাপনা)। MFRC522 খুঁজুন এবং এটি ইনস্টল করুন।

প্রদর্শনের জন্য আমাদের Adafruit SSD1306 লাইব্রেরি এবং Adafruit GFX লাইব্রেরিও প্রয়োজন৷

উভয় লাইব্রেরি ইনস্টল করুন. Adafruit SSD1306 লাইব্রেরির একটু পরিবর্তন প্রয়োজন। ফোল্ডারে যান আরডুইনো -> লাইব্রেরি, Adafruit SSD1306 ফোল্ডার খুলুন এবং লাইব্রেরি সম্পাদনা করুন Adafruit_SSD1306.h. কমেন্ট আউট লাইন 70 এবং uncomment লাইন 69 কারণ ডিসপ্লেটির রেজোলিউশন 128x64।

প্রথমে আমরা আরএফআইডি ট্যাগের মান ঘোষণা করি যা আরডুইনোকে চিনতে হবে। এটি পূর্ণসংখ্যার একটি অ্যারে:

int কোড = (69,141,8,136); // ইউআইডি

তারপরে আমরা আরএফআইডি রিডার শুরু করি এবং প্রদর্শন করি:

Rfid.PCD_Init(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

এর পরে, লুপ ফাংশনে আমরা প্রতি 100 মিসেলে রিডারের ট্যাগটি পরীক্ষা করি।

যদি রিডারে একটি ট্যাগ থাকে, আমরা তার UID পড়ি এবং ডিসপ্লেতে প্রিন্ট করি। তারপরে আমরা কোড ভেরিয়েবলে সংরক্ষিত মানের সাথে যে ট্যাগটি পড়ি তার UID তুলনা করি। মান একই হলে, আমরা আনলক বার্তা প্রদর্শন করব, অন্যথায় আমরা এই বার্তাটি প্রদর্শন করব না।

যদি(মিলে) ( Serial.println("\nআমি এই কার্ডটি জানি!"); printUnlockMessage(); )অন্যথা ( Serial.println("\nঅজানা কার্ড");)

অবশ্যই, আপনি 1টির বেশি UID মান সংরক্ষণ করতে এই কোডটি পরিবর্তন করতে পারেন যাতে প্রকল্পটি আরও RFID ট্যাগকে স্বীকৃতি দেয়। এইটা শুধুমাত্র একটা উদাহরণ.

প্রকল্পের কোড:

#অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত # OLED_RESET 4 Adafruit_SSD1306 প্রদর্শন (OLED_RESET) সংজ্ঞায়িত করুন; # সংজ্ঞায়িত করুন SS_PIN 10 # RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN) সংজ্ঞায়িত করুন; // MFRC522 ক্লাসের উদাহরণ::MIFARE_Key কী; int কোড = (69,141,8,136); //এটি সংরক্ষিত UID int codeRead = 0; স্ট্রিং uidString; void সেটআপ() ( Serial.begin(9600); SPI.begin(); // Init SPI বাস rfid.PCD_Init(); // Init MFRC522 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // I2C addr 0x3D দিয়ে শুরু করুন (128x64 এর জন্য) // বাফারটি সাফ করুন। display.clearDisplay(); display.display(); display.setTextColor(WHITE); // অথবা কালো); display.setTextSize(2); display.setCursor(10,0); display.print("RFID লক"); display.display(); ) void loop() ( if(rfid.PICC_IsNewCardPresent()) ( readRFID(); ) বিলম্ব(100); ) void readRFID() ( rfid.PICC_ReadCardSerial(); Serial.print(F("\nPICC প্রকার: ") ); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); // চেক হল PICC ক্লাসিক MIFARE টাইপের যদি (picc2MICFARE:_2MFPIType:_2MFPIType:_2 && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) ( Serial.println(F("আপনার ট্যাগটি MIFARE ক্লাসিকের নয়।")); রিটার্ন; () . স্ক্যান করা PICC's UID:"); printDec(rfid.uid.uidByte, rfid.uid.size); uidString = String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+ স্ট্রিং(rfid.uid.uidByte)+ " "+String(rfid.uid.uidByte); printUID(); int i = 0; বুলিয়ান ম্যাচ = সত্য; যখন(i

ধাপ 6: চূড়ান্ত ফলাফল

আপনি পাঠ থেকে দেখতে পাচ্ছেন, অল্প অর্থের জন্য আপনি আপনার প্রকল্পগুলিতে একটি RFID পাঠক যোগ করতে পারেন। আপনি এই রিডার ব্যবহার করে সহজেই একটি সুরক্ষা সিস্টেম তৈরি করতে পারেন বা আরও আকর্ষণীয় প্রকল্প তৈরি করতে পারেন, উদাহরণস্বরূপ, যাতে একটি USB ড্রাইভ থেকে ডেটা আনলক করার পরেই পড়া হয়৷

বিষয়ে প্রকাশনা