I föregående handledning har vi gjort RTC-klocka med DS3231 och ESP32. För att minimera hårdvarukraven kommer vi att göra internetklocka utan att använda RTC-modulen. Detta är mer exakt jämfört med RTC-klocka. ESP32 är en Wi-Fi-modul och kan enkelt anslutas till internet så vi använder NTP (Network Time Protocol) och UDP (User Datagram Protocol) för att hämta tid från internet med Wi-Fi. Denna internetklocka kan vara mycket användbar när man bygger IoT-projekt.
Vad är NTP ??
Network Time Protocol (NTP) är ett nätverksprotokoll som används för synkronisering av tid mellan system och datanätverk. NTP-ramverket beror på Internet-tidsservrar. NTP har algoritmer för att exakt justera tiden på dagen. NTP-servrar har programvara som skickar klockans tid på dagen till klientdatorer med UDPport 123. Så här i det här projektet får vi tid från NTP-servern med ESP32 och visar den på OLED-skärmen.
Material som krävs:
- ESP32
- 128 * 64 OLED-skärm
- Bakbord
- Man-kvinnliga ledningar
Kretsschema:
Här använder vi SPI-läge för att ansluta vår 128 × 64 OLED-skärmmodul (SSD1306) till ESP32. Så det kommer att använda 7 stift. Anslutningar med ESP32 ges som:
- CS (Chip select) stift av OLED -> PIN D5 för ESP32
- DC-stift för OLED -> PIN D4 för ESP32
- RES-stift för OLED -> PIN D2 för ESP32
- SDA-stift av OLED -> PIN D23 dvs MOSI för ESP32
- SCK-stift av OLED -> PIN D18 dvs SCK för ESP32
- Vdd av OLED -> Vcc av ESP32
- GND för OLED -> GND för ESP32
Du behöver kortfiler för din ESP32. Listrutan för incheckningsstyrelsen för Arduino IDE för ESP32 dev-kit. Om det inte finns följer du stegen i länken nedan:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Du kan också använda ESP12 för detta projekt, lär dig här att använda ESP12.
Vi kommer att använda Arduino IDE för att skriva vårt program som förklaras i artikeln ovan.
Kodförklaring:
Den fullständiga koden för ESP32 Internet Clock ges i slutet av artikeln. Här förklarar vi några viktiga delar av koden.
Vi behöver flera bibliotek för att använda i vår kod som kan laddas ner från länkarna nedan:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. NTPClient:
5.WiFiUdp:
Så vi har inkluderat alla bibliotek och definierade variabler för att ange Wi-Fi-namn och lösenord.
#omfatta
Här används NTPClient.h- biblioteket för att ansluta till tidsservern. Det tar tid från en NTP-server och håll den synkroniserad. Och Hhre WiFiUdp.h-biblioteket används för att skicka och ta emot UDP-meddelanden. UDP är ett protokoll som skickar och tar emot kortmeddelanden från vårt system till NTP-servern.
Så för att få tiden från Internet måste vi definiera tre variabler i vårt program för NTP.
NTP_OFFSET vilket är tidszonen för ditt land, dvs. för Indien är det +5: 30 timme. Så det är 19800 på sekunder.
NTP_INTERVAL vilket är det tidsintervall som NTP tar för att uppdatera tiden. Det är 60-64 sekunder.
NTP_ADDRESS är NTP-servern i ditt land. För Indien kan du använda “ 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 installationsfunktionen , initialisera Wi-Fi-inställningar för att ansluta till internet.
ogiltig installation () { display.begin (); Serial.begin (9600); Serial.println (); Serial.println (); Serial.print ("Ansluter till"); Serial.println (ssid); WiFi.begin (ssid, lösenord); medan (WiFi.status ()! = WL_CONNECTED) { fördröjning (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi-ansluten."); Serial.println ("IP-adress:"); Serial.println (WiFi.localIP ()); timeClient.begin ();
Initiera sedan visningsfunktionerna för att visa tiden på OLED.
display.begin (SSD1306_SWITCHCAPVCC);
I loop-funktionen har vi använt timeClient.update (), den här funktionen tar uppdaterad tid från NTP i form av sträng och lagrar den i formattedTime- variabeln. Visa den sedan på OLED med funktionen display.println () .
void loop () { timeClient.update (); Sträng formattedTime = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // ställ in dessa parametrar efter ditt behov.. display.setCursor (0, 0); display.println (formattedTime);
Hela programmet ges nedan. Nu programmerar du äntligen ESP32 med Arduino IDE och din Internetklocka är redo att visa tid.