INHOUDSOPGAWE:

Internetklok: vertoon datum en tyd met 'n OLED met behulp van ESP8266 NodeMCU met NTP -protokol: 6 stappe
Internetklok: vertoon datum en tyd met 'n OLED met behulp van ESP8266 NodeMCU met NTP -protokol: 6 stappe

Video: Internetklok: vertoon datum en tyd met 'n OLED met behulp van ESP8266 NodeMCU met NTP -protokol: 6 stappe

Video: Internetklok: vertoon datum en tyd met 'n OLED met behulp van ESP8266 NodeMCU met NTP -protokol: 6 stappe
Video: Extract GPS location in Arduino with Ublox Neo-6 and Neo 7m GPS modules 2024, November
Anonim
Internetklok: vertoon datum en tyd met 'n OLED met behulp van ESP8266 NodeMCU met NTP -protokol
Internetklok: vertoon datum en tyd met 'n OLED met behulp van ESP8266 NodeMCU met NTP -protokol

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

Dinge wat jy nodig het
Dinge wat jy nodig het
Dinge wat jy nodig het
Dinge wat jy nodig het
Dinge wat jy nodig het
Dinge wat jy nodig het

vir hierdie projek benodig u die volgende dinge:

Esp8266/nodemcu

Oled ssd1306 0.96"

Springdrade

Broodbord

Usb kabel

Stap 2: Verbindings

Verbindings
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

Laai biblioteke af
Laai biblioteke af
Laai biblioteke af
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

Wat is NTP
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

Kodering Deel
Kodering Deel

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

Kry datum en tyd
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: