Arduino Nano দিয়ে স্মার্ট ডাস্টবিন

আপনার সন্তানের মধ্যে ছোট থেকে সৃজনশীলতা, উদ্ভাবনী চিন্তা এবং সমস্যা সমাধানের ক্ষমতা তৈরি করতে বিজ্ঞান কিংবা উদ্ভাবনী মেলা হতে পারে অন্যতম মাধ্যম। একাডেমিক পড়াশোনার বাইরে এই ধরনের প্রকল্পভিত্তিক কাজ শিশুদের বাস্তব জীবনের সমস্যাকে বিজ্ঞান ও প্রযুক্তির মাধ্যমে সমাধান করতে শেখায়।

বিজ্ঞান কিংবা উদ্ভাবনী মেলার জন্য এমন একটি সহজ কিন্তু Impactful প্রজেক্ট বেছে নেওয়া খুবই গুরুত্বপূর্ণ। যা আমাদের বাস্তব জীবনের সমস্যাকে সামধান করতে পারে, একই সাথে দর্শকদের দৃষ্টি আকর্ষণ করতে পারে। 

smart-trash-box-with-arduino-nano

এই মজার প্রোজেক্ট হিসেবে, Arduino Nano ব্যবহার করে একটি স্বয়ংক্রিয় Smart Dustbin তৈরি করা যেতে পারে। 

এই প্রজেক্টটি বিশেষভাবে স্কুলের বিজ্ঞান ও উদ্ভাবনী মেলার অন্য উপযোগী। শুধু তাই নয় বিজ্ঞান, প্রযুক্তি আর পরিবেশ—এই তিনটির সুন্দর সমন্বয়ই এই প্রজেক্টকে করে তোলে একটি আদর্শ বিজ্ঞান মেলার প্রোজেক্ট আইডিয়া।

তাহলে আর দেরি না করে চলুন ধাপে ধাপে দেখে নেওয়া যাক—কীভাবে খুব সহজ উপায়ে একটি স্বয়ংক্রিয় Smart Dustbin তৈরি করা যায়।

কম্পোনেন্ট কালেকশন 

যেকোনো প্রোজেক্ট শুধু করার আগে সবচেয়ে গুরুত্বপূর্ণ হলো প্রয়োজনীয় কম্পোনেন্ট গুছিয়ে নেওয়া। কারণ প্রোজেক্ট বানানোর মাঝপথে যদি কোনো জিনিস খুঁজে না পাওয়া যায়, তাহলে কিছু বানানো আনন্দ এবং আগ্রহ নষ্ট হতে পারে। 

smart-trash-box-component-list

এই কারণেই অভিভাবক অথবা গাইড হিসেবে আপনার দায়িত্ব হবে সব প্রয়োজনীয় কম্পোনেন্ট আগে থেকেই গুছিয়ে দেওয়া। যাতে আপনার সন্তান বাধাহীনভাবে মনোযোগ সহকারে প্রোজেক্টটি তৈরি করতে পারে।

নিচের টেবিলে প্রয়োজনীয় কম্পোনেন্টগুলোর নাম, পরিমাণ এবং Purchase Link দেওয়া হয়েছে, যাতে আপনি এক জায়গা থেকে বাসায় বসেই সব কম্পোনেন্ট সংগ্রহ করতে পারেন। 

কম্পোনেন্ট লিস্ট

কম্পোনেন্টের নাম পরিমাণ
Arduino Nano
1
Servo Motor SG90
1
Sonar Sensor HC SR04
1
18650 Battery 3.7V 7000mAh Sanford
1
18650 Battery Holder 2 Cell with Wire
1
DC DC Buck Converter LM2596 with Display
1
Glue Gun
1
Glue Gun Stick
1

কম্পোনেন্ট ভিত্তিক ডিস্কাশন

Sonar সেন্সর

মানুষ সাধারণত ২০ হার্জ থেকে ২০ হাজার হার্জ পর্যন্ত শব্দ শুনতে পারে, যাকে মানুষের শ্রবণসীমা বলা হয়। এই সীমার উপরের শব্দকে বলা হয় Ultrasonic Sound, আর নিচের শব্দকে বলা হয় Infrasonic Sound। আমাদের এই প্রোজেক্টে ব্যবহৃত HC-SR04 আল্ট্রাসনিক সেন্সর দিয়ে  Ultrasonic Sound ব্যবহার করে, স্পর্শ না করেই দূরত্ব পরিমাপ করা যায়। 

sound-wave-range

আমরা জানি, শব্দ বাতাসে প্রতি সেকেন্ডে প্রায় ৩৪৩ মিটার পথ অতিক্রম করতে পারে। HC-SR04 সেন্সরের ভেতরে দুটি অংশ থাকে—একটি শব্দ পাঠায় (Transmitter) এবং অন্যটি সেই শব্দ গ্রহণ করে (Receiver)।

প্রথমে Trig পিন Transmitter এর মাধ্যমে সেন্সর একটি আল্ট্রাসনিক শব্দ তরঙ্গ পাঠায়। এই তরঙ্গ সামনে কোনো বস্তুর সাথে ধাক্কা খেলে ফিরে আসে, আর তখন Receiver মাধ্যমে সেন্সর সেই প্রতিফলিত তরঙ্গটি গ্রহণ করে, যা Echo পিনের Status-এর মাধ্যমে বোঝা যায়। 

sonar-sensor-principle

এরপর এই শব্দ তরঙ্গটি যেতে এবং ফিরে আসতে মোট কত সময় লেগেছে, সেটি (দূরত্ব = [শব্দের গতিবেগ x সময়] / ২) সহজ সুত্রের মাধ্যমে হিসাব যায়। এই সময়ের ওপর ভিত্তি করেই খুব সহজেই HC-SR04 সেন্সর দিয়ে বস্তুর দূরত্ব নির্ণয় করা হয়।

সার্ভো মটোর

Servo Motor হলো একটি বিশেষ ধরনের মোটর, যা খুব নির্দিষ্টভাবে নির্দিষ্ট যেকোনো Angle-এ ঘুরতে পারে—যেমন 0°, 10°, 22°, 90° বা 180°। সাধারণ মোটরের মতো এটি একটানা ঘুরতে থাকে না, বরং Command অনুযায়ী নির্দিষ্ট কোণে গিয়ে থেমে যায় এবং সেই পজিশন হোল্ড করে। 

servo-pinout

DC-DC Buck কনভার্টার

DC-DC Buck Converter হলো এমন একটি ছোট পাওয়ার মডিউল, যা বেশি ভোল্টেজকে কমিয়ে নিরাপদ ভোল্টেজে রূপান্তর করে। আমাদের প্রোজেক্টে দুটি 18650 ব্যাটারি একসাথে প্রায় 7–8 ভোল্ট দেয়, কিন্তু আমাদের ব্যবহৃত Arduino Nano এবং অন্যান্য কম্পোনেন্ট ঠিকভাবে কাজ করতে মাত্র 5 ভোল্ট প্রয়োজন।

buck-converter-how-works

এই মডিউলটি ভেতরে বিশেষ সার্কিট ব্যবহার করে বাড়তি ভোল্টেজ কমিয়ে স্থির 5V আউটপুট দেয়, যাতে প্রজেক্টের জন্য কাঙ্খিত ভোল্টেজ পেতে পারি।

buck-converter-how-works-voltage-adjustment

আউটপুট ভোল্টেজ 5V-এ সেট করার জন্য মডিউলের ওপর থাকা ছোট স্ক্রু বা Potentiometer-টি স্ক্রু-ড্রাইভার দিয়ে ধীরে ধীরে ঘোরাতে হয়। ডিসপ্লেতে যখন 5.0V দেখা যাবে, তখন বুঝতে হবে সেটিং ঠিক হয়েছে।

Smart Dustbin তৈরি প্রক্রিয়া

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

প্রথমেই যেকোনো একটি মজবুত কার্ডবোর্ড বক্স সংগ্রহ করুন। আমার ক্ষেত্রে হাতের কাছে TechShopBD-এর একটি বক্স ছিল, তাই সেটিই ব্যবহার করেছি। আপনি চাইলে আপনার সুবিধামতো অন্য যেকোনো বক্সও নিতে পারেন।

এরপর নিচের ছবিতে দেখানো অংশগুলো কাঁচি বা কাটার দিয়ে সাবধানে কেটে নিন।

কাটার পর বক্সের সঙ্গে আরও তিনটি আলাদা অংশ তৈরি হবে, যেগুলো পরবর্তী ধাপে কাজে লাগবে।

এখন Glue Gun ব্যবহার করে বক্সের পিছনের দিকে ছবিতে দেখানো পজিশনে Servo Motor টি ভালোভাবে লাগিয়ে নিন। নিশ্চিত করুন যেন সার্ভোটি শক্তভাবে বসানো থাকে, নড়াচড়া না করে।

এরপর একটি মোটা তামার তার নিন। 

সার্ভো এবং ঢাকনার দূরত্ব অনুযায়ী মাপ নিয়ে তারটিকে L Shape-এ বাঁকিয়ে নিন।

প্রথমে এই তারটি সার্ভোর হর্ণের সঙ্গে যুক্ত করুন।

তারপর ঢাকনার উপরের অংশে Glue Gun-এর সাহায্যে তারটি স্থিরভাবে লাগিয়ে দিন।

প্রয়োজনে Nose Pliers ব্যবহার করে তারটি আরও ভালোভাবে বাঁকিয়ে নিন এবং সামান্য গ্লু দিয়ে শক্ত করে বসিয়ে নিন।

এতক্ষণে আমাদের প্রোজেক্টের সবচেয়ে গুরুত্বপূর্ণ মেকানিক্যাল অংশটি সম্পন্ন হয়ে যাবে—অর্থাৎ ঢাকনা খোলা-বন্ধ করার সিস্টেম।

এবার ধাপে ধাপে অন্য কম্পোনেন্টগুলো লাগানো শুরু করি। প্রথমে DC-DC Buck Converter Module টি বক্সের একটি অংশে লাগিয়ে নিন। আমার ক্ষেত্রে আমি বক্সের পাশের অংশটি বেছে নিয়েছি। টুইজার দিয়ে দুটি ছোট ছিদ্র করে স্ক্রু ব্যবহার করে মডিউলটি শক্তভাবে বসিয়ে দিয়েছি।

smart-dustbin-dc-dc-buck-converter-placement

একইভাবে সার্ভোর পাশে 18650 Battery Holder টি স্ক্রুর মাধ্যমে লাগিয়ে নিন, যেন ব্যাটারি হোল্ডারে ব্যাটারি নিরাপদভাবে বসানো যায়।

smart-dustbin-battery-holder-placement

এরপর কেটে রাখা কার্ডবোর্ডের একটি অংশ নিয়ে Sonar Sensor Module-এর মাপ অনুযায়ী কেটে নিন। 

sonar-sensor

Glue Gun দিয়ে বক্সের সামনে ছবির মতো করে সেন্সরটিকে কার্ডবোর্ডসহ বসিয়ে দিন, যাতে সামনে থেকে হাত সহজে ডিটেক্ট করা যায়।

sensor-placement

এই পর্যায়ে নিচে দেওয়া Circuit Diagram অনুসরণ করে Arduino Nano এবং অন্যান্য সব কম্পোনেন্টের মধ্যে সংযোগগুলো ঠিকভাবে করে নিন। 

smart-trash-box-circuit-diagram

সবশেষে Arduino Nano টি বক্সের যেকোনো পাশে সুবিধাজনক স্থানে লাগিয়ে দিন।

final-smart-dustbin-project

এই ধাপগুলো ঠিকভাবে সম্পন্ন হলে আপনার স্মার্ট ডাস্টবিনের মূল কাঠামো তৈরি হয়ে যাবে।

Arduino Nano তে কোড আপলোড

এখন Smart Dustbin কে সম্পূর্ণ স্বয়ংক্রিয় (Automatic) করার জন্য এতে কোড আপলোড করতে হবে।

প্রথমেই আপনার কম্পিউটারে Arduino IDE সফটওয়্যারটি ডাউনলোড করে ইন্সটল করে নিতে হবে। এজন্য নির্দিষ্ট লিংকে ক্লিক করে অফিসিয়াল ওয়েবসাইট থেকে সফটওয়্যারটি সংগ্রহ করুন। (যদি ইন্সটলেশনের সময় কোনো সমস্যা হয়, তাহলে এই টিউটোরিয়্যালটি অনুসরণ করে ধাপে ধাপে ইন্সটল সম্পন্ন করুন।)

installing-arduino-ide

ইন্সটল শেষ হলে, এখন USB কেবলের মাধ্যমে Arduino Nano বোর্ডটি কম্পিউটারের সাথে সংযুক্ত করুন।

arduino-nano-usb-connection

এরপর Windows Start বাটনে ক্লিক করে Device Manager ওপেন করুন।

সেখানে Ports (COM & LPT) সেকশনটি Expand করে নিন।

Arduino Nano সংযুক্ত করার সাথে সাথে একটি নতুন COM Port দেখা যাবে। এই পোর্ট নম্বরটি মনে রাখুন, কারণ কোড আপলোড করার সময় এটি প্রয়োজন হবে।

এখন Arduino IDE সফটওয়্যারটি ওপেন করুন এবং নিচে দেওয়া কোডটি কপি করে কোড এডিটরে পেস্ট করুন।

#include <Servo.h>

// -----------------------
// PIN CONNECTIONS (Arduino Nano)
// -----------------------
const int TRIG_PIN  = A2;
const int ECHO_PIN  = A1;
const int SERVO_PIN = 7;

// -----------------------
// LID ANGLES
// -----------------------
const int LID_CLOSED = 0;
const int LID_OPEN   = 70;

// -----------------------
// SETTINGS
// -----------------------
const int HAND_DISTANCE  = 15;    // cm
const int KEEP_OPEN_TIME = 2500;  // ms

Servo lid;

bool isOpen = false;
unsigned long closeTime = 0;

// -----------------------
// Measure distance
// -----------------------
long getDistanceCM() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  unsigned long echoTime = pulseIn(ECHO_PIN, HIGH, 30000UL); // 30ms timeout
  if (echoTime == 0) return -1;

  return (long)(echoTime * 0.0343 / 2.0);
}

// -----------------------
// Move lid slowly
// -----------------------
void moveLidSlowly(int targetAngle) {
  int now = lid.read();

  if (targetAngle > now) {
    for (int a = now; a <= targetAngle; a++) {
      lid.write(a);
      delay(8);
    }
  } else {
    for (int a = now; a >= targetAngle; a--) {
      lid.write(a);
      delay(8);
    }
  }
}

// -----------------------
// Open lid
// -----------------------
void openLid() {
  Serial.println("Hand detected! Opening lid.");
  moveLidSlowly(LID_OPEN);
  isOpen = true;
  closeTime = millis() + KEEP_OPEN_TIME;
}

// -----------------------
// Close lid
// -----------------------
void closeLid() {
  Serial.println("Closing lid.");
  moveLidSlowly(LID_CLOSED);
  isOpen = false;
}

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  lid.attach(SERVO_PIN);
  lid.write(LID_CLOSED);

  Serial.begin(9600);
  Serial.println("Smart Dustbin Ready!");
  Serial.println("--------------------");

  delay(500);
}

void loop() {
  long distance = getDistanceCM();

  if (distance > 0) {
    Serial.print("Distance: ");
    Serial.print(distance);
    Serial.println(" cm");
  }

  // If closed and hand is near -> open
  if (!isOpen && distance > 0 && distance <= HAND_DISTANCE) {
    openLid();
  }

  // If open
  if (isOpen) {
    Serial.println("Lid is open...");

    if (distance > 0 && distance <= HAND_DISTANCE) {
      Serial.println("Keeping lid open...");
      closeTime = millis() + KEEP_OPEN_TIME;
    }

    if ((long)(millis() - closeTime) >= 0) {
      closeLid();
    }
  }

  delay(300);
}

এরপর উপরের মেনুর Tools থেকে Board হিসেবে Arduino Nano এবং Port হিসেবে আপনার ডিটেক্ট হওয়া সঠিক COM Port সিলেক্ট করে নিন।

arduino-code

সবকিছু ঠিকভাবে সেট করা হলে, Upload বাটনে ক্লিক করুন এবং কোড আপলোড হওয়া পর্যন্ত ধৈর্য ধরে অপেক্ষা করুন।

program-upload

Output

কোডটি সফলভাবে আপলোড সম্পন্ন হলেই প্রোজেক্টটি সঙ্গে সঙ্গে Working অবস্থায় চলে যাবে। নিচে দেওয়া ভিডিওটিতে প্রোজেক্টটির একটি শর্ট Demonstration দেখতে পাবেন।  এই ভিডিওটি দেখলে Smart Dustbin এর Smart Action এবং বাস্তব কাজ করার প্রক্রিয়াটি খুব সহজেই বুঝতে পারবেন।

Mahbub Morshed Rifat
Mahbub Morshed Rifat

Engineer
TechShop Bangladesh

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.