Sadržaj:
- Korak 1: Stvari koje trebate
- Korak 2: Veze
- Korak 3: Preuzmite biblioteke
- Korak 4: Šta je NTP
- Korak 5: Kodiranje dijela
- Korak 6: Dobijanje datuma i vremena
Video: Internet sat: Prikažite datum i vrijeme sa OLED -om koristeći ESP8266 NodeMCU sa NTP protokolom: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
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
za ovaj projekat trebat će vam sljedeće stvari:
Esp8266/nodemcu
Oled ssd1306 0,96"
Žice za kratkospojnike
Breadboard
USB kabl
Korak 2: Veze
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
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
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
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
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:
ESP8266 OLED - Dobijte vrijeme i datum s interneta: 8 koraka
ESP8266 OLED - Dobijte vrijeme i datum s Interneta: U ovom ćemo vodiču naučiti kako dobiti datum i vrijeme s NIST TIME servera pomoću ESP8266 OLED i Visuina, Pogledajte demonstracijski video
Povucite i ambijentalno prikažite podatke sa bilo koje web stranice putem Wi -Fi -ja (indikator sjevernog svjetla) sa NodeMcu: 6 koraka
Povucite i ambijentalno prikažite podatke sa bilo koje web stranice putem Wi -Fi -ja (indikator sjevernog svjetla) sa NodeMcu: Moja motivacija: Vidio sam mnogo instrukcija o postavljanju/ korištenju NodeMCU -a (izgrađenog na modulu ESP8266) za izradu IoT (internet stvari) projekata . Međutim, vrlo mali broj ovih vodiča imao je sve detalje/ kod/ dijagrame za vrlo početnike
Dobijte vrijeme i datum s interneta - Vodič: 9 koraka
Dobijte vrijeme i datum s Interneta - Vodič: U ovom ćemo vodiču naučiti kako dobiti datum i vrijeme s NIST TIME servera pomoću M5Stack StickC -a i Visuina. Pogledajte demonstracijski video
Visuino - Dobijte precizno vrijeme sa Internet NIST servera koristeći NodeMCU: 8 koraka
Visuino - Dobijte precizno vrijeme sa Internet NIST servera pomoću NodeMCU -a: U ovom vodiču koristit ćemo NodeMCU Mini, OLED Lcd i Visuino za prikaz internetskog vremena uživo sa NIST servera na LCD -u. Pogledajte demonstracijski video. Zasluga za inspiraciju pripada korisniku youtube -a " Ciprian Balalau "
ESP8266 Mrežni sat bez RTC -a - Nodemcu NTP sat Nema RTC -a - PROJEKT INTERNET SATA: 4 koraka
ESP8266 Mrežni sat bez RTC -a | Nodemcu NTP sat Nema RTC -a | INTERNET SAT PROJEKAT: U projektu će se raditi projekat satova bez RTC -a, bit će potrebno vrijeme za korištenje interneta putem WiFi -a i to će se prikazati na ekranu st7735