پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - ۵ رنگ رنگین کمان

پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - ۵ رنگ رنگین کمان

ساعت اینترنتی ESP32-S3 با افکت رنگین کمان

این پروژه یک ساعت اینترنتی ماتریس RGB با ESP32-S3 است که به Wi-Fi متصل می‌شود، زمان محلی را از یک سرور NTP همزمان می‌کند و زمان را در حال حرکت نشان می‌دهد.HH:MMدر قالب ماتریس RGB NeoMatrix 8×8 داخلی. بر خلاف نسخه‌های رنگی ثابت یا تصادفی، این ساعت از یک انتقال نرم استفاده می‌کند.اثر رنگین کمانکه هر حرف به طور مداوم در طیف RGB جابجا می‌شود در حین اینکه به سمت پایین می‌چرخد. ساعت همچنین به طور دوره‌ای تاریخ را نمایش می‌دهد و به طور خودکار روشنایی را بین روز و شب تنظیم می‌کند.

ESP32-s3_ساعت_آنلاین_انیمیشن

چگونه این ساعت کار می‌کند

پس از اتصال به USB-C، ESP32-S3 به شبکه Wi-Fi شما متصل می‌شود و زمان محلی فعلی را از اینترنت دریافت می‌کند. نمایشگر معمولاً زمان را نشان می‌دهد، اما در فواصل مشخص به نمایش تاریخ تغییر حالت می‌دهد. هم زمان و هم تاریخ با استفاده از یک افکت رنگین کمانی دینامیک نمایش داده می‌شوند که یک نمایش زنده و متحرک را بر روی ماتریس کوچک ۸×۸ ایجاد می‌کند.

کتابخانه‌های مورد استفاده

اسکچ به کتابخانه‌های زیر تکیه دارد:

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

نصب کنیدآدافرایت نئو ماتریساستفاده از مدیریت کتابخانه آردوینو. وابستگی‌های آن، از جملهAdafruit GFX LibraryوAdafruit NeoPixelبه طور خودکار نصب خواهد شد.

پیکربندی مهم کاربر

پایه داده ماتریس (ماتریس RGB داخلی)

هرچند ماتریس RGB به برد ESP32-S3 متصل است، اما پایه داده هنوز باید در شِفر (کود) تعریف شود:

#define MATRIX_PIN 14

پایه GPIO 14 معمولاً در بردهای ماتریس RGB ESP32-S3 استفاده می‌شود. اگر نوع برد شما از پایه متفاوتی استفاده می‌کند، این مقدار را به‌روز کنید.

SSID و رمز عبور Wi-Fi (حساس به بزرگی و کوچکی حروف)

جزییات شبکه خود را با اطلاعات اعتبار Wi-Fi خود جایگزین کنید:

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

مهم:SSIDهای Wi-Fi عبارتند ازحساس به حروف بزرگ و کوچک. یک 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اگر DST فعال است، یا0اگر استفاده نشود

این مقادیر با استفاده از:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

تنظیم خودکارBrightness روز / شب

روشنایی به طور خودکار بر اساس ساعت فعلی تغییر می‌کند:

const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 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 پیش می‌رود و اثر رنگین‌کمان مداومی ایجاد می‌کند که به‌ویژه بر روی صفحه نمایش کوچک ۸×۸ به طرز چشمگیری به نظر می‌رسد.

رفتار نمایش زمان و تاریخ

ساعت حافظه‌های جداگانه‌ای برای زمان و تاریخ نگه می‌دارد:

  • زمان: HH:MM
  • تاریخ: MMM DD(برای مثالJAN 08)

تاریخ در یک بازه ثابت نمایش داده می‌شود:

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

در پایان هر چرخه کامل اسکرول، شِفر (کود) تصمیم می‌گیرد که آیا به نمایش زمان ادامه دهد یا به تاریخ منتقل شود.

منطق اسکرول در یک ماتریس ۸×۸

به دلیل اینکه نمایشگر تنها 8 پیکسل عرض دارد، متن به آرامی از راست به چپ حرکت می‌کند. زمانی که متن کاملاً از صفحه خارج شد، نشانگر بازنشانی می‌شود و محتوای بعدی (زمان یا تاریخ) برای دور بعدی بارگذاری می‌شود.

مظاهرات

پس از بارگذاری طرح و تأمین برق برد از طریق USB-C:

  • ESP32-S3 به شبکه Wi-Fi شما متصل می‌شود.
  • زمان از اینترنت همزمان‌سازی شده است
  • زمان به جلو می‌غلتد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++
کپی شد!

منابع و مراجع

فایل‌ها📁

فایل فریزینگ