مشروع ساعة إنترنت مصفوفة LED RGB ESP32-S3 - 5 ألوان قوس قزح

مشروع ساعة إنترنت مصفوفة LED RGB ESP32-S3 - 5 ألوان قوس قزح

ساعة إنترنت ESP32-S3 بتأثير لون قوس قزح

هذا المشروع عبارة عن ساعة إنترنت بشاشة مصفوفة RGB تعتمد على ESP32-S3 تتصل بشبكة Wi-Fi، وتزامن الوقت المحلي من خادم NTP، وتقوم بتمرير الوقت فيHH:MMالتنسيق عبر مصفوفة NeoMatrix RGB المدمجة 8×8. بخلاف النسخ الثابتة أو العشوائية، يستخدم هذا الساعة تنسيقًا سلسًا.تأثير لون قوس قزححيث يتحرك كل حرف بشكل مستمر عبر طيف RGB أثناء التمرير. كما أن الساعة تعرض أيضًا التاريخ بشكل دوري وتضبط السطوع تلقائيًا بين النهار والليل.

ساعة إنترنت ESP32-S3 المتحركة

كيف تعمل هذه الساعة

بمجرد توصيله عبر USB-C، يتصل ESP32-S3 بشبكة Wi-Fi الخاصة بك ويسترجع الوقت المحلي الحالي من الإنترنت. عادة ما يقوم العرض بالتمرير لعرض الوقت، ولكن في فترات محددة يتحول لعرض التاريخ. يتم عرض كل من الوقت والتاريخ باستخدام تأثير قوس قزح الديناميكي، مما يخلق عرضًا نابضًا وحيويًا على المصفوفة الصغيرة 8×8.

المكتبات المستخدمة

يعتمد الرسم التخطيطي على المكتبات التالية:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>

تثبيتأدافرويت نيو ماتريكساستخدام مدير مكتبة الأردوينو. dependencies الخاصة به، بما في ذلكAdafruit GFX LibraryوAdafruit NeoPixelسيتم تثبيته تلقائيًا.

تكوين المستخدم المهم

دبوس بيانات المصفوفة (مصفوفة RGB مدمجة)

على الرغم من أن مصفوفة RGB مرتبطة بلوحة ESP32-S3، إلا أنه يجب تعريف دبوس البيانات في الكود.

#define MATRIX_PIN 14

يتم استخدام GPIO 14 عادةً في لوحات مصفوفة RGB للـ ESP32-S3. إذا كانت نسخة لوحتك تستخدم دبوسًا مختلفًا، يرجى تحديث هذه القيمة.

اسم شبكة Wi-Fi وكلمة المرور (حساسة لحالة الأحرف)

استبدل بيانات Wi-Fi الخاصة بك بتفاصيل الشبكة الخاصة بك:

const char* WIFI_SSID     = "your WIFI";
const char* WIFI_PASSWORD = "passW0rd";

مهم:شبكات الواي فاي هيحساس لحالة الأحرف. اسم SSID يسمى"Book"ليس هو نفسه كما"book"إذا لم يتطابق تسجيل الأحرف تمامًا، فسيفشل ESP32-S3 في الاتصال.

خادم NTP، منطقة زمنية، وتوقيت الصيف

تزامن الساعة الوقت باستخدام خادم NTP عبر الإنترنت:

const char* ntpServer = "pool.ntp.org";

يتم حساب الوقت المحلي باستخدام هذه الفروقات:

// Toronto-ish: UTC-5, plus 1 hour DST
const long  gmtOffset_sec     = -5 * 3600;
const int   daylightOffset_sec = 3600;
  • gmtOffset_sec: فرق التوقيت بالتوقيت العالمي المنسق بالثواني (مثال: UTC-5 =-5 * 3600)
  • daylightOffset_secاستخدم3600إذا كان التوقيت الصيفي مفعلًا، أو0إذا لم تُستخدم

تُستخدم هذه القيم باستخدام:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

سطوع تلقائي ليلاً ونهاراً

تتغير سطوع الشاشة تلقائيًا بناءً على الساعة الحالية:

const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;

بين الساعة 10 مساءً والساعة 6 صباحًا، ينخفض سطوع الشاشة لتقليل الوهج. خلال ساعات النهار، يتم استعادة السطوع العادي.

تأثير لون قوس قزح

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

// Helper to create Rainbow Colors
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if (WheelPos < 85) {
    return matrix.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if (WheelPos < 170) {
    WheelPos -= 85;
    return matrix.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return matrix.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

بينما يتدفق النص، يتقدم كل حرف عبر طيف RGB، مما يخلق تأثير قوس قزح مستمر يبدو مثيرًا للإعجاب بشكل خاص على الشاشة الصغيرة 8×8.

سلوك عرض الوقت والتاريخ

يحافظ الساعة على مخازن منفصلة للوقت والتاريخ:

  • الوقت: HH:MM
  • تاريخ: MMM DD(على سبيل المثالJAN 08)

تظهر التاريخ في فترة ثابتة:

const uint32_t dateIntervalMs = 60000; // Show date every 1 minute

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

منطق التمرير على مصفوفة 8×8

لأن العرض ضيق فقط 8 بكسل، يتم تمرير النص بسلاسة من اليمين إلى اليسار. بمجرد أن يخرج النص بالكامل من الشاشة، يعيد المؤشر ضبطه ويتم تحميل المحتوى التالي (الوقت أو التاريخ) للمرور التالي.

عرض

بعد تحميل الرسم التخطيطي وتشغيل اللوحة عبر USB-C:

  • ESP32-S3 يتصل بشبكة الواي فاي الخاصة بك
  • يتم مزامنة الوقت من الإنترنت
  • تتقدم الوقتHH:MMتنسيق
  • تظهر التاريخ بشكل دوري
  • تُعرض جميع النصوص بتأثير قوس قزح مفعم بالحيوية وسلس.
  • يتم تعتيم العرض تلقائيًا في الليل ويزداد سطوعه خلال النهار

التنزيلات والروابط

يتم توفير الشيفرة المصدرية الكاملة أدناه في هذه المقالة. كما تم ربط أدوات ومراجع مفيدة، بما في ذلك أداة اختيار لون RGB، أدناه في هذه المقالة.

الصور

ESP32 S3 Matrix
ESP32 S3 Matrix
ESP32 S3 Matrix  pin out
ESP32 S3 Matrix pin out
ESP32-S3_RGB_8x8_matrix-3
ESP32-S3_RGB_8x8_matrix-3
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix-2
ESP32-S3_RGB_8x8_matrix-2
ESP32-s3_internet_clock_animation
ESP32-s3_internet_clock_animation
872-ESP32-S3 RGB LED Matrix Internte Clock Project 5 - Rainbow Color
اللغة: C++
تم النسخ!

الموارد والمراجع

ملفات📁

Fritzing File