Al tutorial anterior, hem creat el rellotge RTC mitjançant DS3231 i ESP32. Per minimitzar els requisits de maquinari, farem un rellotge d’Internet sense utilitzar el mòdul RTC. Això és més precís en comparació amb el rellotge RTC. ESP32 és un mòdul Wi-Fi que es pot connectar fàcilment a Internet, de manera que utilitzarem NTP (Network Time Protocol) i UDP (User Datagram Protocol) per obtenir el temps d’Internet mitjançant Wi-Fi. Aquest rellotge d'Internet pot ser molt útil durant la creació de Projectes IoT.
Què és NTP ??
Network Time Protocol (NTP) és un protocol de xarxa utilitzat per a la sincronització de temps entre sistemes i xarxes de dades. El marc NTP depèn dels servidors Internet Time. NTP té algoritmes per ajustar amb precisió l’hora del dia. Els servidors NTP tenen programari que envia l’hora del dia als ordinadors clients mitjançant UDPport 123. Per tant, en aquest projecte, obtenim temps del servidor NTP que utilitza ESP32 i el mostrem a la pantalla OLED.

Materials necessaris:
- ESP32
- Pantalla OLED de 128 * 64
- Taula de pa
- Filferro mascle-femella
Esquema de connexions:

Aquí, utilitzem el mode SPI per connectar el nostre mòdul de pantalla OLED de 128 × 64 (SSD1306) a ESP32. Per tant, utilitzarà 7 pins. Les connexions amb ESP32 es donen com:
- Pin CS (selecció de xip) d'OLED -> PIN D5 d'ESP32
- Pin DC d'OLED -> PIN D4 d'ESP32
- PIN RES d'OLED -> PIN D2 d'ESP32
- Pin SDA d'OLED -> PIN D23 és a dir, MOSI d'ESP32
- Pin SCK de OLED -> PIN D18 és a dir, SCK de ESP32
- Vdd d’OLED -> Vcc d’ESP32
- GND de OLED -> GND de ESP32
Necessiteu fitxers de tauler per al vostre ESP32. Menú desplegable Gestor de taulers de facturació del kit de programació IDE Arduino per ESP32. Si no hi és, seguiu els passos que s'indiquen a l'enllaç següent:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
També podeu utilitzar ESP12 per a aquest projecte; apreneu aquí a utilitzar ESP12.
Utilitzarem Arduino IDE per escriure el nostre programa tal com s’explica a l’article anterior.
Explicació del codi:
Al final de l'article es dóna el codi complet del rellotge d'Internet ESP32. Aquí expliquem algunes parts importants del codi.
Necessitem diverses biblioteques per utilitzar-les al nostre codi que es poden descarregar des dels enllaços següents:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. NTPClient:
5. WiUUp:
Per tant, hem inclòs totes les biblioteques i la variable definida per introduir el nom i la contrasenya de Wi-Fi.
#incloure
Aquí s’utilitza la biblioteca NTPClient.h per connectar-se amb el servidor de temps. Es necessita temps des d’un servidor NTP i es manté sincronitzat. I la biblioteca Hhre WiFiUdp.h s’utilitza per enviar i rebre missatges UDP. UDP és un protocol que envia i rep missatges curts del nostre sistema al servidor NTP.
Per tant, per obtenir el temps d’Internet, hem de definir tres variables al nostre programa per a NTP.
NTP_OFFSET, que és la zona horària del vostre país, és a dir, a l'Índia és de +5: 30 hores. Per tant, són 19800 en segons.
NTP_INTERVAL, que és l'interval de temps que pren NTP per actualitzar el temps. Són 60-64 segons.
NTP_ADDRESS és el servidor NTP del vostre país. Per a l'Índia podeu utilitzar " in.pool.ntp.org ".
#define NTP_OFFSET 19800 // En segons #define NTP_INTERVAL 60 * 1000 // En mil·lisegons #define NTP_ADDRESS "1.asia.pool.ntp.org" WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
A la funció de configuració , inicialitzeu la configuració de Wi-Fi per connectar-vos a Internet.
void setup () { display.begin (); Serial.begin (9600); Serial.println (); Serial.println (); Serial.print ("Connexió a"); Serial.println (ssid); WiFi.begin (ssid, contrasenya); while (WiFi.status ()! = WL_CONNECTED) { demora (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi connectat"); Serial.println ("adreça IP:"); Serial.println (WiFi.localIP ()); timeClient.begin ();
A continuació, inicialitzeu les funcions de visualització per mostrar el temps a OLED.
display.begin (SSD1306_SWITCHCAPVCC);
A la funció de bucle, hem utilitzat timeClient.update (), aquesta funció pren temps actualitzat de NTP en forma de cadena i l’emmagatzema en una variable formatada de temps . A continuació, mostreu-lo a OLED mitjançant la funció display.println () .
bucle buit () { timeClient.update (); String formattedTime = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // configureu aquests paràmetres segons les vostres necessitats.. display.setCursor (0, 0); display.println (FormattedTime);
A continuació es dóna el programa complet. Ara, finalment, programeu ESP32 amb Arduino IDE i el vostre rellotge d'Internet està a punt per mostrar l'hora.
