في هذا الدرس، سنستكشف كيفية التحكم في شريط LED WS2812 باستخدام المتحكم الدقيق ESP32. يتيح لك هذا المشروع إنشاء مجموعة متنوعة من الألوان والتحكم في كل LED بشكل فردي، مما يوفر وسيلة ممتعة وجذابة بصريًا لتعلم البرمجة والإلكترونيات. بنهاية هذا الدرس، سيكون لديك إعداد كامل الوظائف قادر على تغيير الألوان والنمط بشكل ديناميكي.
باستخدام المتحكم الدقيق ESP32 من SunFounder، الذي يتميز بوجود الواي فاي وبلوتوث مدمجين، يمكننا بسهولة الاتصال والتحكم في شريط إضاءة WS2812 RGB LED. توفر مرونة هذا الشريط الإضاءة إمكانيات إبداعية، سواء للإضاءة الزخرفية أو لمشاريع تعليمية. لفهم أفضل للخطوات المعنية، يمكنك الرجوع إلى الفيديو في (في الفيديو عند 00:00).
شرح الأجهزة
المكونات الرئيسية لهذا المشروع تشمل المتحكم الدقيق ESP32 وشريط LED WS2812. يعتبر ESP32 متحكمًا دقيقًا قويًا يمكنه تنفيذ مهام مشابهة لتلك التي يقوم بها Arduino، ولكن مع خيارات الاتصال الإضافية. يحتوي على مجموعة غنية من الميزات التي تمكنه من الاتصال بالسحابة، مما يسمح بالتحكم عن بُعد وتسجيل البيانات.
يتكون شريط LED WS2812 من مصابيح RGB القابلة للعنونة بشكل فردي، مما يعني أنه يمكن التحكم في كل مصباح LED لعرض ألوان مختلفة. يعمل الشريط على بروتوكول سلك واحد، مما يسمح بتوصيل مصابيح LED متعددة معًا دون فقدان جودة الإشارة. يحتوي كل مصباح LED على سائق مدمج يأخذ إشارة الإدخال ويعززها للمصباح LED التالي في السلسلة.
تفاصيل ورقة البيانات
الصانع
ورلدسيمي
رقم الجزء
WS2812
جهد المنطق/الإدخال والإخراج
3.5-5.3 ف
جهد الإمداد
5 ف
التيار الخارج (لكل قناة)
20 مللي أمبير كحد أقصى
التيار الذروي (لكل قناة)
60 مللي أمبير كحد أقصى
إرشادات تردد PWM
٤٠٠ هرتز
عتبات منطق الإدخال
0.3 × فDDإلى 0.7 × VDD
انخفاض الجهد / Rدي إس (أون)/ تشبع
0.5 فولت كحد أقصى
الحدود الحرارية
-25 إلى 80 °م
طرد
5050
ملاحظات / متغيرات
يمكن ربطها لشرائط أطول
تأكد من توفير مصدر طاقة مناسب (5 فولت) لتجنب تلف LED.
استخدم مكثفًا (100 ميكروفاراد) عبر أطراف مصدر الطاقة لتنعيم انزلاقات الجهد.
احتفظ بأسلاك البيانات قصيرة لتقليل تدهور الإشارة.
كن حذرًا من درجة حرارة LED؛ تأكد من التبديد الجيد للحرارة.
راقب القطبية الصحيحة عند توصيل الطاقة والأرض.
استخدم مقاومة سحب على خط البيانات إذا كنت تستخدم شرائط طويلة.
تعليمات التوصيل
ESP32-12-WS2812-wiring
لتوصيل شريط LED WS2812 بـ ESP32، ابدأ بتوصيل مصدر الطاقة. يجب توصيل سلك +5V من شريط LED بـ دبوس 5V على ESP32، ويجب توصيل سلك الأرض (GND) بأحد دبابيس GND على ESP32.
بعد ذلك، قم بتوصيل سلك إدخال البيانات من شريط LED إلى الدبوس 14 على 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
}
}
شاهد الشيفرة الكاملة لتحميلها أسفل المقال لمزيد من التفاصيل حول كيفية تنفيذ تأثيرات الألوان المختلفة والرسوم المتحركة.
عرض / ماذا تتوقع
بمجرد الانتهاء من توصيل الأسلاك وتحميل الكود، يجب أن ترى LEDs على الشريط تضيء واحدة تلو الأخرى بلون محدد، تليها إطفاءها بالترتيب نفسه. هذا يخلق تأثير "الضوء المتحرك". إذا لم تضيء LEDs كما هو متوقع، تحقق مرتين من اتصالات الأسلاك وتأكد من أن مصدر الطاقة كافٍ. أيضًا، تحقق من أن الدبوس الصحيح محدد في الكود (في الفيديو في 12:30).
طوابع الفيديو الزمنية
:00 ابدأ
1:40 مقدمة حول LED WS2812
صفحة وثائق المشروع 7:25
9:16 شرح لون RGB
تفسير الأسلاك 13:16
13:48 شرح كود Arduino-1
19:03 اختيار لوحة ESP32 والمنفذ على بيئة تطوير أردوينو