Indholdsfortegnelse:

Internetur: Vis dato og klokkeslæt med en OLED ved hjælp af ESP8266 NodeMCU med NTP -protokol: 6 trin
Internetur: Vis dato og klokkeslæt med en OLED ved hjælp af ESP8266 NodeMCU med NTP -protokol: 6 trin

Video: Internetur: Vis dato og klokkeslæt med en OLED ved hjælp af ESP8266 NodeMCU med NTP -protokol: 6 trin

Video: Internetur: Vis dato og klokkeslæt med en OLED ved hjælp af ESP8266 NodeMCU med NTP -protokol: 6 trin
Video: Start Using Wemos D1 Mini NodeMCU WiFi ESP8266 module with Arduino 2024, Juni
Anonim
Internetur: Vis dato og klokkeslæt med en OLED ved hjælp af ESP8266 NodeMCU med NTP -protokol
Internetur: Vis dato og klokkeslæt med en OLED ved hjælp af ESP8266 NodeMCU med NTP -protokol

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

Ting du har brug for
Ting du har brug for
Ting du har brug for
Ting du har brug for
Ting du har brug for
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

Forbindelser
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

Download biblioteker
Download biblioteker
Download biblioteker
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

Hvad er NTP
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

Kodningsdel
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

Få dato og tid
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: