Оглавление:
- Шаг 1. Вещи, которые вам нужны
- Шаг 2: Подключения
- Шаг 3. Загрузите библиотеки
- Шаг 4: Что такое NTP
- Шаг 5: кодирование
- Шаг 6. Получение даты и времени
Видео: Интернет-часы: отображение даты и времени с помощью OLED с использованием ESP8266 NodeMCU с протоколом NTP: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Привет, ребята, в этой инструкции мы создадим интернет-часы, которые будут получать время из Интернета, поэтому для этого проекта не потребуется никаких RTC для запуска, ему потребуется только рабочее подключение к Интернету.
И для этого проекта вам понадобится esp8266, который будет иметь Wi-Fi для доступа в Интернет и дисплей для отображения времени, а esp8266 будет получать время из Интернета по протоколу NTP, ntp означает протокол сетевого времени, поэтому в основном есть серверы ntp. в Интернете, которые используются для синхронизации компьютерных часов, и мы будем использовать эти серверы для получения времени в нашем проекте.
Шаг 1. Вещи, которые вам нужны
для этого проекта вам потребуются следующие вещи:
Esp8266 / nodemcu
Oled ssd1306 0,96 дюйма
Провода перемычки
Макетная плата
USB-кабель
Шаг 2: Подключения
Этот 4-контактный OLED-дисплей обменивается данными с модулем ESP8266 по протоколу I2C. Ниже приведены принципиальная схема и таблица соединений для соединения контактов OLED I2C с NodeMCU для отображения времени в Интернете.
Шаг 3. Загрузите библиотеки
Убедитесь, что вы загрузили библиотеки SD1306 в свой Arduino ide, как показано на изображении, и убедитесь, что вы также используете библиотеку Adafruit GFX, если нет, то установите эти две библиотеки.
В вашей Arduino IDE перейдите в диспетчер библиотек, найдите NTP и просто загрузите клиентскую библиотеку NTP, как я загружал, обратитесь к изображению для получения дополнительной помощи.
Шаг 4: Что такое NTP
NTP - один из старейших сетевых интернет-протоколов (IP) для синхронизации часов между компьютерными сетями. Он был разработан Дэвидом Л. Миллсом из Университета Делавэра в 1981 году. Этот протокол можно использовать для синхронизации многих сетей с всемирным координированным временем (UTC) за несколько миллисекунд. UTC - это основной стандарт времени, по которому мир регулирует часы и время. UTC не меняется и различается для разных географических регионов. NTP использует всемирное координированное время в качестве ориентира времени и обеспечивает точное и синхронизированное время в Интернете.
NTP работает по иерархической модели клиент-сервер. Топовая модель имеет эталонные часы, известные как «stratum0», такие как атомные часы, радиоволны, GPS, GSM, которые получают время со спутника. Серверы, которые получают время от stratum0, называются «stratum1», а серверы, которые получают время от stratum1, называются «stratum2» и так далее. Это продолжается, и точность времени уменьшается после каждого этапа. NTP автоматически выбирает лучший из нескольких доступных источников времени для синхронизации, что делает его отказоустойчивым протоколом. Итак, в этом проекте мы получаем время от сервера NTP, используя ESP8266 NodeMCU и показываем его на OLED-дисплее. Такие же интернет-часы созданы с использованием ESP32 из предыдущего руководства.
Шаг 5: кодирование
Чтобы запросить дату и время, инициализируйте клиент времени с адресом серверов NTP. Для большей точности выберите адрес NTP-серверов, близких к вашему географическому региону. Здесь мы используем «pool.ntp.org», который предоставляет серверы со всего мира. Если вы хотите выбрать серверы из Азии, вы можете использовать «asia.pool.ntp.org». timeClient также принимает смещение времени UTC в миллисекундах вашего часового пояса. Например, смещение UTC для Индии составляет +5:30, поэтому мы конвертируем это смещение в миллисекунды, что равно 5 * 60 * 60 + 30 * 60 = 19800.
Площадь. Смещение времени UTC (часы и минуты). Смещение времени UTC (секунды)
ИНДИЯ +5: 30 19800
ЛОНДОН 0:00. 0
НЬЮ-ЙОРК -5: 00 -18000
Скопируйте следующий код и введите свой Wi-Fi и пароль в коде и введите смещение времени в коде, затем загрузите его на свои платы esp8266.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // предоставляет специальные подпрограммы Wi-Fi для ESP8266, которые мы вызываем для подключения к сети #include "WiFiUdp.h" // обрабатывает отправку и получение пакетов UDP
#include "SPI.h" // SPI для взаимодействия OLED с NodeMCu
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // Ширина OLED-дисплея в пикселях
#define SCREEN_HEIGHT 64 // Высота OLED-дисплея в пикселях
#define OLED_RESET -1
Отображение Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
constchar * ssid = "yourwifissid";
const char * password = "yourwifipass";
WiFiUDP ntpUDP;
NTPClient timeClient (ntpUDP, «pool.ntp.org», 19800, 60000);
String arr_days = {«Воскресенье», «Понедельник», «Вторник», «Среда», «Четверг», «Пятница», «Суббота»};
String date_time; // Вы можете указать пул серверов времени и смещение (в секундах, можно // изменить позже с помощью setTimeOffset ()). Дополнительно вы можете указать // интервал обновления (в миллисекундах, можно изменить с помощью setUpdateInterval ()).
установка void ()
{
Serial.begin (115200);
WiFi.begin (ssid, пароль);
пока (WiFi.status ()! = WL_CONNECTED)
{
задержка (500);
Serial.print (".");
}
если (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F («Ошибка выделения SSD1306»));
для(;;); // Не продолжать, цикл бесконечно
}
display.clearDisplay ();
display.setTextSize (2); // Рисуем текст в масштабе 2X
display.setTextColor (БЕЛЫЙ);
display.setCursor (5, 2);
display.println («ДОБРО ПОЖАЛОВАТЬ»);
display.println ("инструкции");
display.println («Проект»);
display.display ();
задержка (3000);
timeClient.begin ();
}
пустой цикл ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Рисуем текст в масштабе 2X
display.setTextColor (СИНИЙ);
display.setCursor (0, 2);
int чч = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
если (чч> 12)
{
чч = чч-12;
display.print (чч);
display.print (":");
display.print (мм);
display.print (":");
дисплей.принт (сс);
display.println ("PM");
}
еще
{
display.print (чч);
display.print (":");
display.print (мм);
display.print (":");
дисплей.принт (сс);
display.println («AM»);
}
int day = timeClient.getDay ();
display.println ("'" + arr_days [день] + "'");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("Т");
Строка date = date_time.substring (0, index_date);
Serial.println (дата);
display.println (дата);
display.display ();
// Показать начальный текст}
Шаг 6. Получение даты и времени
Если вы все подключили правильно и правильно загрузили код, то вы сможете увидеть, что ваши часы ntp работают на oled-дисплее, как мои, на oled-дисплее. Пожалуйста, обратитесь к изображению для вывода.
Рекомендуемые:
ESP8266 OLED - получение времени и даты из Интернета: 8 шагов
ESP8266 OLED - получение времени и даты из Интернета: в этом руководстве мы узнаем, как получить дату и время с сервера NIST TIME с помощью ESP8266 OLED и Visuino, посмотрите демонстрационное видео
Как сделать отслеживание данных о коронавирусе COVID 19 в реальном времени с помощью ESP8266, отображение электронной бумаги: 7 шагов
Как сделать трекер данных о коронавирусе COVID 19 в реальном времени с ESP8266, дисплей электронной бумаги: 1
Построение / регистрация даты / времени Arduino с использованием Millis () и PfodApp: 11 шагов
Построение / регистрация даты и времени в Arduino с использованием Millis () и PfodApp: не требуется программирования для Arduino или Android. Также поддерживаются модули RTC и GPS. Автоматическая коррекция часовых поясов, дрейфа RTC и отсутствия дополнительных секунд GPS. ) временные метки для построения графика данных
Отображение даты, времени и температуры с помощью XinaBox: 8 шагов
Отображение даты, времени и температуры с использованием XinaBox: крутой OLED-дисплей, показывающий дату, время и температуру в градусах Цельсия и Фаренгейта с использованием Xinabox xChips на основе ESP8266
Установка даты и времени в приложение Blynk с помощью Wemos D1 Mini Pro: 10 шагов
Отправка даты и времени в приложение Blynk с помощью Wemos D1 Mini Pro: мы будем использовать Wemos D1 Mini Pro, чтобы установить время и время. дату в приложении Blynk. Для этого вам не потребуется подключать какие-либо компоненты к Wemos D1 Mini Pro