Search Code

ESP32 টিউটোরিয়াল ৩১/৫৫ - অবস্ট্যাকল অ্যাভয়েডেন্স সহ LED স্ট্রিপ প্রজেক্ট | সানফাউন্ডারের ESP32 আইওটি লার্নিং কিট

ESP32 টিউটোরিয়াল ৩১/৫৫ - অবস্ট্যাকল অ্যাভয়েডেন্স সহ LED স্ট্রিপ প্রজেক্ট | সানফাউন্ডারের ESP32 আইওটি লার্নিং কিট

এই টিউটোরিয়ালে, আমরা একটি ESP32 মাইক্রোকন্ট্রোলার এবং একটি WS2812 LED স্ট্রিপ ব্যবহার করে একটি প্রজেক্ট তৈরি করব যা বাধা সনাক্তকরণের ভিত্তিতে তার দিক পরিবর্তন করতে পারে। যখন LED স্ট্রিপটি সামনের দিকে চলবে, তখন এটি এলোমেলো রং প্রদর্শন করবে এবং একটি বাধা সনাক্ত করলে, এটি একটি পূর্বনির্ধারিত রঙে স্যুইচ করবে এবং দিক বিপরীত করবে। এই প্রজেক্টটি একটি ইনফ্রারেড বাধা এড়ানো সেন্সরের সাথে ESP32-এর ক্ষমতা প্রদর্শন করে।

ESP32-31-flowing-light-main2

এই টিউটোরিয়াল জুড়ে, আমরা প্রয়োজনীয় হার্ডওয়্যার উপাদান, ওয়্যারিং নির্দেশাবলী এবং এই প্রজেক্টটি বাস্তবায়নের জন্য প্রয়োজনীয় কোড কভার করব। আরও ভিজ্যুয়াল ব্যাখ্যার জন্য, নীচে লিঙ্ক করা ভিডিওটি দেখতে ভুলবেন না (ভিডিওতে 00:00 এ)।

হার্ডওয়্যার ব্যাখ্যা

এই প্রজেক্টের জন্য বেশ কয়েকটি উপাদান প্রয়োজন, যার মধ্যে রয়েছে ESP32 মাইক্রোকন্ট্রোলার, একটি WS2812 LED স্ট্রিপ এবং একটি ইনফ্রারেড বাধা এড়ানো সেন্সর। ESP32 একটি শক্তিশালী মাইক্রোকন্ট্রোলার যাতে বিল্ট-ইন Wi-Fi এবং ব্লুটুথ রয়েছে, যা এটিকে IoT অ্যাপ্লিকেশনের জন্য নিখুঁত করে তোলে। WS2812 LED স্ট্রিপটি একটি প্রোগ্রামেবল RGB LED স্ট্রিপ যা প্রতিটি LED-এর পৃথক নিয়ন্ত্রণের অনুমতি দেয়, যা আমাদের গতিশীল আলোর প্রভাব তৈরি করতে সক্ষম করে।

ইনফ্রারেড বাধা এড়ানো সেন্সরটি ইনফ্রারেড আলো নির্গত করে এবং কাছের বস্তু থেকে প্রতিফলন সনাক্ত করে কাজ করে। যখন একটি বাধা সনাক্ত করা হয়, সেন্সরটি তার আউটপুট অবস্থা পরিবর্তন করে, যা ESP32-কে LED স্ট্রিপের আচরণ পরিবর্তন করে সেই অনুযায়ী সাড়া দিতে দেয়।

ডেটাশিট বিবরণ

প্রস্তুতকারক WS2812B
পার্ট নম্বর WS2812B
লজিক/IO ভোল্টেজ 3.3 V (সাধারণ)
সাপ্লাই ভোল্টেজ 5 V (সাধারণ)
আউটপুট কারেন্ট (প্রতি চ্যানেল) 20 mA (সর্বোচ্চ)
পিক কারেন্ট (প্রতি চ্যানেল) 60 mA (সর্বোচ্চ)
PWM ফ্রিকোয়েন্সি নির্দেশিকা 400 Hz (সাধারণ)
ইনপুট লজিক থ্রেশহোল্ড 0.3 Vcc (উচ্চ), 0.1 Vcc (নিম্ন)
ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন 1.2 V (সর্বোচ্চ)
থার্মাল সীমা 85 °C (সর্বোচ্চ)
প্যাকেজ সারফেস মাউন্ট
নোট / ভেরিয়েন্ট বিভিন্ন দৈর্ঘ্য এবং ঘনত্বে উপলব্ধ

 

  • সর্বোত্তম কর্মক্ষমতার জন্য LED স্ট্রিপটি 5 V দিয়ে পাওয়ার করা নিশ্চিত করুন।
  • সিগন্যাল অখণ্ডতার সমস্যা রোধ করতে ডেটা পিনের জন্য একটি উপযুক্ত রোধক ব্যবহার করুন।
  • অতিরিক্ত গরম এড়াতে আউটপুট কারেন্টের সীমাবদ্ধতা সম্পর্কে সতর্ক থাকুন।
  • ভোল্টেজ স্পাইক রোধ করতে পাওয়ার সাপ্লাই সঠিকভাবে ডিকপল করুন।
  • কাঙ্ক্ষিত সনাক্তকরণ পরিসীমা অর্জন করতে ইনফ্রারেড সেন্সরটি সাবধানে সামঞ্জস্য করুন।

ওয়্যারিং নির্দেশাবলী

ESP32-31-flowing-light-wiring

উপাদানগুলি ওয়্যার করতে, ইনফ্রারেড বাধা এড়ানো সেন্সর দিয়ে শুরু করুন। সেন্সরের আউটপুট পিনটি ESP32-এর পিন 25-এর সাথে সংযুক্ত করুন। মাঝের পিনটি গ্রাউন্ডের সাথে সংযুক্ত করা উচিত এবং শেষ পিনটি (VCC) একটি 3.3 V পাওয়ার উৎসের সাথে সংযুক্ত করা উচিত।

ESP32-31-flowing-light-schematic

এরপর, WS2812 LED স্ট্রিপের জন্য, ডেটা পিনটি (সাধারণত হলুদ তার) ESP32-এর পিন 14-এর সাথে সংযুক্ত করুন। লাল তারটি একটি 5 V পাওয়ার উৎসের সাথে সংযুক্ত করা উচিত এবং কালো তারটি গ্রাউন্ডের সাথে সংযুক্ত করা উচিত। কোনো আলগা ওয়্যারিং রোধ করতে সমস্ত সংযোগ সঠিকভাবে সুরক্ষিত করুন।

কোড উদাহরণ ও ওয়াকথ্রু

এখানে এই প্রজেক্টটি চালানো কোডের একটি সংক্ষিপ্ত ওভারভিউ দেওয়া হল। প্রথমে, আমরা LED স্ট্রিপের পিক্সেল সংখ্যা এবং যোগাযোগের জন্য ব্যবহৃত ডেটা পিন সংজ্ঞায়িত করি:

#define NUM_PIXELS 8
#define DATA_PIN 14

setup() ফাংশনে, আমরা LED স্ট্রিপ এবং ইনফ্রারেড সেন্সর initialize করি:

void setup() {
  pixels.begin();
  pinMode(AVOID_PIN, INPUT_PULLUP);
  uint32_t color = pixels.Color(random(256), random(256), random(256));
  pixels.fill(color);
  pixels.show();
}

loop() ফাংশনে, আমরা পরীক্ষা করি যে একটি বাধা সনাক্ত হয়েছে কিনা এবং সেই অনুযায়ী LED স্ট্রিপ নিয়ন্ত্রণ করি:

if (avoid_value) {
    for (int i = 0; i < NUM_PIXELS; i++) {
      pixels.setPixelColor(i, color);
      pixels.show();
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  } else {
    for (int i = NUM_PIXELS - 1; i >= 0; i--) {
      pixels.setPixelColor(i, color);
      pixels.show();
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  }

এই কোডটি LED স্ট্রিপকে সামনের দিকে চলার সময় এলোমেলো রং প্রদর্শন করতে এবং একটি বাধা সনাক্ত হলে দিক পরিবর্তন করতে দেয়। সম্পূর্ণ কোডটি নিবন্ধের নীচে লোড হয়, তাই সমস্ত বিবরণের জন্য এটি পরীক্ষা করে দেখতে ভুলবেন না।

প্রদর্শন / কী আশা করবেন

যখন সেটআপ সম্পূর্ণ হয় এবং কোড আপলোড করা হয়, তখন LED স্ট্রিপটি সামনের দিকে চলার সময় এলোমেলো রং প্রদর্শন করা শুরু করবে। যখন একটি বাধা সনাক্ত করা হয়, স্ট্রিপটি একটি পূর্বনির্ধারিত রঙে (যেমন সবুজ) স্যুইচ করবে এবং দিক বিপরীত করবে। যদি বাধাটি সরানো হয়, স্ট্রিপটি এলোমেলো রং সহ সামনের দিকে চলা আবার শুরু করবে। সচেতন থাকুন যে ব্যবহৃত পাওয়ার সাপ্লাইয়ের উপর ভিত্তি করে ইনফ্রারেড সেন্সরের সনাক্তকরণ পরিসীমা পরিবর্তিত হতে পারে (ভিডিওতে 10:30 এ)।

ভিডিও টাইমস্ট্যাম্প

  • 00:00 শুরু
  • 2:14 প্রকল্পের পরিচিতি
  • 4:58 ওয়্যারিং ব্যাখ্যা
  • 7:41 বাধা এড়ানো সেন্সর সামঞ্জস্য করা
  • 10:03 আরডুইনো কোড ব্যাখ্যা
  • 15:40 আরডুইনো আইডিই-তে ESP32 বোর্ড এবং COM পোর্ট নির্বাচন
  • 17:22 প্রকল্প ১: প্রদর্শন
  • 18:17 ফেরত আসা রঙ পরিবর্তন

ছবি

ESP32-31-flowing-light-main2
ESP32-31-flowing-light-main2
ESP32-31-flowing-light-main
ESP32-31-flowing-light-main
ESP32-31-flowing-light-schematic
ESP32-31-flowing-light-schematic
ESP32-31-flowing-light-wiring
ESP32-31-flowing-light-wiring
832-ESP32 Tutorial 31/55- Arduino code flowing light
ভাষা: C++
#include <Adafruit_NeoPixel.h>

// Set the number of pixels for the running light
#define NUM_PIXELS 8

// Set the data pin for the RGB LED strip
#define DATA_PIN 14

// Initialize the RGB LED strip object
Adafruit_NeoPixel pixels(NUM_PIXELS, DATA_PIN, NEO_GRB + NEO_KHZ800);

// Initialize the avoid sensor
#define AVOID_PIN 25

void setup() {
  // Initialize the RGB LED strip
  pixels.begin();

  // Initialize the avoid sensor
  pinMode(AVOID_PIN, INPUT_PULLUP);

  // Set the initial LED color
  uint32_t color = pixels.Color(random(256), random(256), random(256));
  pixels.fill(color);
  pixels.show();
}

void loop() {
  // Read the input from the infrared sensor
  bool avoid_value = digitalRead(AVOID_PIN);

  // Generate a random color for the current pixel
  uint32_t color = pixels.Color(random(256), random(256), random(256));

  // If no obstacle is detected
  if (avoid_value) {
    for (int i = 0; i < NUM_PIXELS; i++) {
      // Turn on the current pixel with the random color
      pixels.setPixelColor(i, color);

      // Update the RGB LED strip display
      pixels.show();

      // Turn off the current pixel
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  }
  // If detects an obstacle, change the direction of the LED strip
  else {
    for (int i = NUM_PIXELS - 1; i >= 0; i--) {
      pixels.setPixelColor(i, color);
      pixels.show();
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  }
}

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

কোনো ফাইল উপলব্ধ নেই।