Turinys:
- 1 žingsnis: reikalingi dalykai
- 2 žingsnis: jungtys
- 3 veiksmas: atsisiųskite bibliotekas
- 4 žingsnis: kas yra NTP
- 5 žingsnis: kodavimo dalis
- 6 veiksmas: nustatykite datą ir laiką
Video: Interneto laikrodis: rodyti datą ir laiką naudojant OLED naudojant ESP8266 „NodeMCU“su NTP protokolu: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Sveiki, vaikinai, šioje instrukcijoje mes sukursime interneto laikrodį, kuris gaus laiko iš interneto, todėl šiam projektui vykdyti nereikės jokio RTC, jam reikės tik veikiančio interneto ryšio
Šiam projektui jums reikia esp8266, kuris turės „Wi -Fi“prieigą prie interneto ir ekraną, kuriame bus rodomas laikas, o esp8266 nuskaitys laiką iš interneto naudojant NTP protokolą, ntp reiškia tinklo laiko protokolą, taigi iš esmės yra ntp serveriai žiniatinklyje, kurie naudojami kompiuterių laikrodžiams sinchronizuoti, ir mes naudosime šiuos serverius, kad gautume laiko savo projektui.
1 žingsnis: reikalingi dalykai
šiam projektui jums reikės šių dalykų:
Esp8266/nodemcu
Oled ssd1306 0,96"
Jumperio laidai
Bandomoji Lenta
USB kabelis
2 žingsnis: jungtys
Šis 4 kontaktų OLED ekranas palaiko ryšį su ESP8266 moduliu, naudodamas I2C protokolą, žemiau yra schema ir jungčių lentelė, skirta OLED I2C kaiščiams sujungti su „NodeMCU“, kad būtų rodomas interneto laikas.
3 veiksmas: atsisiųskite bibliotekas
Įsitikinkite, kad į „Arduino ide“atsisiuntėte SD1306 bibliotekas, kaip parodyta paveikslėlyje, ir įsitikinkite, kad taip pat turite „Adafruit GFX“biblioteką, jei ne, įdiekite šias dvi bibliotekas.
Savo „Arduino IDE“eikite į bibliotekų tvarkytuvę ir ieškokite NTP ir tiesiog atsisiųskite NTP kliento biblioteką, kaip aš atsisiunčiau, daugiau pagalbos ieškokite paveikslėlyje.
4 žingsnis: kas yra NTP
NTP yra vienas seniausių tinklų interneto protokolo (IP), skirtas sinchronizuoti laikrodžius tarp kompiuterių tinklų. Jį sukūrė Davidas L. Millsas iš Delavero universiteto 1981 m. Šis protokolas gali būti naudojamas daugeliui tinklų sinchronizuoti su koordinuotu pasauliniu laiku (UTC) per kelias milisekundes. UTC yra pagrindinis laiko standartas, pagal kurį pasaulis reguliuoja laikrodį ir laiką. UTC nesikeičia ir skiriasi įvairiose geografinėse vietose. NTP naudoja UTC kaip laiko atskaitą ir suteikia tikslų ir sinchronizuotą laiką internete.
NTP veikia pagal hierarchinį kliento-serverio modelį. Aukščiausiame modelyje yra orientaciniai laikrodžiai, žinomi kaip „stratum0“, tokie kaip atominiai laikrodžiai, radijo bangos, GPS, GSM, kurie gauna laiką iš palydovo. Serveriai, gaunantys laiką iš stratum0, vadinami „stratum1“, o serveriai, gaunantys laiką iš stratum1, - „stratum2“ir pan. Tai tęsiasi ir po kiekvieno etapo laiko tikslumas mažėja. NTP automatiškai pasirenka geriausią iš kelių galimų sinchronizuoti laiko šaltinių, todėl protokolas yra atsparus gedimams. Taigi šiame projekte mes gauname laiko iš NTP serverio, naudojant ESP8266 NodeMCU, ir parodome jį OLED ekrane. Tokio paties tipo interneto laikrodis yra sukurtas naudojant ankstesnėje pamokoje pateiktą ESP32.
5 žingsnis: kodavimo dalis
Norėdami paprašyti datos ir laiko, inicijuokite laiko klientą su NTP serverių adresu. Kad būtų tiksliau, pasirinkite NTP serverių, esančių arti jūsų geografinės vietovės, adresą. Čia mes naudojame „pool.ntp.org“, kuris suteikia serverius iš viso pasaulio. Jei norite pasirinkti serverius iš Azijos, galite naudoti „asia.pool.ntp.org“. „timeClient“taip pat skaičiuoja UTC laiko poslinkį jūsų laiko juostos milisekundėmis. Pavyzdžiui, Indijos UTC poslinkis yra +5: 30, todėl mes konvertuojame šį poslinkį milisekundėmis, kuris yra lygus 5*60*60 +30*60 = 19800.
Plotas. UTC laiko poslinkis (valandos ir minutės). UTC laiko poslinkis (sekundėmis)
INDIJA +5: 30 19800
LONDONAS 0:00. 0
Niujorkas -5: 00-18000
Nukopijuokite šį kodą ir įveskite savo „wifi“ir slaptažodį į kodą ir įveskite laiko poslinkį į kodą, tada įkelkite jį į savo esp8266 plokštes.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // teikia ESP8266 specifines "Wi-Fi" procedūras, kurias mes kviečiame prisijungti prie tinklo #include "WiFiUdp.h" // tvarko UDP paketų siuntimą ir gavimą
#include "SPI.h" // SPI, skirtas OLED sąsajai su "NodeMCu"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // OLED ekrano plotis, pikseliais
#define SCREEN_HEIGHT 64 // OLED ekrano aukštis, pikseliais
#define OLED_RESET -1
„Adafruit_SSD1306“ekranas (SCREEN_WIDTH, SCREEN_HEIGHT ir viela, OLED_RESET);
constchar *ssid = "tavo žmona";
const char *slaptažodis = "yourwifipass";
WiFiUDP ntpUDP;
NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);
Stygos arr_days = {"sekmadienis", "pirmadienis", "antradienis", "trečiadienis", "ketvirtadienis", "penktadienis", "šeštadienis"};
Eilutės data_laikas; // Galite nurodyti laiko serverio telkinį ir poslinkį (sekundėmis, galima // pakeisti vėliau naudojant setTimeOffset ()). Papildomai galite nurodyti // atnaujinimo intervalą (milisekundėmis, galima pakeisti naudojant setUpdateInterval ()).
negaliojanti sąranka ()
{
Serial.begin (115200);
WiFi.begin (ssid, slaptažodis);
o (WiFi.status ()! = WL_CONNECTED)
{
vėlavimas (500);
Serijinis atspaudas (".");
}
if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("SSD1306 paskirstymas nepavyko"));
dėl(;;); // Negalima tęsti, kilpoti amžinai
}
display.clearDisplay ();
display.setTextSize (2); // Pieškite 2X masto tekstą
display.setTextColor (BALTA);
display.setCursor (5, 2);
display.println ("SVEIKINAME");
display.println („nurodomosios medžiagos“);
display.println („Projektas“);
display.display ();
vėlavimas (3000);
timeClient.begin ();
}
tuštumos kilpa ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Pieškite 2X masto tekstą
display.setTextColor (MĖLYNA);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
jei (hh> 12)
{
hh = hh-12;
ekranas.spaudas (hh);
display.print (":");
ekranas.spaudas (mm);
display.print (":");
ekranas.spaudas (ss);
display.println ("PM");
}
Kitas
{
ekranas.spaudas (hh);
display.print (":");
ekranas.spaudas (mm);
display.print (":");
ekranas.spaudas (ss);
display.println („AM“);
}
int day = timeClient.getDay ();
display.println ("" "+arr_days [day]+" '");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
Eilutės data = date_time.substring (0, index_date);
Serial.println (data);
display.println (data);
display.display ();
// Rodyti pradinį tekstą}
6 veiksmas: nustatykite datą ir laiką
jei viską prijungėte tinkamai ir taip pat tinkamai įkėlėte kodą, tuomet pamatysite, kad jūsų ntp laikrodis veikia esamame ekrane, kaip ir mano, veikiantis ekrane. Norėdami gauti išvestį, žiūrėkite paveikslėlį.
Rekomenduojamas:
Pasidaryk pats „Kaip rodyti laiką„ M5StickC ESP32 “naudojant„ Visuino “- lengva padaryti: 9 žingsniai
„Pasidaryk pats“Kaip rodyti laiką „M5StickC ESP32“naudojant „Visuino“- lengva padaryti: šioje pamokoje sužinosime, kaip užprogramuoti „ESP32 M5Stack StickC“su „Arduino IDE“ir „Visuino“, kad būtų rodomas laikas LCD
ESP8266 OLED - Gaukite laiką ir datą iš interneto: 8 žingsniai
ESP8266 OLED - gaukite laiką ir datą iš interneto: šioje pamokoje sužinosime, kaip gauti datą ir laiką iš NIST TIME serverio naudojant ESP8266 OLED ir Visuino, žiūrėkite demonstracinį vaizdo įrašą
Laiko gavimas iš interneto naudojant ESP8266 - NTP laikrodžio projektas su ESP8266 „Nodemcu“: 5 žingsniai
Laiko gavimas iš interneto naudojant ESP8266 | NTP laikrodžio projektas su ESP8266 Nodemcu: Šioje pamokoje pamatysime, kaip gauti laiko naudojant ESP8266/nodemcu su „Arduino IDE“. Laiko gavimas yra ypač naudingas registruojant duomenis ir rodant laiko žymę. Jei jūsų ESP8266 projektas turi prieigą prie interneto, galite gauti laiko naudodami „Network T
ESP8266 Tinklo laikrodis be jokio RTC - Nodemcu NTP laikrodis Nr. RTC - INTERNETO LAIKRODŽIO PROJEKTAS: 4 žingsniai
ESP8266 Tinklo laikrodis be jokio RTC | Nodemcu NTP laikrodis Nr. RTC | INTERNETO LAIKRODŽIO PROJEKTAS: Projekte bus sukurtas laikrodžio projektas be RTC, užtruks laikas iš interneto naudojant „Wi -Fi“ir jis bus rodomas st7735 ekrane
Interneto laikrodis (NTP) daiktų interneto projektams: 6 žingsniai
Interneto laikrodis (NTP) daiktų interneto projektams: Šis projektas padės jums gauti laiko iš interneto daiktų interneto projektams nereikalaujant jokios papildomos RTC aparatūros. Šioje pamokoje aptarsime, kaip naudotis „Nokia LCD 5110“, gauti NTP duomenis iš interneto ir rodyti juos LCD konkrečiomis koordinatėmis. Turėkime