Съдържание:

Интернет часовник: Показване на дата и час с OLED с използване на ESP8266 NodeMCU с NTP протокол: 6 стъпки
Интернет часовник: Показване на дата и час с OLED с използване на ESP8266 NodeMCU с NTP протокол: 6 стъпки

Видео: Интернет часовник: Показване на дата и час с OLED с използване на ESP8266 NodeMCU с NTP протокол: 6 стъпки

Видео: Интернет часовник: Показване на дата и час с OLED с използване на ESP8266 NodeMCU с NTP протокол: 6 стъпки
Видео: Как использовать акселерометр и гироскоп MPU-6050 с кодом Arduino 2024, Юли
Anonim
Интернет часовник: Показване на дата и час с OLED, използвайки ESP8266 NodeMCU с NTP протокол
Интернет часовник: Показване на дата и час с OLED, използвайки ESP8266 NodeMCU с NTP протокол

Здравейте, момчета, в тази инструкция ще изградим интернет часовник, който ще получава време от интернет, така че този проект няма да се нуждае от никакъв 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
Какво е 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 дисплея. Моля, вижте изображението за извеждане.

Препоръчано: