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

ESP32 تمرير WordClock على مصفوفة LED: 5 خطوات (بالصور)
ESP32 تمرير WordClock على مصفوفة LED: 5 خطوات (بالصور)

فيديو: ESP32 تمرير WordClock على مصفوفة LED: 5 خطوات (بالصور)

فيديو: ESP32 تمرير WordClock على مصفوفة LED: 5 خطوات (بالصور)
فيديو: How to make clock at Home using LED matrix | NTP server | without RTC 2024, شهر نوفمبر
Anonim
Image
Image

في هذا المشروع ، أقوم بإنشاء 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

ملف Arduino IDE و INO
ملف 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 + = "في المساء"

السلسلة الأخيرة التي تذهب إلى المصفوفة هي:

"إنها خمس دقائق بعد الساعة الثانية عشرة مساءً"

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

موصى به: