Съдържание:
- Стъпка 1: Неща, от които се нуждаете
- Стъпка 2: Връзки
- Стъпка 3: Изтеглете библиотеки
- Стъпка 4: Какво е NTP
- Стъпка 5: Част за кодиране
- Стъпка 6: Получаване на дата и час
Видео: Интернет часовник: Показване на дата и час с OLED с използване на ESP8266 NodeMCU с NTP протокол: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Здравейте, момчета, в тази инструкция ще изградим интернет часовник, който ще получава време от интернет, така че този проект няма да се нуждае от никакъв RTC, за да работи, ще се нуждае само от работеща интернет връзка
И за този проект се нуждаете от esp8266, който ще има wifi за достъп до интернет и дисплей за показване на времето в него и 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 използва UTC като справка за време и осигурява точно и синхронизирано време в Интернет.
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
Моля, копирайте следния код и въведете вашата wifi и парола в кода & Въведете отместването на времето в кода, след което го качете на вашите дъски esp8266.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // предоставя ESP8266 специфични Wi-Fi процедури, които викаме за свързване към мрежата #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 височина на дисплея, в пиксели
#дефинирайте 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);
Низ arr_days = {"Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"};
Низ date_time; // Можете да посочите пула на сървъра за време и изместването (в секунди, може да се промени // по -късно с setTimeOffset ()). Допълнително можете да зададете // интервала за актуализиране (в милисекунди, може да бъде променен с помощта на setUpdateInterval ()).
void setup ()
{
Serial.begin (115200);
WiFi.begin (ssid, парола);
while (WiFi.status ()! = WL_CONNECTED)
{
забавяне (500);
Serial.print (".");
}
if (! 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 ();
}
void loop ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Начертайте текст в 2X мащаб
display.setTextColor (СИН);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
ако (hh> 12)
{
hh = hh-12;
display.print (hh);
display.print (":");
display.print (мм);
display.print (":");
display.print (ss);
display.println ("PM");
}
иначе
{
display.print (hh);
display.print (":");
display.print (мм);
display.print (":");
display.print (ss);
display.println ("AM");
}
int ден = timeClient.getDay ();
display.println ("'"+arr_days [ден]+"'");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
Низ дата = date_time.substring (0, index_date);
Serial.println (дата);
display.println (дата);
display.display ();
// Показване на първоначалния текст}
Стъпка 6: Получаване на дата и час
ако сте свързали всичко правилно и сте качили правилно кода, тогава ще можете да видите вашия ntp часовник, работещ на oled дисплей, като моя, работещ в oled дисплея. Моля, вижте изображението за извеждане.
Препоръчано:
Как да направите записване на дата и час - Liono Maker: 5 стъпки
Как да направите записване на дата и час | Liono Maker: Въведение: -В този урок ще научим как да правите регистриране на дата и час с Arduino. За тази цел използвам DS3231 & Модули на Micro SD карта. Основният модул, който се използва за време & регистрирането на дата е DS3231. DS3231 е RTC (истински ти
Вземете час и дата от интернет - Урок: 9 стъпки
Вземете час и дата от Интернет - Урок: В този урок ще научим как да получаваме датата и часа от сървъра NIST TIME с помощта на M5Stack StickC и Visuino, Гледайте демонстрационен видеоклип
ESP8266 Мрежов часовник без RTC - Nodemcu NTP Часовник Няма RTC - ИНТЕРНЕТЕН ЧАСОВНИК ПРОЕКТ: 4 стъпки
ESP8266 Мрежов часовник без RTC | Nodemcu NTP Часовник Няма RTC | ИНТЕРНЕТЕН ЧАСОВНИК ПРОЕКТ: В проекта ще се прави часовник проект без RTC, ще отнеме време от интернет с помощта на wifi и ще го покаже на дисплея st7735
Показване на дата, час и температура с помощта на XinaBox: 8 стъпки
Показване на дата, час и температура с помощта на XinaBox: Охладен OLED дисплей, показващ датата, часа и температурата в Целзий и Фаренхайт, използвайки Xinabox xChips на базата на ESP8266
Часовник с IR дистанционно управление за настройки на час/дата: 5 стъпки
Часовник с IR дистанционно управление за настройки на час/дата: Това е прост часовник, направен с лесно достъпни компоненти. Използваният микроконтролер е евтин STM32F030F4P6. Дисплеят е 16x2 LCD с раница I2C (PCF8574). Часовата верига може да бъде изградена с помощта на малки дъски за прототипи и TSSOP