সুচিপত্র:

Arduino High Tech নিরাপদ: 6 টি ধাপ
Arduino High Tech নিরাপদ: 6 টি ধাপ

ভিডিও: Arduino High Tech নিরাপদ: 6 টি ধাপ

ভিডিও: Arduino High Tech নিরাপদ: 6 টি ধাপ
ভিডিও: গরুটা সাথে কি হয়েছে #shorts #wildlifebd 2024, নভেম্বর
Anonim
আরডুইনো হাই টেক নিরাপদ
আরডুইনো হাই টেক নিরাপদ

এটি আমার আরডুইনো উচ্চ প্রযুক্তির নিরাপদ। আপনাকে আপনার আঙুল স্ক্যান করতে হবে, আপনার কার্ডটি স্ক্যান করতে হবে, তারপর ড্রয়ারটি আনলক করতে 4 ডিজিটের পাসওয়ার্ড লিখুন। এই প্রকল্পটি নতুনদের জন্য সুপারিশ করা হয় না কারণ এটি খুব উন্নত। কোডটি দীর্ঘ, তবে আমি এই প্রকল্পে এটি ভাগ করব। যদি আপনি আমার মতো একই নিরাপদ তৈরি করেন তবে খরচ প্রায় $ 75। এই প্রকল্পটি সম্পন্ন হতে 1-3 দিনও লাগতে পারে। চল শুরু করা যাক!

সরবরাহ

আমার মতো একই নিরাপদ নির্মাণ করতে আপনার প্রয়োজন হবে:

Arduino (Uno প্রস্তাবিত কারণ আমার arduino মেগা বা ন্যানোর জন্য ধাপ নেই। কিন্তু আপনি এখনও সেগুলি ব্যবহার করতে পারেন)

রুটিবোর্ড

servo

জাম্পার তার

জয়স্টিক

20*4 (আপনি 16*4 ব্যবহার করতে পারেন, কিন্তু আপনাকে কোড পরিবর্তন করতে হবে)

ফিঙ্গারপ্রিন্ট স্ক্যানার

mfrc522 rfid কার্ড স্ক্যানার

এক বালতি লেগোস

ধাপ 1: একটি বাক্স তৈরি করা

একটি বাক্স নির্মাণ
একটি বাক্স নির্মাণ

আপনার ইলেকট্রনিক্স রাখার জন্য প্রথমে আপনার একটি বাক্সের প্রয়োজন হবে। আপনি লেগোস, একটি 3 ডি প্রিন্টেড বক্স, এমনকি কার্ডবোর্ড ব্যবহার করতে পারেন! (যদিও এটি কঠিন হতে পারে) একটি ড্রয়ারের জন্য এবং আপনার ইলেকট্রনিক্সের জন্য এতে ছিদ্র রাখতে ভুলবেন না। আপনি যদি আরএফআইডি কার্ড স্ক্যানার ব্যবহার করেন, তাহলে আপনার দেয়াল পাতলা হলে আপনাকে এর জন্য গর্ত করার দরকার নেই। কার্ডগুলি এখনও কাজ করে, তবে আপনাকে কীচেন বন্ধ করতে হবে যাতে আরএফআইডি কার্ড সেনর সেগুলি পড়তে পারে। আপনার আরডুইনো এবং তারের ভিতরেও জায়গা ছেড়ে দিন। দ্রষ্টব্য: যখন আপনি ড্রয়ারটি তৈরি করবেন, এতে একটি ছিদ্র রেখে দিন যাতে আপনার সার্ভোটি ড্রয়ারটি চালু এবং লক করতে পারে।

ধাপ 2: ওয়্যারিং আপ

ওয়্যারিং আপ!
ওয়্যারিং আপ!

এই পদক্ষেপটি জটিল হতে পারে কারণ আপনাকে সঠিক স্থানে তারের প্লাগ লাগাতে হবে বা ইলেকট্রনিক্স কাজ করবে না। আমার ওয়্যারিং ডায়াগ্রাম নেই, কিন্তু আমি বলব প্রত্যেকটি যাবে। ওয়্যারিং শুধুমাত্র arduino uno এর জন্য। আপনি যদি arduino মেগা বা ন্যানো ব্যবহার করেন তবে তারগুলি লাগাতে হবে। আপনি যদি আমার সমস্ত ইলেকট্রনিস ব্যবহার না করেন তবে আপনি কেবল তারটি এড়িয়ে যেতে পারেন।

ফিঙ্গার প্রিন্ট স্ক্যানার: সবুজ তারের: D2 সাদা তারের: D3 কালো তারের: GND লাল তারের: 5V

জয়স্টিক: 5V = 3.3V GND = GND X = A2 Y = A3 সুইচ = D4

rfid কার্ড স্ক্যানার: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

এলসিডি স্ক্রিন: 5V = 5V GND = GND sda = A4 sck = A5

Servo: লাল তার: 5V বাদামী তারের: GND হলুদ তারের: D6

দ্রষ্টব্য: আরভিআইডি কার্ড স্ক্যানারকে 5V এ প্লাগ করবেন না। যদি আপনি করেন, এটি বিরতি হবে !!!

আপনি হয়তো ভাবছেন যে কেন আমি জয়স্টিক পাওয়ারকে 3.3V এ প্লাগ করতে বললাম যখন এটি 5V বলে। কারণ সার্ভো, স্ক্রিন এবং ফিঙ্গারপ্রিন্ট স্ক্যানারের 5V প্রয়োজন। আপনি যদি জয়স্টিক যোগ করেন, ইলেকট্রনিক্স কাজ নাও করতে পারে কারণ সবকিছুর 5V প্রয়োজন। জয়স্টিক এখনও 3.3V দিয়ে কাজ করবে। এটা শুধু সর্বোচ্চ মান 1023 হবে না, এটি ~ 670 হবে।

ধাপ 3: লাইব্রেরি ডাউনলোড করা

এই প্রকল্পে, সমস্ত ইলেকট্রনিক্স ব্যবহার করার জন্য আপনার 6 টি লাইব্রেরির প্রয়োজন হবে। সার্ভোর জন্য 1, ফিঙ্গারপ্রিন্ট সেন্সরের জন্য 1, আরএফআইডি কার্ড স্ক্যানারের জন্য 2 এবং স্ক্রিনের জন্য 2। জয়স্টিকের লাইব্রেরির প্রয়োজন নেই। এখন, একটি লাইব্রেরি কি? এটি মূলত একটি ফাইল যা প্রচুর কোড ধারণ করে যা আপনি আপনার প্রকল্পে সাধারণ কমান্ড দিয়ে ব্যবহার করতে পারেন। এই লাইব্রেরিগুলি পেতে, আপনাকে গিটহাব নামে একটি জায়গায় যেতে হবে। আপনি যদি লাইব্রেরিগুলি ডাউনলোড এবং আনজিপ করতে জানেন তবে ডাউনলোডের জন্য নীচের লিঙ্কগুলিতে যান। যদি আপনি জানেন না কিভাবে, আপনি আমার নির্দেশে যেতে পারেন যা ধাপ 3 এ লাইব্রেরি ডাউনলোড করার বিষয়ে কথা বলে:

অথবা GitHub থেকে কিভাবে একটি arduino লাইব্রেরি ডাউনলোড করবেন তার একটি ইউটিউব ভিডিও সার্চ করুন

লিরিয়ারের লিঙ্ক:

Servo

ফিঙ্গারপ্রিন্ট সেন্সর:

spi

rfid কার্ড সেন্সর

স্ক্রিন লাইব্রেরি 1

স্ক্রিন লাইব্রেরি 2

ধাপ 4: ফিঙ্গারপ্রিন্ট সেন্সর এবং Rfid কার্ড সেন্সর সেট আপ করা

এই ধাপে ফিঙ্গারপ্রিন্ট সেন্সর এবং আরএফআইডি কার্ড সেন্সর সেট আপ করার বিষয়ে আলোচনা করা হয়েছে। যদি না আপনি ইতিমধ্যেই আপনার ফিঙ্গারপ্রিন্ট সেন্সর ব্যবহার করে থাকেন, তাহলে আপনাকে এটি দেখাতে হবে যে আপনার ফিঙ্গারপ্রিন্ট কেমন দেখায় যাতে এটি তার স্মৃতিতে সংরক্ষণ করতে পারে। এমনকি যদি আপনি এটি আগে ব্যবহার করে থাকেন, তবুও আপনার সম্ভবত এই পদক্ষেপটি করা উচিত। আমি আপনাকে বলব কিভাবে এটি সংক্ষিপ্তভাবে করতে হয়, কিন্তু যদি এটি অর্থপূর্ণ না হয় তবে শেষ ধাপে একই নির্দেশযোগ্য লিঙ্কে যান। এটি খুব ভালভাবে চলে যায়। বেসিক শুধু আরডুইনো আইডিয়া খুলুন। ফাইল> উদাহরণ> অ্যাডাফ্রুট ফিঙ্গারপ্রিন্ট সেন্সর> তালিকাভুক্তিতে যান। আরডুইনোতে কোড আপলোড করুন, সিরিয়াল মনিটর খুলুন এবং এটি আপনাকে যে পদক্ষেপগুলি বলে তা অনুসরণ করুন। যখন এটি আপনাকে একটি নম্বর দিতে বলে। 1#টাইপ করুন।

এখন আরএফআইডি কার্ডের জন্য, এই পদক্ষেপটি বেশ সহজ। আরডুইনো আইডি খুলুন। ফাইল> উদাহরণ> mfrc522> ব্যক্তিগত ডেটা পড়ুন। আরডুইনোতে আপলোড করুন এবং সিরিয়াল মনিটর খুলুন। আপনার সেন্সরের সাথে আসা কার্ড বা কীচেনটি আপনি ব্যবহার করতে চান তা স্ক্যান করুন। তাহলে এটি আপনাকে কিছু তথ্য দেবে। কার্ডের আইডি দেখুন এটি 2 ডিজিটের 4 সেট হবে। এইরকম কিছু: AB 45 2Y 45 কিন্তু আপনার কোড ভিন্ন হবে। এটি একটি কাগজে লিখুন। পরে আবার প্রয়োজন হবে। এই পদক্ষেপের জন্য এটিই।

ধাপ 5: কোড

এটি আপনার বেশিরভাগের জন্য সবচেয়ে কঠিন পদক্ষেপ হতে চলেছে, তবে এটি বেশ সহজ। প্রথমে নিচের থেকে আরডুইনো আইডিতে কোডটি কপি করে পেস্ট করুন। দ্বিতীয়ত, 2 টি বিভাগ সম্পাদনা করুন যেখানে কোড সম্পাদনা করুন। ১ টি বিভাগ কার্ড স্ক্যানারের জন্য, ১ টি জয়স্টিকের জন্য। এই পদক্ষেপগুলি এড়িয়ে যাওয়া যাবে না। একবার হয়ে গেলে, আরডুইনোতে কোড আপলোড করুন!

#অন্তর্ভুক্ত #অন্তর্ভুক্ত আঙুলের ছাপ। h>

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

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

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

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

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#RST_PIN 9 নির্ধারণ করুন

#SS_PIN 10 নির্ধারণ করুন

MFRC522 mfrc522 (SS_PIN, RST_PIN);

সফটওয়্যার সিরিয়াল মাই সিরিয়াল (2, 3);

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

Servo servo;

char d1;

char d2;

char d3;

char d4;

অকার্যকর সেটআপ(){

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

যখন (! সিরিয়াল);

SPI.begin ();

mfrc522. PCD_Init ();

বিলম্ব (4);

mfrc522. PCD_DumpVersionToSerial ();

বিলম্ব (100);

Serial.println ("\ n / n অ্যাডাফ্রুট ফিঙ্গার ডিটেক্ট টেস্ট");

আঙুল। শুরু (57600);

বিলম্ব (5);

যদি (finger.verifyPassword ()) {

Serial.println ("সমস্ত সিস্টেম কাজ করছে,");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("দয়া করে আঙুল স্ক্যান করুন");

} অন্য {

Serial.println ("ত্রুটি: ফিঙ্গার প্রিন্ট সেন্সর পাওয়া যায়নি!");

lcd.setCursor (0, 0);

lcd.print ("ত্রুটি: ফিঙ্গার প্রিন্ট");

lcd.setCursor (1, 1);

lcd.print ("সেন্সর পাওয়া যায়নি!");

যখন (1) {বিলম্ব (1); }

}

finger.getTemplateCount ();

সিরিয়াল.প্রিন্ট ("সেন্সর রয়েছে"); Serial.print (finger.templateCount); Serial.println ("টেমপ্লেট"); Serial.println ("বৈধ আঙ্গুলের জন্য অপেক্ষা করছে …"); }

অকার্যকর (* resetFunc) (অকার্যকর) = 0;

অকার্যকর লুপ () {

getFingerprintIDez ();

বিলম্ব (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

সুইচ (পি) {

কেস FINGERPRINT_OK:

Serial.println ("ছবি তোলা");

বিরতি;

কেস FINGERPRINT_NOFINGER:

Serial.println ("কোন আঙুল সনাক্ত করা হয়নি");

রিটার্ন পি;

কেস FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("যোগাযোগের ত্রুটি");

রিটার্ন পি;

কেস FINGERPRINT_IMAGEFAIL:

Serial.println ("ইমেজিং ত্রুটি");

রিটার্ন পি;

ডিফল্ট:

Serial.println ("অজানা ত্রুটি");

রিটার্ন পি;

}

পি = আঙুল। চিত্র 2Tz ();

সুইচ (পি) {

কেস FINGERPRINT_OK:

Serial.println ("চিত্র রূপান্তরিত");

বিরতি;

কেস FINGERPRINT_IMAGEMESS:

Serial.println ("ছবিটি খুব অগোছালো");

রিটার্ন পি;

কেস FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("যোগাযোগের ত্রুটি");

রিটার্ন পি;

কেস FINGERPRINT_FEATUREFAIL:

Serial.println ("আঙুলের ছাপ বৈশিষ্ট্য খুঁজে পাওয়া যায়নি");

রিটার্ন পি;

কেস FINGERPRINT_INVALIDIMAGE:

Serial.println ("আঙুলের ছাপ বৈশিষ্ট্য খুঁজে পাওয়া যায়নি");

রিটার্ন পি;

ডিফল্ট:

Serial.println ("অজানা ত্রুটি");

রিটার্ন পি;

}

p = finger.fingerFastSearch ();

যদি (p == FINGERPRINT_OK) {

Serial.println ("একটি প্রিন্ট ম্যাচ পাওয়া গেছে!");

} অন্যথায় যদি (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("যোগাযোগের ত্রুটি");

রিটার্ন পি;

} অন্যথায় যদি (p == FINGERPRINT_NOTFOUND) {

Serial.println ("একটি মিল খুঁজে পাইনি");

রিটার্ন পি;

} অন্য {

Serial.println ("অজানা ত্রুটি");

রিটার্ন পি;

}

সিরিয়াল.প্রিন্ট ("পাওয়া আইডি #"); সিরিয়াল.প্রিন্ট (আঙুল। আঙুলের আইডি);

সিরিয়াল.প্রিন্ট ("আত্মবিশ্বাসের সাথে"); Serial.println (আঙুল। আত্মবিশ্বাস);

ফিঙ্গার ফিঙ্গার আইডি;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

যদি (p! = FINGERPRINT_OK) রিটার্ন -1;

পি = আঙুল। চিত্র 2Tz ();

যদি (p! = FINGERPRINT_OK) রিটার্ন -1;

p = finger.fingerFastSearch ();

যদি (p! = FINGERPRINT_OK) রিটার্ন -1;

সিরিয়াল.প্রিন্ট ("পাওয়া আইডি #"); সিরিয়াল.প্রিন্ট (আঙুল। আঙুলের আইডি);

সিরিয়াল.প্রিন্ট ("আত্মবিশ্বাসের সাথে"); Serial.println (আঙুল। আত্মবিশ্বাস);

যদি (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("আঙুল গৃহীত,");

lcd.setCursor (2, 0);

lcd.print ("এখন কার্ড স্ক্যান করুন …");

lcd.setCursor (0, 3);

lcd.print ("=====================");

যখন (! mfrc522. PICC_IsNewCardPresent ());

যখন (! mfrc522. PICC_ReadCardSerial ());

যদি (mfrc522.uid.uidByte [0] == 0x92 && // ========================== কোড সম্পাদনা করুন ======== ================

mfrc522.uid.uidByte [1] == 0xAB এবং

mfrc522.uid.uidByte [2] == 0x90 && // কোডটি দেখুন, দেখুন কোথায় 0x92, 0xAB, 0x90, 0x1c বলে? প্রতিটি লিখুন

mfrc522.uid.uidByte [3] == 0x1C) {// 0x এর পর 2 অঙ্কের বিভাগের। উদাহরণস্বরূপ, আইডির বিভাগটি বলে

lcd.clear (); // 3E, তারপর 0x পরে 3E লিখুন 0x3E করতে। প্রতিটি বিভাগের জন্য এটি করুন

lcd.setCursor (3, 0);

lcd.print ("অবশেষে, প্রবেশ করুন");

lcd.setCursor (1, 1);

lcd.print ("জয়স্টিক পাসওয়ার্ড");

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); যদি (analogRead (A2) <= 100) {

d1 = এল;

}

যদি (analogRead (A2)> = 670) {

d1 = আর;

}

যদি (analogRead (A3) <= 100) {

d1 = ইউ;

}

যদি (analogRead (A3)> = 670) {

d1 = D;

}

বিলম্ব (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

যদি (analogRead (A2) <= 100) {

d2 = এল;

}

যদি (analogRead (A2)> = 670) {

d2 = আর;

}

যদি (analogRead (A3) <= 100) {

d2 = ইউ;

}

যদি (analogRead (A3)> = 670) {

d2 = D;

}

বিলম্ব (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

যদি (analogRead (A2) <= 100) {

d3 = এল;

}

যদি (analogRead (A2)> = 670) {

d3 = আর;

}

যদি (analogRead (A3) <= 100) {

d3 = ইউ;

}

যদি (analogRead (A3)> = 670) {

d3 = D;

}

বিলম্ব (500);

while (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

যদি (analogRead (A2) <= 100) {

d4 = এল;

}

যদি (analogRead (A2)> = 670) {

d4 = আর;

}

যদি (analogRead (A3) <= 100) {

d4 = U;

}

যদি (analogRead (A3)> = 670) {

d4 = D;

}

বিলম্ব (500);

যদি (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= সম্পাদনা কোড ====== ==================

lcd.clear (); // এই বিভাগটি হল আপনি জয়স্টিক দিয়ে পাসওয়ার্ড সম্পাদনা করতে পারেন

lcd.setCursor (2, 0); // পাসওয়ার্ডটি বাম, বাম, ডানদিকে সেট করা আছে। আপনি যদি পরিবর্তন করতে চান

lcd.print ("অ্যাক্সেস মঞ্জুর!"); // এটি, বাম জন্য একটি এল, ডান জন্য আর, আপ জন্য ইউ, অথবা ডি জন্য নিচে কোন জন্য

lcd.setCursor (2, 1); //= চিহ্নের পরে একটি অক্ষর সহ 4 টি বিভাগ।

lcd.print ("ড্রয়ার আনলক।");

lcd.setCursor (2, 2);

lcd.print ("হয়ে গেলে, সরান");

lcd.setCursor (1, 3);

lcd.print ("জয়েস্টিক টু রিলক");

servo.write (90);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("ড্রয়ার লক করা");

বিলম্ব (3000);

resetFunc ();

} অন্য {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("রিস্টার্ট সিস্টেম …");

বিলম্ব (3000);

resetFunc ();

}

} অন্য {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("রিস্টার্ট সিস্টেম …");

বিলম্ব (3000);

resetFunc ();

}

} অন্য {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("রিস্টার্ট সিস্টেম …");

বিলম্ব (3000);

resetFunc ();

}

ফিঙ্গার ফিঙ্গার আইডি; }

ধাপ 6: শেষ করুন

একটা জিনিস আমি আপনাকে বলতে ভুলে গেছি, ভাল 2 টি জিনিস হল যে আমি ছবি তোলার আগে এটি তৈরি করেছি, তাই আমি আপনাকে দেখাতে পারিনি কিভাবে আমি বাক্সটি তৈরি করেছি। অন্যটি হল যে অংশটি বাঁকানো অংশে সার্ভো অংশটি স্ক্রু করার সুপারিশ করা হয়। যদি আপনি তা না করেন, কেউ ড্রয়ারটি লক করার সময় টানতে পারে এবং টুকরোটি টানতে পারে। কিন্তু আপনি এটি স্ক্রু করার আগে, এটি কোথায় লাগাতে হবে তা সঠিক জায়গাটি খুঁজুন কারণ সার্ভো একটি নির্দিষ্ট ডিগ্রীতে পরিণত হয়। অথবা আপনি কেবল কোডে এটি পরিবর্তন করতে পারেন। যদি কিছু ইলেকট্রনিক্স হাস্যকর আচরণ করে, তাহলে আপনি তাদের কারো জন্য 5V পেতে অন্য উপায় খুঁজে পেতে চাইতে পারেন। আমি লক্ষ্য করেছি যখন আমার ফিঙ্গারপ্রিন্ট স্ক্যানার ঝলকানি দেয়, স্ক্রিনটি এর সাথে সামান্য ফ্ল্যাশ করবে এবং সার্ভো শব্দ করবে। যখন servo সরানো, পর্দা ম্লান যেতে হবে। আমি আশা করি আপনি প্রকল্পটি উপভোগ করেছেন! যদি আপনার কোন প্রশ্ন থাকে, তাদের মন্তব্যগুলিতে ছেড়ে দিন। আমি অনেক নির্দেশাবলীতে নেই, কিন্তু আমি যত তাড়াতাড়ি সম্ভব তাদের উত্তর দেব!

প্রস্তাবিত: