ESP32 के साथ DS3231 रियल-टाइम क्लॉक (RTC) मॉड्यूल का उपयोग कैसे करें

Esp32 Ke Satha Ds3231 Riyala Ta Ima Kloka Rtc Modyula Ka Upayoga Kaise Karem



ESP32 एक स्मार्ट माइक्रोकंट्रोलर बोर्ड है जिसमें अंतर्निहित वाई-फाई और ब्लूटूथ क्षमताएं हैं। ESP32 एक आंतरिक RTC के साथ आता है, लेकिन इसका कार्य शक्ति पर निर्भर है। इसलिए यदि आप ऐसे प्रोजेक्ट या सर्किट डिज़ाइन करना चाहते हैं जिन्हें आप बिजली न होने पर भी चलाना चाहते हैं, तो आपको DS1307 या DS3231 जैसे किसी बाहरी RTC मॉड्यूल का उपयोग करना चाहिए।

हमने पहले ही इस पर एक ट्यूटोरियल बना लिया है DS1307 ESP32 मॉड्यूल के साथ इंटरफ़ेस कर रहा है . आज हम DS3231 RTC सेंसर की बुनियादी बातों पर चर्चा करेंगे और जांचेंगे कि कोई इसे ESP32 बोर्ड के साथ कैसे इंटरफ़ेस कर सकता है।

विषयसूची:







1. DS3231 RTC मॉड्यूल क्या है?



2. DS3231 को ESP32 के साथ कैसे इंटरफ़ेस करें



3. हार्डवेयर





4. कोड

5. आउटपुट



6. ESP32 का उपयोग करके OLED स्क्रीन पर RTC DS3231 समय कैसे प्रदर्शित करें

निष्कर्ष

1. DS3231 RTC मॉड्यूल क्या है?

DS3231 मॉड्यूल अत्यधिक सटीक टाइमकीपिंग प्रदान करता है। इसमें हमें बड़ी सटीकता के साथ समय देने के लिए एक एकीकृत तापमान-क्षतिपूर्ति क्रिस्टल ऑसिलेटर (टीसीएक्सओ) शामिल है। मॉड्यूल मास्टर-स्लेव कॉन्फ़िगरेशन का उपयोग करके I2C प्रोटोकॉल पर काम करता है। यह मुख्य इनपुट पावर न होने पर भी बैकअप बैटरी के साथ समय और तारीख रख सकता है। इसका उपयोग आमतौर पर उन उपकरणों में किया जाता है जो समय और तारीख पर निर्भर होते हैं।

DS3231 सेकंड, मिनट और घंटों पर नज़र रखता है। यह तारीखों और कार्यदिवसों का रिकॉर्ड भी रख सकता है। लीप वर्ष से निपटने पर, यह स्वचालित रूप से तदनुसार समय समायोजित करता है। साथ ही, यह AM/PM संकेतक के साथ 12-घंटे या 24-घंटे दोनों प्रारूपों में समय प्रदर्शित कर सकता है।

1.1. DS3231 बनाम DS1307

DS3231 और DS1307 दोनों बैटरी बैकअप सपोर्ट के साथ टाइम-कीपिंग मॉड्यूल हैं। हालाँकि, DS3231, DS1307 की तुलना में अधिक सटीक है। मुख्य कारण यह है कि DS1307 टाइमकीपिंग के लिए बाहरी 32kHz क्रिस्टल पर निर्भर करता है।

हालाँकि, RTC DS3231 में एक आंतरिक तापमान मुआवजा क्रिस्टल ऑसिलेटर (TCXO) की सुविधा है। इससे यह बाहरी तापमान से कम प्रभावित होता है और परिणामस्वरूप, DS1307 की तुलना में इसमें प्रति वर्ष कुछ मिनटों की सटीकता का लाभ होता है।

1.2. DS3231 पिनआउट

