I forrige opplæring har vi laget RTC-klokke ved hjelp av DS3231 og ESP32. For å minimere maskinvarekravene lager vi internettklokke uten å bruke RTC-modulen. Dette er mer nøyaktig i forhold til RTC-klokke. ESP32 er en Wi-Fi-modul og kan enkelt kobles til internett, så vi vil bruke NTP (Network Time Protocol) og UDP (User Datagram Protocol) for å hente tid fra internett ved hjelp av Wi-Fi. Denne internettklokken kan være veldig nyttig når du bygger IoT-prosjekter.
Hva er NTP ??
Network Time Protocol (NTP) er en nettverksprotokoll som brukes til synkronisering av tid mellom systemer og datanettverk. NTP-rammeverket avhenger av Internett-tidsservere. NTP har algoritmer for å justere tiden på dagen. NTP-servere har programvare som sender klokkeslettet til klientdatamaskiner ved hjelp av UDPport 123. Så her i dette prosjektet får vi tid fra NTP-serveren ved hjelp av ESP32 og viser den på OLED-skjerm.
Nødvendige materialer:
- ESP32
- 128 * 64 OLED-skjerm
- Brettbrett
- Mann-hunn ledninger
Kretsdiagram:
Her bruker vi SPI-modus for å koble 128 × 64 OLED-skjermmodulen (SSD1306) til ESP32. Så det vil bruke 7 pinner. Forbindelser med ESP32 er gitt som:
- CS (Chip select) pin of OLED -> PIN D5 of ESP32
- DC-pin av OLED -> PIN D4 av ESP32
- RES pin av OLED -> PIN D2 av ESP32
- SDA-pin av OLED -> PIN D23 dvs. MOSI av ESP32
- SCK pin av OLED -> PIN D18 dvs. SCK av ESP32
- Vdd av OLED -> Vcc av ESP32
- GND of OLED -> GND of ESP32
Du trenger tavlefiler for ESP32. Nedtrekksmenyen for innsjekkingstavlen til Arduino IDE for ESP32 dev kit. Hvis det ikke er der, følg trinnene i lenken nedenfor:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Du kan også bruke ESP12 for dette prosjektet. Lær her å bruke ESP12.
Vi vil bruke Arduino IDE til å skrive vårt program som forklart i artikkelen ovenfor.
Kode Forklaring:
Den komplette koden for ESP32 Internet Clock er gitt på slutten av artikkelen. Her forklarer vi noen viktige deler av koden.
Vi trenger flere biblioteker for å bruke i koden vår, som kan lastes ned fra linkene nedenfor:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. NTPClient:
5.WiFiUdp:
Så vi har tatt med alle bibliotekene og definert variabel for å legge inn Wi-Fi-navn og passord.
#inkludere
Her brukes NTPClient.h- biblioteket til å koble til tidsserveren. Det tar tid fra en NTP-server og hold den synkronisert. Og Hhre WiFiUdp.h-biblioteket brukes til å sende og motta UDP-meldinger. UDP er en protokoll som sender og mottar korte meldinger fra systemet vårt til NTP-serveren.
Så for å få tiden fra Internett, må vi definere tre variabler i vårt program for NTP.
NTP_OFFSET som er tidssonen i landet ditt, dvs. for India er det +5: 30 time. Så det er 19800 på sekunder.
NTP_INTERVAL som er tidsintervallet som NTP tar for å oppdatere tiden. Det er 60-64 sekunder.
NTP_ADDRESS er NTP-serveren i landet ditt. For India kan du bruke “ in.pool.ntp.org ”.
#define NTP_OFFSET 19800 // In seconds #define NTP_INTERVAL 60 * 1000 // In miliseconds #define NTP_ADDRESS "1.asia.pool.ntp.org" WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
I oppsettfunksjonen initialiserer du Wi-Fi-innstillingene for å koble til internett.
ugyldig oppsett () { display.begin (); Serial.begin (9600); Serial.println (); Serial.println (); Serial.print ("Koble til"); Serial.println (ssid); WiFi.begin (ssid, passord); mens (WiFi.status ()! = WL_CONNECTED) { forsinkelse (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi-tilkoblet."); Serial.println ("IP-adresse:"); Serial.println (WiFi.localIP ()); timeClient.begin ();
Initialiser deretter skjermfunksjonene for å vise tid på OLED.
display.begin (SSD1306_SWITCHCAPVCC);
I loop-funksjonen har vi brukt timeClient.update (), denne funksjonen tar oppdatert tid fra NTP i form av streng og lagrer den i formattedTime- variabelen. Deretter viser du den på OLED ved hjelp av display.println () -funksjonen.
ugyldig sløyfe () { timeClient.update (); Streng formattedTime = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // sett disse parametrene etter behov.. display.setCursor (0, 0); display.println (formattedTime);
Fullt program er gitt nedenfor. Nå programmerer du endelig ESP32 med Arduino IDE, og Internett-klokken din er klar til å vise tid.