Освой Arduino играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
С помощью библиотеки NTPClient (доступен через менеджер библиотек) мы можем соединиться с NTP-сервисом точного времени и узнать время.
Данные выводятся на экран и в монитор порта, поэтому можно использовать пример и на голой ESP32, убрав лишние зависимости. В скетче я установил смещение на 3 часа, так как время берётся по Гринвичу. Возможно вам придётся изменить это значение.
#include <NTPClient.h>
#include <WiFi.h>
#include <M5Stack.h>
const char *ssid = "YOUR_WIFI_SSID";
const char *password = "YOUR_WIFI_PASS";
const long utcOffsetInSeconds = 3 * 60 * 60; // смещение на 3 часа
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);
void setup() {
Serial.begin(115200);
M5.begin();
WiFi.begin(ssid, password);
M5.Power.begin();
while ( WiFi.status() != WL_CONNECTED ) {
delay (500);
Serial.print ( "." );
}
timeClient.begin();
}
void loop() {
timeClient.update();
Serial.println(timeClient.getFormattedTime());
M5.Lcd.setCursor(20, 90);
M5.Lcd.setTextSize(6);
M5.Lcd.setTextColor(TFT_YELLOW, TFT_BLACK);
M5.Lcd.print(timeClient.getFormattedTime());
delay(1000);
M5.Lcd.clear();
M5.Lcd.fillScreen(TFT_BLACK);
}
Данные обновляются раз в секунду. На самом деле не стоит так часто опрашивать сервер, узнавайте время только когда это необходимо.