DS3231 I2C प्रोटोकॉल का उपयोग करके काम करता है। इस आरटीसी मॉड्यूल के केंद्र में, हमारे पास मैक्सिम द्वारा डिज़ाइन की गई सटीक आरटीसी चिप है। यह चिप सभी समय के कार्यों को संभालती है और I2C का उपयोग करके ESP32 या Arduino बोर्ड के साथ संचार करती है।

RTC DS3231 मॉड्यूल के मुख्य पिन हैं:

  • वीसीसी: इस पिन को अपने पावर स्रोत के सकारात्मक टर्मिनल से कनेक्ट करें।
  • जीएनडी: जमीनी कनेक्शन।
  • एसडीए: सीरियल डेटा पिन (I2C संचार के लिए प्रयुक्त)।
  • एससीएल: सीरियल क्लॉक पिन (I2C इंटरफ़ेस का भी हिस्सा)।
  • क्यू डब्ल्यू: स्क्वायर वेव आउटपुट पिन (आवधिक संकेत उत्पन्न कर सकता है, उदाहरण के लिए, अलार्म या अन्य समय उद्देश्यों के लिए)।
  • 32K: 32KHz ऑसिलेटर आउटपुट (सटीक समय अनुप्रयोगों के लिए उपयोगी)।

RTC DS3231 मॉड्यूल के मुख्य ऑनबोर्ड घटक निम्नलिखित हैं:

  • बैटरी रखने वाला: यह बाहरी शक्ति अनुपस्थित होने पर मॉड्यूल को चालू रखने की अनुमति देता है।
  • आरटीसी चिप: यह चिप समय और तारीख को बनाए रखती है।
  • AT24C32 ईईपीरोम: यह 1,000,000 लेखन चक्रों के साथ डेटा लॉगिंग और अन्य उद्देश्यों के लिए गैर-वाष्पशील भंडारण प्रदान करता है।
  • टीसीएक्सओ: तापमान की अलग-अलग रेंज के लिए सही समय प्रदान करने के लिए तापमान-क्षतिपूर्ति थरथरानवाला।
  • तापमान संवेदक: यह तापमान रीडिंग लेता है और उन्हें मॉड्यूल की सुविधा के हिस्से के रूप में प्रदान करता है।

2. DS3231 को ESP32 के साथ कैसे इंटरफ़ेस करें

DS3231 को ESP32 के साथ इंटरफ़ेस करने के लिए, आपको इंस्टॉल करना होगा आरटीक्लिब लाइब्रेरी पहला। इस Adafruit RTC लाइब्रेरी को स्थापित करने के बाद, आप I2C प्रोटोकॉल का उपयोग करके अपने ESP32 बोर्ड को DS3231 से कनेक्ट कर सकते हैं। ESP32 I2C को RTC DS3231 मॉड्यूल से कनेक्ट करने के लिए, आप ESP32 D21 और D22 पिन का उपयोग कर सकते हैं।

2.1. RTC DS3231 के साथ ESP32 का वायरिंग आरेख

सबसे पहले, आपको ESP32 को अपने I2C RTC DS3231 मॉड्यूल के साथ तार करना होगा। वायरिंग के लिए नीचे दिए गए पिन कॉन्फ़िगरेशन का पालन करें:

ESP32 को RTC DS3231 से कनेक्ट करने के बाद, आपका वायरिंग आरेख इस तरह दिखना चाहिए। आप DS3231 को ESP32 के VIN पिन से भी पावर दे सकते हैं। DS3231 का ऑपरेटिंग वोल्टेज 3.3 से 5.5 VDC है।

2.2. आवश्यक पुस्तकालय स्थापित करना

एक बार सर्किट तैयार हो जाने के बाद अगला कदम है अपने ESP32 बोर्ड को Arduino IDE के साथ कॉन्फ़िगर करें . DS3231 को इंटरफ़ेस करने के लिए, आपको इंस्टॉल करना होगा आरटीक्लिब लाइब्रेरी . आप इसे Arduino IDE लाइब्रेरी मैनेजर का उपयोग करके इंस्टॉल कर सकते हैं।

3. हार्डवेयर

