جدول المحتويات:

500 LED حائط مع ESP32: 16 خطوة
500 LED حائط مع ESP32: 16 خطوة

فيديو: 500 LED حائط مع ESP32: 16 خطوة

فيديو: 500 LED حائط مع ESP32: 16 خطوة
فيديو: في المختبر:: 263- أول خطوة في طريق انترنت الاشياء - كيف تبرمج (ESP32) - Internet of Things 2024, يوليو
Anonim
500 LED حائط مع ESP32
500 LED حائط مع ESP32

مرحبا جميعا! بنهاية هذا البرنامج التعليمي ، ستعرف كيفية إنشاء جدار LED الخاص بك.

يعتمد هذا البرنامج التعليمي على برنامج صيفي مقدم في جامعة Sacred Heart.

استمتع!

اللوازم

المستلزمات المذكورة أدناه.

الخطوة 1: المستلزمات

اللوازم
اللوازم

لنبدأ بجمع كل ما نحتاجه لإكمال الحائط LED الخاص بنا:

(تم إنشاء الروابط بتاريخ 7/10/2019)

برنامج Arduino IDE

جهاز التحكم الصغير ESP32

ضوء LED بكسل

مزود الطاقة

حبل القوة

أداة تجريد الأسلاك

الكابلات الطائر اللوح

سلك كهربائي

الخطوة 2: تحديد مصدر الطاقة المناسب لجدار LedWall الخاص بك

هناك طريقة رياضية بسيطة لمعرفة مصدر الطاقة الأفضل بالنسبة لك.

نحن نستخدم قانون قوة أوم: P = IxV (الطاقة = الشدة × الجهد)

يتم تحديد الجهد بواسطة المصابيح الخاصة بنا: في هذه الحالة 5V.

تعتمد الكثافة على الأجهزة ، حيث يستهلك مصباح LED واحد 30 مللي أمبير.

كل شريط من 50 ليد يستهلك 50 × 30 مللي أمبير = 1250 مللي أمبير = 1.25 أمبير.

لذلك ، فإن جدارنا 500 LED يستهلك 10 أضعاف (10 شرائح): 12.5A.

استخدام الطاقة هو 5V x 12.5A = 62.5W للمصابيح.

بالطبع ، في الجزء العلوي من المصابيح ، تحتاج إلى حساب ESP وكل عنصر آخر في دائرتك.

لدينا مصدر طاقة 60 أمبير ، ولدينا أكثر مما نحتاج إليه.

الخطوة الثالثة: سلك الطاقة

Image
Image

مزود الطاقة لدينا يأتي مع موصلات سلكية. نحتاج إلى تكييف سلك طاقة لتوصيله بمقبس 110 فولت.

- قم بقطع الموصل الأنثوي من سلك الطاقة. سنحتفظ بالجزء الذكري ، المعروف باسم NEMA 5-15P.

- قم بفصل الكبل بحيث يكون حوالي 3 مم من النحاس مرئيًا على جميع الأسلاك.

إليك فيديو تعليمي سريع حول كيفية نزع الأسلاك:

الخطوة 4: توصيل التيار الكهربائي

تشغيل إلى ESP32S
تشغيل إلى ESP32S

الآن نحن على استعداد لتوصيل مصدر الطاقة لدينا!

افصل دائمًا مصدر الطاقة عند العمل عليه.

الأسلاك

  • يتصل السلك الأسود (الطور) بالدبوس "L" الخاص بمصدر الطاقة
  • يتصل السلك الأبيض (محايد) بالدبوس "N" الخاص بمصدر الطاقة
  • يتصل السلك الأخضر بالدبوس "الأرضي" الخاص بمصدر الطاقة

(إذا كانت الأسلاك الداخلية لسلك الطاقة ليست بنفس ألوان أسلاكنا ، فابحث عن المخططات عبر الإنترنت.)

اختبارات

قم بتوصيل سلك طاقة الكمبيوتر بأي مأخذ كهربائي. يجب أن يضيء مؤشر LED الأخضر الموجود على مصدر الطاقة.

الخطوة 5: تشغيل ESP32S

بالنظر إلى المرساب الكهروستاتيكي الخاص بك ، يجب أن تكون هناك ملصقات بجوار كل دبوس. إذا لم يتم تسميته ، يمكنك البحث عن "pinout" الخاص بـ ESP الفردي عبر الإنترنت.

باستخدام سلك توصيل من ذكر إلى أنثى أو سلك كهربائي ، قم بتوصيل:

  • دبوس "5V" ESP32S إلى "+ V" لمصدر الطاقة (برتقالي في الصورة أعلاه)
  • دبوس "GND" ESP32S في قسم "-V" من مصدر الطاقة (أسود في الصورة أعلاه)

