🤖 Arduino স্মার্ট রোবট কার (Obstacle Avoiding Robot) — কোডসহ সম্পূর্ণ গাইড
✨ ভূমিকা
প্রযুক্তির যুগে রোবটিক্স শেখা এখন আর কোনো বিলাসিতা নয় — এটি হয়ে উঠেছে নতুন প্রজন্মের সৃজনশীলতার প্রতীক। আজ আমরা তৈরি করব একটি Arduino ভিত্তিক স্মার্ট রোবট কার, যা স্বয়ংক্রিয়ভাবে তার সামনে থাকা প্রতিবন্ধকতা চিনতে পারবে এবং দিক পরিবর্তন করে চলতে পারবে। এটি Obstacle Avoiding Robot নামে পরিচিত।
⚙️ প্রয়োজনীয় কম্পোনেন্টসমূহ
| ক্র. | কম্পোনেন্টের নাম | পরিমাণ | কাজ |
|---|---|---|---|
| 1 | Arduino UNO বোর্ড | 1 | মূল কন্ট্রোল ইউনিট |
| 2 | Ultrasonic Sensor (HC-SR04) | 1 | প্রতিবন্ধকতা শনাক্ত করতে দূরত্ব মাপে |
| 3 | Servo Motor (SG90) | 1 | সেন্সরকে ডানে-বামে ঘোরাতে |
| 4 | DC Motor (BO Motor) | 4 | চাকা ঘোরাতে |
| 5 | Motor Driver (L298N বা L293D) | 1 | Arduino থেকে মোটর নিয়ন্ত্রণে |
| 6 | Chassis (Acrylic Base) | 1 | রোবটের কাঠামো |
| 7 | Wheels | 4 | চলার জন্য |
| 8 | Jumper Wires | কিছু | সংযোগের জন্য |
| 9 | Battery Pack (9V বা 12V) | 1 | পাওয়ার সরবরাহের জন্য |
🔌 সার্কিট সংযোগ
- Ultrasonic Sensor (HC-SR04): VCC → 5V, GND → GND, Trig → D9, Echo → D10
- Servo Motor (SG90): Signal → D6
- Motor Driver (L298N): IN1 → D2, IN2 → D3, IN3 → D4, IN4 → D5, VCC → 12V
💻 Arduino কোড
#include <Servo.h>
Servo myservo;
// Ultrasonic sensor pins
const int trigPin = 9;
const int echoPin = 10;
// Motor driver pins
const int motor1Pin1 = 2;
const int motor1Pin2 = 3;
const int motor2Pin1 = 4;
const int motor2Pin2 = 5;
long duration;
int distance;
void setup() {
myservo.attach(6);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
Serial.begin(9600);
}
int getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
return distance;
}
void moveForward() {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
}
void moveBackward() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
}
void turnLeft() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
}
void turnRight() {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
}
void stopCar() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
}
void loop() {
int dist = getDistance();
Serial.println(dist);
if (dist > 20) {
moveForward();
} else {
stopCar();
delay(500);
turnRight();
delay(400);
}
}
📘 কোড ব্যাখ্যা
- Servo Library: সার্ভো মোটর নিয়ন্ত্রণের জন্য ব্যবহৃত।
- getDistance(): আল্ট্রাসনিক সেন্সর দিয়ে দূরত্ব মাপে।
- moveForward(), turnLeft(), turnRight(): মোটর ড্রাইভারের মাধ্যমে গতি নিয়ন্ত্রণ করে।
- loop(): রোবটটি নিরন্তর দূরত্ব মাপে এবং দিক পরিবর্তন করে চলে।
🧭 কাজের প্রক্রিয়া
রোবটটি সেন্সরের মাধ্যমে সামনে থাকা বস্তু শনাক্ত করে। যদি কোনো বস্তু ২০ সেমি বা তার কম দূরত্বে আসে, রোবট থেমে যায়, তারপর ডান দিকে ঘুরে ফাঁকা দিক পেয়ে আবার চলা শুরু করে।
🧠 উপসংহার
এই Arduino Obstacle Avoiding Robot প্রজেক্টটি শিক্ষার্থীদের জন্য রোবটিক্স শেখার আদর্শ শুরু। এতে তুমি শিখবে সেন্সর রিডিং, মোটর কন্ট্রোল, এবং লজিক প্রোগ্রামিং। ভবিষ্যতে এতে ব্লুটুথ বা Wi-Fi যুক্ত করে আরও স্মার্ট রোবট তৈরি করা সম্ভব।