ESP32-S3 RGB LEDマトリックス Wi-Fi + NTPタイムクロックプロジェクト -1 基本時計

ESP32-S3 RGB LEDマトリックス Wi-Fi + NTPタイムクロックプロジェクト -1 基本時計

ESP32-S3インターネットクロック8×8 NeoMatrix(Wi-Fi + NTP時刻)

このプロジェクトは、ESP32-S3と8×8 RGB NeoMatrix(NeoPixel/WS2812)を小型のインターネット時計に変換します。ESP32はWi-Fiに接続し、NTPサーバーからローカル時間を同期し、その後時間をスクロール表示します。HH:MM8×8のディスプレイ全体に。

ESP32-S3インターネット時計アニメーション

仕組み(高レベル)

1) ESP32-S3はルーターに接続します。<WiFi.h>.
NTPサーバーから時間を同期します。"time.h"そしてconfigTime().
3) 時間は次のようにフォーマットされていますHH:MM小さなテキストバッファに保存されました。
4) NeoMatrixはテキストをレンダリングし、それを8×8パネルにスクロールさせます。

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 NeoMatrixArduinoライブラリマネージャーを使用しています。また、必要な依存関係も取得します。Adafruit GFX LibraryAdafruit NeoPixel.

必ず編集する必要がある重要なユーザー設定

1) テキストカラー (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;
}

これにより、マトリックスは見えない色設定のために「死んでいる」ようには見えなくなります。

2) Wi-Fi SSIDとパスワード

これをあなたの実際のWi-Fi名とパスワードに置き換えてください:

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

起動中、ESP32はシリアルモニターに接続進捗を表示し、約15秒後(30回の再試行 × 500ms)にタイムアウトします。

3) 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= (UTCオフセット時間) × 3600。例:UTC-5 →-5*3600, UTC+2 →2*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);

表示が「間違っている」と見える一般的な2つの理由:

  • 回転 / 配線方向:テキストが逆さまやミラー表示されている場合は、調整してください。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);

これはメインループで1秒ごとに更新されます。

8×8ディスプレイでのスクロールの仕組み

8×8の行列は表示するには狭すぎます。HH:MMすぐに、スケッチがテキストをスクロールします。変更されるX位置で時間を描きます。scrollX), その後、各更新ごとに1ピクセル左に移動させます。

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

ダウンロードとリンク

この記事の下に完全なコードが提供されています。部品、ツール、およびデータシートもこの記事の下にリンクされています。

画像

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++
コピーしました!

必要かもしれないもの

リソースと参考文献

ファイル📁

フリッツィングファイル