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

4 مشاريع في 1 باستخدام غطاء مصفوفة DFRobot FireBeetle ESP32 و LED: 11 خطوة (بالصور)
4 مشاريع في 1 باستخدام غطاء مصفوفة DFRobot FireBeetle ESP32 و LED: 11 خطوة (بالصور)

فيديو: 4 مشاريع في 1 باستخدام غطاء مصفوفة DFRobot FireBeetle ESP32 و LED: 11 خطوة (بالصور)

فيديو: 4 مشاريع في 1 باستخدام غطاء مصفوفة DFRobot FireBeetle ESP32 و LED: 11 خطوة (بالصور)
فيديو: افكار للتثبيت للتربية الفنية خامات من الطبيعة 2024, يوليو
Anonim
Image
Image
تثبيت مكتبات عامة للمشروعات
تثبيت مكتبات عامة للمشروعات

فكرت في القيام بإرشادات لكل مشروع من هذه المشاريع - لكن في النهاية قررت أن الاختلاف الأكبر حقًا هو البرنامج لكل مشروع اعتقدت أنه من الأفضل جعل واحدًا كبيرًا قابلًا للتوجيه!

الأجهزة هي نفسها لكل مشروع ، ونحن نستخدم Arduino IDE لبرمجة جهاز ESP32.

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

الكشف الكامل عن لوحة Firebeetle ESP32 ، و LED Matrix تم توفيرهما بواسطة DF Robot ، المشاريع المقدمة وفي مقاطع الفيديو هي ملكي.

تستخدم جميع هذه المشاريع DFRobot FireBeetle ESP32 IOT MicroController

www.dfrobot.com/product-1590.html

يمكن العثور على ويكي الدعم - مع إرشادات التثبيت الأساسية للوحة هنا:

www.dfrobot.com/wiki/index.php/FireBeetle_…

نحتاج أيضًا إلى FireBeetle Covers 24x8 LED Matrix (BLUE)

www.dfrobot.com/product-1595.html

لا تحب المصابيح الزرقاء - لها ألوان مختلفة أيضًا.

أخضر -

أحمر -

أبيض -

أصفر -

ما عليك سوى مصفوفة LED واحدة - اللون هو اختيارك ، وجميعها تعمل بنفس الطريقة.

يمكن العثور على ويكي دعم مصفوفة LED هنا:

www.dfrobot.com/wiki/index.php/FireBeetle_…

هنا نجد رابطًا لمكتبة Arduino.

github.com/Chocho2017/FireBeetleLEDMatrix

المزيد عن هذه لاحقًا …

شيء اختياري ، ولكن ربما يكون في متناول اليد هو حامل بطارية MicroUSB 3xAA.

www.dfrobot.com/product-1130.html

إذن هذه هي الأجهزة المطلوبة - ما هي المشاريع الأربعة -

الخطوة الأولى: المشاريع

Image
Image

المشروع 1: عبارة عن ساعة LED Matrix NTP بسيطة مع عرض الوقت العسكري أو عرض الوقت AMPM ،

ستتصل هذه الساعة بخادم NTP (خادم الوقت) للحصول على الوقت ، وتطبيق مجموعة إيقاف حتى تحصل على التوقيت المحلي. سيعرض الوقت على مصفوفة LED. - إنها ساعة بسيطة للغاية ، ومشروع أول بسيط للغاية.

المشروع 2: عرض توقع تمرير ISS ، يستخدم هذا المشروع النواة الثانية للمعالج. سيعرض مدى قرب محطة الفضاء الدولية (بالأميال) ، ومتى تتوقع مرور محطة الفضاء الدولية التالية في موقعك (بتوقيت UTC) ، واختيارياً عدد الأشخاص الموجودين في الفضاء. نظرًا لأن الكثير من هذه المعلومات لا يتغير كثيرًا ، فإننا نستخدم المركز الثاني للتحقق فقط من تحديثات تنبؤات المرور ، أو عدد الأشخاص الموجودين في الفضاء كل 15 دقيقة. يمكننا منع العديد من مكالمات API للخادم بهذه الطريقة. هذا المشروع أكثر تعقيدًا بعض الشيء ، ولكن لا يزال من السهل تنفيذه.

المشروع 3: لافتة رسالة متحركة بسيطة باستخدام MQTT ، أعدت زيارة مشروع تم إنشاؤه للوحة المصغرة ESP8266 D1 ، وهي مصفوفة LED 8x8 - الفكرة هي الاتصال بوسيط MQTT ، وإرسال رسالة إلى موضوع الجهاز هو الاستماع إلى - وعرض تلك الرسالة. من السهل جدًا القيام بذلك بمجرد إعداد كل شيء. وهناك بضع خطوات لإعداد برنامج العميل MQTT على كمبيوتر سطح المكتب. بمجرد الإعداد ، يعد MQTT بروتوكول مراسلة قويًا للغاية تستخدمه العديد من أجهزة إنترنت الأشياء لإرسال الرسائل واستلامها.

المشروع 4: عرض محطة الطقس - استنادًا إلى محطة الطقس المصغرة ESP8266 D1 المصنوعة بواسطة Squix78 و ThingPulse. نحصل على بياناتنا من Wunderground ، ونعرض الظروف الحالية ودرجة الحرارة بالدرجات فهرنهايت. نستخدم المركز الثاني من ESP32 لتحديث بياناتنا كل 10 دقائق. كما أنه سهل الإعداد.

