Часы из интернета
Получаем точное время по NTP и учитываем часовой пояс.
У ESP32 нет часов с батарейкой, но через Wi-Fi плата узнаёт точное время у серверов времени (протокол NTP) за доли секунды. Дальше время идёт внутри чипа само.
#include <WiFi.h>
#include <time.h>
const char *SSID = "ИмяСети";
const char *PASS = "пароль";
const int LED = 2;
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
WiFi.begin(SSID, PASS);
while (WiFi.status() != WL_CONNECTED) delay(300);
// часовой пояс Москвы (UTC+3) и два сервера времени
configTzTime("MSK-3", "pool.ntp.org", "time.google.com");
}
void loop() {
struct tm t;
if (!getLocalTime(&t)) {
Serial.println("Жду время...");
return;
}
char buf[40];
strftime(buf, sizeof(buf), "%d.%m.%Y %H:%M:%S", &t);
Serial.println(buf);
digitalWrite(LED, t.tm_sec % 2); // светодиод мигает раз в секунду
delay(1000);
}Часовой пояс
Строка "MSK-3" записана в формате POSIX: имя пояса и смещение с обратным знаком. Москва — UTC+3, поэтому -3. Другие примеры: Самара "SAMT-4", Екатеринбург "YEKT-5", Новосибирск "NOVT-7", Владивосток "VLAT-10", Калининград "EET-2".
Полезные поля
t.tm_hour,t.tm_min,t.tm_sec— часы, минуты, секунды.t.tm_mday— число,t.tm_mon— месяц от 0 (январь = 0),t.tm_year— год минус 1900.t.tm_wday— день недели, 0 = воскресенье.
Попробуйте сделать будильник: в нужное время включайте светодиод или сыграйте звук «Дуино» из урока 8.