(في بعض أجهزة الترسيب الكهروستاتيكية ، يُطلق على الدبوس "5V" اسم "VCC" بدلاً من ذلك ، فهما يعنيان نفس الشيء.)

يرجى ملاحظة أن المرساب الكهروستاتيكي الخاص بك قد يكون له "pinout" مختلف عن الذي نستخدمه ، وعلى هذا النحو قد تقوم بتوصيل الأسلاك الخاصة بك إلى موقع مختلف عن الصورة أعلاه ، طالما أنك تتصل بالمسامير الصحيحة (5V & GND) ، لا يهم الموقع الفعلي على اللوحة.

الاختبار: قم بتوصيل مصدر الطاقة الخاص بك مرة أخرى ، وإذا كان المرساب الكهروستاتيكي الخاص بك يحتوي على مؤشر LED (معظمه يفعل) ، فسوف يضيء للإشارة إلى إرسال الطاقة إلى المرساب الكهروستاتيكي. تهانينا!

الخطوة 6: تشغيل شرائط إضاءة LED

تشغيل شرائط إضاءة LED
تشغيل شرائط إضاءة LED

باستخدام الأسلاك الكهربائية:

- قم بتوصيل السلك الأحمر لشريط إضاءة LED بـ V + على مصدر الطاقة.

- قم بتوصيل السلك الأزرق لشريط إضاءة LED بالمحول V- الموجود بمصدر الطاقة.

الخطوة 7: توصيل ESP32 بشرائط إضاءة LED

يقوم ESP32 بإرشاد برنامج التشغيل WS2811 المتصل بكل لون ودرجة إضاءة يحتاجان إليها. للقيام بذلك ، يحتاج ESP32 الخاص بنا إلى كابل "بيانات" إلى الشرائط.

تأتي شرائط LED مع موصل 3 أسلاك:

- الأحمر: الطاقة- الأزرق: الحيادي- الأبيض: البيانات

دعنا نقوم بتوصيل كابل شريط White Led بمسمار رقمي على ESP. يرجى تذكر رقم PIN المحدد حيث سنحتاج إلى تحديده في الكود لاحقًا.

الخطوة 8: تجهيز الكمبيوتر: C2102 Driver

الآن بعد أن أصبحت أجهزتنا سلكية ، نريد تحميل أول كود لدينا لاختباره. افتراضيًا ، يتعذر على Windows أو MacOs الاتصال بـ ESP32 الخاص بنا. للقيام بذلك ، نحتاج إلى تنزيل "برنامج تشغيل" لشريحة اتصال ESP USB: C2102.

يجب تنزيل برنامج التشغيل هذا وتثبيته:

- Windows 10: https://www.silabs.com/documents/public/software/C…- Windows 7/8 / 8.1: https://www.silabs.com/documents/public/software/C…- Mac:

(الروابط اعتبارًا من 7/10/2019)

الخطوة 9: برنامج Arduino - إضافة دعم ESP32 - الخطوة 1

برنامج Arduino - إضافة دعم ESP32 - الخطوة الأولى
برنامج Arduino - إضافة دعم ESP32 - الخطوة الأولى
برنامج Arduino - إضافة دعم ESP32 - الخطوة 1
برنامج Arduino - إضافة دعم ESP32 - الخطوة 1

قبل أن نتمكن من استخدام ESP32 الخاص بنا مع برنامج Arduino ، نحتاج إلى التأكد من التعرف عليه ، افتراضيًا ، لا يمكن لبرنامج Arduino ترجمة التعليمات البرمجية لـ ESP32 ، فلنصلح ذلك:

الخطوة 1: إضافة لوحات إلى المدير

1 - انقر في Arduino على خيار File >> Preferences

2- في حقل "عناوين URL لمدير اللوحات الإضافية" ، انسخ الرابط التالي:

الخطوة 10: برنامج Arduino - إضافة دعم ESP32 - الخطوة 2

برنامج Arduino - إضافة دعم ESP32 - الخطوة الثانية
برنامج Arduino - إضافة دعم ESP32 - الخطوة الثانية
برنامج Arduino - إضافة دعم ESP32 - الخطوة الثانية
برنامج Arduino - إضافة دعم ESP32 - الخطوة الثانية

الآن بعد أن عرف برنامج Arduino المزيد من اللوحات ، دعنا نثبت دعم ESP32 الخاص بنا

الخطوة 2: تثبيت دعم ESP32

1 - في القائمة العلوية ، حدد: الأدوات >> مجلس الإدارة >> مدير اللوحات

2 - ستظهر نافذة. استخدم مربع البحث الموجود في الزاوية اليمنى العليا للعثور على "ESP32".

3 - حدد مكان صنع إسبرريف. قم بتثبيته. (انظر الصورة)

الخطوة 11: برنامج Arduino - إضافة دعم ESP32 - الخطوة 3

برنامج Arduino - إضافة دعم ESP32 - الخطوة الثالثة
برنامج Arduino - إضافة دعم ESP32 - الخطوة الثالثة

الآن بعد أن أصبح بإمكان برنامج Arduino الاتصال بـ ESP32 ، فلنقم بتوصيله بالكمبيوتر والتحقق من أن كل شيء يعمل.

1 - لنتأكد من أننا نعمل على منصة ESP32:

انقر فوق أدوات >> لوحة >> وحدة ESP32 Dev

1- دعنا نتأكد من أن برنامج Arduino يعرف كيفية التواصل مع ESP الخاص بنا:

انقر فوق أدوات >> المنفذ وحدد المنبثق من توصيل هذا الكبل.

الأهمية:

إذا كان لديك أي مشكلة في تحميل الكود إلى ESP الخاص بك ، فتحقق من هاتين القائمتين أولاً ، إذا لم يتم تحديد المنفذ بعلامة اختيار ، فلن يتصل به برنامج Arduino.

الخطوة 12: إضافة مكتبات إلى Arduino IDE

إضافة مكتبات إلى Arduino IDE
إضافة مكتبات إلى Arduino IDE

سنقوم الآن بإضافة مكتبة تسمح لنا باختبار الحائط LED الخاص بنا!

1- اضغط على Tools >> Manage Libraries.

2- في الزاوية اليمنى العليا ، ابحث عن NeoPixelBus. حدد موقع "NeoPixelBus by Makuna" ، قم بتثبيته (انظر الصورة)

مكتبات أخرى مثيرة للاهتمام محتملة: (غير مطلوب لهذا البرنامج التعليمي)

- NeoMatrix

- FastLed

- Artnet

- GFX

الخطوة 13: الكود الأول: اختبار ستراند

كودنا الأول هو مثال من المكتبة.

يمكنك إما نسخ / لصق الكود أدناه أو النقر فوق:

ملف >> أمثلة >> Adafruit NeoPixelBus >> Strandtest

يرجى التأكد من تغيير LED_PIN الخاص بك إلى الذي استخدمته لتوصيل المصابيح الخاصة بك فعليًا. استخدمنا 13 طوال هذا البرنامج التعليمي.

تأكد أيضًا من تكييف حجم الخصلة مع متغير LED_COUNT.

// برنامج LED Striptest أساسي كل يوم.

