Sadržaj:

Internet sat: Prikažite datum i vrijeme sa OLED -om koristeći ESP8266 NodeMCU sa NTP protokolom: 6 koraka
Internet sat: Prikažite datum i vrijeme sa OLED -om koristeći ESP8266 NodeMCU sa NTP protokolom: 6 koraka

Video: Internet sat: Prikažite datum i vrijeme sa OLED -om koristeći ESP8266 NodeMCU sa NTP protokolom: 6 koraka

Video: Internet sat: Prikažite datum i vrijeme sa OLED -om koristeći ESP8266 NodeMCU sa NTP protokolom: 6 koraka
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, Juli
Anonim
Internet sat: Prikažite datum i vrijeme sa OLED -om koristeći ESP8266 NodeMCU sa NTP protokolom
Internet sat: Prikažite datum i vrijeme sa OLED -om koristeći ESP8266 NodeMCU sa NTP protokolom

Zdravo momci, u ovim uputstvima napravit ćemo internetski sat koji će dobijati vrijeme s interneta pa za ovaj projekt neće trebati nikakav RTC za pokretanje, bit će mu potrebna samo radna internetska veza

A za ovaj projekt potreban vam je esp8266 koji će imati wifi za pristup internetu i zaslon za prikaz vremena na njemu, a esp8266 će dohvatiti vrijeme s interneta pomoću NTP protokola, ntp označava mrežni protokol vremena, tako da u osnovi postoje ntp serveri na webu koji se koriste za sinhronizaciju računarskih satova, a mi ćemo koristiti te servere da dobijemo vrijeme u našem projektu.

Korak 1: Stvari koje trebate

Stvari koje trebate
Stvari koje trebate
Stvari koje trebate
Stvari koje trebate
Stvari koje trebate
Stvari koje trebate

za ovaj projekat trebat će vam sljedeće stvari:

Esp8266/nodemcu

Oled ssd1306 0,96"

Žice za kratkospojnike

Breadboard

USB kabl

Korak 2: Veze

Connections
Connections

Ovaj 4-pinski OLED ekran komunicira s ESP8266 modulom pomoću I2C protokola, dolje su dijagram kola i tablica povezivanja za povezivanje OLED I2C pinova s NodeMCU za prikaz vremena na Internetu.

Korak 3: Preuzmite biblioteke

Preuzmite biblioteke
Preuzmite biblioteke
Preuzmite biblioteke
Preuzmite biblioteke

Provjerite jeste li preuzeli SD1306 biblioteke u svoj Arduino ide kao što je prikazano na slici i provjerite jeste li i Adafruit GFX biblioteku, ako ne, onda instalirajte ove dvije biblioteke.

U svom Arduino IDE idite na Upravitelj biblioteka i potražite NTP i samo preuzmite biblioteku NTP klijenta dok sam je preuzimao, pogledajte sliku za daljnju pomoć.

Korak 4: Šta je NTP

Šta je NTP
Šta je NTP

NTP je jedan od najstarijih mrežnih internetskih protokola (IP) za sinhronizaciju satova između računarskih mreža. Dizajnirao ga je David L. Mills sa Univerziteta u Delawareu 1981. Ovaj protokol se može koristiti za sinhronizaciju mnogih mreža sa koordiniranim univerzalnim vremenom (UTC) u roku od nekoliko milisekundi. UTC je primarni vremenski standard prema kojem svijet regulira sat i vrijeme. UTC se ne mijenja i razlikuje se za različite geografske lokacije. NTP koristi UTC kao vremensku referencu i pruža tačno i sinhronizirano vrijeme na Internetu.

NTP radi na hijerarhijskom modelu klijent-poslužitelj. Top model ima referentne satove poznate kao „stratum0“poput atomskih satova, radio talasa, GPS -a, GSM -a koji primaju vrijeme sa satelita. Poslužitelji koji primaju vrijeme od stratum0 nazivaju se „stratum1“, a serveri koji primaju vrijeme od stratum0 nazivaju se „stratum2“itd. Ovo se nastavlja i tačnost vremena se smanjuje nakon svake faze. NTP automatski odabire najbolji od nekoliko dostupnih vremenskih izvora za sinhronizaciju, što ga čini protokolom koji je otporan na greške. Dakle, ovdje u ovom projektu dobivamo vrijeme sa NTP servera koristeći ESP8266 NodeMCU i pokazujući ga na OLED ekranu. Ova ista vrsta internetskog sata izgrađena je korištenjem ESP32 u prethodnom vodiču.

Korak 5: Kodiranje dijela

Kodiranje
Kodiranje

Da biste zatražili datum i vrijeme, inicijalizirajte vremenski klijent adresom NTP servera. Za bolju točnost odaberite adresu NTP poslužitelja koji su blizu vašeg geografskog područja. Ovdje koristimo “pool.ntp.org” koji daje servere iz cijelog svijeta. Ako želite odabrati poslužitelje iz Azije, možete koristiti “asia.pool.ntp.org”. timeClient također uzima pomak UTC vremena u milisekundama vaše vremenske zone. Na primjer, UTC pomak za Indiju je +5: 30 pa pretvaramo ovaj pomak u milisekundama što je jednako 5*60*60 +30*60 = 19800.

Area. UTC pomak vremena (sati i minute). UTC pomak vremena (sekunde)

INDIJA +5: 30 19800

LONDON 0:00. 0

NEW YORK -5: 00 -18000

Kopirajte sljedeći kôd i unesite svoj wifi i lozinku u kôd & Unesite vremenski pomak u kôd, a zatim ga prenesite na svoje esp8266 ploče.:

#include "NTPClient.h" #include "ESP8266WiFi.h" // pruža ESP8266 specifične Wi-Fi rutine koje pozivamo za povezivanje na mrežu #include "WiFiUdp.h" // upravlja slanjem i primanjem UDP paketa

#include "SPI.h" // SPI za povezivanje OLED -a sa NodeMCu

#include "Adafruit_GFX.h"

#include "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // Širina OLED ekrana, u pikselima

#define SCREEN_HEIGHT 64 // Visina OLED ekrana, u pikselima

#define OLED_RESET -1

Prikaz Adafruit_SSD1306 (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 = {"Nedelja", "Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota"};

String date_time; // Možete odrediti vremensko spremište poslužitelja i pomak (u sekundama, može se // promijeniti kasnije sa setTimeOffset ()). Dodatno možete odrediti // interval ažuriranja (u milisekundama se može promijeniti korištenjem setUpdateInterval ()).

void setup ()

{

Serial.begin (115200);

WiFi.begin (ssid, lozinka);

while (WiFi.status ()! = WL_CONNECTED)

{

kašnjenje (500);

Serial.print (".");

}

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

{

Serial.println (F ("Dodjela SSD1306 nije uspjela"));

za (;;); // Ne nastavljajte, petljajte zauvijek

}

display.clearDisplay ();

display.setTextSize (2); // Crtanje teksta u 2X mjeri

display.setTextColor (BIJELO);

display.setCursor (5, 2);

display.println ("DOBRODOŠLI U");

display.println ("instrukcije");

display.println ("Projekat");

display.display ();

kašnjenje (3000);

timeClient.begin ();

}

void loop ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // Crtanje teksta u 2X mjeri

display.setTextColor (PLAVO);

display.setCursor (0, 2);

int hh = timeClient.getHours ();

int mm = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

ako (hh> 12)

{

hh = hh-12;

display.print (hh);

display.print (":");

display.print (mm);

display.print (":");

display.print (ss);

display.println ("PM");

}

else

{

display.print (hh);

display.print (":");

display.print (mm);

display.print (":");

display.print (ss);

display.println ("AM");

}

int dan = timeClient.getDay ();

display.println ("'"+arr_days [dan]+"'");

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

// Prikaži početni tekst}

Korak 6: Dobijanje datuma i vremena

Dobijanje datuma i vremena
Dobijanje datuma i vremena

ako ste sve pravilno povezali i pravilno učitali kôd, tada ćete moći vidjeti kako vaš ntp sat radi na oled ekranu kao i moj na oled ekranu. Molimo pogledajte sliku za izlaz.

Preporučuje se: