మునుపటి ట్యుటోరియల్లో, మేము DS3231 మరియు ESP32 ఉపయోగించి RTC గడియారాన్ని తయారు చేసాము. హార్డ్వేర్ అవసరాలను తగ్గించడానికి మేము RTC మాడ్యూల్ ఉపయోగించకుండా ఇంటర్నెట్ గడియారాన్ని తయారు చేస్తాము. ఆర్టీసీ గడియారంతో పోలిస్తే ఇది మరింత ఖచ్చితమైనది. ESP32 అనేది Wi-Fi మాడ్యూల్ మరియు సులభంగా ఇంటర్నెట్కు అనుసంధానించబడుతుంది కాబట్టి మేము Wi-Fi ఉపయోగించి ఇంటర్నెట్ నుండి సమయాన్ని పొందటానికి NTP (నెట్వర్క్ టైమ్ ప్రోటోకాల్) మరియు UDP (యూజర్ డేటాగ్రామ్ ప్రోటోకాల్) ను ఉపయోగిస్తాము. IoT ప్రాజెక్ట్లను నిర్మించేటప్పుడు ఈ ఇంటర్నెట్ గడియారం చాలా ఉపయోగకరంగా ఉంటుంది.
NTP అంటే ఏమిటి ??
నెట్వర్క్ టైమ్ ప్రోటోకాల్ (NTP) అనేది నెట్వర్కింగ్ ప్రోటోకాల్, ఇది సిస్టమ్స్ a0nd డేటా నెట్వర్క్ల మధ్య సమయాన్ని సమకాలీకరించడానికి ఉపయోగిస్తారు. NTP ఫ్రేమ్వర్క్ ఇంటర్నెట్ టైమ్ సర్వర్లపై ఆధారపడి ఉంటుంది. రోజు సమయాన్ని ఖచ్చితంగా సర్దుబాటు చేయడానికి NTP కి అల్గోరిథంలు ఉన్నాయి. యుటిపిపోర్ట్ 123 ను ఉపయోగించి క్లయింట్ కంప్యూటర్లకు గడియారపు సమయాన్ని పంపే సాఫ్ట్వేర్ ఎన్టిపి సర్వర్లకు ఉంది. కాబట్టి ఇక్కడ ఈ ప్రాజెక్ట్లో, మేము ఎన్టిపి సర్వర్ నుండి ఇఎస్పి 32 ను ఉపయోగించి సమయాన్ని పొందుతున్నాము మరియు దానిని ఒఎల్ఇడి డిస్ప్లేలో చూపిస్తాము.
అవసరమైన పదార్థాలు:
- ESP32
- 128 * 64 OLED డిస్ప్లే
- బ్రెడ్బోర్డ్
- మగ-ఆడ తీగలు
సర్క్యూట్ రేఖాచిత్రం:
ఇక్కడ, మా 128 × 64 OLED డిస్ప్లే మాడ్యూల్ (SSD1306) ను ESP32 కి కనెక్ట్ చేయడానికి మేము SPI మోడ్ను ఉపయోగిస్తున్నాము. కాబట్టి, ఇది 7 పిన్లను ఉపయోగిస్తుంది. ESP32 తో కనెక్షన్లు ఇలా ఇవ్వబడ్డాయి:
- ESP32 యొక్క OLED -> PIN D5 యొక్క CS (చిప్ సెలెక్ట్) పిన్
- OLED యొక్క DC పిన్ -> ESP32 యొక్క PIN D4
- OLED యొక్క RES పిన్ -> ESP32 యొక్క PIN D2
- OLED యొక్క SDA పిన్ -> పిన్ D23 అంటే ESP32 యొక్క MOSI
- OLED యొక్క SCK పిన్ -> PIN D18 అంటే ESP32 యొక్క SCK
- OLED యొక్క Vdd -> ESP32 యొక్క Vcc
- OLED యొక్క GND -> ESP32 యొక్క GND
మీ ESP32 కోసం మీకు బోర్డు ఫైళ్లు అవసరం. ESP32 దేవ్ కిట్ కోసం Arduino IDE యొక్క చెక్-ఇన్ బోర్డు మేనేజర్ డ్రాప్ డౌన్ మెను. అది లేకపోతే క్రింది లింక్లో ఇచ్చిన దశలను అనుసరించండి:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
మీరు ఈ ప్రాజెక్ట్ కోసం ESP12 ను కూడా ఉపయోగించవచ్చు, ESP12 ను ఉపయోగించడానికి ఇక్కడ నేర్చుకోండి.
పై వ్యాసంలో వివరించిన విధంగా మా ప్రోగ్రామ్ను వ్రాయడానికి మేము Arduino IDE ని ఉపయోగిస్తాము.
కోడ్ వివరణ:
ESP32 ఇంటర్నెట్ గడియారం కోసం పూర్తి కోడ్ వ్యాసం చివరిలో ఇవ్వబడింది. ఇక్కడ మేము కోడ్ యొక్క కొన్ని ముఖ్యమైన భాగాలను వివరిస్తున్నాము.
మా కోడ్లో ఉపయోగించడానికి మాకు అనేక లైబ్రరీలు అవసరం, వీటిని క్రింది లింక్ల నుండి డౌన్లోడ్ చేసుకోవచ్చు:
1. అడాఫ్రూట్_ఎస్ఎస్డి 1306:
2. SPI:
3. అడాఫ్రూట్_జిఎఫ్ఎక్స్: https://github.com/adafruit/Adafruit-GFX- లైబ్రరీ
4. NTPClient:
5.WiFiUdp:
కాబట్టి మేము Wi-Fi పేరు మరియు పాస్వర్డ్ను నమోదు చేయడానికి అన్ని లైబ్రరీలను మరియు నిర్వచించిన వేరియబుల్ను చేర్చాము.
# చేర్చండి
ఇక్కడ NTPClient.h లైబ్రరీ టైమ్ సర్వర్తో కనెక్ట్ అవ్వడానికి ఉపయోగించబడుతుంది. ఇది NTP సర్వర్ నుండి సమయం పడుతుంది మరియు సమకాలీకరించండి. మరియు Hhre WiFiUdp.h లైబ్రరీ UDP సందేశాలను పంపడానికి మరియు స్వీకరించడానికి ఉపయోగించబడుతుంది. UDP అనేది ఒక ప్రోటోకాల్, ఇది మా సిస్టమ్ నుండి చిన్న సందేశాలను NTP సర్వర్కు పంపుతుంది మరియు స్వీకరిస్తుంది.
కాబట్టి ఇంటర్నెట్ నుండి సమయాన్ని పొందడానికి, మేము NTP కోసం మా ప్రోగ్రామ్లో మూడు వేరియబుల్స్ను నిర్వచించాలి.
NTP_OFFSET ఇది మీ దేశం యొక్క సమయ క్షేత్రం, అంటే భారతదేశానికి ఇది +5: 30 గంటలు. కనుక ఇది సెకన్లలో 19800.
NTP_INTERVAL ఇది సమయం నవీకరించడానికి NTP తీసుకున్న సమయ విరామం. ఇది 60-64 సెకన్లు.
NTP_ADDRESS మీ దేశం యొక్క NTP సర్వర్. భారతదేశం కోసం మీరు “ in.pool.ntp.org ” నుఉపయోగించవచ్చు.
# NTP_OFFSET 19800 ని నిర్వచించండి // సెకన్లలో # NTP_INTERVAL 60 * 1000 // మిలిసెకన్లలో # NTP_ADDRESS ని నిర్వచించండి "1.asia.pool.ntp.org" WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
లో సెటప్ ఫంక్షన్, ప్రారంభించడానికి Wi-Fi సెట్టింగులు ఇంటర్నెట్ తో కనెక్ట్.
శూన్య సెటప్ () { display.begin (); సీరియల్.బెగిన్ (9600); సీరియల్.ప్రింట్ల్న్ (); సీరియల్.ప్రింట్ల్న్ (); సీరియల్.ప్రింట్ ("దీనికి కనెక్ట్ అవుతోంది"); సీరియల్.ప్రింట్ల్న్ (ssid); WiFi.begin (ssid, password); అయితే (WiFi.status ()! = WL_CONNECTED) { ఆలస్యం (500); సీరియల్.ప్రింట్ ("."); } సీరియల్.ప్రింట్ల్న్ (""); Serial.println ("వైఫై కనెక్ట్ చేయబడింది."); Serial.println ("IP చిరునామా:"); సీరియల్.ప్రింట్ల్న్ (వైఫై.లోకాలిఐపి ()); timeClient.begin ();
OLED లో సమయాన్ని చూపించడానికి ప్రదర్శన విధులను ప్రారంభించండి.
display.begin (SSD1306_SWITCHCAPVCC);
లూప్ ఫంక్షన్లో, మేము timeClient.update () ను ఉపయోగించాము , ఈ ఫంక్షన్ NTP నుండి స్ట్రింగ్ రూపంలో నవీకరించబడిన సమయాన్ని తీసుకుంటుంది మరియు ఫార్మాట్ చేసిన టైమ్ వేరియబుల్లో నిల్వ చేస్తుంది. Display.println () ఫంక్షన్ను ఉపయోగించి OLED లో ప్రదర్శించండి.
శూన్య లూప్ () { timeClient.update (); స్ట్రింగ్ ఫార్మాట్ చేసిన టైమ్ = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // మీ అవసరానికి అనుగుణంగా ఈ పారామితులను సెట్ చేయండి.. display.setCursor (0, 0); display.println (formattedTime);
పూర్తి ప్రోగ్రామ్ క్రింద ఇవ్వబడింది. ఇప్పుడు చివరకు ESP32 ను Arduino IDE తో ప్రోగ్రామ్ చేయండి మరియు మీ ఇంటర్నెట్ క్లాక్ సమయం చూపించడానికి సిద్ధంగా ఉంది.