# include # ifdef _AVR_ #include // مطلوب لـ 16 ميجا هرتز Adafruit Trinket #endif // أي دبوس على Arduino متصل بـ NeoPixels؟ #define LED_PIN 13 // كم عدد NeoPixels المتصلة بـ Arduino؟ #define LED_COUNT 500 // قم بتعريف كائن شريط NeoPixel الخاص بنا: شريط Adafruit_NeoPixel (LED_COUNT ، LED_PIN ، NEO_GRB + NEO_KHZ800) ؛ // الوسيطة 1 = عدد البكسل في شريط NeoPixel // Argument 2 = رقم دبوس Arduino (معظمها صالح) // Argument 3 = أعلام نوع البكسل ، أضف معًا حسب الحاجة: // NEO_KHZ800 800 KHz bitstream (معظم منتجات NeoPixel مع / WS2812 LEDs) // NEO_KHZ400 400 كيلو هرتز (كلاسيكي 'v1' (ليس v2) FLORA بكسل ، برامج تشغيل WS2811) // NEO_GRB Pixels موصلة لتيار GRB bitstream (معظم منتجات NeoPixel) // NEO_RGB Pixels موصلة بـ RGB bitstream (v1 FLORA pixels ، وليس v2) // NEO_RGBW Pixels سلكية لـ RGBW bitstream (منتجات NeoPixel RGBW) // وظيفة الإعداد () - تعمل مرة واحدة عند بدء التشغيل -------------------- ------------ إعداد باطل () {// هذه الخطوط مخصصة لدعم Adafruit Trinket 5V 16 MHz. // أي لوحة أخرى ، يمكنك إزالة هذا الجزء (ولكن لا ضرر من تركه): # إذا تم تعريفه (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1) ؛ #endif // نهاية الكود الخاص بـ Trinket. strip.begin () ، // INITIALIZE NeoPixel strip object (مطلوب) strip.show () ؛ // قم بإيقاف تشغيل جميع وحدات البكسل في أسرع وقت ممكن strip.setBrightness (50) ؛ // اضبط السطوع على حوالي 1/5 (max = 255)} // وظيفة loop () - تعمل بشكل متكرر طالما أن اللوحة تعمل --------------- حلقة فارغة () {// املأ طول الشريط بألوان مختلفة… colorWipe (شريط. لون (255 ، 0 ، 0) ، 50) ؛ // اللون الأحمر مسح (شريط اللون (0 ، 255 ، 0) ، 50) ؛ // اللون الأخضر مسح (شريط اللون (0 ، 0 ، 255) ، 50) ؛ // أزرق // قم بعمل تأثير مسرحي بألوان مختلفة… theatreChase (شريط. اللون (127 ، 127 ، 127) ، 50) ؛ // أبيض ، مسرح مسرح نصف سطوع (شريط اللون (127 ، 0 ، 0) ، 50) ؛ // أحمر ، مسرح مسرح نصف سطوع (شريط اللون (0 ، 0 ، 127) ، 50) ؛ // أزرق ، قوس قزح نصف سطوع (10) ؛ // دورة قوس قزح المتدفقة على طول المسرح الشريطي بالكامل ChaseRainbow (50) ؛ // Rainbow-Enhanced theatreChase variant} // بعض الوظائف الخاصة بنا لإنشاء تأثيرات متحركة ----------------- // املأ وحدات البكسل الشريطية واحدة تلو الأخرى بلون. لم يتم مسح الشريط // أولاً ؛ أي شيء هناك سيتم تغطيته بكسل ببيكسل. قم بتمرير اللون // (كقيمة مفردة 32 بت `` معبأة '' ، والتي يمكنك الحصول عليها عن طريق استدعاء // strip. Color (أحمر ، أخضر ، أزرق) كما هو موضح في وظيفة الحلقة () أعلاه) ، // و وقت التأخير (بالملي ثانية) بين البكسل. void colorWipe (uint32_t color، int wait) {لـ (int i = 0؛ i strip.setPixelColor (i، color)؛ // تعيين لون البكسل (في ذاكرة الوصول العشوائي) strip.show ()؛ // تحديث الشريط لمطابقة التأخير (انتظر) ؛ // توقف للحظة}} // أضواء مطاردة على غرار المسرح. مرر لونًا (قيمة 32 بت ، // a la strip. Color (r ، g ، b) كما هو مذكور أعلاه) ، ووقت تأخير (بالمللي ثانية) // بين الإطارات. b <3؛ b ++) {// 'b' يحسب من 0 إلى 2… strip.clear ()؛ // اضبط كل وحدات البكسل في RAM على 0 (إيقاف) // تعداد 'c' من 'b' إلى نهاية Strip في خطوات من 3 … لـ (int c = b ؛ c strip.setPixelColor (c ، color) ؛ // ضبط البكسل 'c' على قيمة 'color'} strip.show () ؛ // تحديث الشريط بتأخير محتويات جديد (انتظر)؛ // توقف للحظة}}} // دورة قوس قزح على طول الشريط بأكمله. تمرير وقت التأخير (بالمللي ثانية) بين الإطارات. عجلة الألوان. // نطاق عجلة الألوان 65536 لكنه حسنًا إذا قمنا بالتدحرج ، لذا // فقط عد من 0 إلى 5 * 65536. إضافة 256 إلى firstPixelHue في كل مرة // يعني أننا سنجري 5 * 65536/256 = 1280 يمر عبر هذه الحلقة الخارجية: لـ (long firstPixelHue = 0 ؛ firstPixelHue <5 * 65536 ؛ firstPixelHue + = 256) {لـ (int i = 0 ؛ I // إزاحة درجة لون البكسل بمقدار لإحداث ثورة كاملة واحدة من // عجلة الألوان (نطاق 65536) على طول الشريط // (strip.numPixels () steps): int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels ()) ؛ // strip. ColorHSV () يمكن أن يأخذ 1 أو 3 وسيطات: صبغة (من 0 إلى 65535) أو // اختياريًا إضافة التشبع والقيمة (السطوع) (كل 0 إلى 255). // هنا نستخدم فقط متغير تدرج اللون أحادي الوسيط. يتم تمرير النتيجة // خلال strip.gamma32 () لتوفير ألوان "حقيقية" // قبل التعيين لكل بكسل: strip.setPixelColor (i، strip.gamma32 (strip. ColorHSV (pixelHue)))؛} strip.show ()؛ // تحديث الشريط بتأخير محتويات جديد (انتظر)؛ // إيقاف مؤقت للحظة}} // شاشة عرض مسرحية مُحسّنة بألوان قوس قزح. تمرير وقت التأخير (في مللي ثانية) بين الإطارات. void theatreChaseRainbow (int wait) {i nt firstPixelHue = 0 ؛ // يبدأ البكسل الأول باللون الأحمر (تدرج اللون 0) لـ (int a = 0 ؛ a <30 ؛ a ++) {// كرر 30 مرة … لـ (int b = 0 ؛ b RGB strip.setPixelColor (c ، color) ؛ / / اضبط البكسل 'c' على قيمة 'color'} strip.show () ؛ // تحديث الشريط بتأخير محتويات جديدة (انتظر) ؛ // إيقاف مؤقت للحظة FirstPixelHue + = 65536/90 ؛ // دورة واحدة من عجلة الألوان أكثر من 90 إطارًا}}}

الخطوة 14: نموذج كود SHU

Image
Image

يعمل الكود الخاص بنا على تشغيل جميع المصابيح واحدًا تلو الآخر للتأكد من أنها تعمل:

// سوف يتنقل هذا المثال بين إظهار 500 بكسل باللون الأحمر

#includeconst uint16_t PixelCount = 500 ؛ // يفترض هذا المثال 4 بكسل ، مما يؤدي إلى تصغيره إلى حدوث خطأ ثابت uint8_t PixelPin = 13 ؛ // تأكد من ضبط هذا على الدبوس الصحيح ، الذي تم تجاهله لـ Esp8266

#define colorSaturation 128 // ثلاثة عناصر بكسل بترتيب وسرعات مختلفة

شريط NeoPixelBus (PixelCount ، PixelPin) ؛

// شريط NeoPixelBus (PixelCount ، PixelPin) ؛ RGBColor أحمر (0 ، تشبع اللون ، 0) ؛ RGBColor أخضر (تشبع اللون ، 0 ، 0) ؛ RGBColor أزرق (0 ، 0 ، تشبع اللون) ؛ RGBColor أبيض (تشبع اللون) ؛ RGBColor أسود (0) ؛ HslColor hslRed (أحمر) ؛ HslColor hslGreen (أخضر) ؛ HslColor hslBlue (أزرق) ؛ HslColor hsl أبيض (أبيض) ؛ HslColor hslBlack (أسود) ؛ إعداد باطل () {Serial.begin (115200) بينما (! Serial) ؛ // انتظر إرفاق المسلسل Serial.println () ؛ Serial.println ("تهيئة…") ؛ Serial.flush () ، // هذا يعيد تعيين جميع النيوبكسلات إلى شريط خارج الحالة.egin () ؛ عرض الشريط()؛ Serial.println () ، Serial.println ("قيد التشغيل …") ؛ } حلقة فارغة () {delay (100) ؛ Serial.println ("ألوان R ، G ، B ، W …") ؛ لـ (int i = 0؛ i <= 499؛ i ++) {// اضبط الألوان ، // إذا لم تتطابق بالترتيب ، فأنت بحاجة إلى استخدام شريط ميزة NeoGrbFeature. SetPixelColor (i ، red) ؛ شريط. () ؛ تأخير (100) ؛ strip. SetPixelColor (i ، hslRed) ؛ عرض الشريط()؛ تأخير (100) ؛ }}

الخطوة 15: تحميل الكود إلى ESP32

الأهمية:

لتكون قادرًا على تحميل الكود إلى أي وحدة تحكم صغيرة ، يجب أن يكون في وضع البرمجة ، معظمهم يفعل ذلك تلقائيًا وكل ما عليك فعله هو النقر فوق تحميل في البرنامج.

يتطلب ESP32 الخاص بنا الضغط على زر البرمجة أثناء إرسال الرمز. تحتاج أيضًا إلى إعادة تعيينه بعد تحميل الرمز عن طريق الضغط مرة واحدة على زر إعادة الضبط.

يوجد زر برمجة ESP32 على اليسار ، وزر إعادة الضبط على اليمين.يرجى الرجوع إلى الدليل الخاص بك إذا كان لديك متحكم صغير آخر.

الخطوة 16: الاقتباسات

تم إجراء هذا التوجيه بمساعدة البرامج التعليمية التالية:

randomnerdtutorials.com/installing-the-esp…

يستخدم لتثبيت ESP32 في Arduino IDE.

المؤلفون:

ناثانيال بارونيغابرييل كاسترو

محرر:

سيدريك بليملينج

موصى به: