Innehållsförteckning:

Internetklocka: Visa datum och tid med en OLED med ESP8266 NodeMCU med NTP -protokoll: 6 steg
Internetklocka: Visa datum och tid med en OLED med ESP8266 NodeMCU med NTP -protokoll: 6 steg

Video: Internetklocka: Visa datum och tid med en OLED med ESP8266 NodeMCU med NTP -protokoll: 6 steg

Video: Internetklocka: Visa datum och tid med en OLED med ESP8266 NodeMCU med NTP -protokoll: 6 steg
Video: Störig granne 2024, Juli
Anonim
Internetklocka: Visa datum och tid med en OLED med ESP8266 NodeMCU med NTP -protokoll
Internetklocka: Visa datum och tid med en OLED med ESP8266 NodeMCU med NTP -protokoll

Hej killar i denna instruktioner vi kommer att bygga en internetklocka som kommer att få tid från internet så detta projekt behöver inte någon RTC för att köra, det kommer bara att behöva en fungerande internetanslutning

Och för detta projekt behöver du en esp8266 som kommer att ha wifi för att få tillgång till internet och en display för att visa tiden på den och esp8266 kommer att hämta tid från internet med NTP -protokoll, ntp står för nätverkstidsprotokoll, så i princip finns det ntp -servrar på webben som används för att synkronisera datorklockor och vi kommer att använda dessa servrar för att få tid i vårt projekt.

Steg 1: Saker du behöver

Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver

för detta projekt behöver du följande saker:

Esp8266/nodemcu

Oled ssd1306 0.96"

Bygelkablar

Bakbord

USB-kabel

Steg 2: Anslutningar

Anslutningar
Anslutningar

Denna 4-stifts OLED-skärm kommunicerar med ESP8266-modulen med I2C-protokollet, nedan är kretsschemat och anslutningstabellen för att ansluta OLED I2C-stift med NodeMCU för att visa internettid.

Steg 3: Ladda ner bibliotek

Ladda ner bibliotek
Ladda ner bibliotek
Ladda ner bibliotek
Ladda ner bibliotek

Se till att du laddade ner SD1306 -bibliotek i ditt Arduino -id som visas på bilden och se till att du också Adafruit GFX -bibliotek, om inte så installera dessa två bibliotek.

I din Arduino IDE går du till Libraries manager och söker efter NTP och laddar bara ner NTP -klientbiblioteket när jag laddade ner, se bilden för ytterligare hjälp.

Steg 4: Vad är NTP

Vad är NTP
Vad är NTP

NTP är ett av de äldsta Internet Protocol (IP) för att synkronisera klockor mellan datornätverk. Det designades av David L. Mills vid University of Delaware 1981. Detta protokoll kan användas för att synkronisera många nätverk till Coordinated Universal Time (UTC) inom några millisekunder. UTC är den primära tidsstandarden genom vilken världen reglerar klockan och tiden. UTC ändras inte och varierar för olika geografiska platser. NTP använder UTC som tidsreferens och ger exakt och synkroniserad tid över Internet.

NTP fungerar på en hierarkisk klient-server-modell. Toppmodellen har referensklockor som kallas "stratum0" som atomur, radiovågor, GPS, GSM som tar emot tid från satelliten. De servrar som tar emot tid från stratum0 kallas "stratum1" och servrar som tar emot tid från stratum1 kallas "stratum2" och så vidare. Detta fortsätter och tidens noggrannhet minskar efter varje steg. NTP väljer automatiskt det bästa av flera tillgängliga tidskällor att synkronisera vilket gör det till ett protokoll som kan tolereras. Så här i det här projektet får vi tid från NTP -server med ESP8266 NodeMCU och visar den på OLED -skärm. Samma typ av internetklocka är byggd med hjälp av ESP32 i tidigare handledning.

Steg 5: Kodningsdel

Kodningsdel
Kodningsdel

För att begära datum och tid, initiera tidsklienten med adressen till NTP -servrar. För bättre noggrannhet väljer du adressen till NTP -servrar som ligger nära ditt geografiska område. Här använder vi “pool.ntp.org” som ger servrar från hela världen. Om du vill välja servrar från Asien kan du använda “asia.pool.ntp.org”. timeClient tar också UTC -tidsförskjutning i millisekunder av din tidszon. Till exempel är UTC -offset för Indien +5: 30 så vi konverterar denna offset i millisekunder som är lika med 5*60*60 +30*60 = 19800.

Område. UTC -tidsförskjutning (timmar och minuter). UTC -tidsförskjutning (sekunder)

INDIEN +5: 30 19800

LONDON 0:00. 0

NEW YORK -5: 00 -18000

Vänligen kopiera följande kod och ange ditt wifi och lösenord i koden & Ange tidsförskjutningen i koden och ladda upp den till dina esp8266 -kort.:

#include "NTPClient.h" #include "ESP8266WiFi.h" // tillhandahåller ESP8266-specifika Wi-Fi-rutiner som vi ringer för att ansluta till nätverket #include "WiFiUdp.h" // hanterar sändning och mottagning av UDP-paket

#inkludera "SPI.h" // SPI för gränssnitt mellan OLED och NodeMCu

#inkludera "Adafruit_GFX.h"

#inkludera "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // OLED -skärmbredd, i pixlar

#define SCREEN_HEIGHT 64 // OLED -skärmhöjd, i pixlar

#define OLED_RESET -1

Adafruit_SSD1306 display (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 = {"söndag", "måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag"};

Sträng datum_tid; // Du kan ange tidsserverpool och offset (i sekunder kan // ändras senare med setTimeOffset ()). Dessutom kan du ange // uppdateringsintervall (i millisekunder kan ändras med setUpdateInterval ()).

void setup ()

{

Serial.begin (115200);

WiFi.begin (ssid, lösenord);

medan (WiFi.status ()! = WL_CONNECTED)

{

fördröjning (500);

Serial.print (".");

}

om (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println (F ("SSD1306 allokering misslyckades"));

för(;;); // Fortsätt inte, slingan för alltid

}

display.clearDisplay ();

display.setTextSize (2); // Rita 2X-skala text

display.setTextColor (VIT);

display.setCursor (5, 2);

display.println ("VÄLKOMMEN TILL");

display.println ("instruktioner");

display.println ("Project");

display.display ();

fördröjning (3000);

timeClient.begin ();

}

void loop ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // Rita 2X-skala text

display.setTextColor (BLÅ);

display.setCursor (0, 2);

int hh = timeClient.getHours ();

int mm = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

om (hh> 12)

{

hh = hh-12;

display.print (hh);

display.print (":");

display.print (mm);

display.print (":");

display.print (ss);

display.println ("PM");

}

annan

{

display.print (hh);

display.print (":");

display.print (mm);

display.print (":");

display.print (ss);

display.println ("AM");

}

int day = 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);

display.display ();

// Visa inledande text}

Steg 6: Få datum och tid

Få datum och tid
Få datum och tid

om du anslöt allt ordentligt och laddade upp koden ordentligt också så kommer du att kunna se din ntp -klocka som körs på oled -displayen som min när den körs i oled -displayen. Se bilden för utmatning.

Rekommenderad: