Arduino দিয়ে ফিঙ্গারপ্রিন্ট ডোর লক প্রোজেক্ট

Arduino Aditta today28 June, 2020 60 5

Background
share close

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

Micro-controller এরমধ্যে একটি জনপ্রিয় ডিভাইস হলো Arduino । এর সাহায্যে Fingerprint Door Lock বানানো যায়। যেখানে Fingerprint Sensor ব্যবহার করা হয়েছে। তো কথা না বাড়িয়ে প্রজেক্ট টি কিভাবে করতে হয় চলুন তার বিস্তারিত দেখে নেই।

প্রথমেই জেনে নেই আমাদের হার্ডওয়্যার টুলস কি কি লাগবে-

Serial Products Name Quantity
01 Arduino UNO R3 (China) 1p
02 Arduino UNO R3 Transparent 3D Case 1p
03 Fingerprint Recognition Module (AS608) 1p
04 16 x 2 RGB I2C LCD Display 1p
05 DC 12V Solenoid Door Lock 1p
06 5V 1 channel Relay Module 1p
07 12V DC Power Source Adapter for Door Lock 1p
08 9V Rechargeable Battery (Sony 450 mAh) 1p
09 9V Battery Connector with Power Jack 1p
10 Battery Charger 1p
11  Male to Male jumper cables 1 set
12 Wooden Box for Fingerprint Door Lock Project 1p
13 ON/OFF Switch 1p

এবার উপরের হার্ডওয়্যার টুলস গুলাকে Assemble করতে নিচের সাহায্যকারী টুলস লাগবে-

Serial  Products Name Quantity
01 Soldering Iron (40W) 1p
02 Glue Gun 1p
03 Glue Gun Stick 3p
04 Solder Lead Mini 1p
05 Solder Resin 1p
06 Soldering Iron Stand 1p
07 White Scotch Tape 1p

এবার আসি আমাদের যেসব সফটওয়্যার এবং লাইব্রেরী লাগবে-

  1. Arduino IDE 

Library:

  1. Adafruit Fingerprint Sensor Library
  2. Liquid Crystal LCD

এবার চলে আসি আসল কাজে। একে একে দেখে নিবো হার্ড ওয়্যার টুলস এর কানেকশন। 

এথমেই দেখব Arduino UNO এর সাথে Optical Finger Reader এর কানেকশন-

এবার Arduino UNO এর সাথে LCD এর কানেকশন-

 এবার সর্বশেষ কানেকশন Arduino UNO, Relay Module এবং Solenoid lock এর-

উপরের কানেশনগুলা দেখে দেখে করতে পারলে Congratulations আপনি Hardware Assemble-এ সফল হয়েছেন। এবার চলে আসি Software পার্টে।

প্রথমেই আপনি Arduino IDE ওপেন করে New File নিবেন। সেখানে নিচের কোডটি কপি পেষ্ট করে ছেড়ে দিবেন। তবে লাইব্রেরীগুলো অবশ্যই IDE তে Import করে নিবেন। তারপর কোড Compile করবেন। 

#include <Adafruit_Fingerprint.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white

// uncomment this line:

#define mySerial Serial1

// For UNO and others without hardware serial, we must use software serial...

// pin #2 is IN from sensor (GREEN wire)

// pin #3 is OUT from arduino  (WHITE wire)

// comment these two lines if using hardware serial

SoftwareSerial mySerial(2, 3);

LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

bool lastState = -1;

int relay1 = 8;


void setup() {
  pinMode( relay1, OUTPUT);

  digitalWrite(relay1, HIGH);

  lcd.init();

  Serial.begin(9600);

  while (!Serial);  // For Yun/Leo/Micro/Zero/...

  delay(100);

  Serial.println("\n\nAdafruit finger detect test");

  // set the data rate for the sensor serial port

  finger.begin(57600);

  if (finger.verifyPassword()) {

    Serial.println("Found fingerprint sensor!");

  } else {
    Serial.println("Did not find fingerprint sensor :(");

    while (1) {
      delay(1);
    }
  }

  finger.getTemplateCount();

  Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");

  Serial.println("Waiting for valid finger...");

  displayWaitFinger();
}


void loop() {                     // run over and over again
  int id;
  
  id = getFingerprintIDez();

  if ( id == -1 ) {

    if ( lastState == 0) {

      lastState = -1;

      displayInvalidFinger();

      delay(2000);

      displayWaitFinger();
    }
  } else if ( id != -1) {

    digitalWrite(relay1, LOW);

    displayFingerOK();

    delay(2000);

    displayWaitFinger();

    digitalWrite(relay1, HIGH);
  }
  delay(50);            //don't ned to run this at full speed.
}

uint8_t getFingerprintID() {

  uint8_t p = finger.getImage();

  switch (p) {

    case FINGERPRINT_OK:

      Serial.println("Image taken");

      break;

    case FINGERPRINT_NOFINGER:

      Serial.println("No finger detected");

      return p;

    case FINGERPRINT_PACKETRECIEVEERR:

      Serial.println("Communication error");

      return p;

    case FINGERPRINT_IMAGEFAIL:

      Serial.println("Imaging error");

      return p;

    default:

      Serial.println("Unknown error");

      return p;
  }
  // OK success!

  p = finger.image2Tz();

  switch (p) {

    case FINGERPRINT_OK:

      Serial.println("Image converted");

      break;

    case FINGERPRINT_IMAGEMESS:

      Serial.println("Image too messy");

      return p;

    case FINGERPRINT_PACKETRECIEVEERR:

      Serial.println("Communication error");

      return p;

    case FINGERPRINT_FEATUREFAIL:

      Serial.println("Could not find fingerprint features");

      return p;

    case FINGERPRINT_INVALIDIMAGE:

      Serial.println("Could not find fingerprint features");

      return p;

    default:

      Serial.println("Unknown error");

      return p;
  }
  // OK converted!

  p = finger.fingerFastSearch();

  if (p == FINGERPRINT_OK) {

    Serial.println("Found a print match!");

  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {

    Serial.println("Communication error");

    return p;
    
  } else if (p == FINGERPRINT_NOTFOUND) {

    Serial.println("Did not find a match");

    return p;
    
  } else {

    Serial.println("Unknown error");

    return p;
    
  }
  // found a match!

  Serial.print("Found ID #"); Serial.print(finger.fingerID);

  Serial.print(" with confidence of "); Serial.println(finger.confidence);

  return finger.fingerID;
}

// returns -1 if failed, otherwise returns ID #

int getFingerprintIDez() {

  uint8_t p = finger.getImage();

  Serial.println(p);

  if ( p == 0 ) {

    lastState = 0;
  }

  if (p != FINGERPRINT_OK)  return -1;

  p = finger.image2Tz();

  if (p != FINGERPRINT_OK)  return -1;
  
  p = finger.fingerFastSearch();

  if (p != FINGERPRINT_OK)  return -1;

  lastState = 1;

  // found a match!

  Serial.print("Found ID #"); Serial.print(finger.fingerID);

  Serial.print(" with confidence of "); Serial.println(finger.confidence);

  return finger.fingerID;
}

void displayWaitFinger() {
  lcd.clear();

  lcd.backlight();

  lcd.setCursor(0, 0);

  lcd.print("PUT YOUR FINGER");

  lcd.setCursor(0, 1);

  lcd.print("ON THE SCANNER");
}

void displayInvalidFinger() {
  lcd.clear();

  lcd.backlight();

  lcd.setCursor(0, 0);

  lcd.print("FINGER");

  lcd.setCursor(0, 1);

  lcd.print("NOT FOUND!!!");
}

void displayFingerOK() {
  lcd.clear();

  lcd.backlight();

  lcd.setCursor(0, 0);

  lcd.print("WELCOME ");

  lcd.setCursor(0, 1);

  lcd.print("DOOR UNLOCK");
}

এবার কোডটি আপলোড করে দিন। আর Enjoy করতে থাকুন আপনার প্রোজেক্ট টি। 

Written by: Aditta

Tagged as: .

Rate it

Previous post
Cobra - Hack to protect your system

today27 June, 2020

  • 73
close

Java Aditta

জাভা দিয়ে কোনো ফাইল বা ফোল্ডার খুঁজে বের করে তাতে অপারেশন চালানো

ধরুন আপনি নির্দিষ্ট কোনো পাথ এর একটি ফোল্ডারে কাজ করতে চান। হতে পারে সেই ফোল্ডারটি আপনি ডিলিট করবেন, ফোল্ডারটি আসলেই আছে কিনা সেটি নিশ্চিত করবেন, ফোল্ডারের ভিতর আরো কিছু ফোল্ডার ...



Cobra - Hack To Protect Your System

 

 

support@aditta.org

adittacse@aditta.org



Contacts

Support

Follow us