ESP32 ٹیوٹوریل 31/55 - رکاوٹ سے بچنے کے ساتھ LED اسٹرپ پروجیکٹ | سن فاؤنڈر کا ESP32 IoT لرننگ کٹ
اس ٹیوٹوریل میں، ہم ESP32 مائیکروکنٹرولر اور WS2812 LED سٹرپ کا استعمال کرتے ہوئے ایک پروجیکٹ بنائیں گے جو رکاوٹ کا پتہ لگانے کی بنیاد پر اپنی سمت تبدیل کر سکتا ہے۔ جب LED سٹرپ آگے بڑھ رہی ہوگی، تو یہ بے ترتیب رنگ دکھائے گی، اور رکاوٹ کا پتہ چلنے پر، یہ ایک پہلے سے طے شدہ رنگ میں تبدیل ہو جائے گی اور سمت الٹ دے گی۔ یہ پروجیکٹ ESP32 کی صلاحیتوں کو انفراریڈ رکاوٹ سے بچنے والے سینسر کے ساتھ ملا کر ظاہر کرتا ہے۔
اس پورے ٹیوٹوریل میں، ہم ضروری ہارڈویئر اجزاء، وائرنگ کی ہدایات، اور اس پروجیکٹ کو زندہ کرنے کے لیے درکار کوڈ کا احاطہ کریں گے۔ مزید بصری وضاحت کے لیے، نیچے دی گئی ویڈیو کو ضرور دیکھیں (ویڈیو میں 00:00 پر)۔
ہارڈویئر کی وضاحت
اس پروجیکٹ کے لیے کئی اجزاء درکار ہیں، جن میں ESP32 مائیکروکنٹرولر، WS2812 LED سٹرپ، اور انفراریڈ رکاوٹ سے بچنے والا سینسر شامل ہیں۔ ESP32 ایک طاقتور مائیکروکنٹرولر ہے جس میں بلٹ ان وائی-فائی اور بلوٹوتھ موجود ہے، جو اسے 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 پر پن 25 سے جوڑیں۔ درمیانی پن کو گراؤنڈ سے جوڑا جانا چاہیے، اور آخری پن (VCC) کو 3.3 V پاور سورس سے جوڑا جانا چاہیے۔
اگلا، WS2812 LED سٹرپ کے لیے، ڈیٹا پن (عام طور پر پیلی تار) کو ESP32 پر پن 14 سے جوڑیں۔ سرخ تار کو 5 V پاور سورس سے جوڑا جانا چاہیے، اور کالی تار کو گراؤنڈ سے جوڑا جانا چاہیے۔ کسی بھی ڈھیلی وائرنگ کو روکنے کے لیے تمام کنکشنز کو مناسب طریقے سے محفوظ کریں۔
کوڈ کی مثالیں اور واک تھرو
یہاں اس کوڈ کا ایک مختصر جائزہ ہے جو اس پروجیکٹ کو چلاتا ہے۔ پہلے، ہم LED سٹرپ میں پکسلز کی تعداد اور مواصلات کے لیے استعمال ہونے والے ڈیٹا پن کی وضاحت کرتے ہیں:
#define NUM_PIXELS 8
#define DATA_PIN 14
setup() فنکشن میں، ہم LED سٹرپ اور انفراریڈ سینسر کو ابتدائی شکل دیتے ہیں:
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 پروجیکٹ 1: مظاہرہ
- 18:17 واپسی کا رنگ تبدیل کرنا
#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);
}
}
}
Common Course Links
Common Course Files
وسائل اور حوالہ جات
-
دستاویزاتESP32 Tutorial 31/55- SunFounder doc page for flowing lightdocs.sunfounder.com
فائلیں📁
کوئی فائلیں دستیاب نہیں ہیں۔