أمثلة BOUNS MINI: المكتبة (والرسومات أعلاه) تستخدم خط 8x4 ، وتحتوي المكتبة أيضًا على خط 5x4 ، والذي استخدمته لمعظم أمثلة BOUNS الصغيرة. هناك مشكلتان يمكنني ملاحظتهما باستخدام الخط الصغير ، أحدهما يبدو أنه يسبب مشاكل عند استخدام WIFI للجهاز. هذا شيء أريد استكشافه أكثر ، لكن كان لدي الوقت. المشكلة الأخرى هي أنه لا يتم التمرير ، فقط الخط الأكبر يمكنه التمرير. لذلك لا تستخدم أي من هذه الأمثلة شبكة WIFI - فهي تقوم فقط بتحديث العرض ، وسيظهر المزيد حولها لاحقًا.

هيا بنا نبدأ…..

الخطوة 2: قم بتثبيت لوحة DFRobot FireBeetle ESP32 في Arduino IDE

لذلك ، سأحيلك إلى DF Robot Wiki حول تثبيت نواة اللوحة لـ Arduino IDE.

من السهل جدًا القيام بذلك باستخدام IDE الحديث (1.8.x أو أفضل منه).

www.dfrobot.com/wiki/index.php/FireBeetle_…

لقد وجدت أن مكتبة WiFi المضمنة في Arduino IDE تسبب مشاكل (PS أي مكتبة WiFi أخرى ربما تكون مثبتة في دليل المكتبة الخاصة بك قد تسبب أو لا تسبب مشاكل). الطريقة الوحيدة (أو على الأقل الطريقة الأسهل) التي وجدتها لحل المشكلة هي إزالة مكتبة WiFi من دليل IDE. لسوء الحظ ، لا توجد طريقة جيدة لإخبارك بالمكان الذي قد يتم تثبيته فيه - يعتمد ذلك على كيفية تثبيت IDE وعلى نظام التشغيل الذي تستخدمه.

ما فعلته هو العثور على مكتبة WiFi التي تسبب المشاكل ، وما عليك سوى نقل دليل دليل WiFi إلى سطح المكتب … وإعادة تشغيل IDE. بهذه الطريقة يمكنك الاحتفاظ بالمكتبة في حال احتجت إليها للوحات Arduino WIFI.

90٪ من المشاكل التي رأيتها كانت مرتبطة بالمشكلة المذكورة أعلاه. إذا حصلت على الكثير من أخطاء الترجمة ، المتعلقة باستخدام WiFi من دليل Arduino IDE أو دليل Arduino Library ، فهذه هي المشكلة التي تواجهها.

مشكلتي الثانية في بعض الأحيان هي فشل تحميل الرسم التخطيطي - وفي هذه الحالة يجب أن أضغط على زر التحميل مرة أخرى ، وهو يعمل.

وأخيرًا ، إذا كانت وحدة التحكم التسلسلية مفتوحة ، ثم أغلقها - يتجمد FireBeetle.

أعلم أن DF Robot يعمل بنشاط على جوهر اللوحة ، وفي الوقت القصير الذي أملك فيه مجلس الإدارة ، أطلقوا نواة جديدة. لسوء الحظ ، لم تحل مشكلة WiFi التي تعد أكبر مشكلة لدي.

* يحتوي Espressif على مدير أساسي "عام" يمكن تثبيته ، ويشمل النواة لوحة FireBeetle ESP32 ، لكنني كنت أواجه مشكلة في كيفية ترقيم الدبابيس. الشيء المثير للاهتمام هنا هو أن مكتبة WiFi تعمل مع مكتبة WiFi المدمجة - لذلك أعلم أن هناك حلًا لهذه المشكلة قاب قوسين أو أدنى.

إذا كنت ترغب في تجربة نوى Espressif ، يمكنك العثور على مزيد من المعلومات هنا:

github.com/espressif/arduino-esp32

أنا شخصياً أحب كيفية عمل نواة DF-Robot ، حتى مع بعض المشكلات التي أواجهها.

** ملاحظة: أنا أستخدم LinuxMint 18 الذي يعتمد على Ubuntu 16.04 على ما أعتقد ، لم أجرب هذا على أي جهاز آخر ، لكنني أعتقد أن المشكلة موجودة لجميع أنظمة التشغيل بناءً على بعض عمليات البحث على الإنترنت التي قمت بها. **

الخطوة 3: تثبيت Common Libraries for the Projects

تثبيت مكتبات عامة للمشروعات
تثبيت مكتبات عامة للمشروعات

تستخدم كل هذه المشاريع عددًا قليلاً من المكتبات الشائعة ، لذلك من الأسهل القيام بهذه الخطوة الآن.

اعتمادًا على المكتبة ، قد تجدها في مدير المكتبة - وهي أسهل طريقة لتثبيت مكتبة.

هناك طريقة أخرى شائعة وهي التثبيت عبر ملف مضغوط ، والذي يعمل بشكل متساوٍ أيضًا. لكن بشكل عام أستخدم طريقة التثبيت اليدوي. يوجد برنامج تعليمي جيد حول الطرق الثلاث على موقع Arduino الإلكتروني.

www.arduino.cc/en/guide/libraries

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

