Innehållsförteckning:
- Steg 1: Saker du behöver
- Steg 2: Anslutningar
- Steg 3: Ladda ner bibliotek
- Steg 4: Vad är NTP
- Steg 5: Kodningsdel
- Steg 6: Få datum och tid
Video: Internetklocka: Visa datum och tid med en OLED med ESP8266 NodeMCU med NTP -protokoll: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
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
för detta projekt behöver du följande saker:
Esp8266/nodemcu
Oled ssd1306 0.96"
Bygelkablar
Bakbord
USB-kabel
Steg 2: 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
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
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
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
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:
ESP8266 OLED - Få tid och datum från Internet: 8 steg
ESP8266 OLED - Hämta tid och datum från Internet: I denna handledning lär vi oss hur man hämtar datum och tid från NIST TIME -servern med ESP8266 OLED och Visuino, Se en demonstrationsvideo
Arduino Datum/tid plottning/loggning med Millis () och PfodApp: 11 steg
Arduino Date/Time Plotting/Logging Using Millis () och PfodApp: Ingen Arduino- eller Android -programmering krävs. RTC- och GPS -moduler stöds också. Automatisk korrigering för tidszoner, RTC -drift och GPS som saknar språngsekunder Introduktion Denna handledning visar dig hur du använder din Arduino millis ( ) tidsstämplar för att plotta data ag
Datum, tid och temperaturvisning med hjälp av XinaBox: 8 steg
Datum, tid och temperaturvisning med XinaBox: Cool OLED -skärm som visar datum, tid och temperatur i Celsius och Fahrenheit med Xinabox xChips baserat på ESP8266
Skjuta datum och tid till Blynk -appen med Wemos D1 Mini Pro: 10 steg
Pushing Date and Time to Blynk App Using Wemos D1 Mini Pro: We will use the Wemos D1 Mini Pro to push the time & datum till Blynk -appen. Du behöver inte ansluta några komponenter till Wemos D1 Mini Pro för denna aktivitet
ESP32 och OLED -skärm: Internetklocka - DHT22: 10 steg (med bilder)
ESP32 och OLED Display: Internet Clock - DHT22: This Instructable konkurrerar om tävling: " GIFs Challenge 2017 ", Om du gillar det, vänligen ge din röst genom att klicka på ovanstående banner. Tack så mycket!;-) Denna handledning är en fortsättning på en resa för att lära dig mer om denna fantastiska IoT-enhet