Egy videó róla:
A video about it:
A már jól bevált dolgokon ne változtass!
Nálam az NTP szerveres órák a menők, ezeknél csak a wifi beállítást kell elvégezni és "atomóra" lesz belőlük.
Ezúttal egy nagyon egyszerű órát mutatok, amihez alkatrész is minimális kell.
1 db Arduino D1 mini
1 db MAX7219 8-Digit LED kijelző
Don't change things that are already working well!
For me, NTP server clocks are the coolest, all you need to do is set up the WiFi and they become like an atomic clock.
This time, I'm showing a very simple clock that requires only minimal components:
1 Arduino D1 mini and
1 MAX7219 8-digit LED display.
![Kép](https://morvaiferenc.hu/forum/images/ntpclock-max7219-8digit/d1-max7219-full.jpg)
MAX7219 8-Digit LED kijelző - D1 mini - VCC-5V, GND-GND, Din-D1, CLK-D2, CS-D3
Kód: Egész kijelölése
// 2023-12-13
// NTP óra wifi managerrel, hh-mm-ss kijelzéssel, D1 mini valamint egy Max7219-8×7 Segmentes kijelzőn
// Minden egész percben 5 másodpercig megjeleníti a dátumot is. yy-mm-dd formátumban.
// Ha az idő másodperce kisebb mint 5, akkor a dátumot jelenítjük meg, egyébként az időt.
// MAX7219 8-Digit LED kijelző - D1 mini bekötése - VCC-5V, GND-GND, Din-D1, CLK-D2, CS-D3
#include <WiFiManager.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <time.h>
#include <LedControl.h>
// Wi-Fi jelszó változó
char wifiPass[30];
void setup() {
// Serial port inicializálása
Serial.begin(115200);
// Időzóna beállítása (Budapest) - néhány kódot felsoroltam, ezeket kikommentelve lehet választani, mindig csak egy lehet aktív! további kódok itt: https://www.iana.org/time-zones
setenv("TZ", "CET-1CEST,M3.5.0,M10.5.0/3", 1);
// Időzóna beállítása London, Greenwich Mean Time (GMT) / British Summer Time (BST)
//setenv("TZ", "GMT0BST,M3.5.0/1,M10.5.0", 1);
// Időzóna beállítása Bukarest Eastern European Time (EET) / Eastern European Summer Time (EEST)
//setenv("TZ", "EET-2EEST,M3.5.0/3,M10.5.0/4", 1);
// Időzóna beállítása Tokyo, Japan Standard Time (JST)
//setenv("TZ", "JST-9", 1);
// Időzóna beállítása Sydney, Australian Eastern Standard Time (AEST) / Australian Eastern Daylight Time (AEDT)
//setenv("TZ", "AEST-10AEDT,M10.1.0,M4.1.0/3", 1);
configTime(0, 0, "pool.ntp.org", nullptr, nullptr); // Mindkét server értéket nullptr-ra állítjuk
while (!time(nullptr)) {
delay(1000);
}
// Wi-Fi beállítások
WiFiManager wifiManager;
wifiManager.autoConnect("NTPclock8dig");
// Wi-Fi kapcsolat létrehozása
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Max7219-8x7 kijelző inicializálása
LedControl lc = LedControl(D1, D2, D3, 1);
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
// Végtelen ciklus az idő megjelenítéséhez
while (true) {
time_t now = time(nullptr);
tm *local = localtime(&now);
// Idő és dátum formázása
char timeStr[9], dateStr[9];
sprintf(timeStr, "%02d-%02d-%02d", local->tm_hour, local->tm_min, local->tm_sec);
sprintf(dateStr, "%02d-%02d-%02d", local->tm_year % 100, local->tm_mon + 1, local->tm_mday);
// Dátum megjelenítése percenként az első 5 másodpercben
if (local->tm_sec < 5) {
for (int i = 0; i < 8; i++) {
lc.setChar(0, i, dateStr[7 - i], false);
}
}
else {
// Idő megjelenítése
for (int i = 0; i < 8; i++) {
lc.setChar(0, i, timeStr[7 - i], false);
}
}
delay(1000);
}
}
void loop() {
// Semmit sem csinálunk a loop függvényben
}
A wifi kapcsolat beállításához az alábbi lépések szükségesek. Ezt elegendő csak egyszer elvégeznünk, mert elmenti a wifi hálózatunk adatait, és újraindulás után automatikusan csatlakozik hozzá a pontos idő letöltéséig.
A készülék 30 másodpercig keresi a korábban beállított wifi-t. Ha nem találja, vagy ha nem sikerül csatlakoznia, akkor létrehoz egy új wifi hálózatot "NTPclock8dig" néven. Ez 10 percig lesz elérhető, utána energia takarékossági okokból kikapcsolja azt.
Setting up Wifi:
The following steps are necessary to set up a wifi connection. We only need to do this once as it saves the data for our wifi network and automatically reconnects to it after restarting until it retrieves the accurate time.
The device searches for the previously set wifi for 30 seconds. If it cannot find it or fails to connect, it creates a new wifi network named "NTPclock8dig". This will be available for 10 minutes and then turn off for power-saving reasons.
![Kép](https://morvaiferenc.hu/forum/images/ntpclock-max7219-8digit/001.jpg)
A wifi beállításokért kapcsolódjunk erre a hálózatra mobiltelefonról, vagy számítógépről.
Csatlakozás után általában kapunk egy értesítést, hogy jelentkezzünk be a hálózatba.
Ha valami miatt ez nem történne meg, akkor nyissuk meg a http://192.168.4.1/ címet a böngészőnkben.
Ekkor a konfigurációs felület fog fogadni minket
To access the wifi settings, connect to this network from your mobile phone or computer.
After connecting, we usually receive a notification to sign in to the network.
If for any reason this does not happen, open http://192.168.4.1/ in your browser.
Then the configuration interface will greet us.
![Kép](https://morvaiferenc.hu/forum/images/ntpclock-max7219-8digit/002.jpg)
Itt a "Configure WiFi" menüpont alatt pár másodpercen belül megjelennek az elérhető hálózatok. Válasszuk ki, amelyikhez csatlakoztatni szeretnénk készülékünket, és adjuk meg a jelszót.
Under the "Configure WiFi" menu, available networks will appear within a few seconds. Select the network you want to connect your device to and enter the password.
![Kép](https://morvaiferenc.hu/forum/images/ntpclock-max7219-8digit/003.jpg)
A Save gomb hatására a készülék megpróbál csatlakozni a wifi hálózathoz. Ha sikeres, akkor újraindul, és a "NTPclock8dig" hálózatot megszünteti. Ha nem sikeres, akkor pár másodperc múlva újra elérhető lesz a beállítások felülete.
When you press the Save button, the device will attempt to connect to the wifi network. If successful, it will restart and terminate the "NTPclock8dig" network. If it is unsuccessful, the settings interface will be available again in a few seconds.