تستخدم كل هذه المشاريع مدير WiFi لتسهيل الاتصال بشبكة wifi الخاصة بك - لقد قررت القيام بذلك إذا كنت بحاجة إلى نقل مشروعك ، فلن تحتاج إلى إعادة برمجة اللوحة. هذا شيء أستخدمه للوحات ESP8266 ، وهو يعمل جيدًا - إنه ليس مثاليًا. تم نقل الحظ لاستخدام المكتبة لاستخدام ESP32 بواسطة مستخدم جيثب اسمه bbx10. (يجب أن يعمل هذا المدير أيضًا مع لوحات ESP8266)

نحتاج إلى تثبيت ثلاث مكتبات لهذا العمل أيضًا.

WiFiManager -

خادم الويب -

وأخيرًا DNSServer -

من الشائع أيضًا في جميع الرسومات مكتبة DF Robot DFRobot_HT1632C لمصفوفة LED.

www.dfrobot.com/wiki/index.php/FireBeetle_…

يمكن العثور على المكتبة هنا (مرة أخرى أوصي بطريقة التثبيت اليدوي)

github.com/Chocho2017/FireBeetleLEDMatrix

ملاحظة خاصة: في مستودع github الخاص بي - لدي مكتبتان من مكتبات DFRobot_HT1632C المعدلة قليلاً

github.com/kd8bxp/DFRobot-FireBeetle-ESP32 …

التعديل لخط أصغر ، ويستخدم فقط لبعض أمثلة المكافآت. يمكنك استخدام المكتبة المعدلة ولا ينبغي أن تسبب أي مشاكل. هناك أيضًا مكتبة معدلة قليلاً (مرفقة ببعض الرسومات كعلامات تبويب) يمكنها عمل صور نقطية.

إذا اخترت استخدام الإصدار المعدل قليلاً ، فأنت بحاجة إلى إعادة تسمية دليل "المكتبة المعدلة" إلى FireBeetleLEDMatrix ونقل هذا المجلد إلى دليل مكتبة Arduino. ليس عليك استخدام هذا الإصدار لهذه المشاريع ، فهو ضروري إذا كنت تريد تجربة بعض الخطوط الأصغر من أمثلة المكافآت.

هذه هي المكتبات العامة - سنقوم بتثبيت بعض المكتبات المحددة لكل مشروع.

دعنا ننتقل إلى مصفوفة LED….

الخطوة 4: غطاء مصفوفة LED 24x8

غطاء مصفوفة 24x8 LED
غطاء مصفوفة 24x8 LED
غطاء مصفوفة 24x8 LED
غطاء مصفوفة 24x8 LED
غطاء مصفوفة 24x8 LED
غطاء مصفوفة 24x8 LED

لأننا سوف نتابع مع البرنامج التعليمي DF Robot لمصفوفة LED

www.dfrobot.com/wiki/index.php/FireBeetle_…

مقدمة: شاشة العرض 24 × 8 LED Matrix مصممة خصيصًا لسلسلة FireBeetle. إنه يدعم وضع استهلاك الطاقة المنخفض وعرض التمرير. مع شريحة التشغيل LED عالية الأداء HT1632C ، كل مصباح به سجل مستقل ، مما يجعل من السهل القيادة بشكل منفصل. إنه يدمج ساعة RC 256 كيلو هرتز ، 5uA فقط تحت وضع الطاقة المنخفضة ، يدعم ضبط سطوع 16 مقياس PWM. يعمل هذا المنتج أيضًا مع متحكم Arduino الآخر مثل Arduino UNO.

تخصيص:

  • جهد التشغيل: 3.3 ~ 5VLED
  • اللون: لون واحد (أبيض / أزرق / أصفر / أحمر / أخضر)
  • محرك رقاقة: HT1632C
  • العمل الحالي: 6 ~ 100mA
  • استهلاك منخفض للطاقة: 5uARC
  • الساعة: 256 كيلو هرتز
  • اختيار رقاقة (CS): D2 ، D3 ، D4 ، D5 قابلة للتحديد
  • دعم التمرير العرض

أرقام التعريف الشخصية الافتراضية:

  1. داتاد 6
  2. WRD7 (غير مستخدم بشكل عام)
  3. يمكن تحديد CSD2 و D3 و D4 و D5 (افتراضي D2)
  4. RDD8
  5. VCC 5VUSB ؛ 3.7VLipo بطارية

(كل هذه المشاريع تستخدم D2 لتحديد الدبوس ، ويمكن تغيير ذلك بسهولة حسب الحاجة.)

في الجزء الخلفي من LED Matrix ، سترى 4 مفاتيح صغيرة ، تأكد من تحديد واحد فقط من دبابيس CS. هذه المفاتيح الصغيرة هي كيفية تحديد CS Pin الخاص بك ، والمفتاح الافتراضي هو D2.

يحتوي DF Robot WIKI على بعض التعليمات البرمجية النموذجية ، وهذا الرمز موجود أيضًا في أمثلة المكتبة. (أعتقد)

ملاحظة أخرى: استخدم أرقام Dx لدبابيسك - وإلا فستكون أرقام الدبوس هي أرقام / أسماء IO

وهذا قد يسبب لك بعض المشاكل.

تحديد نقطة:

X من 0 إلى 23 (أو إذا كنت تعتقد أنها جدول بيانات فهذه أعمدة).

Y هي من 0 إلى 7 (أو إذا فكرت في الأمر كجدول بيانات فهذه صفوف).

توفر المكتبة وظيفة نقطة محددة.

display.setPoint (x، y) سيؤدي ذلك إلى تعيين المؤشر إلى ذلك الموقع ، حيث يمكنك الآن طباعة رسالة.

display.print ("Hello World" ، 40) ؛ // سيؤدي ذلك إلى عرض الشاشة "Hello World" بدءًا من النقطة x و y والتمرير خارج الشاشة.

هناك أيضًا setPixel (x ، y) و clrPixel (x ، y) - سيتولى setPixel تشغيل مؤشر LED واحد في موقع x و y ، وسيقوم clrPixel بإيقاف تشغيل مؤشر LED في موقع x و y.

هناك بعض الأشياء الأخرى التي يمكن لهذه المكتبة القيام بها - ومعظمها مدرج في الأمثلة.

(أوصي بتشغيل الأمثلة وتعديلها لمعرفة ما يمكنها فعله).

* الشيء الوحيد الذي يبدو أنه ينقصه هو رسم الصور النقطية - يمكن للمكتبة فعل ذلك ولكن لسبب ما هي وظيفة خاصة للمكتبة. شاهد بعض أمثلة المكافآت الخاصة بي للحصول على نسخة معدلة قليلاً من المكتبة

** شيء آخر يتضمن مجموعة خطوط 5 × 4 ، وهو أمر رائع أن يكون لديك خط أصغر - تم التعليق عليه على أي حال في المكتبة. لقد قمت بإلغاء التعليق عليها ، وعملت عليها ، لكنني لاحظت بعض المشكلات بها - أكبرها لا يتم تمريره. وقد لاحظت أنه يبدو أنه يسبب مشاكل مع شبكة wifi أو ربما مكتبة أخرى كنت أرغب في استخدامها.

ومع ذلك ، فإن إحدى المكتبات المعدلة التي أقوم بتضمينها تستخدم الخط 5x4.

دعنا ننتقل إلى المشاريع…..

الخطوة 5: المشروع 1: ساعة NTP مصفوفة LED بسيطة مع عرض الوقت العسكري أو شاشة AMPM

المشروع 1: ساعة LED مصفوفة NTP بسيطة مع إما شاشة عرض الوقت العسكرية أو شاشة AMPM
المشروع 1: ساعة LED مصفوفة NTP بسيطة مع إما شاشة عرض الوقت العسكرية أو شاشة AMPM
المشروع 1: ساعة NTP مصفوفة LED بسيطة مع إما شاشة عرض الوقت العسكرية أو شاشة AMPM
المشروع 1: ساعة NTP مصفوفة LED بسيطة مع إما شاشة عرض الوقت العسكرية أو شاشة AMPM
المشروع 1: ساعة NTP مصفوفة LED بسيطة مع إما شاشة عرض الوقت العسكرية أو شاشة AMPM
المشروع 1: ساعة NTP مصفوفة LED بسيطة مع إما شاشة عرض الوقت العسكرية أو شاشة AMPM

المشروع 1: عبارة عن ساعة LED Matrix NTP بسيطة مع عرض الوقت العسكري أو عرض الوقت AMPM ،

ستتصل هذه الساعة بخادم NTP (خادم الوقت) للحصول على الوقت ، وتطبيق مجموعة إيقاف حتى تحصل على التوقيت المحلي. سيعرض الوقت على مصفوفة LED. - إنها ساعة بسيطة للغاية ، ومشروع أول بسيط للغاية.

قبل أن نبدأ في هذا المشروع البسيط ، قد يكون من الجيد معرفة ما هو NTP -

NTP هو بروتوكول إنترنت يستخدم لمزامنة ساعات أجهزة الكمبيوتر مع مرجع زمني. إنه بروتوكول قياسي. NTP تعني بروتوكول وقت الشبكة.

يستخدم NTP التوقيت العالمي المنسق كوقت مرجعي (UTC هو التوقيت العالمي المنسق) وقد تطور من GMT (توقيت غرينتش) ، وفي بعض الدوائر يطلق عليه Zulu Time (العسكرية). يعتمد التوقيت العالمي المنسق (UTC) على الرنين الكمي لذرة السيزيوم.

NTP متسامح مع الأخطاء ، وقابل للتطوير بدرجة كبيرة ، والبروتوكول دقيق للغاية ، باستخدام دقة أقل من نانوثانية.

*

لا تستخدم ساعة التوقيت العالمي المنسق (UTC) كثيرًا لمعظم الأشخاص ، لذلك نحتاج إلى ضبط ساعتنا على التوقيت المحلي. لحسن الحظ يمكننا القيام بذلك بسهولة. لذلك دعونا نبدأ مع ساعة NTP البسيطة هذه….

أولاً ، نحتاج إلى تثبيت مكتبة تجعل التحدث إلى خوادم NTP أمرًا سهلاً.

github.com/arduino-libraries/NTPClient (من المحتمل أن تكون هذه المكتبة في مدير المكتبة)

هل تخطيت الخطوة 3 - ولست متأكدًا من كيفية تثبيت المكتبات (؟) من الأفضل الرجوع وقراءة الخطوة 3:-)

أنت بحاجة للذهاب إلى هذا الموقع ، ووضع أقرب مدينة إليك في منطقتك الزمنية.

www.epochconverter.com/timezones

عندما تضغط على مفتاح الإدخال ، سترى "نتائج التحويل" ، وستحصل في النتائج على تعويضك (الفرق عن توقيت جرينتش / التوقيت العالمي المنسق) في ثوانٍ (بالنسبة لي هو 14400)

في رسم dfrobot_firebeetle_led_matrix_ntp_clock على السطر 66 ، سترى:

#define TIMEOFFSET -14400 // ابحث عن المنطقة الزمنية الخاصة بك هنا https://www.epochconverter.com/timezones OFF اضبط بالثواني # حدد AMPM 1 // 1 = AM PM time ، 0 = Military / 24 HR Time

استبدل 14400 بالإزاحة. السطر التالي الذي ستشاهده AMPM 1 - سيؤدي ذلك إلى عرض الساعة للوقت صباحًا / مساءً - إذا كنت تفضل رؤيته في غضون 24 ساعة ، اجعل الواحد صفرًا.

بعد ذلك ، قم بتحميل الرسم التخطيطي إلى لوحك ، واتصل بنقطة الوصول (مدير wifi) وأدخل التفاصيل الخاصة بشبكة wifi الخاصة بك. إذا كنت قد قمت بذلك بالفعل ، فمن المفترض أن ترى "متصل" مرر عبر الشاشة وبعد بضع ثوانٍ سترى الوقت.

هذا كل شيء لهذا المشروع - بسيط وسهل الاستخدام…..

(التحسينات الممكنة: عرض الشهر واليوم والسنة ، وإعداد الجرس والإنذارات - تحكم بشكل عام في ما تراه عبر صفحة الويب. ستتطلب هذه الفكرة إعادة كتابة كبيرة للرسم البسيط الحالي)

جاهز لمشروع آخر بسيط - عرض مكان محطة الفضاء الدولية - تنبؤات المرور ، وعدد الأشخاص الموجودين في الفضاء! (ملاحظة: يستخدم هذا المخطط صفحة ويب للتحكم في ما يتم عرضه) …..

الخطوة 6: المشروع 2: عرض توقع تمرير ISS ،

المشروع 2: عرض تنبؤات ISS Pass ،
المشروع 2: عرض تنبؤات ISS Pass ،
المشروع 2: عرض توقع تمرير ISS ،
المشروع 2: عرض توقع تمرير ISS ،
المشروع 2: عرض توقع تمرير ISS ،
المشروع 2: عرض توقع تمرير ISS ،

المشروع 2: عرض توقع تمرير ISS ، يستخدم هذا المشروع النواة الثانية للمعالج. سيعرض مدى قرب محطة الفضاء الدولية (بالأميال) ، ومتى تتوقع مرور محطة الفضاء الدولية التالية في موقعك (بتوقيت UTC) ، واختيارياً عدد الأشخاص الموجودين في الفضاء. نظرًا لأن الكثير من هذه المعلومات لا يتغير كثيرًا ، فإننا نستخدم المركز الثاني للتحقق فقط من تحديثات تنبؤات المرور ، أو عدد الأشخاص الموجودين في الفضاء كل 15 دقيقة. يمكننا منع العديد من مكالمات API للخادم بهذه الطريقة. هذا المشروع أكثر تعقيدًا بعض الشيء ، ولكن لا يزال من السهل تنفيذه.

يعتمد هذا المشروع على أحد مشاريعي السابقة التي يمكن العثور عليها هنا:

(نظام إخطار بسيط في ISS) استخدمت ESP8266 مع شاشة OLED على اللوحة (D-Duino). بالنسبة للجزء الأكبر من هذا المشروع يستخدم فقط نظام عرض مختلفًا ، قمت بتوسيعه حتى تتمكن من تغيير ما تريد رؤيته أثناء التنقل عبر صفحة ويب. لذلك دعونا نبدأ….

يذهب معظم الفضل في سهولة الاستخدام إلى https://open-notify.org الذي يحتوي على واجهة برمجة تطبيقات بسيطة جدًا وسهلة الاستخدام. تحتوي واجهة برمجة التطبيقات ذات الإشعارات المفتوحة على ثلاثة أشياء يمكن عرضها ، وموقع محطة الفضاء الدولية في خطوط الطول والعرض ، وتمرير التنبؤات بناءً على خط عرض وخط طول معينين. وأخيرًا ، كم عدد الأشخاص (وأسمائهم) في الفضاء.

سنحتاج إلى تثبيت مكتبة أخرى - مكتبة ArduinoJson.

github.com/bblanchon/ArduinoJson

نحتاج أيضًا إلى TimeLib.h ولكني لست متأكدًا من أين حصلت على هذا الشخص أو ما إذا كان مدرجًا في IDE (آسف)….

فلماذا تتنبأ بمكان محطة الفضاء الدولية - تحتوي محطة الفضاء الدولية على العديد من معدات راديو الهواة ، وعندما يكون "فوق الرأس" ، يمكن لمشغل راديو هام الاتصال بمحطة الفضاء الدولية باستخدام بعض أجهزة الراديو البسيطة جدًا (والرخيصة). لقد فعلت ذلك حتى أثناء التنقل (القيادة في السيارة). أنت حقًا لا تحتاج إلى الكثير لإنجاح هذا الأمر. الشيء الوحيد الذي تحتاجه هو معرفة مكانه. ويساعد توجيه الهوائي في اتجاهه العام.

