एक IoT प्रोजेक्ट बनाते समय जो दिन के समय पर निर्भर करता है, आप चाहते हैं कि यह मैन्युअल समायोजन की आवश्यकता के बिना सही समय दिखाए। ऐसा प्रतीत होता है कि ESP32 के साथ इसे पूरा करना आसान होगा क्योंकि इसमें बिल्ट-इन वायरलेस है और यह इंटरनेट से कनेक्ट हो सकता है।

हालाँकि, बहुत सारे ऑनलाइन उदाहरण हैं जो दिखाते हैं कि इंटरनेट से कनेक्ट करने और समय के साथ समय को सिंक्रनाइज़ करने के लिए ESP32 को कैसे कॉन्फ़िगर किया जाए। सर्वर, उनमें से अधिकांश के लिए आपको वर्ष में दो बार मैन्युअल रूप से दिन के उजाले की बचत के समय को समायोजित करने की आवश्यकता होती है, जो कि 21 वीं सदी के किसी भी इलेक्ट्रॉनिक के लिए काफी हास्यास्पद लगता है। युक्ति।

यहां हम आपको एक समाधान के साथ प्रस्तुत करेंगे जो ईएसपी 32 को दुनिया के किसी भी स्थान के लिए, साल भर सही समय दिखाने की अनुमति देगा। लेकिन पहले, आइए Arduino IDE में SimpleTime उदाहरण देखें और देखें कि यह क्या करता है और हम इसमें कैसे सुधार कर सकते हैं।

सरल समय उदाहरण

यदि आप ESP32 के साथ Arduino IDE का उपयोग करते हैं, तो आप पाएंगे कि इसका एक उदाहरण है जिसे कहा जाता है सरल समय ऐसा दिखता है:

instagram viewer

ESP32 बोर्ड का उपयोग करने के लिए Arduino IDE को कॉन्फ़िगर करके आप इस उदाहरण तक पहुंच सकते हैं उपकरण मेनू, जैसे का चयन करके ESP32 देव मॉड्यूल. एक बार जब आप ऐसा कर लेते हैं, तो आप SimpleTime उदाहरण तक पहुँच सकते हैं उपकरण मेनू के तहत उदाहरण,ईएसपी 32,समय, तथा साधारण समय.

कोई इस आधिकारिक उदाहरण से काम करने का सबसे अच्छा तरीका प्रदर्शित करने की उम्मीद कर सकता है, लेकिन इस उदाहरण में एक बड़ी समस्या है। समय क्षेत्र और डेलाइट बचत समय को कॉन्फ़िगर करने के लिए, आपको निम्नलिखित दो पंक्तियों को बदलना होगा:

स्थिरांक लंबा gmtOffset_sec = 3600;
कॉन्स्ट इंट डेलाइटऑफसेट_सेक = 3600;

का उपयोग करके समय क्षेत्र सेट करना gmtOffset_sec असुविधाजनक है क्योंकि आपको अपने विशेष स्थान के लिए GMT ऑफसेट खोजना होगा। आप परामर्श करके ऐसा कर सकते हैं ग्रीनविच मीन टाइम वेबसाइट. सौभाग्य से, आपको इसे केवल एक बार करने की आवश्यकता है। डेलाइटऑफ़सेट_सेकंड हालाँकि, एक बड़ी समस्या प्रस्तुत करता है, क्योंकि आपको इसे वर्ष में दो बार समायोजित करने की आवश्यकता होती है। इसके लिए आपको अपनी परियोजना को बंद करने और इसे वर्ष में दो बार Arduino IDE से जोड़ने की आवश्यकता हो सकती है, जिससे यह एक IoT प्रोजेक्ट के लिए पूरी तरह से अनुपयुक्त हो जाता है जिसे आप सेट करना और भूलना चाहते हैं।

एक बेहतर दृष्टिकोण की तलाश में

तो समय क्षेत्र और डेलाइट बचत समय को कॉन्फ़िगर करने का एक बेहतर तरीका क्या होगा? इस प्रश्न का उत्तर देने के लिए, यह देखें कि आपका विंडोज पीसी स्थिति को कैसे संभालता है:

