I den foregående tutorial har vi lavet RTC-ur ved hjælp af DS3231 og ESP32. For at minimere hardwarekravene laver vi internetur uden brug af RTC-modul. Dette er mere nøjagtigt sammenlignet med RTC-ur. ESP32 er et Wi-Fi-modul og kan let tilsluttes til internettet, så vi bruger NTP (Network Time Protocol) og UDP (User Datagram Protocol) til at hente tid fra internettet ved hjælp af Wi-Fi. Dette internetur kan være meget nyttigt, når du bygger IoT-projekter.
Hvad er NTP ??
Network Time Protocol (NTP) er en netværksprotokol, der bruges til synkronisering af tid mellem systemer og datanetværk. NTP-rammen afhænger af Internet Time-servere. NTP har algoritmer til præcist at justere tidspunktet på dagen. NTP-servere har software, der sender urets tid på dagen til klientcomputere ved hjælp af UDPport 123. Så her i dette projekt får vi tid fra NTP-serveren ved hjælp af ESP32 og viser den på OLED-skærm.
Nødvendige materialer:
- ESP32
- 128 * 64 OLED-skærm
- Brødbræt
- Han-hun ledninger
Kredsløbsdiagram:
Her bruger vi SPI-tilstand til at forbinde vores 128 × 64 OLED-skærmmodul (SSD1306) til ESP32. Så det bruger 7 ben. Forbindelser med ESP32 gives som:
- CS (Chip select) pin af OLED -> PIN D5 af ESP32
- DC-stift af OLED -> PIN D4 af ESP32
- RES pin af OLED -> PIN D2 af ESP32
- SDA pin af OLED -> PIN D23 dvs. MOSI af ESP32
- SCK pin af OLED -> PIN D18 dvs. SCK af ESP32
- Vdd af OLED -> Vcc af ESP32
- GND af OLED -> GND af ESP32
Du har brug for kortfiler til din ESP32. Drop-down-menuen til check-in board manager til Arduino IDE til ESP32 dev kit. Hvis det ikke er der, skal du følge trinene i nedenstående link:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Du kan også bruge ESP12 til dette projekt. Lær her at bruge ESP12.
Vi bruger Arduino IDE til at skrive vores program som forklaret i ovenstående artikel.
Kode Forklaring:
Den komplette kode til ESP32 internetur findes i slutningen af artiklen. Her forklarer vi nogle få vigtige dele af koden.
Vi har brug for flere biblioteker, der skal bruges i vores kode, som kan downloades fra nedenstående links:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. NTPClient:
5.WiFiUdp:
Så vi har inkluderet alle bibliotekerne og definerede variabler til indtastning af Wi-Fi-navn og adgangskode.
#omfatte
Her bruges NTPClient.h- biblioteket til at oprette forbindelse til tidsserveren. Det tager tid fra en NTP-server og hold den synkroniseret. Og Hhre WiFiUdp.h-biblioteket bruges til at sende og modtage UDP-meddelelser. UDP er en protokol, der sender og modtager korte beskeder fra vores system til NTP-server.
Så for at få tiden fra Internettet skal vi definere tre variabler i vores NTP-program.
NTP_OFFSET, som er tidszonen i dit land, dvs. for Indien er det +5: 30 time. Så det er 19800 på få sekunder.
NTP_INTERVAL, hvilket er tidsinterval, som NTP tager for at opdatere tiden. Det er 60-64 sekunder.
NTP_ADDRESS er NTP-serveren i dit land. For Indien kan du bruge “ 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 opsætningsfunktion initialiser du Wi-Fi-indstillinger for at oprette forbindelse til internet.
ugyldig opsætning () { display.begin (); Serial.begin (9600); Serial.println (); Serial.println (); Serial.print ("Opretter forbindelse til"); Serial.println (ssid); WiFi.begin (ssid, password); mens (WiFi.status ()! = WL_CONNECTED) { forsinkelse (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi tilsluttet."); Serial.println ("IP-adresse:"); Serial.println (WiFi.localIP ()); timeClient.begin ();
Initialiser derefter skærmfunktioner for at vise tid på OLED.
display.begin (SSD1306_SWITCHCAPVCC);
I loop-funktion har vi brugt timeClient.update (), denne funktion tager opdateret tid fra NTP i form af streng og gemmer den i formattedTime- variablen. Vis det derefter på OLED ved hjælp af display.println () -funktionen.
ugyldig løkke () { timeClient.update (); Streng formattedTime = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // indstil disse parametre efter dit behov.. display.setCursor (0, 0); display.println (formattedTime);
Det fulde program er angivet nedenfor. Nu skal du endelig programmere ESP32 med Arduino IDE, og dit internetur er klar til at vise tid.