Përmbajtje:
- Hapi 1: Gjërat që ju nevojiten
- Hapi 2: Lidhjet
- Hapi 3: Shkarkoni Bibliotekat
- Hapi 4: Çfarë është NTP
- Hapi 5: Pjesa e kodimit
- Hapi 6: Marrja e datës dhe orës
Video: Ora e Internetit: Shfaqni datën dhe kohën me një OLED duke përdorur ESP8266 NodeMCU me NTP Protokoll: 6 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:16
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
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
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
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
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
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
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:
DIY Si të shfaqni kohën në M5StickC ESP32 duke përdorur Visuino - Lehtë për tu bërë: 9 hapa
DIY Si të shfaqni kohën në M5StickC ESP32 duke përdorur Visuino - Lehtë për tu bërë: Në këtë tutorial do të mësojmë se si të programojmë ESP32 M5Stack StickC me Arduino IDE dhe Visuino për të shfaqur kohën në LCD
M5STACK Si të shfaqni temperaturën, lagështinë dhe presionin në M5StickC ESP32 duke përdorur Visuino - Lehtë për tu bërë: 6 hapa
M5STACK Si të shfaqni temperaturën, lagështinë dhe presionin në M5StickC ESP32 duke përdorur Visuino - Lehtë për tu bërë: Në këtë tutorial do të mësojmë se si të programojmë ESP32 M5Stack StickC me Arduino IDE dhe Visuino për të shfaqur temperaturën, lagështinë dhe presionin duke përdorur sensorin ENV (DHT12, BMP280, BMM150)
ESP8266 OLED - Merrni kohën dhe datën nga interneti: 8 hapa
ESP8266 OLED - Merrni kohën dhe datën nga interneti: Në këtë tutorial do të mësojmë se si të merrni datën dhe kohën nga serveri NIST TIME duke përdorur ESP8266 OLED dhe Visuino, Shikoni një video demonstruese
Ora Arduino GPS me kohën lokale duke përdorur modulin NEO-6M: 9 hapa
Ora Arduino GPS me kohën lokale duke përdorur modulin NEO-6M: Në këtë tutorial do të mësojmë se si të marrim një kohë aktuale nga satelitët duke përdorur arduino. Shikoni videon
Udhëzues i Shoferit të Internetit IO Duke përdorur një Uebfaqe të drejtpërdrejtë dhe Shembuj pune: 8 hapa
Udhërrëfyesi Udhërrëfyes IO Përdorimi i një Uebfaqeje të drejtpërdrejtë dhe Shembuj pune: Udhëzuesi i Shoferit të Internetit Përdorimi i një Uebfaqeje të drejtpërdrejtë dhe Shembuj të punës Përditësimi i fundit: 07/26/2015 (Kontrolloni shpesh pasi i përditësoj këto udhëzime me më shumë detaje dhe shembuj) Sfondi Kohët e fundit kisha një sfidë interesante që më është paraqitur. Më duhej të