جدول المحتويات:
- اللوازم
- الخطوة 1: قم بإعداد Arduino IDE الخاص بك لدعم ESP32
- الخطوة 2: قم بتوصيل مصفوفة LED بـ ESP32
- الخطوة 3: ضعها معًا
- الخطوة 4: ملف Arduino IDE و INO
- الخطوة 5: الكود
فيديو: ESP32 تمرير WordClock على مصفوفة LED: 5 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
في هذا المشروع ، أقوم بإنشاء Scrolling WordClock مع ESP32 و LED Matrix وصندوق السيجار.
WordClock هي ساعة توضح الوقت بدلاً من مجرد طباعته على الشاشة أو الحصول على أيدي يمكنك قراءتها. ستخبرك هذه الساعة أنها 10 دقائق و 3 بعد الظهر أو الظهر. حتى أنني برمجته لاستخدام Prevening (من Big Bang Theory) الاسم لفترة غامضة من الوقت بين فترة الظهيرة والمساء. تبدأ الساعة 4:00 مساءً.
إن ESP32 رائع ، فهو ممتع للغاية وغير مكلف للغاية ، إذا كنت تحب برمجة Arduino ، فستندهش حقًا مما يمكن أن يفعله ESP32 بأقل من 10 دولارات. يستخدمون Arduino IDE ويسهل برمجتهم. سأوضح كيفية القيام بذلك في هذا الدليل.
اللوازم
- ESP32 - حوالي 10 دولارات على أمازون
- مصفوفة LED (بحد أقصى 7219) (وأسلاك) - 9 دولارات من أمازون
- صندوق سيجار
- كابل طاقة USB
- طابعة ثلاثية الأبعاد اختيارية لحامل ESP32
الخطوة 1: قم بإعداد Arduino IDE الخاص بك لدعم ESP32
احصل على Arduino IDE:
- في المتصفح ، انتقل إلى
- انقر فوق البرامج ثم التنزيلات للحصول على ARDUINO 1.8.12
أضف دعم ESP32 إلى Arduino IDE الخاص بك:
- ابدأ تشغيل Arduino IDE
- انقر على قائمة الملفات ثم التفضيلات.
بمجرد دخولك إلى "التفضيلات" ، أضف دعم الشركة المصنعة عن طريق إضافة السطر التالي إلى "مدير مجلس الإدارة الإضافي"
dl.espressif.com/dl/package_esp32_index.js
سيتيح لنا هذا الوصول لإضافة اللوحة إلى IDE
اذهب إلى قائمة الأدوات ثم اللوحات وانتقل إلى مدير اللوحة
ابحث بعد ذلك عن "ESP" وأضف الحزمة بواسطة Expressif.
أخيرًا ، نريد العودة إلى قائمة "أدوات" ، ثم "لوحة" مرة أخرى وانتقل لأسفل للعثور على جهاز ESP32 الخاص بك.
المنجم هو "وحدة ESP32 Wrover"
الخطوة 2: قم بتوصيل مصفوفة LED بـ ESP32
تتكون مصفوفة LED من أربعة كتل 8x8 من مصابيح LED وتستخدم شريحة MAX7219. هذا يعطينا 8x32 LEDs في Matrix أو 256 LEDs !!!.
جهاز esp32 موجود على تعليق قمت بإنشائه في TinkerCad. يحمل ماسك المسامير متجهة لأعلى حتى تتمكن من توصيل الأسلاك.
تتصل مصفوفة LED بـ ESP32 باستخدام SPI (الواجهة الطرفية التسلسلية).
استخدم الأسلاك الأنثوية / الأنثوية وقم بتوصيل الدبابيس على النحو التالي:
- ESP32 - 5 فولت إلى VCC على المصفوفة
- ESP32 - GND إلى GND على Matrix
- ESP32 - PIN5 (G5) إلى CS على المصفوفة
- ESP32 - PIN23 (G23) إلى Din on Matrix
- ESP32 - دبوس 18 (G18) إلى CLK في المصفوفة
من الممكن استخدام دبابيس أخرى أو إذا كان ESP32 الخاص بك يحتوي على pinout مختلف.
الخطوة 3: ضعها معًا
بعد ذلك ، قمت بقطع صندوق السيجار لإعطائي مكانًا لوضع شاشة LED. الصندوق ناعم وتمكنت من استخدام سكين موس. ثم غطيت بالرمل لتنعيمه.
لقد قطعت أيضًا كليًا في الخلف لسلك الطاقة. لقد استخدمت للتو طاقة USB. كان بإمكاني إضافة بطارية شاحن هاتف USB داخل علبة السيجار إذا كنت أرغب في أن تكون لاسلكية.
الخطوة 4: ملف Arduino IDE و INO
أفضل جزء هو الكود. لكن يجب أولاً إضافة مكتبة للسماح للبرنامج باستخدام العرض بطريقة أكثر بساطة. أضفت مكتبة MD_MAX72xx.
لإضافة المكتبة ، انقر على قائمة "Sketch" ، ثم "Include Library" و "Manage Libraries" ، وهذا سيسمح لك بالبحث عن مكتبة MD_MAX72xx. فقط انقر فوق تثبيت وستحصل عليه.
بعد ذلك ، احصل على ملف Arduino INO الخاص بي:
github.com/aapicella/wordClock/blob/master/Word_Clock_LED_NTP_final_.ino
قم بتحميل ملف ino في Arduino IDE الخاص بك ،
قم بتوصيل USB من ESP32 بجهاز الكمبيوتر الخاص بك.
انقر على "رسم" ثم تحميل
في هذه المرحلة ، لن تعمل الساعة ، ولن يعرض ESP32 أي شيء. لماذا ا؟ نحتاج إلى إضافة WIFI الخاص بك إلى الكود لأن WordClock يتصل بالإنترنت للحصول على الوقت. هذا صحيح … الخطوة التالية ->.
الخطوة 5: الكود
وصلنا أخيرًا إلى الجزء المفضل لدي. البرنامج. سأقوم بتغطيته من الأعلى إلى الأسفل إذا كنت مهتمًا ، لجعل البرنامج يعمل مع الإنترنت في منزلك ، ما عليك سوى تغيير هذه الخطوط.
// أضف معلومات الشبكة الخاصة بك
const char * ssid = "xxxxxx" ؛
const char * password = "xxxxxx" ؛
البرنامج معقد نوعا ما ، لكنه ممتع للغاية.
لتعطيل "المنع" فقط قم بتغيير القيمة إلى خطأ:
const boolean PREVENING = صحيح ؛ //نظرية الانفجار الكبير.
لتعطيل عرض الوقت الرقمي بعد التمرير ، قم بتغيير هذا إلى خطأ.
const منطقية DISPLAY_DIGITAL = صحيح ، // قم بتشغيل عرض الوقت الرقمي بعد التمرير.
تمرير الوقت:
أحصل على الوقت من خادم الوقت على الإنترنت باستخدام NTP (بروتوكول وقت الشبكة). يتم الاحتفاظ بالوقت في متغير يسمى timeinfo ونحصل على الساعة والدقيقة منه
ساعة int = timeinfo.tm_hour ؛ /// 0-23
دقيقة int = timeinfo.tm_min ؛ // 0-59
تحقق بعد ذلك من صباحًا أو مساءً
إنها AM إذا كانت الساعة <12
أنشأت سلسلة تسمى "theTime" وأبدأها بـ:
theTime = "إنه" ؛
للحصول على الرقم ككلمات ، قمت بإنشاء مجموعة من الكلمات للأرقام حتى 30
أرقام الحرف * = {
"0" ، "واحد" ، "اثنان" ، "ثلاثة" ، "أربعة" ، "خمسة" ، "ستة" ، "سبعة" ، "ثمانية" ، "تسعة" ، "عشرة" ، "أحد عشر" ، "اثنا عشر "،" ثلاثة عشر "،" أربعة عشر "،" ربع "،" ستة عشر "،" سبعة عشر "،" ثمانية عشر "،" تسعة عشر "،" عشرين "،" واحد وعشرون "،" اثنان وعشرون "،" ثلاثة وعشرون " "،" Twenty-Four "،" Twenty-Five "،" Twenty-Six "،" Twenty-Seven "،" Twenty-Eight "،" Twenty-Nine "،" Half Past "} ؛
لذلك عندما تكون الساعة 12:05 أو خمس دقائق بعد الثانية عشرة ، يكون الأمر حقًا بالنسبة إلى Arduino
الأرقام [5] الدقائق السابقة للأرقام [12]
لتحديد ما إذا كانت "الدقائق الماضية" أو "الدقائق إلى" ننظر فقط إلى الدقائق. إذا كانت الدقائق أقل من 31 ، فستكون "Minutes Past" إذا كانت الدقائق أكبر من 31 ، فإننا نستخدم "Minutes To" ولكننا نستخدم الأرقام [60-minutes] لذا فإن 12:50 ستكون 60-50 دقيقة أو أرقامًا [10] والتي من شأنها امنحنا 10 دقائق حتى الساعة 12 0.
بالطبع هناك قواعد أخرى مثل في 15 ، 30 ، 45 ، لا نستخدم الدقائق فقط بعد نصف أو ربع ، وإذا كانت الدقيقة صفرًا ، فإن الوقت هو "الساعة العاشرة" أو الظهيرة.
لتجميعها معًا ، أقوم بإلحاق جميع العناصر بـ String theTime ثم عرضها على مصفوفة LED. أستخدم مجموعة من عبارات If. ربما كان يجب أن أستخدم الحالة ولكن كان من الأسهل الاستمرار في إضافتها.
على سبيل المثال لدينا 12:05
theTime = "إنه"
إذا كانت دقيقة <31 ، استخدم "Minutes Past" وإلا "Minute To"
theTime + = الأرقام [5] + "Minutes Past" + number [12] + "O'Clock" // ملاحظة: التدوين + = هو إلحاق.
بعد ذلك ننظر إلى الساعة لتحديد ما إذا كانت في الصباح أو بعد الظهر أو في المساء.
theTime + = "في المساء"
السلسلة الأخيرة التي تذهب إلى المصفوفة هي:
"إنها خمس دقائق بعد الساعة الثانية عشرة مساءً"
كان هذا المشروع ممتعًا جدًا في الكتابة. إذا كنت ترغب في ذلك ، يرجى النقر فوق القلب وصوت لي من فضلك.
موصى به:
تمرير خط LCD الأحادي: 4 خطوات (بالصور)
تمرير خط LCD الأحادي: مكتبة الكريستال السائل لها وظيفتان مفيدتان: scrollDisplayLeft () و scrollDisplayRight (). تعمل هذه الوظائف على تمرير الشاشة بالكامل. أي أنهم يقومون بالتمرير في كلا الخطين على شاشة 1602 LCD وجميع الأسطر الأربعة على شاشة LCD 2004. ما نحتاجه غالبًا هو أبي
شريط تمرير كاسيت باي إنترنت الأشياء: 7 خطوات (بالصور)
Cassette Pi IoT Scroller: إن Cassette Pi عبارة عن أداة تمرير للإشعارات في الوقت الفعلي قائمة بذاتها ، وكلها موضوعة بدقة داخل شريط كاسيت شفاف. يتم وضع Raspberry Pi Zero بين بكرتي الشريطين ، حيث يتم استرداد جميع أنواع إشعارات إنترنت الأشياء من
شريط تمرير الكاميرا الميكانيكي DIY: 9 خطوات (بالصور)
منزلق الكاميرا المزودة بمحركات DIY: أثناء توثيق بعض المشاريع في العمل ، كنا بحاجة إلى شريط تمرير الكاميرا. كوننا صناع (وبعد أن اكتشفنا أن المنزلقات المزودة بمحركات باهظة الثمن) انتهزنا الفرصة وصممنا واحدة بأنفسنا! لذلك ، إذا كنت بحاجة إلى كاميرا بمحرك شريط التمرير للإنشاء
شريط تمرير الكاميرا التلقائي: 8 خطوات (بالصور)
متزلج الكاميرا الآلي: Hallo! Ga naar stap 1 for meer informatie
زر إزالة النقر على عجلة التمرير المزعجة (تمرير سلس): 5 خطوات
أداة إزالة النقر بعجلة التمرير المزعجة (تمرير سلس): هل تتضايق من صوت عجلة التمرير؟ حسنًا ، هذه هي فرصتك لأخذ تلك النقرة من هذا التمرير! إذا كسرت الفأرة ، فهذا ليس خطأي. أنا أفعل هذا مع ماوس لوجيتك. لست متأكدًا من أنه سيعمل على الماوس الآخر ب