Оглавление:

Интернет-часы: отображение даты и времени с помощью OLED с использованием ESP8266 NodeMCU с протоколом NTP: 6 шагов
Интернет-часы: отображение даты и времени с помощью OLED с использованием ESP8266 NodeMCU с протоколом NTP: 6 шагов

Видео: Интернет-часы: отображение даты и времени с помощью OLED с использованием ESP8266 NodeMCU с протоколом NTP: 6 шагов

Видео: Интернет-часы: отображение даты и времени с помощью OLED с использованием ESP8266 NodeMCU с протоколом NTP: 6 шагов
Видео: ESP8266/ESP32: Дата и время. Синхронизация, NTP-клиент 2024, Ноябрь
Anonim
Интернет-часы: отображение даты и времени с помощью OLED с использованием ESP8266 NodeMCU с протоколом NTP
Интернет-часы: отображение даты и времени с помощью OLED с использованием ESP8266 NodeMCU с протоколом NTP

Привет, ребята, в этой инструкции мы создадим интернет-часы, которые будут получать время из Интернета, поэтому для этого проекта не потребуется никаких 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
Что такое 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-дисплее. Пожалуйста, обратитесь к изображению для вывода.

Рекомендуемые: