این آموزش بخشی است از: ماتریس LED RGB مدل ESP32-S3
پروژه جالبی برای ایجاد کاربردهای سرگرمکننده و کاربردی با استفاده از ماژول ماتریس RGB ESP32-S3.
پروژه ساعت پایه ESP32-S3 ماتریس LED RGB Wi-Fi + ساعت زمان NTP -1
ساعت اینترنتی ESP32-S3 با NeoMatrix 8×8 (Wi-Fi + زمان NTP)
این پروژه یک ESP32-S3 و یک ماتریس RGB NeoMatrix 8×8 (NeoPixel/WS2812) را به یک ساعت کوچک اینترنتی تبدیل میکند. ESP32 به Wi-Fi متصل میشود، زمان محلی را از یک سرور NTP همگامسازی میکند، سپس زمان را به صورت اسکرول نمایش میدهد.HH:MMدر سراسر صفحه نمایش ۸×۸.

چگونه کار میکند (سطح بالا)
ESP32-S3 به روتر شما متصل میشود با استفاده از<WiFi.h>.
2) زمان را از یک سرور NTP همگام میکند با استفاده از"time.h"وconfigTime().
زمان به صورت فرمتبندی شده استHH:MMو در یک بافر متن کوچک ذخیره شد.
نئو ماتریکس متن را به تصویر میکشد و آن را در پانل ۸×۸ جابهجا میکند.

رنگ RGB
رنگ متن ساعت با استفاده از مقادیر RGB (قرمز، سبز، آبی) کنترل میشود، که در آن هر کانال رنگ از 0 تا 255 متغیر است و ترکیبهای مختلف رنگهای متفاوتی را بر روی NeoMatrix ایجاد میکنند. با تنظیم دادنcolor_RED,color_GREEN, andcolor_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.
تنظیمات مهم کاربری که باید ویرایش کنید
1) رنگ متن (RGB)
رنگ متن ساعت خود را با استفاده از مقادیر ۰-۲۵۵ تنظیم کنید:
//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));توجه:اگر تمام رنگها را به ۰ (سیاه) تنظیم کنید، متن نامرئی میشود. طراحی شامل یک بررسی ایمنی است:
// 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;
}این اطمینان میدهد که ماتریس هرگز به خاطر تنظیم رنگ نامرئی "مرده" به نظر نمیرسد.
2) نام و رمز عبور Wi-Fi
اینها را با نام واقعی و رمز عبور Wi-Fi خود جایگزین کنید:
const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";در حین راهاندازی، ESP32 پیشرفت اتصال را در نمایشگر مسلسل نمایش میدهد و پس از حدود ۱۵ ثانیه (۳۰ بار تلاش × ۵۰۰ میلیثانیه) زماناش تمام میشود.
سرور NTP
سرور NTP پیشفرض عبارت است از:
const char* ntpServer = "pool.ntp.org";شما میتوانید آن را به همان شکل نگه دارید. اگر هر زمانی بخواهید از یک سرور محلی استفاده کنید، نام میزبان را با سرور NTP مورد نظر خود جایگزین کنید.
۴) اختلاف ساعت و اختلاف ساعت تابستانی
این دو تنظیم زمان محلی را کنترل میکنند:
// 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= (اختلاف ساعت UTC) × 3600. مثال: UTC-5 →-5*3600UTC+2 →2*3600.daylightOffset_sec=0اگر نمیخواهید تنظیمات DST را تغییر دهید، یا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);این در هر ثانیه یک بار در حلقه اصلی بهروزرسانی میشود.
چگونه پیمایش در یک نمایشگر ۸×۸ کار میکند
ماتریس ۸×۸ خیلی باریک است که نشان دهد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();
}خروجی نمایشگر مسلسل (اشکالزدایی)
این طرح پیامهای مفیدی را چاپ میکند:
- پیشرفت اتصال Wi-Fi و آدرس IP
- آیا همزمانسازی زمان موفقیتآمیز بود؟
- رشته زمان فرمتبندی شده (برای مثال،
Time text: 14:32)
اگر صفحه نمایش خالی است، نمایشگر مسلسل اولین جایی است که باید بررسی کنید تا تأیید کنید که Wi-Fi و NTP در حال کار هستند.
نمایش پروژه
پس از بارگذاری و تنظیم مجدد:
- ESP32 به Wi-Fi متصل میشود
- زمان را از همگامسازی میکند
pool.ntp.org - نمایشها
OKبه طور خلاصه درباره ماتریس - به طور مداوم زمان فعلی را پیمایش میکند به عنوان
HH:MM
دانلودها و واصلها
شِفر (کود) کامل در زیر این مقاله ارائه شده است. قطعات، ابزارها و دادهها نیز در زیر این مقاله پیوند داده شدهاند.
این آموزش بخشی از: ماتریس LED RGB مدل ESP32-S3
- پروژههای ماتریس LED رنگی ESP32-S3 (بازی کجشدن، متن، پیکان، دموی وایفای)
- پروژه ماتریس LED RGB ESP32-S3 2 - متن متحرک
- پروژه ماتریس LED RGB ESP32-S3 3 - متن از تلفن همراه
- پروژه ماتریس LED RGB ESP32-S3 4 - نقطه کج
- پروژه ماتریس LED RGB ESP32-S3 ۵ - پیکان همیشه به سمت بالا
- پروژه ماتریس LED RGB ESP32-S3 6 - بازی Cible
- پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - نمایش زمان و تاریخ چند رنگ 2 ساعته
- پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - ۳ رنگ شب با تاریخ
- پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - ۵ رنگ رنگین کمان
- پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - ۴ رنگ تصادفی
- آزمایش ماتریس LED RGB ESP32-S3 برای تنظیم RGB و GRB
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازون
-
ایبیخرید ماتریس RGB ESP32-S3 از eBayebay.us
-
علیاکسپرسخرید ماتریس RGB ESP32-S3 از علیاکسپرسs.click.aliexpress.com
-
علیاکسپرسمجموعه ماتریس RGB ESP32-S3 را از علیاکسپرس خریداری کنید (2)s.click.aliexpress.com
منابع و مراجع
-
ویدیو
فایلها📁
فایل فریزینگ
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB