কেউ চুরি করতে ঢুকলেই বাজবে এলার্ম — রাসেল ভাই গ্রামের বাড়িতে যা বানাইলো

Simple Home Security System

মেম্বার কাকার বাড়িতে গেছিলাম গত হপ্তায়। আব্বা কাজে গেছিলেন। আমাকেও সাথে নিয়ে গেলেন। মেম্বার কাকার বাড়ি অনেক বড়। উঠানে অনেক গাছ। পুকুর আছে।

ভেতরে ঢুকতেই দেখলাম কাকার ছেলে রাসেল ভাই বারান্দায় বসে কিছু একটা নিয়ে কাজ করছে। টেবিলে অনেক তার। একটা সবুজ বোর্ড। ছোট ছোট যন্ত্রপাতি। আমি কাছে গেলাম। জিজ্ঞেস করলাম ভাই এইটা কি করছেন?

রাসেল ভাই বললো ঘরের নিরাপত্তার জন্য একটা সিস্টেম বানাচ্ছি। কেউ ঘরে ঢুকলে বাজার বাজবে। পাসওয়ার্ড দিলে বন্ধ হবে।

আমি তো অবাক হয়ে গেলাম! কলেজে পড়ে আর এত মজার জিনিস বানায়!

রাসেল ভাই কেন এইটা বানাইলো

বারান্দায় বসে রাসেল ভাই বললো আসলে কাকার বাড়িতে একটা সমস্যা আছে। গ্রামে রাতে মাঝে মাঝে অপরিচিত লোক আসে। মেম্বার কাকা চিন্তায় থাকেন।

বাজারে যে সিকিউরিটি সিস্টেম পাওয়া যায় সেইগুলোর দাম অনেক বেশি। রাসেল ভাই কলেজে আর্ডুইনো শিখছে। ভাবলো নিজেই বানাবে। কম খরচে।

রাসেল ভাই বললো এইটা বানালে তিনটা কাজ হবে। প্রথমত ঘর নিরাপদ থাকবে। দ্বিতীয়ত নিজে শিখতে পারবে। তৃতীয়ত কলেজের প্রজেক্টেও দেওয়া যাবে!

আমার মনে হইলো রাসেল ভাই অনেক বুদ্ধিমান।

কি কি জিনিস লাগছে

রাসেল ভাই একটা কাগজ দেখালো। লিস্ট করা আছে।

Arduino Mega 2560 লাগছে। এইটা অনেক বড় বোর্ড। রাসেল ভাই বললো এইটাতে পিন বেশি তাই নিছে। PIR Sensor লাগছে দুইটা। একটা মূল ঘরের জন্য। একটা পেছনের দরজার জন্য। দরজার সাথে Reed Switch লাগছে। এইটা দরজা খুললে বোঝে।

Keypad লাগছে। চার সারি তিন কলামের। এইটা দিয়ে পাসওয়ার্ড দেওয়া যাবে। LCD Screen লাগছে। ওইখানে লেখা দেখা যাবে। Buzzer লাগছে। ওইটা বাজবে। Servo Motor লাগছে একটা। ক্যামেরা ঘোরানোর জন্য। Relay লাগছে। LED লাগছে দুইটা। লাল আর সবুজ।

আর DS3231 নামে একটা ছোট যন্ত্র লাগছে। রাসেল ভাই বললো এইটা সময় রাখে। কখন অ্যালার্ম বাজলো সেইটা দেখাবে।

মেম্বার কাকা শুনলেন। জিজ্ঞেস করলেন কত খরচ হইছে। রাসেল ভাই বললেন সব মিলিয়ে তিন হাজার টাকার মতো। কাকা বললেন বাজারে কিনলে দশ হাজারেও পাওয়া যেতো না। মাথায় হাত দিয়ে বললেন শাবাশ।

তার কিভাবে লাগালো

রাসেল ভাই বললো আগে কাগজে ছবি এঁকে নিছি। কোন পিন কোথায় যাবে সব লিখে রেখেছি। তারপর একটা একটা করে লাগাইছি।

LCD Screen এর পিনগুলো Arduino এর ২ থেকে ৭ নম্বর পিনে লাগানো। PIR Sensor দুইটা ২২ আর ২৩ নম্বর পিনে। দরজার Reed Switch ২৪ আর ২৫ নম্বর পিনে। Buzzer ২৬ নম্বরে। লাল LED ২৭ সবুজ LED ২৮ নম্বরে। Relay ২৯ নম্বরে। Servo Motor ৩৭ নম্বরে।

Keypad এর তার লাগানো সবচেয়ে বেশি। ৩০ থেকে ৩৬ নম্বর পিন লাগছে।

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

আমি মনোযোগ দিয়ে দেখলাম। অনেক তার। কিন্তু রাসেল ভাই এত সুন্দর করে গুছিয়ে লাগাইছে যে দেখতে অনেক পরিষ্কার।

কোড কিভাবে লিখলো

রাসেল ভাই ল্যাপটপ খুললো। বললো এইটাই সবচেয়ে মজার অংশ।

cpp

#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
#include <Keypad.h>
#include <Servo.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
RTC_DS3231 rtc;

#define pirRoom1 22
#define pirRoom2 23
#define door1 24
#define door2 25
#define buzzer 26
#define ledRed 27
#define ledGreen 28
#define relayPin 29

Servo camServo;

const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {30, 31, 32, 33};
byte colPins[COLS] = {34, 35, 36};
Keypad keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

String password = "1234";
String entered = "";
bool systemArmed = false;

void setup() {
  Wire.begin();
  rtc.begin();
  lcd.begin(20, 4);
  pinMode(pirRoom1, INPUT);
  pinMode(pirRoom2, INPUT);
  pinMode(door1, INPUT);
  pinMode(door2, INPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(ledRed, OUTPUT);
  pinMode(ledGreen, OUTPUT);
  pinMode(relayPin, OUTPUT);
  camServo.attach(37);
  lcd.print("Initializing...");
  delay(1500);
  lcd.clear();
  lcd.print("Enter PIN:");
}

void loop() {
  char key = keypad.getKey();
  if (key) handleKeyInput(key);
  if (systemArmed) monitorSensors();
}

void handleKeyInput(char key) {
  if (key == '#') {
    if (entered == password) {
      systemArmed = !systemArmed;
      lcd.clear();
      if (systemArmed) {
        lcd.print("System Armed");
        digitalWrite(ledRed, HIGH);
        digitalWrite(ledGreen, LOW);
      } else {
        lcd.print("System Disarmed");
        digitalWrite(ledRed, LOW);
        digitalWrite(ledGreen, HIGH);
      }
      delay(1500);
      lcd.clear();
      lcd.print("Enter PIN:");
    } else {
      lcd.clear();
      lcd.print("Wrong PIN!");
      delay(1200);
      lcd.clear();
      lcd.print("Enter PIN:");
    }
    entered = "";
  } else if (key == '*') {
    entered = "";
    lcd.clear();
    lcd.print("Cleared!");
    delay(800);
    lcd.clear();
    lcd.print("Enter PIN:");
  } else {
    entered += key;
    lcd.setCursor(0, 1);
    lcd.print(entered);
  }
}

void monitorSensors() {
  int motion1 = digitalRead(pirRoom1);
  int motion2 = digitalRead(pirRoom2);
  int doorA = digitalRead(door1);
  int doorB = digitalRead(door2);
  if (motion1) triggerAlarm("Room 1 Motion");
  if (motion2) triggerAlarm("Room 2 Motion");
  if (doorA) triggerAlarm("Front Door");
  if (doorB) triggerAlarm("Back Door");
}

void triggerAlarm(String cause) {
  DateTime now = rtc.now();
  lcd.clear();
  lcd.print("ALARM: ");
  lcd.print(cause);
  lcd.setCursor(0, 1);
  lcd.print(now.timestamp(DateTime::TIMESTAMP_TIME));
  digitalWrite(buzzer, HIGH);
  digitalWrite(relayPin, HIGH);
  camServo.write(90);
  delay(2500);
  digitalWrite(buzzer, LOW);
  digitalWrite(relayPin, LOW);
  camServo.write(0);
  lcd.clear();
  lcd.print("Monitoring...");
}

রাসেল ভাই বোঝালো। কোডে পাঁচটা অংশ আছে।

প্রথম অংশে সব লাইব্রেরি লোড করছে। Wire RTC LiquidCrystal Keypad Servo। এইগুলো ছাড়া কোড চলবে না।

দ্বিতীয় অংশে সব পিন ঠিক করা হচ্ছে। কোন পিনে কোন যন্ত্র আছে সেইটা বলা।

তৃতীয় অংশ setup()। এখানে সব পিন চালু করা হয়। LCD শুরু হয়। Enter PIN লেখা দেখায়।

চতুর্থ অংশ handleKeyInput()। পাসওয়ার্ড সঠিক হলে # চাপলে সিস্টেম চালু বা বন্ধ হয়। ভুল হলে Wrong PIN লেখা দেখায়। * চাপলে সব মুছে যায়।

পঞ্চম অংশ triggerAlarm()। কেউ ঢুকলে বাজার বাজে। Screen এ লেখা দেখায়। Servo Motor ঘোরে। আড়াই সেকেন্ড পর সব বন্ধ হয়ে আবার Monitoring লেখা দেখায়।

রাসেল ভাই বললো সবচেয়ে মজার হলো DS3231 ঘড়ি। যখন অ্যালার্ম বাজে তখন ঠিক কটায় বাজলো সেইটা Screen এ দেখায়। আমি জিজ্ঞেস করলাম এইটা কেন দরকার। রাসেল ভাই বললো ধরো রাত তিনটায় অ্যালার্ম বাজলো। কিন্তু তুমি ঘুমিয়ে ছিলে। সকালে উঠে দেখবে কখন বাজছিল।

আমার কাছে অনেক বুদ্ধিমানের কথা মনে হইলো।

চালু হলো যেদিন

রাসেল ভাই আপলোড দিলো। Done uploading দেখালো।

Screen এ লেখা আসলো। Initializing। তারপর Enter PIN।

রাসেল ভাই ১২৩৪ চাপলো। তারপর # চাপলো। Screen এ লেখা আসলো System Armed। লাল LED জ্বললো।

মেম্বার কাকা বারান্দায় এসে দাঁড়ালেন দেখতে।

রাসেল ভাই সামনে দিয়ে হাঁটলো। পেছনের ঘরের সামনে দিয়ে। বাজার বাজলো! Screen এ লেখা আসলো ALARM: Room 2 Motion। আর সময় দেখালো।

মেম্বার কাকা হাসলেন। বললেন বাবা এইটা তো আসলেই কাজের জিনিস!

আমি এত খুশি হইলাম যেন আমি নিজেই বানাইছি!

সমস্যা হইছিল

রাসেল ভাই বললো সবকিছু একবারে ঠিক হয়নাই।

প্রথমে Screen এ কিছুই দেখাচ্ছিল না। রাসেল ভাই অনেকক্ষণ মাথা চুলকাইলো। পরে বুঝলো Screen এর পাশে একটা ছোট নব আছে। সেইটা ঘুরাইলে উজ্জ্বলতা বাড়ে। ঘুরাতেই লেখা দেখা গেলো!

তারপর PIR Sensor বারবার ভুল সিগন্যাল দিচ্ছিল। কারণ জানালা দিয়ে রোদ আসছিল সেইটার উপর পড়ছিল। সেন্সরটা একটু সরিয়ে দিলো। ঠিক হয়ে গেলো।

আরেকটা সমস্যা হইছিল Servo Motor। চালু করতেই Arduino রিস্টার্ট নিতো। রাসেল ভাই বললো Servo Motor বেশি কারেন্ট খায়। তখন আলাদা পাওয়ার দিলো Servo তে। তারপর ঠিক হয়ে গেলো।

Keypad এর একটা বোতামও কাজ করছিল না। রাসেল ভাই দেখলো একটা তার ঢিলা ছিল। লাগিয়ে দিলো। হয়ে গেলো।

রাসেল ভাই বললো এইগুলো থেকেই সবচেয়ে বেশি শেখা হয়।

আরো ভালো করা যাবে

চা খেতে খেতে রাসেল ভাই বললো এইটা আরো উন্নত করা যাবে।

WiFi লাগালে মোবাইলে মেসেজ আসবে। ঢাকায় থাকলেও জানতে পারবে গ্রামের বাড়িতে কেউ ঢুকছে কিনা! মেম্বার কাকার চোখ বড় হয়ে গেলো। বললেন সেইটা করো বাবা!

GSM Module লাগালে SMS যাবে। ইন্টারনেট না থাকলেও চলবে। গ্রামে তো ইন্টারনেট সবসময় থাকে না।

রাসেল ভাই বললো সামনের মাসে এই আপগ্রেড করবে।

শেষে বলি

বাড়ি ফেরার সময় আব্বাকে বললাম রাসেল ভাই কি বানাইছে। আব্বা বললেন বাহ! তারপর বললেন তুইও শিখবি?

আমি বললাম হ্যাঁ! মনে মনে ঠিক করলাম একদিন আমিও এইরকম কিছু বানাবো। হয়তো আমাদের বাড়ির জন্য।

রাসেল ভাই শেষে বললো একটা কথা। বললো ভুল হবেই। থামবি না। প্রতিটা ভুল থেকে শেখা যায়।

তাই আমার মনে হয় সবার এই জিনিস একবার বানানো উচিত। মেম্বার কাকার বাড়ি নিরাপদ হয়েছে। রাসেল ভাই নতুন কিছু শিখেছে। আমিও অনেক কিছু জানলাম।