Përmbajtje:

Ora e Internetit: Shfaqni datën dhe kohën me një OLED duke përdorur ESP8266 NodeMCU me NTP Protokoll: 6 hapa
Ora e Internetit: Shfaqni datën dhe kohën me një OLED duke përdorur ESP8266 NodeMCU me NTP Protokoll: 6 hapa

Video: Ora e Internetit: Shfaqni datën dhe kohën me një OLED duke përdorur ESP8266 NodeMCU me NTP Protokoll: 6 hapa

Video: Ora e Internetit: Shfaqni datën dhe kohën me një OLED duke përdorur ESP8266 NodeMCU me NTP Protokoll: 6 hapa
Video: The Magic Behind Optical WAN Networking: OSI's Layer 2 2024, Nëntor
Anonim
Ora e Internetit: Shfaqni datën dhe orën me një OLED duke përdorur ESP8266 NodeMCU me NTP Protocol
Ora e Internetit: Shfaqni datën dhe orën me një OLED duke përdorur ESP8266 NodeMCU me NTP Protocol

Përshëndetje djema në këtë udhëzues ne do të ndërtojmë një orë interneti e cila do të marrë kohë nga interneti kështu që ky projekt nuk do të ketë nevojë për asnjë RTC për t'u ekzekutuar, do të ketë nevojë vetëm për një lidhje interneti që funksionon

Dhe për këtë projekt keni nevojë për një esp8266 i cili do të ketë një wifi për të pasur qasje në internet dhe një ekran për të shfaqur kohën në të dhe esp8266 do të marrë kohë nga interneti duke përdorur protokollin NTP, ntp qëndron për protokollin e kohës së rrjetit, kështu që në thelb ka serverë ntp në internet të cilat përdoren për të sinkronizuar orët e kompjuterit dhe ne do të përdorim këto serverë për të marrë kohë në projektin tonë.

Hapi 1: Gjërat që ju nevojiten

Gjërat që ju nevojiten
Gjërat që ju nevojiten
Gjërat që ju nevojiten
Gjërat që ju nevojiten
Gjërat që ju nevojiten
Gjërat që ju nevojiten

për këtë projekt do t'ju duhen gjërat e mëposhtme:

Esp8266/nodemcu

Oled ssd1306 0.96"

Telat e kërcyesit

Breadboard

Kabllo USB

Hapi 2: Lidhjet

Lidhjet
Lidhjet

Ky ekran OLED me 4 kunja komunikon me modulin ESP8266 duke përdorur protokollin I2C, më poshtë janë diagrami i qarkut dhe tabela e lidhjeve për të lidhur kunjat OLED I2C me NodeMCU për të shfaqur kohën e internetit.

Hapi 3: Shkarkoni Bibliotekat

Shkarkoni Bibliotekat
Shkarkoni Bibliotekat
Shkarkoni Bibliotekat
Shkarkoni Bibliotekat

Sigurohuni që keni shkarkuar bibliotekat SD1306 në idenë tuaj Arduino siç tregohet në figurë dhe sigurohuni që keni edhe bibliotekën Adafruit GFX, nëse jo atëherë instaloni këto dy biblioteka.

Në Arduino IDE tuaj shkoni te menaxheri i Bibliotekave dhe kërkoni për NTP dhe thjesht shkarkoni bibliotekën e klientit NTP siç kam shkarkuar, referojuni imazhit për ndihmë të mëtejshme.

Hapi 4: Çfarë është NTP

Çfarë është NTP
Çfarë është NTP

NTP është një nga Protokollet më të vjetër të rrjetit të Internetit (IP) për sinkronizimin e orëve midis rrjeteve kompjuterike. Wasshtë projektuar nga David L. Mills i Universitetit të Delaware në vitin 1981. Ky protokoll mund të përdoret për të sinkronizuar shumë rrjete me Koha e Koordinuar Universale (UTC) brenda pak milisekonda. UTC është standardi kryesor i kohës me të cilin bota rregullon orën dhe kohën. UTC nuk ndryshon dhe ndryshon për vende të ndryshme gjeografike. NTP përdor UTC si referencë kohore dhe siguron kohë të saktë dhe të sinkronizuar në të gjithë Internetin.

NTP punon në një model hierarkik klient-server. Modeli i lartë ka orë referimi të njohura si "shtresë0" si orë atomike, valë radio, GPS, GSM e cila merr kohë nga sateliti. Serverat që marrin kohë nga shtresa0 quhen "shtresë 1" dhe serverët që marrin kohë nga shtresa 1 quhen "shtresë2" etj. Kjo vazhdon dhe saktësia e kohës vazhdon të ulet pas çdo etape. NTP automatikisht zgjedh më të mirën nga disa burime të disponueshme kohore për të sinkronizuar, gjë që e bën atë protokoll të aftë ndaj gabimeve. Pra, këtu në këtë projekt, ne po marrim kohë nga serveri NTP duke përdorur ESP8266 NodeMCU dhe e shfaqim atë në ekranin OLED. E njëjta lloj ore interneti është ndërtuar duke përdorur ESP32 në mësimin e mëparshëm.

Hapi 5: Pjesa e kodimit

Pjesa e kodimit
Pjesa e kodimit

Për të kërkuar datën dhe kohën, filloni klientin e kohës me adresën e serverëve NTP. Për saktësi më të mirë zgjidhni adresën e serverëve NTP të cilët janë afër zonës tuaj gjeografike. Këtu ne përdorim "pool.ntp.org" e cila jep serverë nga e gjithë bota. Nëse dëshironi të zgjidhni serverë nga Azia, mund të përdorni "asia.pool.ntp.org". timeClient gjithashtu kompenson kohën UTC në milisekonda të zonës tuaj kohore. Për shembull, kompensimi UTC për Indinë është +5: 30 kështu që ne e konvertojmë këtë kompensim në milisekonda e cila është e barabartë me 5*60*60 +30*60 = 19800.

Zona. Koha e kompensuar e UTC (orë dhe minuta). Koha e kompensimit të kohës UTC (sekonda)

INDIA +5: 30 19800

LONDONR 0:00. 0

NJU JORK -5: 00 -18000

Ju lutemi kopjoni kodin e mëposhtëm dhe futni wifi -n dhe fjalëkalimin tuaj në kodin & Shkruani kompensimin e kohës në kod dhe më pas ngarkojeni në tabelat tuaja esp8266.:

#include "NTPClient.h" #include "ESP8266WiFi.h" // siguron ESP8266 rutina të veçanta Wi-Fi që po i thërrasim për t'u lidhur me rrjetin #përfshi "WiFiUdp.h" // trajton dërgimin dhe marrjen e paketave UDP

#përfshi "SPI.h" // SPI për ndërlidhjen e OLED me NodeMCu

#përfshi "Adafruit_GFX.h"

#përfshi "Adafruit_SSD1306.h"

#përcaktoni SCREEN_WIDTH 128 // Gjerësia e ekranit OLED, në piksele

#define SCREEN_HEIGHT 64 // Lartësia e ekranit OLED, në piksele

#përcaktoni OLED_RESET -1

Ekrani Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);

constchar *ssid = "yourwifissid";

const char *fjalëkalim = "yourwifipass";

WiFiUDP ntpUDP;

NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);

String arr_days = {"E Diel", "E Hënë", "E Martë", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"};

Koha e datës së vargut; // Ju mund të specifikoni grupin e serverit të kohës dhe kompensimin (në sekonda, mund të // ndryshohet më vonë me setTimeOffset ()). Për më tepër, mund të specifikoni intervalin e azhurnimit // (në milisekonda, mund të ndryshohet duke përdorur setUpdateInterval ()).

void setup ()

{

Serial.filloj (115200);

WiFi.filloni (ssid, fjalëkalim);

ndërsa (WiFi.status ()! = WL_CONNECTED)

{

vonesë (500);

Serial.print (".");

}

nëse (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println (F ("Ndarja e SSD1306 dështoi"));

për (;;); // Mos vazhdoni, lakoni përgjithmonë

}

display.clearDisplay ();

display.setTextSize (2); // Vizatoni tekst në shkallë 2X

display.setTextColor (E BARDH);

display.setCursor (5, 2);

display.println ("MIREL SE VINI");

display.println ("udhëzues");

display.println ("Projekti");

display.display ();

vonesë (3000);

timeClient.begin ();

}

lak void ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // Vizatoni tekst në shkallë 2X

display.setTextColor (BLUE);

display.setCursor (0, 2);

int hh = timeClient.getHours ();

int mm = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

nëse (hh> 12)

{

hh = hh-12;

ekran.print (hh);

display.print (":");

ekrani.print (mm);

display.print (":");

ekran.print (ss);

display.println ("PM");

}

tjeter

{

ekran.print (hh);

display.print (":");

ekrani.print (mm);

display.print (":");

ekran.print (ss);

display.println ("AM");

}

int ditë = timeClient.getDay ();

display.println ("'"+arr_days [day]+"'");

date_time = timeClient.getFormattedDate ();

int index_date = date_time.indexOf ("T");

Data e vargut = date_time.substring (0, data_dekse);

Serial.println (data);

shfaqje.println (data);

display.display ();

// Shfaq tekstin fillestar}

Hapi 6: Marrja e datës dhe orës

Marrja e Data dhe Ora
Marrja e Data dhe Ora

nëse keni lidhur gjithçka siç duhet dhe keni ngarkuar kodin ashtu siç duhet, atëherë do të jeni në gjendje të shihni orën tuaj ntp që funksionon në ekranin e lyer si e imja në funksionimin në ekranin e lyer. Ju lutemi referojuni imazhit për dalje.

Recommended: