মোশন ডিটেকশন (পি আই আর) No ratings yet.

 

চলুন আজকে একটা ভৌতিক সেন্সর নিয়ে কাজ করি। ভৌতিক কেন কাজ করলেই বুঝবেন। থামেন, থামেন । ভয় পাইয়েন না। ওই রকম কিছুই না . সোজা জিনিস। আসেন এইবার কাজ শুরু করি । পি আই আর সেন্সর, কি করে এইটা দিয়া ? ভাই এইটা দিয়া মোশন ডিটেক্ট করে। PIR-Passive Infra-Red. কোনো কিছু এই সেন্সরের রেডিয়াস এর মধ্যে মুভ করে অর্থাৎ নরাচরা লাফালাফি ঝাপাঝাপি এবং কমান্ডো স্টাইলে খুব আস্তে আস্তে ক্রচিং করলেও এইটা আপনারে আউটপুট দিবে। আর এই সেন্সর হইতেসে তরুণ প্রজাতির সেন্সর তাই এর আবার রক্ত গরম প্রাণী দরকার হয় সেন্স করতে। তো আসলে এইটার সামনে দিয়ে Warm Body মুভ করলেই এইটা সেন্স করবে।
ব্যাসিক PIR বুঝা হয়ে গেছে আশা করি । এর থেকে বেশি অবশ্যই জানতে হবে তবে এখন আর না জানলেও হবে। এর থেকে বেশি জানার জন্য অবশ্যই Google এ সার্চ দিবেন সেখানে দিটেইল দেয়া আছে এবং সময় হলে কোন সেন্সর কিভাবে কাজ করে সেইগুলো ও বাংলা রোবটিক্স এ দেয়া হবে। ততদিন আপনার জন্য Google ই সব।

যা যা লাগবে…………
১ টি আরডুইনো
১ টি PIR Sensor
ব্রেডবোর্ড
কিছু জাম্পার ওয়্যার
১ টা এল ই ডি

PIR কানেকশন………

PIR GND - Arduino GND
PIR VCC – Arduino 5V
PIR OUT – Arduino port 6.


LED কানেকশন টা >>> আউটপুট পোর্টে দিবেন বড় পিন আর ছোটো পিন টা দিবেন গ্রাউন্ডে । আরডুইনো Port 8(Eight) হচ্ছে আউটপুট পিন। চাইলে আপনি নিজেও দিতে পারেন অন্য একটা পোর্ট সেজন্য কোড টা পরিবর্তন করতে হবে একটু। শুধু আউটপুট পোর্ট টা পরিবর্তন করতে হবে। আর LED লাগানো টা ইচ্ছা নিজের উপরে।

এর পরে আসেন কোডে চলে যাই। কিভাবে কোড করবেন।
এই কোডে LCD Display এর জন্য ও দেয়া আছে। কিভাবে LCD Dsiplay এড করতে হয় তা পরের Tutorial এ দেয়া হবে। বাট এইটা করা খুব সোজা । সো চিন্তা করার কারন নাই।

//Heres the Code for PIR
...............................................................................
#include 
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
int calibrationTime = 500;     
int backLight = 13;   

//the time when the sensor outputs a low impulse
long unsigned int lowIn;         

//the amount of milliseconds the sensor has to be low 
//before we assume all motion has stopped
long unsigned int pause = 10;  

boolean lockLow = true;
boolean takeLowTime;  

int pirPin = 6;    //the digital pin connected to the PIR sensor's output
int ledPin = 8;

void setup(){
 // Serial.begin(9600);
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH);
  digitalWrite(pirPin, LOW);
 lcd.begin(16,2);              // columns, rows.  use 16,2 for a 16x2 LCD, etc.
 // lcd.clear();                  // start with a blank screen
  lcd.clear();                  // start with a blank screen
  lcd.setCursor(0,0);           // set cursor to column 0, row 0 (the first row)
  lcd.print("  2 Sec Dara");    // change text to whatever you like. keep it clean!
  lcd.setCursor(0,1);           // set cursor to column 0, row 1
  lcd.print("Fridged !! Ok ?");
  delay(2000);
  lcd.clear();
  lcd.begin(16,2);
  lcd.setCursor(0,0);           // set cursor to column 0, row 0 (the first row)
  lcd.print("    lafaite ");    // change text to whatever you like. keep it clean!
  lcd.setCursor(0,1);           // set cursor to column 0, row 1
  lcd.print("    Thak -_-");
}
//morar caliberation use korte parum na. age deikha nei kmne ki hoteche ! na hoile pore dehum !
void loop()
{

     if(digitalRead(pirPin) == HIGH){
       digitalWrite(ledPin, HIGH);   //the led visualizes the sensors output pin state
       if(lockLow){  
         //makes sure we wait for a transition to LOW before any further output is made:
         lockLow = false;            
           lcd.begin(16,2);              // columns, rows.  use 16,2 for a 16x2 LCD, etc.                  // start with a blank screen
  lcd.setCursor(0,0);           // set cursor to column 0, row 0 (the first row)
  lcd.print("    Lafaitesos ");    // change text to whatever you like. keep it clean!
  lcd.setCursor(0,1);           // set cursor to column 0, row 1
  lcd.print("    keno ? :3");
         }         
         takeLowTime = true;
       }

     if(digitalRead(pirPin) == LOW){       
       digitalWrite(ledPin, LOW);  //the led visualizes the sensors output pin state

       if(takeLowTime){
        lowIn = millis();          //save the time of the transition from high to LOW
        takeLowTime = false;       //make sure this is only done at the start of a LOW phase
        }
       //if the sensor is low for more than the given pause, 
       //we assume that no more motion is going to happen
       if(!lockLow && millis() - lowIn > pause){  
           //makes sure this block of code is only executed again after 
           //a new motion sequence has been detected
           lockLow = true; 
            lcd.begin(16,2);              // columns, rows.  use 16,2 for a 16x2 LCD, etc.
            lcd.setCursor(0,0);           // set cursor to column 0, row 0 (the first row)
            lcd.print("     abar ");    // change text to whatever you like. keep it clean!
            lcd.setCursor(0,1);           // set cursor to column 0, row 0 (the first row)
            lcd.print(" Lafaite thak :p ");    // change text to whatever you like. keep it clean!

            }
             }
            }

যে সমস্যা হতে পারে।

অনেক সময় দেখবেন সব ঠিক আছে কিন্তু ঠিক ভাবে আউটপুট পাচ্ছেন না । হতাশ না হয়ে চেস্টা করুন। আগেই বলেছি এইটা একটা ভৌতিক সেন্সর । কখন কি করে নিজেই জানে না। আশা করি সবার টা ঠিক ভাবে হবে। কোনো সমস্যা থাকলে অবশ্যই কমেন্ট করে জেনে নিতে পারবেন। ধন্যবাদ

পোস্ট ভালো লেগে থাকলে রেটিং দিন

Leave a Reply