Dieses Tutorial ist Teil von: ESP32-S3 RGB-LED-Matrix
Ein cooles Projekt zum Nachbauen für spaßige und praktische Anwendungen mit dem ESP32-S3 RGB-Matrix-Modul.
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.

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 DSTWie 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 14Wenn 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 die
NEO_MATRIX_*Flags (OBEN/UNTEN, LINKS/RECHTS, REIHEN/SSPALTEN, PROGRESSIV/ZICKZACK). - Farbauftrag:Dieser Code verwendet
NEO_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 von
pool.ntp.org - Shows
OKkurz zur Matrix - Scrollt kontinuierlich die aktuelle Zeit als
HH:MM
Downloads und Links
Der vollständige Code ist unterhalb dieses Artikels angegeben. Teile, Werkzeuge und Datenblätter sind ebenfalls unterhalb dieses Artikels verlinkt.
Dieses Tutorial ist Teil von: ESP32-S3 RGB-LED-Matrix
- ESP32-S3 RGB-LED-Matrix-Projekte (Kippspiel, Text, Pfeil, WiFi-Demo)
- ESP32-S3 RGB-LED-Matrix-Projekt 2 - Lauftext
- ESP32-S3 RGB-LED-Matrix-Projekt 3 - Text vom Mobiltelefon
- ESP32-S3 RGB-LED-Matrix-Projekt 4 - Neigungspunkt
- ESP32-S3 RGB-LED-Matrix-Projekt 5 - Pfeil immer nach oben
- ESP32-S3 RGB-LED-Matrix-Projekt 6 - Cible-Spiel
- ESP32-S3 RGB-LED-Matrix-Internet-Uhrprojekt - 2-Uhr mehrfarbige Zeit- und Datumsanzeige
- ESP32-S3 RGB-LED-Matrix-Internet-Uhr-Projekt - 3 Nachtfarben mit Datum
- ESP32-S3 RGB-LED-Matrix-Internet-Uhr-Projekt - 5 Regenbogenfarben
- ESP32-S3 RGB-LED-Matrix-Internet-Uhr Projekt - 4 Zufallsfarben
- ESP32-S3 RGB-LED-Matrix-Test für RGB-, GRB-Einstellung
Dinge, die Sie vielleicht brauchen
-
Amazon
-
eBay
-
AliExpressESP32-S3 RGB-Matrix von AliExpress kaufen (2)s.click.aliexpress.com
-
AliExpressKaufen Sie das ESP32-S3 RGB-Matrix von AliExpress.s.click.aliexpress.com
Ressourcen & Referenzen
-
Video
Dateien📁
Fritzing-Datei
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB