U prethodnom uputstvu napravili smo RTC sat koristeći DS3231 i ESP32. Da bismo minimizirali hardverske zahtjeve, napravit ćemo internetski sat bez korištenja RTC modula. To je točnije u usporedbi s RTC satom. ESP32 je Wi-Fi modul i može se lako povezati s internetom, pa ćemo koristiti NTP (Network Time Protocol) i UDP (User Datagram Protocol) za dohvaćanje vremena s interneta pomoću Wi-Fi-ja. Ovaj internetski sat može biti vrlo koristan tijekom izrade IoT projekata.
Što je NTP ??
Mrežni protokol vremena (NTP) mrežni je protokol koji se koristi za sinkronizaciju vremena između sustava i podatkovnih mreža. NTP okvir ovisi o poslužiteljima internetskog vremena. NTP ima algoritme za precizno podešavanje doba dana. NTP poslužitelji imaju softver koji šalje vrijeme dana na klijentska računala koristeći UDPport 123. Dakle, u ovom projektu dobivamo vrijeme od NTP poslužitelja pomoću ESP32 i prikazuje ga na OLED zaslonu.

Potrebni materijali:
- ESP32
- 128 * 64 OLED zaslon
- Breadboard
- Muško-ženske žice
Kružni dijagram:

Ovdje koristimo SPI način za povezivanje našeg 128 × 64 OLED modula zaslona (SSD1306) s ESP32. Dakle, koristit će 7 pinova. Veze s ESP32 daju se kao:
- CS (čip odabir) pin OLED -> PIN D5 ESP32
- Istosmjerni pin OLED -> PIN D4 ESP32
- RES pin OLED -> PIN D2 ESP32
- SDA pin OLED -> PIN D23 tj. MOSI ESP32
- SCK iglica OLED -> PIN D18 tj. SCK ESP32
- Vdd OLED-a -> Vcc ESP32
- GND OLED -> GND ESP32
Za ESP32 trebaju vam datoteke na ploči. Padajući izbornik Arduino IDE-a za razvojni komplet ESP32 upravitelja ploče za prijavu. Ako nije, slijedite korake navedene u donjoj poveznici:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Također možete koristiti ESP12 za ovaj projekt, ovdje naučite koristiti ESP12.
Koristit ćemo Arduino IDE za pisanje našeg programa kako je objašnjeno u gornjem članku.
Objašnjenje koda:
Kompletni kod za internetski sat ESP32 dan je na kraju članka. Ovdje objašnjavamo nekoliko važnih dijelova koda.
U našem kodu trebamo nekoliko knjižnica koje možemo preuzeti s donjih poveznica:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. NTPClient:
5.WiFiUdp:
Dakle, uključili smo sve knjižnice i definirali varijablu za unos Wi-Fi imena i lozinke.
#include
Ovdje se biblioteka NTPClient.h koristi za povezivanje s vremenskim poslužiteljem. NTP poslužitelju treba vrijeme i održavajte ga sinkroniziranim. A Hhre WiFiUdp.h knjižnica koristi se za slanje i primanje UDP poruka. UDP je protokol koji šalje i prima kratke poruke iz našeg sustava na NTP poslužitelj.
Da bismo dobili vrijeme s Interneta, u našem programu za NTP moramo definirati tri varijable.
NTP_OFFSET koja je vremenska zona vaše zemlje, tj. Za Indiju je +5: 30 sati. Dakle, 19800 je u sekundama.
NTP_INTERVAL što je vremenski interval koji NTP uzima za ažuriranje vremena. To je 60-64 sekunde.
NTP_ADDRESS je NTP poslužitelj vaše zemlje. Za Indiju možete koristiti " in.pool.ntp.org ".
#define NTP_OFFSET 19800 // Za nekoliko sekundi #define NTP_INTERVAL 60 * 1000 // Za milisekunde #define NTP_ADDRESS "1.asia.pool.ntp.org" WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
U funkciji postavljanja inicirajte Wi-Fi postavke za povezivanje s internetom.
void setup () { display.begin (); Serial.begin (9600); Serial.println (); Serial.println (); Serial.print ("Povezivanje s"); Serial.println (ssid); WiFi.begin (ssid, lozinka); while (WiFi.status ()! = WL_CONNECTED) { delay (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi povezan."); Serial.println ("IP adresa:"); Serial.println (WiFi.localIP ()); timeClient.begin ();
Zatim inicijalizirajte funkcije zaslona da prikažete vrijeme na OLED-u.
display.begin (SSD1306_SWITCHCAPVCC);
U funkciji petlje koristili smo timeClient.update (), ova funkcija uzima ažurirano vrijeme s NTP-a u obliku niza i pohranjuje ga u varijablu formattedTime . Zatim ga prikažite na OLED-u pomoću funkcije display.println () .
petlja void () { timeClient.update (); Niz formattedTime = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // postavimo ove parametre prema svojoj potrebi.. display.setCursor (0, 0); display.println (formattedTime);
Kompletan program dan je u nastavku. Sada napokon programirajte ESP32 s Arduino IDE-om i vaš je Internet sat spreman za prikaz vremena.

