آموزش ESP32 12/55 - پروژه WS2812 RGB Srip 4 با کیت یادگیری IoT سنفاندر
در این آموزش، ما به بررسی نحوه کنترل نوار LED WS2812 با استفاده از میکروکنترلر ESP32 خواهیم پرداخت. این پروژه به شما این امکان را میدهد که رنگهای متنوعی ایجاد کنید و هر LED را بهصورت جداگانه کنترل نمایید، که راهی سرگرمکننده و بصری برای یادگیری درباره برنامهنویسی و الکترونیک فراهم میکند. در پایان این آموزش، شما یک تنظیمات کاملاً عملی خواهید داشت که میتواند رنگها و الگوها را بهصورت پویا تغییر دهد.
با استفاده از میکروکنترلر ESP32 از شرکت SunFounder، که دارای قابلیتهای Wi-Fi و بلوتوث داخلی است، میتوانیم به راحتی نوار LED RGB WS2812 را متصل و کنترل کنیم. انعطافپذیری این نوار LED اجازه میدهد تا از آن در برنامههای خلاقانه، چه برای نورپردازی دکوری و چه پروژههای آموزشی، استفاده شود. برای درک بهتر مراحل involved، میتوانید به ویدئو در (در ویدئو در 00:00) مراجعه کنید.
توضیح سختافزار
اجزای اصلی این پروژه شامل میکروکنترلر ESP32 و نوار LED WS2812 است. ESP32 یک میکروکنترلر قوی است که میتواند کارهایی مشابه با آردوینوی عادی انجام دهد، اما با گزینههای اتصال بیشتر. این دستگاه یک مجموعه ویژگیهای غنی دارد که به آن امکان اتصال به ابر را میدهد و اجازه کنترل از راه دور و ثبت دادهها را میدهد.
نواری LED WS2812 شامل LED های RGB با آدرسپذیری مستقل است، به این معنی که هر LED میتواند برای نمایش رنگهای مختلف کنترل شود. این نوار بر اساس یک پروتکل با سیم واحد عمل میکند که به LED های متعدد اجازه میدهد بدون از دست دادن کیفیت سیگنال به هم متصل شوند. هر LED حاوی یک درایور داخلی است که سیگنال ورودی را گرفته و برای LED بعدی در زنجیره تقویت میکند.
جزئیات ورق داده
| تولید کننده | وردسمی |
|---|---|
| شماره قطعه | WS2812 |
| ولتاژ منطق/ورودی و خروجی | ۳.۵-۵.۳ ولت |
| ولتاژ تغذیه | ۵ ولت |
| جریان خروجی (به ازای هر کانال) | حداکثر 20 میلیآمپر |
| جریان اوج (به ازای هر کانال) | حداکثر 60 میلیآمپر |
| راهنمایی فرکانس PWM | ۴۰۰ هرتز |
| آستانههای منطق ورودی | ۰.۳ × VDDبه 0.7 x VDD |
| افت ولتاژ / RDS(on)/ اشباع | ۰.۵ ولت حداکثر |
| محدودیتهای حرارتی | -۲۵ تا ۸۰ درجه سانتیگراد |
| بسته | 5050 |
| یادداشتها / انواع | میتواند برای نوارهای بلندتر زنجیر شود |
- تامین منبع تغذیه مناسب (۵ ولت) برای جلوگیری از آسیب به LED.
- از یک خازن (۱۰۰ میکروفاراد) در سراسر پایههای منبع تغذیه استفاده کنید تا نوسانات ولتاژ را صاف کنید.
- کابلهای داده را کوتاه نگهدارید تا کاهش کیفیت سیگنال کاهش یابد.
- مواظب دمای LED باشید؛ اطمینان حاصل کنید که دفع حرارت به درستی انجام میشود.
- هنگام اتصال تغذیه و زمین از قطبیت صحیح پیروی کنید.
- از یک مقاومت کششی در خط داده استفاده کنید اگر نوارهای بلندی استفاده میکنید.
دستورالعملهای سیمکشی

برای اتصال نوار LED WS2812 به ESP32، ابتدا تأمین برق را متصل کنید. سیم +5V از نوار LED باید به پایه 5V روی ESP32 متصل شود و سیم زمین (GND) باید به یکی از پایههای GND روی ESP32 متصل شود.
سپس، سیم ورودی داده را از نوار LED به پایه ۱۴ در ESP32 وصل کنید. اطمینان حاصل کنید که اتصالات محکم باشند تا انتقال داده به درستی انجام شود. اگر از چند نوار یا فاصلههای طولانیتر استفاده میکنید، در نظر داشته باشید که از یک شیفت سطح برای تضمین یکپارچگی سیگنال استفاده کنید. این تنظیم به شما امکان میدهد تا نوار LED را مستقیماً از ESP32 کنترل کنید.
نمونههای شِفر (کود) و راهنما
شِفر (کود) از کتابخانه Adafruit NeoPixel برای کنترل نوار LED WS2812 استفاده میکند. این شِفر (کود) با راهاندازی نوار LED و تنظیم رنگ اولیه به سیاه شروع میشود. شناسههای کلیدی در شِفر (کود) شاملLED_PIN، که پایه متصل به خط داده نوار LED را تعریف میکند، وNUM_LEDS، که تعداد LED ها را در نوار مشخص می کند.
#include // Include the Adafruit NeoPixel library
#define LED_PIN 14 // NeoPixel LED strip
#define NUM_LEDS 8 // Number of LEDs
در تابع راهاندازی، نوار با استفاده از初始化 میشودstrip.begin()و رنگ اولیه به سیاه تنظیم شده است همراه باstrip.show()این نوار را برای تغییرات رنگی هنگام اجرای برنامه آماده میکند.
void setup() {
strip.begin(); // Initialize the NeoPixel strip
strip.show(); // Set initial color to black
}
حلقه اصلی برنامه شامل دو حلقه for است. حلقه اول هر LED را یکی یکی با تنظیم رنگ آن و بهروزرسانی نوار روشن میکند. حلقه دوم نیز هر LED را به همین صورت خاموش میکند. این یک انیمیشن نوری ساده اما مؤثر ایجاد میکند.
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
}
}
شِفر (کود) کامل بارگذاری شده در زیر مقاله را برای جزئیات بیشتر در مورد نحوه پیادهسازی اثرات رنگی و انیمیشنهای مختلف مشاهده کنید.
نمایش / چه انتظاری باید داشت
پس از تکمیل اتصالات و بارگذاری شِفر (کود)، باید LEDها بر روی نوار به ترتیب در یک رنگ مشخص روشن شوند و سپس در همان توالی خاموش شوند. این اثر "نور دویدنی" را ایجاد میکند. اگر LEDها طبق انتظار روشن نشوند، اتصالات سیمکشی خود را دوباره بررسی کرده و اطمینان حاصل کنید که تأمین برق کافی است. همچنین، بررسی کنید که پایه صحیح در شِفر (کود) تعریف شده باشد (در ویدیو در ۱۲:۳۰).
زمانبندی ویدئو
- ۰۰:۰۰ شروع
- 1:40 مقدمه ای بر LED WS2812
- صفحه مستندات پروژه 7:25
- 9:16 توضیح رنگ RGB
- ۱۳:۱۶ توضیح سیمکشی
- شِفر (کود) آردوینو-۱ در ساعت ۱۳:۴۸ توضیح داده شد
- ۱۹:۰۳ انتخاب برد ESP32 و پورت در Arduino IDE
- ۲۰:۴۵ شِفر (کود)-۱ دمو
- ۲۲:۰۰ کنترل LEDهای فردی
- چراغ LED پیاده روی 24:16
- 25:41 نور رفت و برگشت
Common Course Links
Common Course Files
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازونخرید نوار LED WS2812 از اَمه زونamzn.to
-
ایبی
-
علیاکسپرسخرید نوار LED WS2812 از علیاکسپرس-2s.click.aliexpress.com
-
علیاکسپرسنوار LED WS2812 را از علیاکسپرس خریداری کنیدs.click.aliexpress.com
-
بنگ گودخرید نوار LED WS2812 از بنگودbanggood.com
منابع و مراجع
هنوز هیچ منبعی موجود نیست.
فایلها📁
هیچ فایلی موجود نیست.