Sadržaj:
- Korak 1: Stvari koje trebate
- Korak 2: Veze
- Korak 3: Preuzmite knjižnice
- Korak 4: Što je NTP
- Korak 5: Kodiranje dijela
- Korak 6: Dobivanje datuma i vremena
Video: Internet sat: Prikaz datuma i vremena s OLED -om pomoću ESP8266 NodeMCU s NTP protokolom: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:34
Bok dečki, u ovoj uputi napravit ćemo internetski sat koji će dobivati vrijeme s interneta pa za ovaj projekt neće trebati nikakav RTC za pokretanje, trebat će mu samo ispravna 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 poslužitelji na webu koji se koriste za sinkronizaciju računalnih satova, a mi ćemo koristiti te poslužitelje kako bismo dobili vrijeme u našem projektu.
Korak 1: Stvari koje trebate
za ovaj projekt trebat će vam sljedeće stvari:
Esp8266/nodemcu
Oled ssd1306 0,96"
Kratkospojne žice
Oglasna ploča
USB kabl
Korak 2: Veze
Ovaj 4-pinski OLED zaslon komunicira s ESP8266 modulom pomoću I2C protokola, dolje su dijagram sklopa i tablica povezivanja za povezivanje OLED I2C pinova s NodeMCU za prikaz internetskog vremena.
Korak 3: Preuzmite knjižnice
Provjerite jeste li preuzeli SD1306 knjižnice u svoj Arduino ide kao što je prikazano na slici i provjerite jeste li i Adafruit GFX knjižnicu, ako ne, onda instalirajte ove dvije knjižnice.
U svom Arduino IDE idite na Upravitelj knjižnica i potražite NTP i samo preuzmite NTP klijentsku knjižnicu dok sam preuzimao, pogledajte sliku za daljnju pomoć.
Korak 4: Što je NTP
NTP je jedan od najstarijih mrežnih internetskih protokola (IP) za sinkronizaciju satova između računalnih mreža. Dizajnirao ga je David L. Mills sa Sveučilišta Delaware 1981. Ovaj se protokol može koristiti za sinkronizaciju mnogih mreža s 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 zemljopisne lokacije. NTP koristi UTC kao vremensku referencu i pruža točno i sinkronizirano vrijeme na Internetu.
NTP radi na hijerarhijskom modelu klijent-poslužitelj. Vrhunski model ima referentne satove poznate kao "stratum0" poput atomskih satova, radio valova, GPS -a, GSM -a koji primaju vrijeme sa satelita. Poslužitelji koji primaju vrijeme od stratum0 nazivaju se "stratum1", a poslužitelji koji primaju vrijeme od stratum0 nazivaju se "stratum2" itd. To se nastavlja i točnost vremena se smanjuje nakon svake faze. NTP automatski odabire najbolji od nekoliko dostupnih vremenskih izvora za sinkronizaciju, što ga čini protokolom koji je otporan na greške. Dakle, ovdje u ovom projektu dobivamo vrijeme s NTP poslužitelja koristeći ESP8266 NodeMCU i pokazujući ga na OLED zaslonu. Ova ista vrsta internetskog sata izgrađena je pomoću ESP32 u prethodnom vodiču.
Korak 5: Kodiranje dijela
Da biste zatražili datum i vrijeme, inicijalizirajte klijent vremena s adresom NTP poslužitelja. Za bolju točnost odaberite adresu NTP poslužitelja koji su blizu vašeg zemljopisnog područja. Ovdje koristimo “pool.ntp.org” koji daje poslužitelje iz cijelog svijeta. Ako želite odabrati poslužitelje iz Azije, možete koristiti "asia.pool.ntp.org". timeClient također uzima UTC pomak u milisekundama vaše vremenske zone. Na primjer, UTC pomak za Indiju je +5: 30 pa taj pomak pretvaramo u milisekundama što je jednako 5*60*60 +30*60 = 19800.
Područje. 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 s mrežom #include "WiFiUdp.h" // upravlja slanjem i primanjem UDP paketa
#include "SPI.h" // SPI za povezivanje OLED -a s NodeMCu
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // Širina OLED zaslona, u pikselima
#define SCREEN_HEIGHT 64 // Visina OLED zaslona, u pikselima
#definiraj OLED_RESET -1
Zaslon Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
constchar *ssid = "yourwifissid";
const char *lozinka = "yourwifipass";
WiFiUDP ntpUDP;
NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);
String arr_days = {"Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"};
String date_time; // Možete odrediti vremensko spremište poslužitelja i pomak (u sekundama, može se // promijeniti kasnije s setTimeOffset ()). Dodatno možete odrediti // interval ažuriranja (u milisekundama se može promijeniti korištenjem setUpdateInterval ()).
void setup ()
{
Serial.begin (115200);
WiFi.započni (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 nastavljaj, petlja zauvijek
}
display.clearDisplay ();
display.setTextSize (2); // Crtanje teksta u 2X mjerilu
display.setTextColor (BIJELO);
display.setCursor (5, 2);
display.println ("DOBRODOŠLI U");
display.println ("instrukcije");
display.println ("Projekt");
display.display ();
kašnjenje (3000);
timeClient.begin ();
}
void loop ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Crtanje teksta u 2X mjerilu
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 (":");
prikaz.tisak (mm);
display.print (":");
display.print (ss);
display.println ("PM");
}
drugo
{
display.print (hh);
display.print (":");
prikaz.tisak (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: Dobivanje datuma i vremena
ako ste sve pravilno spojili i ispravno prenijeli kôd tada ćete moći vidjeti kako vaš ntp sat radi na oled zaslonu kao i moj u radu na oled zaslonu. Molimo pogledajte sliku za izlaz.
Preporučeni:
Dobivanje vremena s interneta pomoću ESP8266 - Projekt NTP sata sa ESP8266 Nodemcu: 5 koraka
Dobivanje vremena s interneta pomoću ESP8266 | Projekt NTP sata sa ESP8266 Nodemcu: U ovom ćemo vodiču vidjeti kako dobiti vrijeme koristeći ESP8266/nodemcu s Arduino IDE -om. Dobivanje vremena osobito je korisno pri bilježenju podataka radi vremenske oznake vaših očitanja. Ako vaš projekt ESP8266 ima pristup internetu, možete dobiti vrijeme koristeći Network T
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 | PROJEKT INTERNET SATA: U projektu će se raditi projekt sata bez RTC -a, bit će potrebno vrijeme za korištenje interneta putem WiFi -a i prikazat će se na zaslonu st7735
Prikaz datuma, vremena i temperature pomoću XinaBox -a: 8 koraka
Prikaz datuma, vremena i temperature pomoću XinaBox -a: Cool OLED zaslon koji prikazuje datum, vrijeme i temperaturu u Celzijusima i Fahrenheitima pomoću Xinabox x čipova na temelju ESP8266
Sat s IC daljinskim upravljačem za postavke vremena/datuma: 5 koraka
Sat s IC daljinskim upravljačem za postavke vremena/datuma: Ovo je jednostavan sat izrađen pomoću lako dostupnih komponenti. Korišteni mikrokontroler je jeftin STM32F030F4P6. Zaslon je 16x2 LCD s I2C ruksakom (PCF8574). Sat se može izgraditi pomoću malih ploča za izradu prototipova i TSSOP -a
Slatka jedinica za prikaz datuma, vremena i temperature: 3 koraka
Slatka jedinica za prikaz datuma, vremena i temperature: Zdravo prijatelji, U ovoj uputi ću objasniti postupak izrade jedinice za prikaz datuma, vremena i trenutne temperature pomoću, Arduino pro mini, RTC -a i osmoznamenkastog sedmo segmentnog zaslona u vrlo kompaktnoj jedinici koja je korisna