ध्यान दें कि जीएमटी से समय ऑफसेट देने के बजाय, हम विंडोज़ को बताते हैं कि हमारा समय क्षेत्र और स्थान क्या है-हमारे मामले में पर्वतीय समय (अमेरिका और कनाडा)—और फिर चेकबॉक्स को चेक करें डेलाइट सेविंग टाइम के लिए घड़ी को स्वचालित रूप से समायोजित करें। उस बिंदु से, विंडोज़ इसे हमारे लिए साल भर स्वचालित रूप से संभालता है। हम अपने ESP32 से इस तरह की सुविधा चाहते हैं।

सम्बंधित: विंडोज़ पर सिस्टम ट्रे घड़ी को कैसे अनुकूलित करें

ESP32 के लिए स्थान डेटाबेस बनाना

ESP32 पर एक ही काम करने के लिए कुछ लेगवर्क की आवश्यकता होती है। हमने ए के साथ शुरुआत की ब्लॉग भेजा जिसमें बताया गया है कि TZ पर्यावरण चर का उपयोग करके समय क्षेत्र कैसे सेट किया जाए। हमारे स्थान के लिए, यह हुआ MST7MDT, M3.2.0, M11.1.0, उसके अनुसार समय क्षेत्र तालिका. हालांकि इसने डेलाइट सेविंग टाइम के लिए मैन्युअल रूप से एडजस्ट करने की समस्या का समाधान किया, हम चाहते थे प्रत्येक के लिए संख्याओं और अक्षरों की एक स्ट्रिंग को देखने की आवश्यकता के बिना, प्रक्रिया को सरल बनाने के लिए स्थान।

हमने वेबसाइट से डेटा को एक डेटाबेस में बदल दिया है जिसे आप सीधे अपने Arduino स्केच के भीतर से उपयोग कर सकते हैं। अनुसरण करना इस लिंक Arduino स्केच के साथ सीधे ज़िप फ़ाइल डाउनलोड करने के लिए।

डेटाबेस स्वयं फ़ाइल में संग्रहीत है time_zone.h. डेटाबेस का उपयोग करते हुए, SimpleTime के लिए कोड इस तरह दिखता है:

हमने SimpleTime उदाहरण में संशोधनों को पीले रंग में हाइलाइट किया है। यह लाइन स्केच को डेटाबेस का उपयोग करने की अनुमति देगी:

#शामिल "time_zones.h"

यह पंक्ति आपके स्थान को कॉन्फ़िगर करती है:

const char* स्थान = "अमेरिका/डेनवर";

461 संभावित स्थान हैं। आप उपलब्ध स्थानों को देख सकते हैं time_zone.h फ़ाइल, या समय क्षेत्र सूची को देखकर यह वेबसाइट.

अंत में, निम्न पंक्ति ESP32 को नेटवर्क टाइम प्रोटोकॉल (NTP) का उपयोग करके इंटरनेट सर्वर के साथ समय को सिंक्रनाइज़ करने के लिए कहती है:

configTimeWithTz (getTzByLocation (स्थान), ntpServer);

विशेष इंटरनेट टाइम-सर्वर को निम्न पंक्ति का उपयोग करके कॉन्फ़िगर किया जा सकता है, हालांकि डिफ़ॉल्ट को आपके लिए ठीक काम करना चाहिए:

const char* ntpServer = "pool.ntp.org";

आप निम्न दो पंक्तियों में अपने वायरलेस एक्सेस प्वाइंट के लिए जानकारी जोड़ना भी सुनिश्चित करना चाहते हैं:

कॉन्स्ट चार * एसएसआईडी = "आपका_एसएसआईडी";
कॉन्स्ट चार * पासवर्ड = "आपका_पास";

बदलने के आपका_एसएसआईडी अपने वायरलेस नेटवर्क के नाम के साथ और तुम्हारा पास पासवर्ड के साथ इसे कनेक्ट करने के लिए उपयोग किया जाता है।

सम्बंधित: वायरलेस राउटर को पब्लिक एक्सेस प्वाइंट के रूप में सुरक्षित रूप से कॉन्फ़िगर करने के तरीके

पूरी तरह खत्म करना

एक बार जब आप कॉन्फ़िगरेशन चरणों को पूरा कर लेते हैं, तो स्केच को ESP32 पर अपलोड करें और यह बिना किसी हस्तक्षेप के साल भर सही समय का उपयोग करेगा!

जबकि यह कोड आपको एक अच्छा प्रारंभिक बिंदु देता है, उसी चीज़ को पूरा करने के लिए और अधिक उपयोगकर्ता के अनुकूल तरीके हैं। उदाहरण के लिए, हो सकता है कि आप उपयोगकर्ता को वेबपेज से सब कुछ कॉन्फ़िगर करने की अनुमति देना चाहें, बजाय इसे संकलन समय पर करने के। ऐसा करना थोड़ा अधिक काम है, क्योंकि आपको अपने Arduino स्केच में निम्नलिखित कार्य करने होंगे:

  1. प्रारंभिक कॉन्फ़िगरेशन के लिए ESP32 को वायरलेस एक्सेस पॉइंट के रूप में कॉन्फ़िगर करें
  2. उपयोगकर्ता को कॉन्फ़िगरेशन पृष्ठ के साथ प्रस्तुत करने के लिए एक वेब सर्वर लॉन्च करें
  3. उपयोगकर्ता को वायरलेस नेटवर्क जानकारी दर्ज करने और उनके स्थान का चयन करने की अनुमति देने के लिए एक HTML फॉर्म बनाएं
  4. उपयोगकर्ता की पसंद को संसाधित करने के लिए कोड बनाएं और इसे गैर-वाष्पशील मेमोरी में संग्रहीत करें
  5. बोर्ड पर पावर-ऑन:
    • गैर-वाष्पशील मेमोरी से कॉन्फ़िगरेशन पढ़ें
    • वायरलेस नेटवर्क से कनेक्ट करें और समय को सिंक्रनाइज़ करें

एक परियोजना जो इन चरणों को प्रदर्शित करती है वह है ESP32 डाली घड़ी. यह वह प्रोजेक्ट था जिसने हमें ESP32 पर टाइम सिंक्रोनाइज़ेशन करने का एक बेहतर तरीका खोजने के लिए प्रेरित किया।

छवि क्रेडिट: मार्सियो टेक्सीरा/फ़्लिकर

इसकी जाँच पड़ताल करो सोर्स कोड ESP32 डाली घड़ी के लिए यह देखने के लिए कि एक पूर्ण-विशेषताओं वाला वेब कॉन्फ़िगरेशन पृष्ठ कैसे दिखाया जाए। कॉन्फ़िगरेशन पृष्ठ उपयोगकर्ता को अपने स्थान और समय क्षेत्र का चयन करने की अनुमति देने के लिए एक पुल-डाउन मेनू दिखाता है और गैर-कनेक्टेड के लिए उपयोगकर्ता को समय और कैलेंडर विजेट का उपयोग करके मैन्युअल रूप से समय निर्धारित करने की अनुमति देता है विकल्प!

ESP32 पर स्थान-आधारित नेटवर्क समय तुल्यकालन

अब आपके पास अपनी ESP32 की घड़ी को सही समय पर स्वचालित रूप से सेट करने में सक्षम होने के लिए आवश्यक सभी जानकारी है, और इसे डेलाइट बचत समय के लिए भी समायोजित करें। यह IoT प्रोजेक्ट्स के लिए एकदम सही है, जिन्हें आप मैन्युअल रूप से एडजस्ट नहीं करना चाहते हैं।

7 दिलचस्प परियोजनाएं जो समग्र वीडियो बनाने के लिए ESP32 का उपयोग करती हैं

यदि आप ESP32 के साथ दिलचस्प परियोजनाओं की तलाश कर रहे हैं, तो आप सही जगह पर हैं।

आगे पढ़िए

साझा करनाकलरवईमेल
संबंधित विषय
  • DIY
  • ESP32
  • चीजों की इंटरनेट
लेखक के बारे में
मार्सियो टेक्सीरा (4 लेख प्रकाशित)

मैं ओपन-सोर्स सॉफ़्टवेयर, इलेक्ट्रॉनिक्स, 3डी प्रिंटिंग, कंप्यूटर ग्राफिक्स और रेट्रो-कंप्यूटिंग में विशेष रुचि रखने वाला निर्माता हूं।

Marcio Teixeira. की और फ़िल्में या टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें