Turinys:

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“: 5 žingsniai

Video: Laiko gavimas iš interneto naudojant ESP8266 - NTP laikrodžio projektas su ESP8266 „Nodemcu“: 5 žingsniai

Video: Laiko gavimas iš interneto naudojant ESP8266 - NTP laikrodžio projektas su ESP8266 „Nodemcu“: 5 žingsniai
Video: KAIP UŽSIDIRBTI PINIGŲ INTERNETE | UŽDIRBK €200 Į DIENĄ 2024, Lapkritis
Anonim
Laiko gavimas iš interneto naudojant ESP8266 | NTP laikrodžio projektas su ESP8266 „Nodemcu“
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 tinklo laiko protokolą (NTP) - jums nereikia jokios papildomos aparatūros. Galite prijungti savo ESP8266 prie savo „Wi -Fi“tinklo ir tai bus laikrodis, kuris bus sinchronizuojamas su tinklu, taigi jei vieną kartą įkėlę kodą gausite laiko iš interneto, todėl jis visada rodys teisingą laiką.

1 žingsnis: reikalingi dalykai

Daiktai, kurių jums reikia
Daiktai, kurių jums reikia

Šiam projektui jums reikės labai nedaug dalykų: ESP8266/NODEMCUA USB kabelis, kad jį užprogramuotumėte.

2 žingsnis: kas yra NTP ir kaip jis veiks?

Kas yra NTP ir kaip jis veiks?
Kas yra NTP ir kaip jis veiks?
Kas yra NTP ir kaip jis veiks?
Kas yra NTP ir kaip jis veiks?

Kas yra NTP: NTP reiškia tinklo laiko protokolą. Tai standartinis interneto protokolas (IP), skirtas kompiuterio laikrodžiams sinchronizuoti su tam tikra nuoroda per tinklą. Protokolas gali būti naudojamas sinchronizuoti visus tinklo įrenginius pagal suderintą visuotinį laiką (UTC). NTP nustato kompiuterių laikrodžius pagal UTC bet kuriuo vietos laiku Klientas taiko zonos poslinkį arba dienos šviesos taupymo laiką. Tokiu būdu klientai gali sinchronizuotis su serveriais, neatsižvelgiant į vietos ir laiko juostų skirtumus. Kaip tai mums veiks: Kliento įrenginys, pvz., ESP8266, prisijungia prie serverio naudodamas vartotojo prievado protokolą (UDP) 123 prievade. Tada klientas perduoda užklausos paketą NTP serveriui. Atsakydamas į šią užklausą, NTP serveris siunčia laiko žymos paketą. Laiko žymos paketas apima daug informacijos, pvz., UNIX laiko žymę, tikslumą, vėlavimą ar laiko juostą. Tada klientas gali išanalizuoti dabartines datos ir laiko reikšmes.

3 veiksmas: bibliotekos diegimas „Arduino IDE“

Bibliotekos diegimas „Arduino IDE“
Bibliotekos diegimas „Arduino IDE“

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: kodavimo dalis

Kodavimo dalis
Kodavimo dalis
Kodavimo dalis
Kodavimo dalis

Nukopijuokite šį kodą ir įveskite savo tinklo kredencialus į savo kodą, tada jums reikia nustatyti kompensavimo laiką 19800, nes mano laiko juosta yra utc+5: 30, taigi UTC +5: 30 = 5,5*60*60 = 19800UTC+1 = 1*60*60 = 3600Skaičiuokite savo laiko juostą ir redaguokite ją, tada įkelkite kodą.#Include "NTPClient.h" #include "ESP8266WiFi.h" #include "WiFiUdp.h" const char*ssid = "***** ****** "; const char*password =" *********** "; const long utcOffsetInSeconds = 19800; char daysOfTheWeek [7] [12] = {" sekmadienis "," pirmadienis ", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"}; // Nustatykite NTP klientą, kad gautumėte laikoWiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, "pool.ntp.org", utcOffsetInSeconds); void setup () {Serial.begin (115200); WiFi.begin (ssid, slaptažodis); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serijinis atspaudas ("."); } timeClient.begin ();} void loop () {timeClient.update (); Serial.print (daysOfTheWeek [timeClient.getDay ()]); Serial.print (","); Serial.print (timeClient.getHours ()); Serial.print (":"); Serial.print (timeClient.getMinutes ()); Serial.print (":"); Serial.println (timeClient.getSeconds ()); //Serial.println (timeClient.getFormattedTime ()); vėlavimas (1000);}

5 žingsnis: Gaukite laiko

Gaunamas LAIKAS
Gaunamas LAIKAS

Įkėlę kodą į „Esp8266“, galite atidaryti nuoseklųjį monitorių ir, jei viskas gerai, galėsite gauti laiką serijiniame monitoriuje, nes aš galiu gauti laiką savo serijiniame monitoriuje. Taigi su šiuo projektu galite pridėti bet kurį rodyti ir padaryti tinkamą tinklo laikrodį. Taigi smagiai padarykite savo tinklo laikrodį.

Rekomenduojamas: