Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
V tej vadnici bomo videli, kako pridobiti čas z uporabo ESP8266/nodemcu z Arduino IDE. Pridobivanje časa je še posebej uporabno pri beleženju podatkov za časovni žig vaših odčitkov. Če ima vaš projekt ESP8266 dostop do interneta, lahko dobite čas z uporabo omrežnega časovnega protokola (NTP) - ne potrebujete dodatne strojne opreme. ESP8266 lahko povežete z omrežjem wifi in to bo ura, ki bo sinhronizirana. z omrežjem, zato bo, ko enkrat naložite kodo, dobil čas iz interneta, zato bo vedno prikazal pravilen čas.
Korak: Stvari, ki jih potrebujete
Za ta projekt boste potrebovali zelo malo stvari: kabel USB ESP8266/NODEMCUA za njegovo programiranje.
2. korak: Kaj je NTP in kako bo deloval?
Kaj je NTP: NTP pomeni Network Time Protocol. To je standardni internetni protokol (IP) za sinhronizacijo računalniških ur z nekaterimi referencami po omrežju. Protokol se lahko uporablja za sinhronizacijo vseh omrežnih naprav na usklajen univerzalni čas (UTC). NTP nastavi ure računalnikov na UTC, kateri koli lokalni čas odmik območja ali časovni odmik poletnega časa uporablja stranka. Na ta način se lahko odjemalci sinhronizirajo s strežniki ne glede na razlike v lokaciji in časovnem pasu. Kako bo to delovalo pri nas: Odjemalska naprava, kot je ESP8266, se poveže s strežnikom z uporabo protokola UDP (User Datagram Protocol) na vratih 123. Odjemalec nato pošlje zahteva paket na strežnik NTP. V odgovor na to zahtevo strežnik NTP pošlje paket časovnega žiga. Paket časovnega žiga vsebuje več informacij, kot so časovni žig UNIX, natančnost, zamuda ali časovni pas. Odjemalec lahko nato razčleni trenutne vrednosti datuma in časa.
3. korak: Namestitev knjižnice v Arduino IDE
V svojem Arduino IDE pojdite na Upravitelj knjižnic in poiščite NTP ter preprosto prenesite odjemalsko knjižnico NTP, kot sem jo prenesel, za dodatno pomoč si oglejte sliko.
4. korak: Del za kodiranje
Prosim, kopirajte naslednjo kodo in v kodo vnesite svoje omrežne poverilnice, potem morate zame nastaviti čas zamika 19800, ker je moj časovni pas utc+5: 30, zato je UTC +5: 30 = 5,5*60*60 = 19800UTC+1 = 1*60*60 = 3600 IZRAČUNAJTE časovni pas in ga uredite ter nato naložite kodo.#Include "NTPClient.h" #include "ESP8266WiFi.h" #include "WiFiUdp.h" const char*ssid = "***** ****** "; const char*password =" *********** "; const long utcOffsetInSeconds = 19800; char daysOfTheWeek [7] [12] = {" nedelja "," ponedeljek ", "Torek", "sreda", "četrtek", "petek", "sobota"}; // Določite odjemalca NTP, da dobite časWiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, "pool.ntp.org", utcOffsetInSeconds); () {Serial.begin (115200); WiFi.begin (ssid, geslo); while (WiFi.status ()! = WL_CONNECTED) {zamuda (500); Serial.print ("."); } 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 ()); zamuda (1000);}
5. korak: Pridobite ČAS
Ko naložite kodo na Esp8266, lahko odprete serijski monitor in če je vse v redu, boste lahko dobili čas na serijskem monitorju, saj lahko dobim čas na svojem serijskem monitorju. Torej s tem projektom lahko priložite kateri koli prikažite in nastavite na ustrezno omrežno uro. Zato se zabavajte ob izdelavi omrežne ure.