विषयसूची:

इंटरनेट क्लॉक: एनटीपी प्रोटोकॉल के साथ ESP8266 NodeMCU का उपयोग करके OLED के साथ दिनांक और समय प्रदर्शित करें: 6 चरण
इंटरनेट क्लॉक: एनटीपी प्रोटोकॉल के साथ ESP8266 NodeMCU का उपयोग करके OLED के साथ दिनांक और समय प्रदर्शित करें: 6 चरण

वीडियो: इंटरनेट क्लॉक: एनटीपी प्रोटोकॉल के साथ ESP8266 NodeMCU का उपयोग करके OLED के साथ दिनांक और समय प्रदर्शित करें: 6 चरण

वीडियो: इंटरनेट क्लॉक: एनटीपी प्रोटोकॉल के साथ ESP8266 NodeMCU का उपयोग करके OLED के साथ दिनांक और समय प्रदर्शित करें: 6 चरण
वीडियो: [Project] Internet Based Date Time without RTC using ESP and Network Time Protocol 2024, नवंबर
Anonim
इंटरनेट घड़ी: NTP प्रोटोकॉल के साथ ESP8266 NodeMCU का उपयोग करके OLED के साथ प्रदर्शन दिनांक और समय
इंटरनेट घड़ी: NTP प्रोटोकॉल के साथ ESP8266 NodeMCU का उपयोग करके OLED के साथ प्रदर्शन दिनांक और समय

हाय दोस्तों इस निर्देश में हम एक इंटरनेट घड़ी का निर्माण करेंगे, जिसे इंटरनेट से समय मिलेगा, इसलिए इस परियोजना को चलाने के लिए किसी RTC की आवश्यकता नहीं होगी, इसके लिए केवल एक कार्यशील इंटरनेट कनेक्शन की आवश्यकता होगी

और इस परियोजना के लिए आपको एक esp8266 की आवश्यकता है जिसमें इंटरनेट एक्सेस प्राप्त करने के लिए एक वाईफाई होगा और उस पर समय प्रदर्शित करने के लिए एक डिस्प्ले होगा और esp8266 एनटीपी प्रोटोकॉल का उपयोग करके इंटरनेट से समय प्राप्त करेगा, एनटीपी नेटवर्क टाइम प्रोटोकॉल के लिए खड़ा है, इसलिए मूल रूप से एनटीपी सर्वर हैं वेब पर जो कंप्यूटर घड़ियों को सिंक्रनाइज़ करने के लिए उपयोग किया जाता है और हम अपने प्रोजेक्ट में समय प्राप्त करने के लिए उन सर्वरों का उपयोग करेंगे।

चरण 1: चीजें जो आपको चाहिए

तुम्हें जिन चीज़ों की ज़रूरत पड़ेगी
तुम्हें जिन चीज़ों की ज़रूरत पड़ेगी
तुम्हें जिन चीज़ों की ज़रूरत पड़ेगी
तुम्हें जिन चीज़ों की ज़रूरत पड़ेगी
तुम्हें जिन चीज़ों की ज़रूरत पड़ेगी
तुम्हें जिन चीज़ों की ज़रूरत पड़ेगी

इस परियोजना के लिए आपको निम्नलिखित चीजों की आवश्यकता होगी:

Esp8266/नोडेमकु

ओलेड ssd1306 0.96"

जम्पर तार

ब्रेड बोर्ड

यूएसबी केबल

चरण 2: कनेक्शन

सम्बन्ध
सम्बन्ध

यह 4-पिन OLED डिस्प्ले I2C प्रोटोकॉल का उपयोग करके ESP8266 मॉड्यूल के साथ संचार करता है, इंटरनेट समय प्रदर्शित करने के लिए OLED I2C पिन को NodeMCU से जोड़ने के लिए सर्किट आरेख और कनेक्शन तालिका नीचे दी गई है।

चरण 3: पुस्तकालय डाउनलोड करें

पुस्तकालय डाउनलोड करें
पुस्तकालय डाउनलोड करें
पुस्तकालय डाउनलोड करें
पुस्तकालय डाउनलोड करें

सुनिश्चित करें कि आपने अपने Arduino ide में SD1306 पुस्तकालयों को डाउनलोड किया है जैसा कि छवि में दिखाया गया है और सुनिश्चित करें कि आप Adafruit GFX लाइब्रेरी भी हैं, यदि नहीं तो इन दो पुस्तकालयों को स्थापित करें।

अपने Arduino IDE में लाइब्रेरी मैनेजर में जाएं और NTP खोजें और जैसे ही मैंने डाउनलोड किया, NTP क्लाइंट लाइब्रेरी डाउनलोड करें, आगे की मदद के लिए इमेज देखें।

चरण 4: एनटीपी क्या है

NTP. क्या है
NTP. क्या है

कंप्यूटर नेटवर्क के बीच घड़ियों को सिंक्रनाइज़ करने के लिए एनटीपी सबसे पुराने नेटवर्किंग इंटरनेट प्रोटोकॉल (आईपी) में से एक है। इसे 1981 में डेलावेयर विश्वविद्यालय के डेविड एल मिल्स द्वारा डिजाइन किया गया था। इस प्रोटोकॉल का उपयोग कुछ मिलीसेकंड के भीतर कई नेटवर्क को कोऑर्डिनेटेड यूनिवर्सल टाइम (यूटीसी) में सिंक्रनाइज़ करने के लिए किया जा सकता है। यूटीसी प्राथमिक समय मानक है जिसके द्वारा दुनिया घड़ी और समय को नियंत्रित करती है। विभिन्न भौगोलिक स्थानों के लिए यूटीसी बदलता नहीं है और बदलता नहीं है। एनटीपी समय संदर्भ के रूप में यूटीसी का उपयोग करता है और पूरे इंटरनेट पर सटीक और समकालिक समय प्रदान करता है।

एनटीपी एक पदानुक्रमित क्लाइंट-सर्वर मॉडल पर काम करता है। शीर्ष मॉडल में संदर्भ घड़ियाँ होती हैं जिन्हें "स्ट्रैटम0" के रूप में जाना जाता है जैसे परमाणु घड़ियाँ, रेडियो तरंगें, जीपीएस, जीएसएम जो उपग्रह से समय प्राप्त करती हैं। जो सर्वर स्ट्रैटम 0 से समय प्राप्त करते हैं उन्हें "स्ट्रैटम 1" कहा जाता है और जो सर्वर स्ट्रैटम 1 से समय प्राप्त करते हैं उन्हें "स्ट्रैटम 2" कहा जाता है और इसी तरह। यह सिलसिला चलता रहता है और प्रत्येक चरण के बाद समय की सटीकता कम होती जाती है। एनटीपी स्वचालित रूप से सिंक्रनाइज़ करने के लिए कई उपलब्ध समय स्रोतों में से सर्वश्रेष्ठ का चयन करता है जो इसे दोष-सहिष्णु सक्षम प्रोटोकॉल बनाता है। तो यहाँ इस परियोजना में, हम ESP8266 NodeMCU का उपयोग करके NTP सर्वर से समय प्राप्त कर रहे हैं और इसे OLED डिस्प्ले पर दिखा रहे हैं। इसी तरह की इंटरनेट घड़ी पिछले ट्यूटोरियल में ESP32 का उपयोग करके बनाई गई है।

चरण 5: कोडिंग भाग

कोडिंग भाग
कोडिंग भाग

दिनांक और समय का अनुरोध करने के लिए, एनटीपी सर्वर के पते के साथ टाइम क्लाइंट को इनिशियलाइज़ करें। बेहतर सटीकता के लिए एनटीपी सर्वरों का पता चुनें जो आपके भौगोलिक क्षेत्र के करीब हों। यहां हम “pool.ntp.org” का उपयोग करते हैं जो दुनिया भर से सर्वर देता है। यदि आप एशिया से सर्वर चुनना चाहते हैं तो आप "asia.pool.ntp.org" का उपयोग कर सकते हैं। टाइम क्लाइंट आपके टाइमज़ोन के मिलीसेकंड में यूटीसी टाइम ऑफ़सेट भी लेता है। उदाहरण के लिए, भारत के लिए UTC ऑफ़सेट +5:30 है, इसलिए हम इस ऑफ़सेट को मिलीसेकंड में बदल देते हैं जो कि 5*60*60+30*60 = 19800 के बराबर है।

क्षेत्र। UTC समय ऑफ़सेट (घंटे और मिनट)। UTC समय ऑफ़सेट (सेकंड)

भारत +5:30 19800

लंदन 0:00। 0

न्यू यॉर्क -5:00 -18000

कृपया निम्नलिखित कोड को कॉपी करें और कोड में अपना वाईफाई और पासवर्ड दर्ज करें और कोड में समय ऑफसेट दर्ज करें और फिर इसे अपने esp8266 बोर्डों पर अपलोड करें।:

#include "NTPClient.h"#include "ESP8266WiFi.h" // ESP8266 विशिष्ट वाई-फाई रूटीन प्रदान करता है जिसे हम नेटवर्क से कनेक्ट करने के लिए कॉल कर रहे हैं #include "WiFiUdp.h" // UDP पैकेज भेजना और प्राप्त करना संभालता है

#include "SPI.h" // OLED को NodeMCu के साथ जोड़ने के लिए SPI

#शामिल "Adafruit_GFX.h"

#शामिल "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // OLED डिस्प्ले की चौड़ाई, पिक्सल में

#define SCREEN_HEIGHT 64 // OLED डिस्प्ले की ऊंचाई, पिक्सल में

#परिभाषित OLED_RESET -1

Adafruit_SSD1306 डिस्प्ले (SCREEN_WIDTH, SCREEN_HEIGHT, &वायर, OLED_RESET);

कॉन्सचर * ssid = "yourwifissid";

const char *password = "yourwifipass";

वाईफाईयूडीपी एनटीपीयूडीपी;

NTPClient टाइमक्लाइंट (ntpUDP, "pool.ntp.org", १९८००, ६००००);

स्ट्रिंग arr_days={"रविवार", "सोमवार", "मंगलवार", "बुधवार", "गुरुवार", "शुक्रवार", "शनिवार"};

स्ट्रिंग दिनांक_समय; // आप समय सर्वर पूल और ऑफ़सेट निर्दिष्ट कर सकते हैं (सेकंड में, // बाद में सेटटाइमऑफ़सेट () के साथ बदला जा सकता है)। अतिरिक्त आप // अपडेट अंतराल निर्दिष्ट कर सकते हैं (मिलीसेकंड में, setUpdateInterval() का उपयोग करके बदला जा सकता है)।

व्यर्थ व्यवस्था()

{

सीरियल.बेगिन (115200);

वाईफाई.बेगिन (एसएसआईडी, पासवर्ड);

जबकि (WiFi.status() != WL_CONNECTED)

{

देरी (500);

सीरियल.प्रिंट ("।");

}

अगर(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println(F("SSD1306 आवंटन विफल रहा"));

के लिये(;;); // आगे न बढ़ें, हमेशा के लिए लूप करें

}

डिस्प्ले.क्लियरडिस्प्ले ();

display.setTextSize(2); // 2X-स्केल टेक्स्ट बनाएं

display.setTextColor (सफेद);

डिस्प्ले.सेट कर्सर (5, 2);

display.println ("आपका स्वागत है");

display.println ("निर्देश");

display.println ("प्रोजेक्ट");

डिस्प्ले.डिस्प्ले ();

देरी (3000);

टाइम क्लाइंट। शुरू ();

}

शून्य लूप ()

{

टाइम क्लाइंट.अपडेट ();

डिस्प्ले.क्लियरडिस्प्ले ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize(2); // 2X-स्केल टेक्स्ट बनाएं

display.setTextColor (नीला);

डिस्प्ले.सेट कर्सर (0, 2);

int hh = timeClient.getHours ();

int मिमी = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

अगर (एचएच>12)

{

एचएच = एचएच -12;

डिस्प्ले.प्रिंट (एचएच);

डिस्प्ले.प्रिंट (":");

डिस्प्ले।प्रिंट (मिमी);

डिस्प्ले.प्रिंट (":");

डिस्प्ले।प्रिंट (एसएस);

डिस्प्ले.प्रिंट्लन ("पीएम");

}

अन्यथा

{

डिस्प्ले.प्रिंट (एचएच);

डिस्प्ले.प्रिंट (":");

डिस्प्ले।प्रिंट (मिमी);

डिस्प्ले.प्रिंट (":");

डिस्प्ले।प्रिंट (एसएस);

डिस्प्ले.प्रिंट्लन ("एएम");

}

int दिन = timeClient.getDay ();

display.println("'"+arr_days[day]+"'");

date_time = timeClient.getFormattedDate ();

int index_date = date_time.indexOf ("टी");

स्ट्रिंग दिनांक = date_time.substring(0, index_date);

सीरियल.प्रिंट्लन (तारीख);

डिस्प्ले.प्रिंट्लन (तारीख);

डिस्प्ले.डिस्प्ले ();

// प्रारंभिक पाठ दिखाएं}

चरण 6: दिनांक और समय प्राप्त करना

दिनांक और समय प्राप्त करना
दिनांक और समय प्राप्त करना

यदि आपने सब कुछ ठीक से कनेक्ट किया है और कोड को ठीक से अपलोड किया है तो आप अपनी ntp घड़ी को पुराने डिस्प्ले पर चलने में देख पाएंगे जैसे कि पुराने डिस्प्ले में चल रही है। कृपया आउटपुट के लिए छवि देखें।

सिफारिश की: