مشروع مصفوفة LED RGB ESP32-S3 مع Wi-Fi + ساعة زمن NTP - الساعة الأساسية 1

مشروع مصفوفة LED RGB ESP32-S3 مع Wi-Fi + ساعة زمن NTP - الساعة الأساسية 1

ساعة إنترنت ESP32-S3 مع 8×8 NeoMatrix (واي فاي + توقيت NTP)

هذا المشروع يحول ESP32-S3 و8×8 RGB NeoMatrix (NeoPixel/WS2812) إلى ساعة إنترنت صغيرة. يتصل ESP32 بشبكة Wi-Fi، ويقوم بمزامنة الوقت المحلي من خادم NTP، ثم يقوم بتمرير الوقت كـHH:MMعبر الشاشة 8×8.

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

كيف تعمل (مستوى عالٍ)

1) يتصل ESP32-S3 بجهاز التوجيه الخاص بك باستخدام<WiFi.h>.
2) يزامن الوقت من خادم NTP باستخدام"time.h"وconfigTime().
3) يتم تنسيق الوقت على أن يكونHH:MMوتم حفظها في مساحة نصية صغيرة.
٤) يقوم NeoMatrix بعرض النص وتمريره عبر اللوحة ٨×٨.

لون RGB

لون نص الساعة يتم التحكم فيه باستخدام قيم RGB (الأحمر، الأخضر، الأزرق)، حيث يتراوح كل قناة لونية من 0 إلى 255، وتخلق التركيبات المختلفة ألوانًا مختلفة على NeoMatrix. من خلال ضبطcolor_RED,color_GREEN, وcolor_BLUEالمتغيرات، يمكنك بسهولة تخصيص مظهر الساعة لأي لون تريده. للعثور بسرعة على قيم RGB الدقيقة للون معين، يمكنك استخدام أداة اختيار لون RGB المتاحة عبر الإنترنت هنا:اختيار لون RGB.

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

تشمل هذه النقاط إخبارك بالضبط على ماذا يعتمد الرسم التخطيطي:

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

تثبيتأدافرويت نيو م트ريكسباستخدام مدير مكتبة أردوينو. كما أنه سيقوم بسحب التبعيات المطلوبة مثلAdafruit GFX LibraryوAdafruit NeoPixel.

إعدادات المستخدم المهمة التي يجب عليك تعديلها

لون النص (RGB)

قم بتعيين لون نص الساعة باستخدام قيم من 0 إلى 255:

//set the color of display made of Red, Green and Blue 
unsigned int color_RED = 17;
unsigned int color_GREEN = 43;
unsigned int color_BLUE = 171;

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

matrix.setTextColor(matrix.Color(color_RED, color_GREEN, color_BLUE));

ملاحظة:إذا قمت بتعيين جميع الألوان إلى 0 (أسود)، فإن النص يصبح غير مرئي. الرسم التخطيطي يتضمن اختبار أمان:

// if user set all colors to 0, the display will be turned off so set it green
if (color_RED == 0 && color_GREEN == 0 && color_BLUE == 0) {
  color_GREEN = 200;
}

هذا يضمن أن المصفوفة لا تبدو "ميتة" أبدًا بسبب إعداد لون غير مرئي.

٢) اسم الشبكة وكلمة المرور للواي فاي

استبدل هذه باسم Wi-Fi الحقيقي وكلمة المرور الخاصة بك:

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

أثناء بدء التشغيل، يقوم ESP32 بطباعة تقدم الاتصال في جهاز المراقبة التسلسلي وينتهي بعد حوالي 15 ثانية (30 محاولة × 500 مللي ثانية).

خادم NTP

خادم NTP الافتراضي هو:

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

يمكنك الاحتفاظ به كما هو. إذا كنت ترغب يومًا في استخدام خادم محلي، استبدل اسم المضيف بخادم NTP المفضل لديك.

4) فرق التوقيت والتوقيت الصيفي

تتحكم هاتان الإعدادتان في الوقت المحلي:

// Toronto-ish: UTC-5, plus 1 hour DST
const long  gmtOffset_sec      = -5 * 3600;  // -5 hours
const int   daylightOffset_sec = 3600;       // +1 hour for DST

كيف تضبطها:

  • gmtOffset_sec= (فرق التوقيت بالساعة) × 3600. مثال: UTC-5 →-5*3600, التوقيت العالمي المنسق +22*3600.
  • daylightOffset_sec=0إذا كنت لا تريد ضبط التوقيت الصيفي، أو3600إذا كانت منطقتك تلاحظ حاليًا التوقيت الصيفي (+1 ساعة).

يتم تطبيق هذه هنا:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

تكوين العرض

بيانات دبابيس المصفوفة

تم تعريف دبابيس البيانات هنا:

#define MATRIX_PIN 14

إذا كانت الأسلاك الخاصة بك تستخدم GPIO مختلف، قم بتغيير هذا الرقم ليتطابق.

ترتيب تخطيط NeoMatrix + الألوان

ماتريسك يتم تهيئتها بهذه الطريقة:

Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
  NEO_MATRIX_TOP    + NEO_MATRIX_LEFT +
  NEO_MATRIX_ROWS   + NEO_MATRIX_PROGRESSIVE,
  NEO_RGB           + NEO_KHZ800);

سببان شائعان لجعل العرض يبدو "خطأ":

  • اتجاه الدوران / التوصيل:إذا ظهر النص مقلوبًا أو معكوسًا، قم بضبط الـNEO_MATRIX_*علم (أعلى/أسفل، يسار/يمين، صفوف/أعمدة، متدرج/زجزاج).
  • ترتيب الألوان:هذا الرمز يستخدمNEO_RGB. بعض الألواح هيNEO_GRB. إذا كانت الأحمر/الأخضر/الأزرق لا تتطابق، قم بالتغييرNEO_RGBإلى الترتيب الصحيح.

سطوع

تم ضبط السطوع فيinitMatrix():

matrix.setBrightness(40);

زيادة للحصول على عرض أكثر إشراقًا، تقليل لتقليل الحرارة واستهلاك الطاقة.

كيف يتم توليد الوقت كـHH:MM

يخزن الساعة الوقت المنسق في مخزن مكون من 6 أحرف:

char timeText[6] = "00:00";

ثمupdateTimeText()يقرأ الوقت المحلي المتزامن مع NTP ويكتب النص:

// Format HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d",
         timeinfo.tm_hour,
         timeinfo.tm_min);

يتم تحديث ذلك مرة واحدة في الثانية في الحلقة الرئيسية.

كيفية عمل التمرير على شاشة 8×8

مصفوفة 8×8 ضيقة جدًا لعرضهاHH:MMفي نفس الوقت، لذلك يقوم الرسم التوضيحي بتمرير النص. يرسم الوقت عند موضع X متغيرscrollXثم يتحرك بها إلى اليسار بمقدار بكسل واحد في كل تحديث.

int16_t scrollX = 8;
const uint16_t scrollIntervalMs = 120;

كل خطوة تمرير:

matrix.fillScreen(0);
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;

عندما يخرج النص بالكامل من الجانب الأيسر، يقوم الكود بإعادة تعيينه لبدء من الحافة اليمنى:

int16_t textWidth = 30;
if (scrollX < -textWidth) {
  scrollX = matrix.width();
}

مخرجات شاشة السيريال (تصحيح الأخطاء)

يقدم هذا الرسم التخطيطي رسائل مفيدة:

  • تقدم اتصال الواي فاي وعنوان IP
  • ما إذا كانت مزامنة الوقت قد نجحت
  • سلسلة الوقت المنسقة (على سبيل المثال،Time text: 14:32)

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

عرض المشروع

بعد الرفع وإعادة الضبط:

  • يتصل ESP32 بشبكة الواي فاي
  • يمزامن الوقت منpool.ntp.org
  • عروضOKباختصار عن المصفوفة
  • تقوم بالتمرير المستمر للوقت الحالي كـ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
868-ESP32-S3 RGB LED Matrix Internte Clock Project 1 - Basic Clock
اللغة: C++
تم النسخ!

الأشياء التي قد تحتاجها

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

ملفات📁

Fritzing File