Indholdsfortegnelse:
- Trin 1: Ting du har brug for
- Trin 2: Forbindelser
- Trin 3: Download biblioteker
- Trin 4: Hvad er NTP
- Trin 5: Kodningsdel
- Trin 6: Få dato og tid
Video: Internetur: Vis dato og klokkeslæt med en OLED ved hjælp af ESP8266 NodeMCU med NTP -protokol: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Hej fyre i denne instruks, vi vil bygge et internetur, der får tid fra internettet, så dette projekt behøver ikke nogen RTC for at køre, det skal kun bruge en fungerende internetforbindelse
Og til dette projekt har du brug for en esp8266, som vil have en wifi for at få internetadgang og et display til at vise tiden på det, og esp8266 vil hente tid fra internettet ved hjælp af NTP -protokol, ntp står for netværkstidsprotokol, så dybest set er der ntp -servere på internettet, der bruges til at synkronisere computerure, og vi vil bruge disse servere til at få tid i vores projekt.
Trin 1: Ting du har brug for
til dette projekt skal du bruge følgende ting:
Esp8266/nodemcu
Oled ssd1306 0.96"
Jumper ledninger
Brødbræt
Usb -kabel
Trin 2: Forbindelser
Denne 4-bens OLED-skærm kommunikerer med ESP8266-modulet ved hjælp af I2C-protokol, herunder er kredsløbsdiagrammet og forbindelsestabellen for at forbinde OLED I2C-stifter med NodeMCU for at vise internettid.
Trin 3: Download biblioteker
Sørg for, at du har downloadet SD1306 -biblioteker i din Arduino ide som vist på billedet, og sørg for, at du også Adafruit GFX -bibliotek, hvis ikke, så installer disse to biblioteker.
I din Arduino IDE skal du gå til Libraries manager og søge efter NTP og bare downloade NTP -klientbiblioteket som jeg downloadede, se billedet for yderligere hjælp.
Trin 4: Hvad er NTP
NTP er en af de ældste netværksinternetprotokoller (IP) til synkronisering af ure mellem computernetværk. Den blev designet af David L. Mills fra University of Delaware i 1981. Denne protokol kan bruges til at synkronisere mange netværk til Coordinated Universal Time (UTC) inden for få millisekunder. UTC er den primære tidsstandard, hvormed verden regulerer ur og tid. UTC ændrer sig ikke og varierer for forskellige geografiske placeringer. NTP bruger UTC som tidsreference og giver præcis og synkroniseret tid på tværs af Internettet.
NTP fungerer på en hierarkisk klient-server-model. Topmodellen har referenceure kendt som “stratum0” som atomure, radiobølger, GPS, GSM, der modtager tid fra satellitten. De servere, der modtager tid fra stratum0, kaldes "stratum1", og servere, der modtager tid fra stratum1, kaldes "stratum2" og så videre. Dette fortsætter, og tidens nøjagtighed falder efter hvert trin. NTP vælger automatisk den bedste af flere tilgængelige tidskilder, der skal synkroniseres, hvilket gør den til en fejltolerant protokol. Så her i dette projekt får vi tid fra NTP -server ved hjælp af ESP8266 NodeMCU og viser det på OLED -display. Den samme slags internetur er bygget ved hjælp af ESP32 i tidligere tutorial.
Trin 5: Kodningsdel
For at anmode om dato og klokkeslæt skal du initialisere tidsklienten med adressen på NTP -servere. For bedre nøjagtighed skal du vælge adressen på NTP -servere, der er tæt på dit geografiske område. Her bruger vi “pool.ntp.org”, som giver servere fra hele verden. Hvis du ønsker at vælge servere fra Asien, kan du bruge “asia.pool.ntp.org”. timeClient tager også UTC -tidsforskydning i millisekunder af din tidszone. For eksempel er UTC -forskydning for Indien +5: 30, så vi konverterer denne forskydning i millisekunder, der er lig med 5*60*60 +30*60 = 19800.
Areal. UTC -tidsforskydning (timer og minutter). UTC -tidsforskydning (sekunder)
INDIEN +5: 30 19800
LONDON 0:00. 0
NEW YORK -5: 00 -18000
Kopier venligst følgende kode, indtast din wifi og adgangskode i koden & Indtast tidsforskydningen i koden, og upload den derefter til dine esp8266 -tavler.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // giver ESP8266 specifikke Wi-Fi-rutiner, vi kalder for at oprette forbindelse til netværket #include "WiFiUdp.h" // håndterer afsendelse og modtagelse af UDP-pakker
#include "SPI.h" // SPI til grænseflade mellem OLED og NodeMCu
#inkludere "Adafruit_GFX.h"
#inkludere "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // OLED -skærmbredde, i pixels
#define SCREEN_HEIGHT 64 // OLED -skærmhøjde, i pixels
#define OLED_RESET -1
Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
constchar *ssid = "dinwifissid";
const char *password = "yourwifipass";
WiFiUDP ntpUDP;
NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);
String arr_days = {"søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"};
String date_time; // Du kan angive tidsserverpoolen og forskydningen (i sekunder kan // ændres senere med setTimeOffset ()). Yderligere kan du angive // opdateringsintervallet (i millisekunder kan ændres ved hjælp af setUpdateInterval ()).
ugyldig opsætning ()
{
Serial.begin (115200);
WiFi.begin (ssid, adgangskode);
mens (WiFi.status ()! = WL_CONNECTED)
{
forsinkelse (500);
Serial.print (".");
}
hvis (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("Allokering af SSD1306 mislykkedes"));
til(;;); // Fortsæt ikke, loop for evigt
}
display.clearDisplay ();
display.setTextSize (2); // Tegn 2X-skala tekst
display.setTextColor (HVID);
display.setCursor (5, 2);
display.println ("VELKOMMEN TIL");
display.println ("instruerbare");
display.println ("Projekt");
display.display ();
forsinkelse (3000);
timeClient.begin ();
}
hulrum ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Tegn 2X-skala tekst
display.setTextColor (BLÅ);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
hvis (hh> 12)
{
hh = hh-12;
display.print (hh);
display.print (":");
display.print (mm);
display.print (":");
display.print (ss);
display.println ("PM");
}
andet
{
display.print (hh);
display.print (":");
display.print (mm);
display.print (":");
display.print (ss);
display.println ("AM");
}
int day = timeClient.getDay ();
display.println ("'"+arr_dage [dag]+"'");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
String date = date_time.substring (0, index_date);
Serial.println (dato);
display.println (dato);
display.display ();
// Vis første tekst}
Trin 6: Få dato og tid
hvis du har tilsluttet alt korrekt og også har uploadet koden korrekt, så kan du se dit ntp -ur kører på oled -display som mit ved at køre i oled -displayet. Se billedet for output.
Anbefalede:
Få tid fra internettet ved hjælp af ESP8266 - NTP -urprojekt med ESP8266 Nodemcu: 5 trin
Få tid fra internettet ved hjælp af ESP8266 | NTP -urprojekt med ESP8266 Nodemcu: I denne vejledning ser vi, hvordan du får tid til at bruge ESP8266/nodemcu med Arduino IDE. At få tid er især nyttigt i datalogning til at stemple dine aflæsninger. Hvis dit ESP8266 -projekt har adgang til internettet, kan du få tid ved hjælp af netværk T
Arduino dato/tid plotte/logge ved hjælp af Millis () og PfodApp: 11 trin
Arduino Date/Time Plotting/Logging Using Millis () og PfodApp: Ingen Arduino- eller Android -programmering påkrævet. RTC- og GPS -moduler understøttes også. Automatisk korrektion for tidszoner, RTC -drift og GPS mangler springsekunder Introduktion Denne tutorial viser dig, hvordan du bruger din Arduino millis ( ) tidsstempler til at plotte data ag
Dato, tid og temperaturvisning ved hjælp af XinaBox: 8 trin
Dato, tid og temperaturvisning ved hjælp af XinaBox: Fedt OLED -display, der viser dato, tid og temperatur i Celsius og Fahrenheit ved hjælp af Xinabox xChips baseret på ESP8266
Internetur (NTP) til IoT -projekter: 6 trin
Internetur (NTP) til IoT -projekter: Dette projekt hjælper dig med at få tid fra Internettet til IoT -projekter uden at kræve ekstra RTC -hardware. I denne vejledning vil vi se, hvordan du bruger Nokia LCD 5110, får NTP -data fra Internettet og viser dem på LCD med bestemte koordinater. Lad os have
Skubber dato og klokkeslæt til Blynk -app ved hjælp af Wemos D1 Mini Pro: 10 trin
Skubber dato og klokkeslæt til Blynk -app ved hjælp af Wemos D1 Mini Pro: Vi vil bruge Wemos D1 Mini Pro til at skubbe tiden & dato til Blynk -appen. Du skal ikke tilslutte nogen komponenter til Wemos D1 Mini Pro for denne aktivitet