В этом занятии нам не потребуется собирать схемы. Достаточно подсоединить микроконтроллер NodeMCU v3 к USB-входу на компьютере. Используя WiFi-выход в Интернет, мы можем получать данные с NTP-сервера – сервера точного времени (Network Time Protocol – протокол точного времени). Это точное время мы выводим в мониторе порта.
В скетче, по полученным данным с NTP-сервера рассчитывают точное время в Москве. Если вы находитесь в другом часовом поясе, нужно изменить значение переменной
const long utcOffsetInSeconds = 10800;
на смещение в секундах для вашего местного времени.
// Получаем точное время с NTP-сервера
#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
// Замените на данные своей WiFi-сети
const char* ssid = "**********";
const char* password = "**********";
// Смещение в секундах для часового пояса Москвы
const long utcOffsetInSeconds = 10800;
char daysOfTheWeek[7][24] = {"Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"};
// char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
// Определение NTP-клиента для получения времени
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);
void setup()
{
Serial.begin(9600);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED )
{
delay ( 500 );
Serial.print ( "." );
}
Serial.println ( "Соединение установлено!" );
timeClient.begin();
delay(5000); // Задержка перед первым считыванием точного времени
}
void loop()
{
timeClient.update();
Serial.print(daysOfTheWeek[timeClient.getDay()]);
Serial.print(", ");
Serial.print(timeClient.getHours());
Serial.print(":");
Serial.print(timeClient.getMinutes());
Serial.print(":");
Serial.println(timeClient.getSeconds());
//Serial.println(timeClient.getFormattedTime());
delay(10000);
}
Результат будет выведен в мониторе порта
При первом обращении к серверу точного времени могут получены неправильные данные. В дальнейшем, каждые 10 секунд в мониторе порта выводятся данные текущего времени.
Используются три библиотеки:
#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>