पिछले ट्यूटोरियल में, हमने DS3231 और ESP32 का उपयोग करके RTC घड़ी बनाई है। हार्डवेयर आवश्यकताओं को कम करने के लिए हम आरटीसी मॉड्यूल का उपयोग किए बिना इंटरनेट घड़ी बनाएंगे । यह आरटीसी घड़ी की तुलना में अधिक सटीक है। ESP32 एक वाई-फाई मॉड्यूल है और इसे आसानी से इंटरनेट से जोड़ा जा सकता है इसलिए हम वाई-फाई का उपयोग करके इंटरनेट से समय प्राप्त करने के लिए एनटीपी (नेटवर्क टाइम प्रोटोकॉल) और यूडीपी (उपयोगकर्ता डेटाग्राम प्रोटोकॉल) का उपयोग करेंगे। IoT प्रोजेक्ट बनाते समय यह इंटरनेट घड़ी बहुत उपयोगी हो सकती है।
NTP क्या है ??
नेटवर्क टाइम प्रोटोकॉल (NTP) एक नेटवर्किंग प्रोटोकॉल है जिसका उपयोग सिस्टम a0nd डेटा नेटवर्क के बीच समय के सिंक्रनाइज़ेशन के लिए किया जाता है। NTP टाइम इंटरनेट टाइम सर्वर पर निर्भर करता है। NTP में दिन के समय को ठीक से समायोजित करने के लिए एल्गोरिदम है। NTP सर्वर में सॉफ्टवेयर होता है जो UDPport 123 का उपयोग करके क्लाइंट कंप्यूटरों को दिन के समय का समय भेजता है। इसलिए इस परियोजना में, हमें NTP सर्वर से ESP32 का उपयोग कर और OLED डिस्प्ले पर इसे दिखाने का समय मिल रहा है।
सामग्री की आवश्यकता:
- ईएसपी 32
- 128 * 64 ओएलईडी डिस्प्ले
- ब्रेड बोर्ड
- नर-मादा के तार
सर्किट आरेख:
यहां, हम अपने 128 × 64 ओएलईडी डिस्प्ले मॉड्यूल (SSD1306) को ESP32 से जोड़ने के लिए SPI मोड का उपयोग कर रहे हैं । तो, यह 7 पिन का उपयोग करेगा। ESP32 के साथ कनेक्शन इस प्रकार हैं:
- सीएस (चिप का चयन) ओएलईडी का पिन -> ईएसपी 32 का पिन डी 5
- OLED का DC पिन -> ESP32 का पिन D4
- OLED का RES पिन -> ESP32 का पिन 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
आप इस परियोजना के लिए ईएसपी 12 का उपयोग भी कर सकते हैं, ईएसपी 12 का उपयोग करने के लिए यहां जानें।
हम उपरोक्त लेख में बताए अनुसार अपने कार्यक्रम को लिखने के लिए Arduino IDE का उपयोग करेंगे।
कोड स्पष्टीकरण:
ESP32 इंटरनेट क्लॉक का पूरा कोड लेख के अंत में दिया गया है। यहां हम कोड के कुछ महत्वपूर्ण भागों के बारे में बता रहे हैं।
हमें अपने कोड में उपयोग करने के लिए कई पुस्तकालयों की आवश्यकता है जो नीचे दिए गए लिंक से डाउनलोड किए जा सकते हैं:
1. Adafruit_SSD1306:
2. एसपीआई:
3. Adafruit_GFX:
4. NTPClient:
5.WiFiUdp:
इसलिए हमने वाई-फाई नाम और पासवर्ड दर्ज करने के लिए सभी पुस्तकालयों और परिभाषित चर को शामिल किया है।
#शामिल
यहाँ NTPClient.h लाइब्रेरी का उपयोग टाइम सर्वर से जुड़ने के लिए किया जाता है। यह NTP सर्वर से समय लेता है और इसे सिंक में रखता है। और Hhre WiFiUdp.h लाइब्रेरी का उपयोग UDP संदेशों को भेजने और प्राप्त करने के लिए किया जाता है। यूडीपी एक प्रोटोकॉल है जो हमारे सिस्टम से एनटीपी सर्वर को छोटे संदेश भेजता और प्राप्त करता है।
तो इंटरनेट से समय निकालने के लिए, हमें एनटीपी के लिए अपने कार्यक्रम में तीन चर को परिभाषित करना होगा।
NTP_OFFSET जो आपके देश का समय क्षेत्र है अर्थात भारत के लिए यह +5: 30 घंटे है। तो यह सेकंड में 19800 है।
NTP_INTERVAL जो समय अद्यतन करने के लिए NTP द्वारा लिया गया समय अंतराल है। यह 60-64 सेकंड का है।
NTP_ADDRESS आपके देश का NTP सर्वर है। भारत के लिए आप " in.pool.ntp.org " काउपयोग कर सकते हैं।
#define NTP_OFFSET 19800 // सेकंड में #define NTP_INTERVAL 60 * 1000 // मिलिसेकंड में #define NTP_ADDRESS "1.asia.pool.ntp.org" WiFiUDP PtpUDP; NTPClient timeClient (ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERSAL);
में सेटअप समारोह, Wi-Fi सेटिंग आरंभ इंटरनेट के साथ कनेक्ट करने के लिए।
शून्य सेटअप () { display.begin (); सीरियल.बेगिन (9600); धारावाहिक.प्रदर्शन (); धारावाहिक.प्रदर्शन (); Serial.print ("कनेक्ट करना"); सिरियल.प्रिंट (ssid); WiFi.begin (ssid, पासवर्ड); जबकि (WiFi.status ()! = WL_CONNECTED) { विलंब (500); सीरियल.प्रिंट ("।"); } Serial.println (""); Serial.println ("वाईफाई जुड़ा हुआ है।"); Serial.println ("आईपी पता:"); Serial.println (WiFi.localIP ()); timeClient.begin ();
फिर OLED पर समय दिखाने के लिए प्रदर्शन कार्यों को इनिशियलाइज़ करें।
display.begin (SSD1306_SWITCHCAPVCC);
लूप फ़ंक्शन में, हमने timeClient.update () का उपयोग किया है , यह फ़ंक्शन स्ट्रिंग के रूप में NTP से अद्यतन समय लेता है और इसे स्वरूपित चर में संग्रहीत करता है । फिर इसे OLED पर display.println () फ़ंक्शन का उपयोग करके प्रदर्शित करें ।
शून्य लूप () { timeClient.update (); स्ट्रिंग स्वरूपित समय = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // अपनी आवश्यकता के अनुसार इन मापदंडों को सेट करें.. display.setCursor (0, 0); display.println (स्वरूपित समय);
पूरा कार्यक्रम नीचे दिया गया है। अब अंत में Arduino IDE के साथ ESP32 प्रोग्राम करें और आपका इंटरनेट क्लॉक समय दिखाने के लिए तैयार है।