ESP32-S3 RGB-LED-Matrix Wi-Fi + NTP-Uhrprojekt -1 Basisuhr

ESP32-S3 RGB-LED-Matrix Wi-Fi + NTP-Uhrprojekt -1 Basisuhr

ESP32-S3 Internetuhr mit 8×8 NeoMatrix (Wi-Fi + NTP-Zeit)

Dieses Projekt verwandelt einen ESP32-S3 und ein 8×8 RGB NeoMatrix (NeoPixel/WS2812) in eine kleine Internetuhr. Der ESP32 verbindet sich mit Wi-Fi, synchronisiert die lokale Zeit von einem NTP-Server und scrollt dann die Uhrzeit alsHH:MMüber das 8×8 Display.

ESP32-S3_Internet-Uhrenanimation

Wie es funktioniert (auf hoher Ebene)

1) ESP32-S3 verbindet sich über Ihren Router mit<WiFi.h>.
Es synchronisiert die Zeit von einem NTP-Server, indem es"time.h"undconfigTime().
Die Zeit ist formatiert alsHH:MMund in einen kleinen Textpuffer gespeichert.
4) Das NeoMatrix rendert den Text und scrollt ihn über das 8×8-Panel.

RGB-Farbe

Die Textfarbe der Uhr wird mittels RGB (Rot, Grün, Blau) Werten gesteuert, wobei jeder Farbausgang von 0 bis 255 reicht und unterschiedliche Kombinationen verschiedene Farben auf der NeoMatrix erzeugen. Durch die Anpassung dercolor_RED,color_GREEN, undcolor_BLUEVariablen, können Sie das Erscheinungsbild der Uhr ganz einfach in jede gewünschte Farbe anpassen. Um schnell die genauen RGB-Werte für eine bestimmte Farbe zu finden, können Sie das Online-Tool zum Auswählen von RGB-Farben hier verwenden:RGB-Farbauswahl.

Verwendete Bibliotheken

Diese Informationen sagen Ihnen genau, worauf die Skizze basiert:

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

InstallierenAdafruit NeoMatrixunter Verwendung des Arduino-Bibliotheksmanagers. Es werden auch erforderliche Abhängigkeiten wie heruntergeladen.Adafruit GFX LibraryundAdafruit NeoPixel.

Wichtige Benutzereinstellungen, die Sie unbedingt bearbeiten müssen

1) Textfarbe (RGB)

Stellen Sie die Textfarbe Ihrer Uhr mit Werten von 0-255 ein:

//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;

Diese Werte werden hier verwendet:

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

Hinweis:Wenn Sie alle Farben auf 0 (schwarz) setzen, wird der Text unsichtbar. Die Skizze enthält eine Sicherheitsprüfung:

// 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;
}

Dies stellt sicher, dass die Matrix niemals "tot" aussieht aufgrund einer unsichtbaren Farbeinstellung.

2) Wi-Fi-SSID und Passwort

Ersetzen Sie dies durch Ihren echten Wi-Fi-Namen und Ihr Passwort:

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

Während des Starts zeigt der ESP32 den Verbindungsfortschritt im Serial Monitor an und läuft nach etwa 15 Sekunden ab (30 Versuche × 500 ms).

3) NTP-Server

Der Standard-NTP-Server ist:

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

Sie können es so belassen. Wenn Sie jemals einen lokalen Server verwenden möchten, ersetzen Sie den Hostnamen durch Ihren bevorzugten NTP-Server.

4) Zeitoffset und Sommerzeit-Offset

Diese beiden Einstellungen steuern die lokale Zeit:

// 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

Wie man sie setzt:

  • gmtOffset_sec= (UTC-Versatzstunden) × 3600. Beispiel: UTC-5 →-5*3600, UTC+2 →2*3600.
  • daylightOffset_sec=0wenn Sie keine DST-Anpassung wünschen, oder3600wenn Ihre Region derzeit die Sommerzeit (+1 Stunde) einhält.

Diese werden hier angewendet:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

Anzeigeeinstellungen

Matrixdaten-Pin

Der Datenpin ist hier definiert:

#define MATRIX_PIN 14

Wenn Ihre Verdrahtung ein anderes GPIO verwendet, ändern Sie diese Nummer entsprechend.

NeoMatrix Layout + Farbanordnung

Ihre Matrix wird wie folgt initialisiert:

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

Zwei häufige Gründe, warum die Anzeige "falsch" aussieht:

  • Drehung / Verdrahtungsrichtung:Wenn der Text auf dem Kopf steht oder gespiegelt ist, passen Sie dieNEO_MATRIX_*Flags (OBEN/UNTEN, LINKS/RECHTS, REIHEN/SSPALTEN, PROGRESSIV/ZICKZACK).
  • Farbauftrag:Dieser Code verwendetNEO_RGB. Einige Paneele sindNEO_GRB. Wenn rot/grün/blau nicht übereinstimmen, ändern SieNEO_RGBin die richtige Reihenfolge.

Helligkeit

Helligkeit ist eingestellt aufinitMatrix():

matrix.setBrightness(40);

Erhöhen für eine hellere Anzeige, verringern um die Wärme- und Stromaufnahme zu senken.

Wie die Zeit generiert wird alsHH:MM

Die Uhr speichert die formatierte Zeit in einem 6-Zeichen-Puffer:

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

DannupdateTimeText()liest die NTP-synchronisierte lokale Zeit und schreibt den Text:

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

Dies wird einmal pro Sekunde in der Hauptschleife aktualisiert.

Wie das Scrollen auf einem 8×8-Display funktioniert

Eine 8×8-Matrix ist zu schmal, um angezeigt zu werden.HH:MMauf einmal, sodass die Skizze den Text scrollt. Es zeichnet die Zeit an einer sich ändernden X-PositionscrollX), then verschiebt es bei jedem Update um einen Pixel nach links.

int16_t scrollX = 8;
const uint16_t scrollIntervalMs = 120;

Jeder Scroll-Schritt:

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

Wenn der Text vollständig den linken Rand verlässt, setzt der Code ihn zurück, um erneut von der rechten Kante zu beginnen:

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

Serial Monitor-Ausgabe (Debugging)

Dieser Sketch gibt nützliche Nachrichten aus:

  • Wi-Fi-Verbindungsfortschritt und IP-Adresse
  • Ob die Zeitsynchronisation erfolgreich war
  • Der formatierte Zeitstring (z. B.,Time text: 14:32)

Wenn das Display leer ist, ist der Serial Monitor der erste Ort, den man überprüfen sollte, um zu bestätigen, dass Wi-Fi und NTP funktionieren.

Projektdemonstration

Nach dem Hochladen und Zurücksetzen:

  • ESP32 verbindet sich mit Wi-Fi
  • Synchronisiert die Zeit vonpool.ntp.org
  • ShowsOKkurz zur Matrix
  • Scrollt kontinuierlich die aktuelle Zeit alsHH:MM

Downloads und Links

Der vollständige Code ist unterhalb dieses Artikels angegeben. Teile, Werkzeuge und Datenblätter sind ebenfalls unterhalb dieses Artikels verlinkt.

Bilder

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
Sprache: C++
Kopiert!

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Dateien📁

Fritzing-Datei