INHOUDSOPGAWE:
- Stap 1: Dinge wat u nodig het
- Stap 2: Verbindings
- Stap 3: Laai biblioteke af
- Stap 4: Wat is NTP
- Stap 5: Koderingsdeel
- Stap 6: Kry datum en tyd
Video: Internetklok: vertoon datum en tyd met 'n OLED met behulp van ESP8266 NodeMCU met NTP -protokol: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Hallo ouens in hierdie instruksies, ons bou 'n internetklok wat tyd van die internet af sal kry, sodat hierdie projek geen RTC nodig het nie, dit benodig slegs 'n werkende internetverbinding
En vir hierdie projek benodig u 'n esp8266 met wifi om internettoegang te kry en 'n skerm om die tyd daarop te wys, en esp8266 sal tyd van die internet haal met behulp van NTP -protokol, ntp staan vir netwerktydprotokol, so basies is daar ntp -bedieners op die internet wat gebruik word om rekenaarhorlosies te sinchroniseer, en ons sal hierdie bedieners gebruik om tyd in ons projek te kry.
Stap 1: Dinge wat u nodig het
vir hierdie projek benodig u die volgende dinge:
Esp8266/nodemcu
Oled ssd1306 0.96"
Springdrade
Broodbord
Usb kabel
Stap 2: Verbindings
Hierdie 4-pins OLED-skerm kommunikeer met die ESP8266-module met behulp van die I2C-protokol, hieronder is die stroombaan-diagram en die verbindingstabel om OLED I2C-penne met NodeMCU te verbind om internettyd te vertoon.
Stap 3: Laai biblioteke af
Maak seker dat u SD1306 -biblioteke in u Arduino -idee afgelaai het soos in die prentjie, en maak seker dat u ook die Adafruit GFX -biblioteek installeer, indien nie, installeer dan hierdie twee biblioteke.
Gaan na u Arduino IDE na die biblioteekbestuurder en soek na NTP en laai die NTP -kliëntbiblioteek af terwyl ek dit afgelaai het, verwys na die prent vir verdere hulp.
Stap 4: Wat is NTP
NTP is een van die oudste internetprotokol (IP) vir die sinchronisering van horlosies tussen rekenaarnetwerke. Dit is ontwerp deur David L. Mills van die Universiteit van Delaware in 1981. Hierdie protokol kan binne enkele millisekondes gebruik word om baie netwerke met UTC (Coordinated Universal Time) te sinchroniseer. UTC is die primêre tydstandaard waarmee die wêreld klok en tyd reguleer. UTC verander nie en wissel vir verskillende geografiese liggings. NTP gebruik UTC as die tydsverwysing en bied akkurate en gesinchroniseerde tyd oor die internet.
NTP werk op 'n hiërargiese kliënt-bedienermodel. Die topmodel het verwysingshorlosies wat bekend staan as 'stratum0', soos atoomhorlosies, radiogolwe, GPS, GSM wat tyd van die satelliet ontvang. Die bedieners wat tyd van stratum0 ontvang, word “stratum1” genoem en bedieners wat tyd van stratum1 ontvang, word “stratum2” genoem, ensovoorts. Dit gaan aan en die akkuraatheid van die tyd neem af na elke fase. NTP kies outomaties die beste uit verskeie beskikbare tydbronne om te sinchroniseer, wat dit 'n foutverdraagsame protokol maak. So hier in hierdie projek kry ons tyd van die NTP -bediener met behulp van ESP8266 NodeMCU en wys dit op OLED -skerm. Dieselfde soort internetklok word gebou deur die gebruik van ESP32 in die vorige tutoriaal.
Stap 5: Koderingsdeel
Om die datum en tyd aan te vra, initialiseer die tydkliënt met die adres van die NTP -bedieners. Vir 'n beter akkuraatheid, kies die adres van NTP -bedieners wat naby u geografiese gebied is. Hier gebruik ons 'pool.ntp.org' wat bedieners van wêreldwyd gee. As u bedieners uit Asië wil kies, kan u 'asia.pool.ntp.org' gebruik. timeClient neem ook UTC -tydverlaging in millisekondes van u tydsone. Byvoorbeeld, UTC -offset vir Indië is +5: 30, sodat ons hierdie offset omskakel in millisekondes wat gelyk is aan 5*60*60 +30*60 = 19800.
Gebied. UTC tyd verreken (ure en minute). UTC tyd verreken (sekondes)
INDIA +5: 30 19800
LONDEN 0:00. 0
NEW YORK -5: 00 -18000
Kopieer die volgende kode en voer u wifi en wagwoord in die kode in en voer die tydsversekering in die kode in, en laai dit dan op na u esp8266 -borde.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // bied ESP8266 spesifieke Wi-Fi-roetines wat ons roep om aan te sluit op netwerk #include "WiFiUdp.h" // hanteer stuur en ontvang van UDP-pakkette
#sluit "SPI.h" // SPI in vir die koppelvlak van OLED met NodeMCu
#sluit "Adafruit_GFX.h" in
#sluit "Adafruit_SSD1306.h" in
#define SCREEN_WIDTH 128 // OLED -skermwydte, in pixels
#definieer SCREEN_HEIGHT 64 // OLED -skermhoogte, in pixels
#defineer OLED_RESET -1
Adafruit_SSD1306 -skerm (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 = {"Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag"};
String datum_tyd; // U kan die tydbedienerpoel en die offset spesifiseer (in sekondes kan dit later verander word met setTimeOffset ()). U kan ook die // opdateringsinterval spesifiseer (in millisekondes kan dit verander word met setUpdateInterval ()).
leemte opstelling ()
{
Serial.begin (115200);
WiFi.begin (ssid, wagwoord);
terwyl (WiFi.status ()! = WL_CONNECTED)
{
vertraging (500);
Serial.print (".");
}
as (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("Toewysing van SSD1306 misluk"));
vir (;;); // Moenie voortgaan nie, loop vir ewig
}
display.clearDisplay ();
display.setTextSize (2); // Teken 2X-skaal teks
display.setTextColor (WIT);
display.setCursor (5, 2);
display.println ("WELKOM BY");
display.println ("instruksies");
display.println ("Projek");
vertoon.display ();
vertraging (3000);
timeClient.begin ();
}
leemte lus ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Teken 2X-skaal teks
display.setTextColor (BLOU);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
as (hh> 12)
{
hh = hh-12;
vertoon.afdruk (hh);
display.print (":");
vertoon.afdruk (mm);
display.print (":");
vertoon.afdruk (ss);
display.println ("PM");
}
anders
{
vertoon.afdruk (hh);
display.print (":");
vertoon.afdruk (mm);
display.print (":");
vertoon.afdruk (ss);
display.println ("AM");
}
int dag = timeClient.getDay ();
display.println ("'"+arr_days [dag]+"'");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
String date = date_time.substring (0, index_date);
Serial.println (datum);
display.println (datum);
vertoon.display ();
// Wys aanvanklike teks}
Stap 6: Kry datum en tyd
as u alles behoorlik gekoppel het en die kode ook behoorlik opgelaai het, kan u u ntp -horlosie op die oled -skerm sien loop, soos myne in die oled -skerm. Verwys na die prent vir uitvoer.
Aanbeveel:
ESP8266 OLED - Kry tyd en datum vanaf die internet: 8 stappe
ESP8266 OLED - Kry tyd en datum vanaf die internet: in hierdie tutoriaal leer ons hoe om die datum en tyd van NIST TIME -bediener af te haal met ESP8266 OLED en Visuino, kyk na 'n demonstrasievideo
Kry tyd vanaf die internet met behulp van ESP8266 - NTP -klokprojek met ESP8266 Nodemcu: 5 stappe
Kry tyd vanaf die internet met behulp van ESP8266 | NTP -klokprojek met ESP8266 Nodemcu: In hierdie tutoriaal sal ons sien hoe u tyd kry met die ESP8266/nodemcu met Arduino IDE. Om tyd te kry, is veral handig in data -aanmelding om u lesings te tydstempel. As u ESP8266 -projek toegang tot die internet het, kan u tyd kry met Netwerk T
Vertoon CPU -tyd op ESP Wemos D1 OLED: 7 stappe
Vertoon CPU -tyd op ESP Wemos D1 OLED: In hierdie tutoriaal gebruik ons 'n ESP Wemos D1 OLED en Visuino om 'n CPU -tyd op OLED -skerm te vertoon
Arduino datum/tyd plot/aanteken met behulp van Millis () en PfodApp: 11 stappe
Arduino datum/tyd plot/aanteken met behulp van Millis () en PfodApp: geen Arduino- of Android -programmering nodig nie. RTC- en GPS -modules word ook ondersteun. Outomatiese regstelling vir tydsones, RTC -drift en GPS ontbreek sprongsekondes Inleiding Hierdie handleiding wys hoe u u Arduino millis kan gebruik ( ) tydstempels om data op te stel
Datum, tyd en temperatuur vertoon met behulp van XinaBox: 8 stappe
Datum-, tyd- en temperatuurvertoning met behulp van XinaBox: Cool OLED -skerm wat die datum, tyd en temperatuur in Celsius en Fahrenheit toon met behulp van Xinabox xChips gebaseer op ESP8266