السطر 57 ، 58 ، 59 هي بعض متغيرات العرض - إذا تم ضبطها على 1 ، فسترى عرضًا ، وإذا تم ضبطها على 0 (صفر) فلن ترى أي عرض. (يمكن تعيين هذه المتغيرات في الرسم التخطيطي ، أو تحديثها من صفحة الويب التي تنشئها Firebeetle - المزيد حول ذلك لاحقًا).

int locDis = 1 ؛ // موقع عرض ISSint pasDis = 0 ؛ // تنبؤات العرض بالمرور int pplDis = 1 ؛ // عرض الناس في الفضاء

لذلك سيعرض locDis موقع محطة الفضاء الدولية في خطوط الطول والعرض - كما يعرض أيضًا عدد الأميال التي تبعد عنها.

سيحصل pasDis على تنبؤات المرور من open-notify.org ويعرضها.

وأخيرًا ، سيعرض pplDis الأسماء وعدد الأشخاص الموجودين في الفضاء - يمكن أن يستغرق هذا وقتًا طويلاً جدًا ، ولكنه لا يحدث

في كثير من الأحيان إما. (يمكنك تغييرها أو تركها ، إنها اختيارية تمامًا)

نحتاج أيضًا إلى معرفة خط الطول وخط العرض لدينا ووضعهما في الرسم التخطيطي.

لا يجب أن يكون هذا خط عرضي / خط عرضي دقيق ، يمكن أن يكون مركز مدينتك ، أو بعيدًا قليلاً.تكون بصمة قدم محطة الفضاء الدولية واسعة بينما تكون فوق الرأس ، ويمكن تغطية مئات (أو آلاف) الأميال ، لذا فإن الابتعاد قليلاً عن خط العرض / الطول الخاص بك لن يكون بمثابة كسر للصفقة (معظم الوقت) ، الاتصالات التي تزيد عن 500 ميل أمر شائع جدًا.

إذا كنت لا تعرف خط العرض وخط الطول ، فيمكن لهذا الموقع أن يساعدك.

www.latlong.net بالقرب من السطر 84 من الرسم سترى شيئًا مثل هذا:

// ابحث عن خط العرض وخط الطول هنا // https://www.latlong.net/ float mylat = 39.360095 ؛ تعويم مايلون = -84.58558 ؛

يجب أن يكون هذا كل ما يحتاج إلى التغيير. قم بتحميل الرسم التخطيطي ، وقم بتوصيل Firebeetle بالإنترنت - ويجب أن ترى موقع محطة الفضاء الدولية في خطوط العرض / الطول وعدد الأميال التي تبعد عنها (تذكر أن هذه ستكون مسافة تقريبية. تتحرك محطة الفضاء الدولية بسرعة كبيرة ، و بحلول وقت انتهاء العرض ، كانت محطة الفضاء الدولية قد تحركت عدة أميال من مكانها). يجب أن ترى أيضًا الأشخاص في الفضاء. (إذا لم تقم بتغيير المتغير أعلاه).

نحن نستخدم النواة الثانية من ESP32 لتشغيل موقع ويب ، باستخدام الموقع يمنحنا التحكم في ما يتم عرضه على مصفوفة LED. يجب أن يكون الأمر سهلاً للغاية بشأن كيفية عمله ، حيث يُظهر أحد الأقسام ما تم تشغيله للعرض ، بينما يحتوي قسم آخر على أزرار "نعم" "لا" - النقر فوق "نعم" يعني أنك تريد رؤيته ، أما "لا" فتعني "لا" ر تظهر ذلك. يجب أن ترى أيضًا أن القسم العلوي يتغير بناءً على الأزرار.

الشيء الوحيد الذي لم يتم قصه وتجفيفه هنا هو كيفية العثور على عنوان IP الخاص بـ Firebeetle - لسوء الحظ لم أتمكن من التوصل إلى طريقة جيدة للعثور عليه - لذلك استخدمت للتو وحدة التحكم التسلسلية لـ IDE لعرضها ذلك (9600 باود).

افتح وحدة التحكم ، وسترى عنوان IP. (افتحها قبل أن تحصل على الرسالة المتصلة) - كان خياري الآخر هو عرضها على مصفوفة LED بمجرد بدء التشغيل - قررت عدم ذلك لأنك قد لا تنظر إلى الوقت وستفوتك. كنت قد فكرت في إرسال رسالة SMS ، أو شيء من هذا القبيل ، لكن في النهاية أبقي الأمر بسيطًا. (حاولت أيضًا تعيين عنوان IP ثابت / بوابة / وما إلى ذلك ، لم أتمكن من تشغيله بشكل صحيح مع مدير wifi - لا يزال الرمز في المخطط ، لذلك إذا اكتشفه شخص ما ، فأعلمني بذلك)

يأخذ الرسم التخطيطي أيضًا تقدمًا في إنشاء FreeRTOS في جوهر ESP32 - لدينا مهمة تعمل كل 15 دقيقة أو نحو ذلك ، ما يفعله هذا هو تحديث تنبؤات المرور ، وكذلك الأشخاص في الفضاء. كما قلت سابقًا ، فإن الأشخاص في الفضاء لا يتغيرون كثيرًا ، لذلك من المحتمل أن يتم نقلهم إلى مهمة أخرى وربما يتم تشغيلها مرة واحدة كل 12 ساعة (أو 6 ساعات) - لكن هذا يعمل ، ويبقي الأمور بسيطة.

بالنسبة لأولئك الذين لا يعرفون ، فإن FreeRTOS هي طريقة للسماح لوحدة تحكم صغيرة أحادية النواة بتشغيل مهام متعددة

عادةً ما يتعين عليك تضمين بعض المكتبات والأشياء الأخرى لجعلها تعمل - ومع ذلك فهي مدمجة في جوهر ESP32 - مما يجعل ESP32 جهازًا قويًا للغاية. لمزيد من المعلومات حول FreeRTOS

freertos.org/

التحسينات: هناك عدد من الأشياء التي يمكن تحسينها لهذا المشروع ، وكل يوم تقريبًا أفكر في شيء يمكن القيام به بشكل مختلف قليلاً أو تغييره أو إضافته.

وفي دليل المزيد من الأمثلة عن المستودع ، يمكنك رؤية بعض الأشياء السابقة / المختلفة التي فكرت فيها - بعضها لم ينجح ، وبعضها تغير للتو ، والبعض الآخر مدرج في الرسم التخطيطي الحالي.

* في مرحلة ما ، حاولت إضافة neopixel إلى الشاشة ، لذا سيكون الأمر أشبه بمشروع سابق - لم أجعله يعمل بشكل صحيح (لقد وجدت أنه مشكلة في الطاقة لم أفكر فيها) العمل على طريقة لتحسين هذه الفكرة *

أثناء كتابة هذه الخطوة ، فكرت ، ربما يمكنني إضافة طريقة لتحديث خط الطول وخط العرض إلى موقع الويب - وبهذه الطريقة لن يحتاج الرسم التخطيطي أبدًا إلى التعديل - سأفكر في هذا أيضًا أكثر من ذلك بقليل.

طريقة محسّنة للحصول على عنوان IP هي شيء آخر أرغب في القيام به (ما زلت أفكر في ذلك أيضًا)

دعنا ننتقل إلى مشروعنا التالي …..

الخطوة 7: المشروع 3: لافتة رسالة متحركة بسيطة باستخدام MQTT

المشروع 3: إشارة رسالة متحركة بسيطة باستخدام MQTT
المشروع 3: إشارة رسالة متحركة بسيطة باستخدام MQTT
المشروع 3: لافتة رسالة متحركة بسيطة باستخدام MQTT
المشروع 3: لافتة رسالة متحركة بسيطة باستخدام MQTT
المشروع 3: إشارة رسالة متحركة بسيطة باستخدام MQTT
المشروع 3: إشارة رسالة متحركة بسيطة باستخدام MQTT

"تحميل =" كسول "" تحميل = "كسول"

جزء المكافأة 2 - عرض الصور
جزء المكافأة 2 - عرض الصور
جزء المكافأة 2 - عرض الصور
جزء المكافأة 2 - عرض الصور
جزء المكافأة 2 - عرض الصور
جزء المكافأة 2 - عرض الصور

لذلك اتضح أن المكتبة يمكنها عرض الصور - أنت لسبب ما تبدو هذه الوظيفة "خاصة" - حسنًا ، بالنسبة لهذه الرسومات التالية ، قمت بتعديل المكتبة مرة أخرى وجعلت drawImage وظيفة عامة.

هذه المرة ، أضع المكتبة المعدلة في دليل الرسومات ، لذلك لا تحتاج إلى إعادة تثبيت المكتبة ، فالرسم ينظر إلى نفسه أولاً ، ثم سيبحث في دليل المكتبة ، لذلك نحن جيدون!

*** أخطط لإرسال هذا التغيير إلى DFRobot ، حيث إنه أمر رائع حقًا ، ومن الرائع نوعًا ما أن أكون قادرًا على القيام بهذه الأنواع من الرسومات ***

رسم مصفوفة LED للصور ، هنا كنت أحاول أولاً معرفة ما تريده المكتبة ، وما الذي قد ينجح وما لا ينجح - بدرجات متفاوتة من النجاح. لقد وجدت أن الصور مقاس 8 × 8 تعمل بشكل أفضل ، ولكن يمكنك جعل الآخرين يعملون أيضًا. لقد وجدت أيضًا عددًا قليلاً من محرري مصفوفة led عبر الإنترنت ، بعضهم يعمل بشكل أفضل من البعض الآخر.

xantorohara.github.io/led-matrix-editor/ - يبدو أنه يعمل بشكل جيد ، ويصنع صور 8 × 8 ، وتريدها كمصفوفات بايت.

www.riyas.org/2013/12/online-led-matrix-fo… هذا يعمل بشكل جيد ، ولديه القدرة على عمل شاشات أكبر من 8x8 ، يبدو أن الشاشة قيد التشغيل بجانبها مع هذه الشاشة لكن. يبدو أن مصفوفات البايت تعمل بشكل أفضل هنا. لقد استخدمته لأجعل "غزاة الفضاء" كما رأينا في الفيديو أعلاه.

فكيف يعمل هذا،

drawImage (const بايت * img ، uint8_t width_t ، uint8_t height_t ، int8_t x ، int8_t y ، int img_offset) ؛

متغير مصفوفة بايت الصورة ، عرض الصورة (8) ، ارتفاع الصورة (8) ، موضع البداية على الشاشة x (0) ، y (0) عادة ، ورقم الإزاحة ، وهو ما لست كذلك متأكد بنسبة 100٪ مما يفعله ، لذلك معظم الوقت تركته عند الصفر.

في رسم LED Matrix Images - هناك 8 مصفوفات بايت مختلفة - مع ثلاث طرق مختلفة أيضًا.

- الألعاب النارية هي المصفوفات الأولى ، وبصراحة لست متأكدًا من كيفية عمل هذه - لكنها تعمل.

بعد ذلك يوجد فم - هذا لا يعمل حقًا بشكل صحيح ، الفم يمهد الطريق الخطأ للفرد ، ومحاولة إجراء أي تغييرات تزيد الأمر سوءًا. (تعلم ما يصلح وما لا يصلح هو نصف المتعة)

متبوعًا بأول marioImg - هذا كبير جدًا بالنسبة للعرض ، وأعتقد أن هذا هو المكان الذي يتم فيه تشغيل مجموعة الإيقاف - لقد استخدمتها هنا ، ويمكنك رؤية الجزء الأمامي من ماريو ، إذا قمت بتغيير الإزاحة إلى 1 أنت ' ليرى ظهره. (أنت لا أستطيع أن أخبرك حقًا لماذا أو ما تفعله الإزاحة. يبدو أنه يغير الصورة ولكن لماذا يغيرها مرتين حتى تتمكن من رؤية الجزء الأمامي منه ولماذا 1 يغير الاتجاه الآخر لا يمكنني إخبارك به)

الصور - مصفوفة البايت هي علامة @ قمت بإنشائها - تبدو مثل ما صنعته باستخدام الأداة على

تبدو مصفوفة pic1 بايت أيضًا مثل ما كنت أحاول صنعه ، إلا أنها أصغر مما كنت أحاول - ما لا يمكنني قوله ، لكن يمكنني القول بشكل عام إنه يبدو كما كنت أفعله في المحرر.

mario2Img - هذا هو الإصدار الخاص بي من Mario الأكبر حجمًا لشاشة 8 × 8 - وأنت هناك بكسل واحد أو اثنين في غير محله (خطأي ، وليس شاشات العرض) يبدو وكأنه ماريو صغير (نوعًا).

الغازي 1 و الغازي 2 - كلاهما فكرتي لغزو الفضاء. لقد تبين أنها جيدة جدًا ، ومن خلال وضع الصور فوق بعضها البعض ، يمكنني إنشاء تأثير حركة القدمين.

هناك نوعان من رسومات الألعاب النارية في الدليل ، كل واحدة مختلفة قليلاً وتستحق التجربة.

أحدهما يتحرك الألعاب النارية عبر الشاشة ، لذلك هناك رسوم متحركة أكثر / مختلفة قليلاً … والآخر به لعبتان ناريتان معروضتان في نفس الوقت

هناك أيضًا ثلاث رسومات تخطيطية لـ "الغزاة" ، كل واحدة مختلفة قليلاً ، واحدة تجعل الغزاة يتحرك عبر الشاشة ، ويمكنك أن تنظر إلى كيف فعلت ذلك - (ربما هناك طرق أفضل للقيام بذلك ، لا أعرف)

أكثر من ذلك: هناك بعض الرسومات في دليل الاختبار الخاص بالمستودع - معظمها لم يعمل بالطريقة التي أردتها تمامًا ، أو كانت أفكارًا أريد أن أفعلها ، لكنها لم تعمل بالطريقة التي أردتها. لقد تركتهم لأن أحدهم لديه بعض الأفكار * (لقد صنعت "درعًا" صغيرًا به WS2812 بكسل لاستخدامه مع شاشة محطة الفضاء الدولية ، لكنني قمت بتوصيله بخط 3 فولت ، ولم يكن لدي ما يكفي الطاقة مع تشغيل مصفوفة LED أيضًا ، يعمل البكسل جيدًا ، بدون مصفوفة LED ، لذلك لا يزال هناك شيء يمكنني فعله به) *

يوجد أيضًا دليل يسمى "المزيد من الأمثلة" - هذه اختلافات في بعض رسومات المشروع ، إما تمت إضافة شيء ما أو إزالته أو تغييره بطريقة ما. بالنسبة لهؤلاء ، فهم يعملون - إنهم ليسوا المشروع النهائي. لذلك تركتهم مرة أخرى قد يحصل شخص ما على شيء مفيد لهم. (يمكن)

آمل أن تكون قد استمتعت بهذه التعليمات بقدر ما استمتعت بصنع هذه المشاريع:-)

الخطوة 11: الأحبار…

تمت رعاية هذا المشروع ودعمه من قبل DF Robot. الرجاء استخدام الروابط أدناه للمنتجات:

Firebeetle ESP32 -

غطاء Firebeetle Cover 24x8 LED Matrix -

مستودع الأكواد الخاص بي:

إذا وجدت هذا أو أي من مشاريعي مفيدًا أو ممتعًا ، فيرجى دعمني. أي شيء أحصل عليه يذهب لشراء المزيد من الأجزاء وإنشاء مشاريع أكثر / أفضل.

www.patreon.com/kd8bxp

مكتبة NTPClient

ArduinoJson.h

مكتبة الطقس ESP8266

مكتبة Json-Streaming-Parser

موصى به: