ESP32 টিউটোরিয়াল ১২/৫৫ - SunFounder-এর ESP32 IoT লার্নিং কিট দিয়ে WS2812 RGB স্ট্রিপ ৪ প্রজেক্ট
এই টিউটোরিয়ালে, আমরা ESP32 মাইক্রোকন্ট্রোলার ব্যবহার করে একটি WS2812 LED স্ট্রিপ কীভাবে নিয়ন্ত্রণ করতে হয় তা অন্বেষণ করব। এই প্রকল্পটি আপনাকে বিভিন্ন রঙ তৈরি করতে এবং প্রতিটি LED আলাদাভাবে নিয়ন্ত্রণ করতে দেয়, যা প্রোগ্রামিং এবং ইলেকট্রনিক্স সম্পর্কে শেখার একটি মজাদার এবং দৃশ্যত আকর্ষণীয় উপায় প্রদান করে। এই টিউটোরিয়ালের শেষে, আপনার কাছে একটি সম্পূর্ণ কার্যকরী সেটআপ থাকবে যা গতিশীলভাবে রঙ এবং প্যাটার্ন পরিবর্তন করতে পারে।
SunFounder-এর ESP32 মাইক্রোকন্ট্রোলার ব্যবহার করে, যাতে বিল্ট-ইন Wi-Fi এবং ব্লুটুথ ক্ষমতা রয়েছে, আমরা সহজেই WS2812 RGB LED স্ট্রিপ সংযোগ এবং নিয়ন্ত্রণ করতে পারি। এই LED স্ট্রিপের নমনীয়তা সৃজনশীল অ্যাপ্লিকেশনের অনুমতি দেয়, সাজসজ্জার আলো বা শিক্ষামূলক প্রকল্পের জন্যই হোক না কেন। জড়িত পদক্ষেপগুলি আরও ভালভাবে বোঝার জন্য, আপনি ভিডিওটি (ভিডিওতে 00:00 এ) দেখতে পারেন।
হার্ডওয়্যার ব্যাখ্যা
এই প্রকল্পের প্রধান উপাদানগুলির মধ্যে রয়েছে ESP32 মাইক্রোকন্ট্রোলার এবং WS2812 LED স্ট্রিপ। ESP32 একটি শক্তিশালী মাইক্রোকন্ট্রোলার যা একটি Arduino-এর মতো কাজ সম্পাদন করতে পারে, তবে অতিরিক্ত সংযোগ বিকল্প সহ। এটিতে বৈশিষ্ট্যগুলির একটি সমৃদ্ধ সেট রয়েছে যা এটিকে ক্লাউডের সাথে সংযোগ করতে সক্ষম করে, যা রিমোট কন্ট্রোল এবং ডেটা লগিংয়ের অনুমতি দেয়।
WS2812 LED স্ট্রিপে পৃথকভাবে অ্যাড্রেসযোগ্য RGB LED থাকে, যার অর্থ প্রতিটি LED বিভিন্ন রঙ প্রদর্শনের জন্য নিয়ন্ত্রণ করা যেতে পারে। স্ট্রিপটি একটি একক-তারের প্রোটোকলে কাজ করে, যা সিগন্যালের গুণমান না হারিয়ে একাধিক LED কে একসাথে চেইন করার অনুমতি দেয়। প্রতিটি LED-তে একটি বিল্ট-ইন ড্রাইভার থাকে যা ইনপুট সিগন্যাল নেয় এবং চেইনের পরবর্তী LED-এর জন্য এটিকে প্রশস্ত করে।
ডেটাশিট বিবরণ
| প্রস্তুতকারক | Worldsemi |
|---|---|
| পার্ট নম্বর | WS2812 |
| লজিক/IO ভোল্টেজ | 3.5–5.3 V |
| সাপ্লাই ভোল্টেজ | 5 V |
| আউটপুট কারেন্ট (প্রতি চ্যানেল) | 20 mA সর্বোচ্চ |
| পিক কারেন্ট (প্রতি চ্যানেল) | 60 mA সর্বোচ্চ |
| PWM ফ্রিকোয়েন্সি নির্দেশিকা | 400 Hz |
| ইনপুট লজিক থ্রেশহোল্ড | 0.3 x VDD থেকে 0.7 x VDD |
| ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন | 0.5 V সর্বোচ্চ |
| থার্মাল সীমা | -25 থেকে 80 °C |
| প্যাকেজ | 5050 |
| নোট / ভেরিয়েন্ট | দীর্ঘ স্ট্রিপের জন্য চেইন করা যেতে পারে |
- LED ক্ষতি এড়াতে সঠিক পাওয়ার সাপ্লাই (5 V) নিশ্চিত করুন।
- ভোল্টেজ স্পাইক মসৃণ করতে পাওয়ার সাপ্লাই টার্মিনাল জুড়ে একটি ক্যাপাসিটর (100 µF) ব্যবহার করুন।
- সিগন্যাল অবনতি কমাতে ডেটা তার ছোট রাখুন।
- LED তাপমাত্রা সম্পর্কে সতর্ক থাকুন; সঠিক তাপ অপচয় নিশ্চিত করুন।
- পাওয়ার এবং গ্রাউন্ড সংযোগ করার সময় সঠিক পোলারিটি পর্যবেক্ষণ করুন।
- দীর্ঘ স্ট্রিপ ব্যবহার করলে ডেটা লাইনে একটি পুল-আপ রেজিস্টর ব্যবহার করুন।
ওয়্যারিং নির্দেশাবলী

WS2812 LED স্ট্রিপটি ESP32-তে ওয়্যার করতে, পাওয়ার সাপ্লাই সংযোগ করে শুরু করুন। LED স্ট্রিপের +5V তারটি ESP32-এর 5V পিনের সাথে সংযুক্ত করা উচিত এবং গ্রাউন্ড (GND) তারটি ESP32-এর একটি GND পিনের সাথে সংযুক্ত করা উচিত।
এরপর, LED স্ট্রিপ থেকে ডেটা ইনপুট তারটি ESP32-এর পিন 14-এর সাথে সংযুক্ত করুন। সঠিক ডেটা ট্রান্সমিশন নিশ্চিত করতে সংযোগগুলি নিরাপদ কিনা তা নিশ্চিত করুন। আপনি যদি একাধিক স্ট্রিপ বা দীর্ঘ দূরত্ব ব্যবহার করেন তবে সিগন্যাল অখণ্ডতা নিশ্চিত করতে একটি লেভেল শিফটার ব্যবহার করার কথা বিবেচনা করুন। এই সেটআপটি আপনাকে সরাসরি ESP32 থেকে LED স্ট্রিপ নিয়ন্ত্রণ করতে দেবে।
কোড উদাহরণ ও ওয়াকথ্রু
কোডটি WS2812 LED স্ট্রিপ নিয়ন্ত্রণ করতে Adafruit NeoPixel লাইব্রেরি ব্যবহার করে। এটি LED স্ট্রিপটি ইনিশিয়ালাইজ করে এবং প্রাথমিক রঙ কালো সেট করে শুরু হয়। কোডের মূল শনাক্তকারীগুলির মধ্যে রয়েছে LED_PIN, যা LED স্ট্রিপের ডেটা লাইনের সাথে সংযুক্ত পিনটি সংজ্ঞায়িত করে এবং NUM_LEDS, যা স্ট্রিপে LED-এর সংখ্যা নির্দিষ্ট করে।
#include // Adafruit NeoPixel লাইব্রেরি অন্তর্ভুক্ত করুন
#define LED_PIN 14 // NeoPixel LED স্ট্রিপ
#define NUM_LEDS 8 // LED-এর সংখ্যা
সেটআপ ফাংশনে, স্ট্রিপটি strip.begin() ব্যবহার করে ইনিশিয়ালাইজ করা হয় এবং প্রাথমিক রঙ strip.show() দিয়ে কালো সেট করা হয়। এটি প্রোগ্রাম চলাকালীন রঙ পরিবর্তনের জন্য স্ট্রিপটি প্রস্তুত করে।
void setup() {
strip.begin(); // NeoPixel স্ট্রিপ ইনিশিয়ালাইজ করুন
strip.show(); // প্রাথমিক রঙ কালো সেট করুন
}
প্রোগ্রামের মূল লুপটি দুটি for লুপ নিয়ে গঠিত। প্রথম লুপটি প্রতিটি LED একে একে চালু করে তার রঙ সেট করে এবং স্ট্রিপটি আপডেট করে। দ্বিতীয় লুপটি একইভাবে প্রতিটি LED বন্ধ করে। এটি একটি সহজ কিন্তু কার্যকর আলো অ্যানিমেশন তৈরি করে।
void loop() {
// LED একে একে চালু করুন
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // i-তম LED-এর রঙ লাল সেট করুন
strip.show(); // নতুন রঙ দিয়ে LED স্ট্রিপ আপডেট করুন
delay(100); // 100 মিলিসেকেন্ড অপেক্ষা করুন
}
// LED একে একে বন্ধ করুন
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // i-তম LED-এর রঙ কালো সেট করুন (এটি বন্ধ করুন)
strip.show(); // নতুন রঙ দিয়ে LED স্ট্রিপ আপডেট করুন
delay(100); // 100 মিলিসেকেন্ড অপেক্ষা করুন
}
}
বিভিন্ন রঙের প্রভাব এবং অ্যানিমেশন কীভাবে বাস্তবায়ন করবেন সে সম্পর্কে আরও বিশদ বিবরণের জন্য নিবন্ধের নীচে সম্পূর্ণ কোড লোডিং দেখুন।
প্রদর্শন / কী আশা করবেন
একবার আপনি ওয়্যারিং সম্পন্ন করে কোড আপলোড করলে, আপনি দেখতে পাবেন স্ট্রিপের এলইডিগুলো একটি নির্দিষ্ট রঙে একে একে জ্বলছে, তারপর একই ক্রমে সেগুলো নিভে যাচ্ছে। এটি একটি "রানিং লাইট" প্রভাব তৈরি করে। যদি এলইডিগুলো প্রত্যাশা অনুযায়ী জ্বলতে না পারে, তাহলে আপনার ওয়্যারিং সংযোগগুলো আবার পরীক্ষা করুন এবং নিশ্চিত করুন যে পাওয়ার সাপ্লাই যথেষ্ট। এছাড়াও, কোডে সঠিক পিন সংজ্ঞায়িত করা আছে কিনা তা যাচাই করুন (ভিডিওতে ১২:৩০ মিনিটে)।
ভিডিও টাইমস্ট্যাম্প
- ০০:০০ শুরু
- ১:৪০ WS2812 LED-এর পরিচিতি
- ৭:২৫ প্রকল্প ডকুমেন্টেশন পৃষ্ঠা
- ৯:১৬ RGB রঙ ব্যাখ্যা করা হয়েছে
- ১৩:১৬ ওয়্যারিং ব্যাখ্যা করা হয়েছে
- ১৩:৪৮ Arduino কোড-১ ব্যাখ্যা করা হয়েছে
- ১৯:০৩ Arduino IDE-তে ESP32 বোর্ড এবং পোর্ট নির্বাচন
- ২০:৪৫ কোড-১ ডেমো
- ২২:০০ পৃথক LED নিয়ন্ত্রণ
- ২৪:১৬ চলমান আলো LED
- ২৫:৪১ সামনে-পেছনে আলো
#include <Adafruit_NeoPixel.h> // Include the Adafruit NeoPixel library
#define LED_PIN 14 // NeoPixel LED strip
#define NUM_LEDS 8 // Number of LEDs
// Create an instance of the Adafruit_NeoPixel class
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin(); // Initialize the NeoPixel strip
strip.show(); // Set initial color to black
}
void loop() {
// Turn on LEDs one by one
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // Set the color of the i-th LED to red
strip.show(); // Update the LED strip with the new colors
delay(100); // Wait for 100 milliseconds
}
// Turn off LEDs one by one
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // Set the color of the i-th LED to black (turn it off)
strip.show(); // Update the LED strip with the new colors
delay(100); // Wait for 100 milliseconds
}
}
Common Course Links
Common Course Files
আপনাকে যা প্রয়োজন হতে পারে
-
অ্যামাজন
-
ইবে
-
অলি এক্সপ্রেসPurchase WS2812 LED strip from AliExpresss.click.aliexpress.com
-
অলি এক্সপ্রেসPurchase WS2812 LED strip from AliExpress-2s.click.aliexpress.com
-
ব্যাংগুডPurchase WS2812 LED strip from Banggoodbanggood.com
সম্পদ ও রেফারেন্সসমূহ
এখনো কোনো সম্পদ নেই।
ফাইলসমূহ📁
কোনো ফাইল উপলব্ধ নেই।