مشروع ساعة الإنترنت لشبكة مصفوفة LEDs RGB ESP32-S3 - 4 ألوان عشوائية

مشروع ساعة الإنترنت لشبكة مصفوفة LEDs RGB ESP32-S3 - 4 ألوان عشوائية

ساعة إنترنت ESP32-S3 بألوان RGB عشوائية

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

ساعة الإنترنت بتأثيرات ESP32-s3

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

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

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

تستخدم هذه الرسمة التخطيطية المكتبات التالية:

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

تثبيتأدا فروت نيو ماتريكسمن مدير مكتبة Arduino. المتطلبات اللازمة مثلAdafruit GFX LibraryوAdafruit NeoPixelسيتم تثبيته تلقائيًا.

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

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

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

#define MATRIX_PIN 14

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

اسم الشبكة اللاسلكية وكلمة المرور (حساسة لحالة الأحرف)

استبدل بيانات اعتماد الواي فاي بتفاصيل شبكتك الخاصة:

const char* WIFI_SSID     = "your WiFi SSID";
const char* WIFI_PASSWORD = "passW0rd";

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

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

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

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

يتم حساب الوقت المحلي باستخدام التوقيت العالمي المنسق (UTC) وإضافات التوقيت الصيفي:

// Toronto-ish: UTC-5, plus 1 hour DST
const long  gmtOffset_sec     = -5 * 3600;
const int   daylightOffset_sec = 3600;
  • gmtOffset_sec: فرق التوقيت بالت_seconds (قم بتعديله لموقعك)
  • 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 عشوائي

تُخزَّن قائمة محددة مسبقًا من ألوان RGB في مصفوفة، حيث يتم تعريف كل لون باستخدام قيم الأحمر والأخضر والأزرق التي تتراوح من 0 إلى 255:

uint8_t userColors[][3] = {
  {255, 0, 0},    // Red
  {0, 255, 0},    // Green
  {0, 0, 255},    // Blue
  {255, 165, 0},  // Orange
  {255, 0, 255},  // Magenta
  {0, 255, 255},  // Cyan
  {255, 255, 0}   // Yellow
};

في كل دورة تمرير كاملة:

  • المأرقام الساعاتتم تعيين لون عشوائي
  • النقطة الرأسيستقبل لونًا عشوائيًا مختلفًا
  • ذودقائق الأرقاماستقبل لونًا عشوائيًا آخر

ينتج عن ذلك مزيج متغير باستمرار من الألوان يحافظ على جاذبية الساعة بصريًا. لإنشاء ألوان مخصصة خاصة بك، يمكنك استخدام أداة اختيار ألوان RGB:اختيار لون RGB.

منطق عرض الوقت

ينقسم الوقت إلى ثلاثة مكونات:

  • ساعات: HH
  • نقطتان :
  • دقائق: MM

يتم رسم كل جزء بشكل فردي حتى يمكن أن يكون له لونه الخاص، بينما تتحرك جميع الأجزاء معًا لتشكيل حركة تمرير سلسة عبر شاشة 8×8.

توليد ألوان عشوائية

لتأمين عشوائية الألوان، يقوم الرسم التخطيطي بتهيئة مولد الأرقام العشوائية عند التشغيل باستخدام دبوس تماثلي غير متصل:

randomSeed(analogRead(0));

هذا يضمن أن تركيبات الألوان مختلفة في كل مرة يتم فيها تشغيل الطاقة وكل دورة لتدوين.

تظاهرة

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

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

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

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

الصور

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
873-ESP32-S3 RGB LED Matrix Internte Clock Project 4 - Random Color
اللغة: C++
تم النسخ!

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

ملفات📁

Fritzing File