Innholdsfortegnelse:

Internett -klokke: Vis dato og klokkeslett med en OLED ved bruk av ESP8266 NodeMCU med NTP -protokoll: 6 trinn
Internett -klokke: Vis dato og klokkeslett med en OLED ved bruk av ESP8266 NodeMCU med NTP -protokoll: 6 trinn

Video: Internett -klokke: Vis dato og klokkeslett med en OLED ved bruk av ESP8266 NodeMCU med NTP -protokoll: 6 trinn

Video: Internett -klokke: Vis dato og klokkeslett med en OLED ved bruk av ESP8266 NodeMCU med NTP -protokoll: 6 trinn
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, November
Anonim
Internettklokke: Vis dato og klokkeslett med en OLED ved bruk av ESP8266 NodeMCU med NTP -protokoll
Internettklokke: Vis dato og klokkeslett med en OLED ved bruk av ESP8266 NodeMCU med NTP -protokoll

Hei folkens i denne instruksjonene, vi vil bygge en internettklokke som vil få tid fra internett, så dette prosjektet trenger ikke noen RTC for å kjøre, det trenger bare en fungerende internettforbindelse

Og for dette prosjektet trenger du en esp8266 som vil ha wifi for å få internettilgang og en skjerm for å vise tiden på den og esp8266 vil hente tid fra internett ved hjelp av NTP -protokoll, ntp står for nettverkstidsprotokoll, så i utgangspunktet er det ntp -servere på nettet som brukes til å synkronisere dataklokker, og vi vil bruke disse serverne for å få tid i prosjektet vårt.

Trinn 1: Ting du trenger

Ting du trenger
Ting du trenger
Ting du trenger
Ting du trenger
Ting du trenger
Ting du trenger

for dette prosjektet trenger du følgende ting:

Esp8266/nodemcu

Oled ssd1306 0.96"

Jumper ledninger

Brødbrett

USB-kabel

Trinn 2: Tilkoblinger

Tilkoblinger
Tilkoblinger

Denne 4-pinners OLED-skjermen kommuniserer med ESP8266-modulen ved hjelp av I2C-protokollen, nedenfor er kretsdiagrammet og tilkoblingstabellen for å koble OLED I2C-pinner med NodeMCU for å vise internettid.

Trinn 3: Last ned biblioteker

Last ned biblioteker
Last ned biblioteker
Last ned biblioteker
Last ned biblioteker

Sørg for at du lastet ned SD1306 -biblioteker i Arduino -ideen din som vist på bildet, og sørg for at du også Adafruit GFX -biblioteket, hvis ikke installer disse to bibliotekene.

I din Arduino IDE går du til Libraries manager og søker etter NTP og laster bare ned NTP -klientbiblioteket mens jeg lastet ned, se bildet for ytterligere hjelp.

Trinn 4: Hva er NTP

Hva er NTP
Hva er NTP

NTP er en av de eldste nettverksprotokollene (IP) for å synkronisere klokker mellom datanettverk. Den ble designet av David L. Mills ved University of Delaware i 1981. Denne protokollen kan brukes til å synkronisere mange nettverk til Coordinated Universal Time (UTC) i løpet av få millisekunder. UTC er den primære tidsstandarden som verden regulerer klokke og tid med. UTC endres ikke og varierer for forskjellige geografiske steder. NTP bruker UTC som tidsreferanse og gir nøyaktig og synkronisert tid over Internett.

NTP fungerer på en hierarkisk klient-server-modell. Toppmodellen har referanseklokker kjent som “stratum0” som atomklokker, radiobølger, GPS, GSM som mottar tid fra satellitten. Serverne som mottar tid fra stratum0 kalles "stratum1" og servere som mottar tid fra stratum1 kalles "stratum2" og så videre. Dette fortsetter og tidenes nøyaktighet avtar etter hvert trinn. NTP velger automatisk den beste av flere tilgjengelige tidskilder som skal synkroniseres, noe som gjør den til en feiltolerant protokoll. Så her i dette prosjektet får vi tid fra NTP -serveren ved hjelp av ESP8266 NodeMCU og viser den på OLED -skjerm. Den samme typen Internett -klokke er bygget ved bruk av ESP32 i forrige opplæring.

Trinn 5: Kodingsdel

Kodingsdel
Kodingsdel

For å be om dato og klokkeslett, initialiser tidsklienten med adressen til NTP -servere. For bedre nøyaktighet, velg adressen til NTP -servere som er i nærheten av ditt geografiske område. Her bruker vi “pool.ntp.org” som gir servere fra hele verden. Hvis du ønsker å velge servere fra Asia, kan du bruke "asia.pool.ntp.org". timeClient tar også UTC -tidsforskyvning i millisekunder av tidssonen din. For eksempel er UTC -offset for India +5: 30, så vi konverterer denne forskyvningen i millisekunder som er lik 5*60*60 +30*60 = 19800.

Område. UTC -tidsforskyvning (timer og minutter). UTC -tidsforskyvning (sekunder)

INDIA +5: 30 19800

LONDON 0:00. 0

NEW YORK -5: 00 -18000

Vennligst kopier følgende kode og skriv inn wifi og passord i koden & Skriv inn tidsforskyvningen i koden, og last den deretter opp til esp8266 -kortene dine.:

#include "NTPClient.h" #include "ESP8266WiFi.h" // gir ESP8266 spesifikke Wi-Fi-rutiner vi kaller for å koble til nettverk #include "WiFiUdp.h" // håndterer sending og mottak av UDP-pakker

#include "SPI.h" // SPI for grensesnitt mellom OLED og NodeMCu

#inkludere "Adafruit_GFX.h"

#inkludere "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // OLED -skjermbredde, i piksler

#define SCREEN_HEIGHT 64 // OLED -skjermhøyde, i piksler

#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", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"};

String date_time; // Du kan angi tidsserverutvalget og forskyvningen (i sekunder, kan // endres senere med setTimeOffset ()). Du kan også angi // oppdateringsintervallet (i millisekunder, kan endres ved hjelp av setUpdateInterval ()).

ugyldig oppsett ()

{

Serial.begin (115200);

WiFi.begin (ssid, passord);

mens (WiFi.status ()! = WL_CONNECTED)

{

forsinkelse (500);

Serial.print (".");

}

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

{

Serial.println (F ("tildeling av SSD1306 mislyktes"));

til(;;); // Ikke fortsett, sløyfe for alltid

}

display.clearDisplay ();

display.setTextSize (2); // Tegn 2X-skala tekst

display.setTextColor (HVIT);

display.setCursor (5, 2);

display.println ("VELKOMMEN TIL");

display.println ("instrukser");

display.println ("Prosjekt");

display.display ();

forsinkelse (3000);

timeClient.begin ();

}

hulrom ()

{

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");

}

ellers

{

display.print (hh);

display.print (":");

display.print (mm);

display.print (":");

display.print (ss);

display.println ("AM");

}

int day = timeClient.getDay ();

display.println ("'"+arr_dager [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}

Trinn 6: Få dato og klokkeslett

Få dato og klokkeslett
Få dato og klokkeslett

hvis du koblet alt skikkelig og lastet opp koden ordentlig også, så vil du kunne se ntp -klokken din kjøre på oled -skjermen som min i å kjøre i oled -skjermen. Se bildet for utdata.

Anbefalt: