আজকে আমরা তৈরী করব একটি ভিজিটর কাউন্টার। এই প্রজেক্টটি আরডুইনো ভিত্তিক। কাউন্টারটি একটি দুই দরজাবিশিষ্ট ঘরে উপস্থিত মানুষের সংখ্যা গণনা করবে। এই সেটআপটি ব্যবহারের জন্য দুটি দরজা প্রয়োজন। একটি প্রবেশের জন্য এবং অপরটি বাহিরের জন্য। প্রজেক্টটি তৈরী করতে একটি SONAR sensor এবং একটি IR Obstacle Sensor ব্যবহার করা হবে। ঘরে প্রবেশকারী মানুষের সংখ্যা গণনা করবে SONAR sensor এবং IR Obstacle Sensor ঘর থেকে বেরিয়ে যাওয়া মানুষের সংখ্যা গণনা করবে।
প্রজেক্টটি কোথায় কোথায় ব্যবহার করা যায়?
- অফিস-আদালত, দোকানপাট ইত্যাদি আবদ্ধ স্থানে এই ধরনের কাউন্টার ব্যবহার হয়ে থাকে।
- এই প্রজেক্টে আরও কিছু পরিবর্তন এনে একটি তৈরী Occupancy alert করা সম্ভব।
ভিজিটর কাউন্টার প্রজেক্ট তৈরিতে কি কি কম্পোনেন্ট প্রয়োজন?
প্রয়োজনীয় যন্ত্রপাতি | পরিমাণ | লিংক |
Arduino UNO R3 | 1 | লিংক |
HCSR04 SONAR Sensor | 1 | লিংক |
IR obstacle sensor | 1 | লিংক |
16×2 LCD with header | 1 | লিংক |
10K volume POT resistor | 1 | লিংক |
Breadboard | 1 | লিংক |
Jumper wires (Male to male) | 14 | লিংক |
Jumper wires (Male to female) | 8 | লিংক |
IR obstacle sensor কিভাবে কাজ করে?
IR obstacle sensor এর চারটি পিন রয়েছে। যখন সেন্সরের সামনে কোনও বাধা থাকে না, তখন OUTPUT pin এর আউটপুট HIGH থাকে। সেন্সরের সামনে বাধা থাকলে এই আউটপুট LOW হয়। digitalRead() ফাংশন ব্যবহার করে এই পিনের আউটপুট রিড করা হয়। এই পিনটি রিড করার মাধ্যমে আরডুইনো বুঝতে পারে তার সামনে কোনো বাধা আছে কি না।
IR obstacle sensor ক্যালিব্রেট করবেন কিভাবে?
শুরুতেই IR Obstacle Sensor ক্যালিব্রেট করা জরুরী। লক্ষ্য করুন, সেন্সর মডিউলটিতে দুটি এলইডি আছে। একটি Power LED, অপরটি Obstacle LED। Power LED মডিউলে পাওয়ার দিলেই জ্বলে থাকবে। আরও আছে একটি ভ্যারিয়েবল পট। Variable POT ঘুরিয়ে সেন্সরটিকে ক্যালিব্রেট করতে হবে। POT ঘুরিয়ে এমন পজিশনে রাখতে হবে যাতে করে সেন্সরের সামনে কিছু থাকলে Obstacle LED জ্বলে ওঠে এবং না সামনে কিছু না থাকলে নিভে থাকে। উল্লেখ্য, এই সেন্সরের Allowable distance range হলো 2-60 cm। পট ঘুরিয়ে আপনি নির্ধারন করতে পারবেন ২ থেকে ৬০ সেন্টিমিটারের মধ্যে সর্বোচ্চ কত দুরত্বে থাকা বস্তুকে সেন্সরটি চিহ্নিত করতে সক্ষম হবে।
Sonar Sensor HC- SR04 কিভাবে কাজ করে?
HCSR04 SONAR sensor নিজের সামনে থাকা মানুষ বা যেকোনো বস্তুর দুরত্ব নির্ণয় করতে পারে। এই সেন্সরকে পাওয়ার দেবার পর Trig pin এ 10 মাইক্রোসেকেন্ডের একটি পালস ইনপুট দিতে হয়। তারপর এই মডিউলটি আটটি ছোট ছোট পালসের সমন্বয়ে তৈরী একটি সিগন্যাল উৎপন্ন করে। তারপর ECHO পিনে একটি পালস উৎপন্ন হয়। ট্রিগার পিনে পালস ইনপুট দেওয়া এবং ইকো পিনে ইকো উৎপন্ন হবার মধ্যবর্তী সময়টুকুকে বাতাসের বেগ দিয়ে গুণ করলে সেন্সরের সবচেয়ে কাছাকাছি থাকা বস্তুর দুরত্ব পাওয়া যায়।
ভিজিটর কাউন্টার প্রজেক্টের সার্কিট কানেকশন
আরডুইনো এবং এলসিডির মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।
Arduino UNO- R3 | LCD |
GND | VSS,K,1st pin of volume POT |
5V | VDD,A, 2nd pin of volume POT |
GND | V0,3rd pin of the volume POT |
GND | RW |
12 | RS |
11 | E |
5,4,3,2 | D4,D5,D6,D7 |
Arduino এবং IR obstacle sensor এর মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।
Arduino UNO | Avoidance sensor module |
VCC | + |
GND | – |
7 | Output |
Arduino এবং SONAR sensor এর মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।
Arduino UNO | Sonar sensor |
5V | Vcc |
GND | GND |
8 | Trig |
9 | Echo |
আমাদের বানানো ভিজিটর কাউন্টার প্রজেক্ট এর পুরো সেটআপটি দেখতে ছিল এরকমঃ
প্রোগ্রাম
#define trigPin 8 #define echoPin 9 #define pinIR 7 // Define variables: float duration=0.00; float distance=0.00; int visitor,sum,threshold,temp; // declaring variables to hold the new and old IR states boolean oldIRState = LOW; boolean newIRState = LOW; #include <LiquidCrystal.h> // initialize the library by associating any needed LCD interface pin // with the arduino pin number it is connected to const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { // Define inputs and outputs: pinMode(pinIR, INPUT); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); lcd.begin(16, 2); // Print a message to the LCD. lcd.print("Visitor="); lcd.print(visitor); //Begin Serial communication at a baudrate of 9600: Serial.begin(9600); } void loop() { // Clear the trigPin by setting it LOW: newIRState = digitalRead(pinIR); digitalWrite(trigPin, LOW); delayMicroseconds(2); // Trigger the sensor by setting the trigPin high for 10 microseconds: digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Read the echoPin, pulseIn() returns the duration (length of the pulse) in microseconds: duration = pulseIn(echoPin, HIGH); // Calculate the distance: distance = duration /58.82 ; // Print the distance on the Serial Monitor (Ctrl+Shift+M): Serial.print("Distance = "); Serial.print(distance); Serial.println(" cm"); delay(1000); if(distance<=10 && abs(temp)>=70) { visitor++; lcd.clear(); lcd.print("Visitor="); lcd.print(visitor); for(int i=0;i<500;i++) { sum +=distance; delay(5); } threshold = sum/500; } temp=threshold-distance; if ( newIRState != oldIRState ) { if ( newIRState == LOW && visitor>0 ) { visitor--; lcd.clear(); lcd.print("Visitor="); lcd.print(visitor); } } oldIRState = newIRState; }
সার্কিট পরীক্ষা
- উপরের সকল কানেকশন সম্পন্ন করুন। সার্কিটে পাওয়ার দিন এবং কোড আপলোড করুন।
- HCSR04 এর সামনে হাত রাখুন। এলসিডিতে প্রদর্শিত ভিজিটরের সংখ্যা বাড়বে।
- এবার IR obstacle sensor এর সামনে হাত রাখুন। ভিজিটরের সংখ্যা কমবে।
এই ধরনের সিস্টেম শুধু দুই দরজাবিশিষ্ট ঘরেই ব্যবহার করা যাবে। তো এই ছিল আরডুইনো ভিত্তিক ভিজিটর কাউন্টার প্রজেক্ট। যা ব্যাবহার করে খুব সহজেই উপস্থিত মানুষের সংখ্যা গণনা করা যাবে। এরকম আরও প্রজেক্ট দেখতে আমাদের আরডুইনো টিউটোরিয়াল গুলো দেখতে পারেন। আশাকরি আপনিও এই টিউটোরিয়ালটি অনুসরণ করে প্রজেক্টটি তৈরি করতে পারবেন।