ESP32 के साथ DS3231-आधारित RTC घड़ी को डिज़ाइन करने के लिए आपको निम्नलिखित हार्डवेयर की आवश्यकता होगी:

  • ESP32 विकास बोर्ड
  • आरटीसी डीएस3231 मॉड्यूल
  • CR2032 बैटरी
  • जम्पर तार
  • ब्रेड बोर्ड

4. कोड

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

अब Arduino IDE खोलें, संकलित करें और कोड को ESP32 बोर्ड पर बर्न करें।

#शामिल <वायर.एच>
#शामिल

आरटीसी_डीएस3231 आरटीसी ; // RTC_DS3231 वर्ग का एक उदाहरण प्रारंभ करें

खालीपन स्थापित करना ( ) {
धारावाहिक। शुरू ( 115200 ) ;
तार। शुरू ( ) ;

अगर ( ! आरटीसी. शुरू ( ) ) {
धारावाहिक। println ( 'आरटीसी का पता नहीं चला' ) ;
जबकि ( 1 ) ; // आरटीसी नहीं मिलने पर अनिश्चित काल के लिए लटका दें
}

//प्रारंभिक दिनांक और समय निर्धारित करने के लिए नीचे दी गई पंक्ति को अनकम्मेंट करें
//rtc.adjust(DateTime(__DATE__, __TIME__));
}

खालीपन कुंडली ( ) {
// सेंसर से वर्तमान समय पढ़ें (DS3231)
दिनांकसमय अभी = आरटीसी. अब ( ) ;

// दिनांक और समय को एक ही पंक्ति में दो अंकों के साथ घंटे, मिनट और सेकंड के लिए प्रिंट करें
धारावाहिक। छपाई ( 'आज की तारीख: ' ) ;
धारावाहिक। छपाई ( अब। वर्ष ( ) , दिसम्बर ) ;
धारावाहिक। छपाई ( '/' ) ;
प्रिंटदो अंक ( अब। महीना ( ) ) ;
धारावाहिक। छपाई ( '/' ) ;
प्रिंटदो अंक ( अब। दिन ( ) ) ;
धारावाहिक। छपाई ( ' वर्तमान समय: ' ) ;
प्रिंटदो अंक ( अब। घंटा ( ) ) ;
धारावाहिक। छपाई ( ':' ) ;
दो अंक प्रिंट करें ( अब। मिनट ( ) ) ;
धारावाहिक। छपाई ( ':' ) ;
प्रिंटदो अंक ( अब। दूसरा ( ) ) ;
धारावाहिक। println ( ) ;

देरी ( 1000 ) ; // हर 1 सेकंड में अपडेट करें
}

खालीपन प्रिंटदो अंक ( int यहाँ संख्या ) {
अगर ( संख्या < 10 ) {
धारावाहिक। छपाई ( '0' ) ; // एकल-अंकीय संख्याओं के लिए अग्रणी शून्य जोड़ें
}
धारावाहिक। छपाई ( संख्या ) ;
}

4.1. कोड स्पष्टीकरण

कोड एक वायर लाइब्रेरी की मदद से सीरियल I2C संचार को आरंभ करके शुरू होता है। उसके बाद, हमने DS3231 मॉड्यूल के साथ इंटरफेसिंग के लिए Adafruit द्वारा RTC लाइब्रेरी को शामिल किया। यह लाइब्रेरी RTC DS3231 मॉड्यूल के साथ इंटरैक्ट करने के लिए एक फ़ंक्शन प्रदान करती है।

में स्थापित करना भाग, I2C बस शुरू की गई है और उपलब्ध I2C उपकरणों की जाँच की गई है। यदि नहीं मिला, तो प्रोग्राम अनिश्चित काल के लिए रुक जाता है। बॉड दर भी परिभाषित की गई है ताकि आप Arduino IDE सीरियल मॉनिटर पर आउटपुट की जांच कर सकें।

पहली बार घड़ी सेट करना

DS3231 को प्रोग्रामिंग करते समय, आपको यह करना होगा इस पंक्ति को अनटिप्पणी करें . यह आपके सिस्टम का समय प्राप्त करेगा और इसे आरटीसी मेमोरी के अंदर संग्रहीत करेगा। ऐसा करने से, आरटीसी मॉड्यूल घड़ी आपके सिस्टम घड़ी के साथ सिंक्रनाइज़ हो जाती है।

//rtc.adjust(DateTime(__DATE__, __TIME__));

समय निर्धारित होने के बाद आपको उपरोक्त कोड दोबारा अपलोड करना होगा लेकिन इस बार करना होगा rtc.adjust() फ़ंक्शन लाइन पर टिप्पणी करें . अन्यथा, यह आपके पिछले निर्धारित समय को अधिलेखित कर देगा और जब आपका ESP32 बंद हो जाएगा, तो RTC आपके कोड अपलोड करने के समय से फिर से शुरू हो जाएगा।

ऐसा करने से, आपका समय RTC मॉड्यूल पृष्ठभूमि में तब तक मौजूद रहेगा जब तक RTC मॉड्यूल के CR2032 सेल में शक्ति है।

में कुंडली भाग, वर्तमान दिनांक और समय rtc.now() फ़ंक्शन का उपयोग करके DS3231 मॉड्यूल से पढ़ा जाता है। दिनांक और समय घटक निकाले जाते हैं और स्वरूपित तिथि हर एक सेकंड में Arduino IDE सीरियल मॉनिटर पर मुद्रित होती है।

5. आउटपुट

ESP32 बोर्ड पर कोड अपलोड करने के बाद, आप देखेंगे कि Arduino IDE सीरियल मॉनिटर पर समय प्रिंट होना शुरू हो जाएगा।

6. ESP32 का उपयोग करके OLED स्क्रीन पर RTC DS3231 समय कैसे प्रदर्शित करें

आप एक कदम आगे भी जा सकते हैं और DS3231 से पढ़ने के बाद समय को अपनी OLED स्क्रीन पर प्रदर्शित कर सकते हैं। इसके लिए आपको इंस्टॉल करना होगा एडफ्रूट जीएफएक्स एसएसडी1306 लाइब्रेरी Arduino IDE में।

एक बार इंस्टॉल हो जाने पर, ESP32 को निम्नलिखित कॉन्फ़िगरेशन में OLED और RTC मॉड्यूल से कनेक्ट करें।

अपने सेंसर को कनेक्ट करने के बाद, आप सर्किट को नीचे दिए गए योजनाबद्ध आरेख की तरह देखेंगे।

अब निम्नलिखित DS3231 कोड को ESP32 बोर्ड पर अपलोड करें।

#शामिल <वायर.एच>
#शामिल
#शामिल
#शामिल करें 'RTClib.h'

आरटीसी_डीएस3231 आरटीसी ;

चार दिन [ 7 ] [ 12 ] = { 'रविवार' , 'सोमवार' , 'मंगलवार' , 'बुधवार' , 'गुरुवार' , 'शुक्रवार' , 'शनिवार' } ;

Adafruit_SSD1306 डिस्प्ले = Adafruit_SSD1306 ( 128 , 64 , & तार , - 1 ) ;

खालीपन स्थापित करना ( ) {
धारावाहिक। शुरू ( 115200 ) ;

प्रदर्शन। शुरू ( SSD1306_SWITHCAPVCC , 0x3C ) ;

अगर ( ! आरटीसी. शुरू ( ) ) {
धारावाहिक। println ( 'आरटीसी नहीं मिल सका! सर्किट की जांच करें।' ) ;
जबकि ( 1 ) ;
}
//पहली बार समय निर्धारित करते समय नीचे दी गई पंक्ति को अनकम्मेंट करें
//rtc.adjust(DateTime(__DATE__, __TIME__));
प्रदर्शन। स्पष्ट प्रदर्शन ( ) ;
प्रदर्शन। setTextColor ( सफ़ेद ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( 0 , बीस ) ;
प्रदर्शन। छपाई ( 'आरटीसी घड़ी' ) ;
प्रदर्शन। प्रदर्शन ( ) ;
देरी ( 5000 ) ;
}

खालीपन कुंडली ( ) {
दिनांकसमय अभी = आरटीसी. अब ( ) ;

प्रदर्शन। स्पष्ट प्रदर्शन ( ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( 75 , 0 ) ;
प्रदर्शन। println ( अब। दूसरा ( ) , दिसम्बर ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( 25 , 0 ) ;
प्रदर्शन। println ( ':' ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( 65 , 0 ) ;
प्रदर्शन। println ( ':' ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( 40 , 0 ) ;
प्रदर्शन। println ( अब। मिनट ( ) , दिसम्बर ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( 0 , 0 ) ;
प्रदर्शन। println ( अब। घंटा ( ) , दिसम्बर ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( 0 , 25 ) ;
प्रदर्शन। println ( अब। दिन ( ) , दिसम्बर ) ;
प्रदर्शन। छपाई ( दिन [ अब। सप्ताह का दिन ( ) ] ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( बीस , 25 ) ;
प्रदर्शन। println ( '-' ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( 35 , 25 ) ;
प्रदर्शन। println ( अब। महीना ( ) , दिसम्बर ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( 60 , 25 ) ;
प्रदर्शन। println ( '-' ) ;
प्रदर्शन। setTextSize ( 2 ) ;
प्रदर्शन। सेटकर्सर ( 75 , 25 ) ;
प्रदर्शन। println ( अब। वर्ष ( ) , दिसम्बर ) ;
प्रदर्शन। प्रदर्शन ( ) ;
}

कोड स्पष्टीकरण

कोड की शुरुआत कुछ महत्वपूर्ण लाइब्रेरीज़ से हुई जो RTC और OLED स्क्रीन के लिए आवश्यक हैं। OLED डिस्प्ले को Adafruit SSD1306 लाइब्रेरी का उपयोग करके स्थापित किया गया है।

लूप भाग में, वर्तमान दिनांक और समय rtc.now() का उपयोग करके प्राप्त किया जाता है। उसके बाद, OLED स्क्रीन साफ़ हो जाती है और समय घटकों को डिजिटल घड़ी प्रारूप में प्रदर्शित किया जाता है। आप दिनांक और समय प्रारूप को समायोजित करने के लिए कोड को संशोधित भी कर सकते हैं।

एक बार जब कोड आपके बोर्ड पर अपलोड हो जाता है, तो आपको OLED स्क्रीन पर वर्तमान समय मिल जाएगा।

टिप्पणी: उपरोक्त कोड का उपयोग करता है 0x3C OLED के लिए I2C पता। यह SSD1306 OLED डिस्प्ले पर उपलब्ध सबसे आम I2C पता है। यदि आप अपनी OLED स्क्रीन के लिए I2C पता ढूंढना चाहते हैं, तो आप चला सकते हैं I2C स्कैनर कोड .

निष्कर्ष

DS3231 एक RTC सेंसर है जिसका उपयोग टाइमकीपिंग के लिए किया जा सकता है। इसमें एक बैटरी बैकअप है जो आपके माइक्रोकंट्रोलर बोर्ड बंद होने पर भी समय को सटीक रख सकता है। ESP2 को DS3231 के साथ इंटरफ़ेस करने के लिए, आपको अपने Arduino IDE में RTClib लाइब्रेरी स्थापित करनी होगी। उसके बाद, आपको ESP32 के डिजिटल पिन का उपयोग करके RTC मॉड्यूल को I2C प्रोटोकॉल पर कनेक्ट करना होगा। एक बार कनेक्ट होने के बाद, बस कोड अपलोड करें और समय समायोजित करें। अब आरटीसी सेंसर समय रखेगा, और आप इसे डिज़ाइन समय-आधारित परियोजनाओं पर अपने सीरियल मॉनिटर पर पढ़ सकते हैं।