विषयसूची:

Arduino के साथ रीयल टाइम क्लॉक: 3 चरण
Arduino के साथ रीयल टाइम क्लॉक: 3 चरण

वीडियो: Arduino के साथ रीयल टाइम क्लॉक: 3 चरण

वीडियो: Arduino के साथ रीयल टाइम क्लॉक: 3 चरण
वीडियो: HOW TO TRIGGER RELAY USING ARDUINO AND RTC MODULE. 2024, नवंबर
Anonim
Arduino के साथ रीयल टाइम क्लॉक
Arduino के साथ रीयल टाइम क्लॉक

इस प्रोजेक्ट में हम Arduino और RTC मॉड्यूल की मदद से एक घड़ी बनाएंगे। जैसा कि हम जानते हैं कि Arduino वास्तविक समय प्रदर्शित नहीं कर सकता है इसलिए हम LCD पर सही समय प्रदर्शित करने के लिए RTC मॉड्यूल का उपयोग करेंगे। सभी चरणों को ध्यान से पढ़ें इससे आपको घड़ी की कल बनाने में बहुत मदद मिलेगी।

DS3231 Arduino कोड DS1307 कोड की तरह है और यह दोनों RTC चिप्स के साथ काम करता है।

नीचे दिया गया Arduino कोड DS3231 RTC के लिए किसी पुस्तकालय का उपयोग नहीं करता है, वायर लाइब्रेरी Arduino और DS3231 के बीच I2C सम्मेलन का उपयोग करने के लिए पत्राचार के लिए है।

हां! कई इलेक्ट्रॉनिक्स इंजीनियर अपनी समय-आधारित परियोजनाओं के लिए इस पर निर्भर हैं लेकिन आरटीसी पूरी तरह से विश्वसनीय नहीं है। यह बैटरी से संचालित है और इसे जल्द या बाद में बदलना होगा। IoT प्रोजेक्ट्स की बात करें तो यह मूल्यवान SPI (सीरियल पेरिफेरल इंटरफेस) पिन पर कब्जा कर लेता है और चारों ओर उलझे हुए तारों से गड़बड़ हो जाता है। समाधान…। यहां हमारा हीरो एनटीपी (नेटवर्क टाइम प्रोटोकॉल) आता है। एनटीपी इतना सटीक है क्योंकि इसे इंटरनेट से समय मिलता है। हम क्लाइंट-सर्वर मोड का उपयोग करके इस प्रोटोकॉल को संचालित करने जा रहे हैं। प्रक्रिया इतनी सरल है कि हमारा Nodemcu एक क्लाइंट के रूप में कार्य करता है और UDP का उपयोग करके सर्वर से NTP पैकेट का अनुरोध करता है। बदले में, सर्वर क्लाइंट को एक पैकेट भेजता है जो डेटा को पार्स करता है। NTP यूनिवर्सल टाइम सिंक्रोनाइज़ेशन प्रोटोकॉल है। आइए अब हम अपने लैब वर्क स्टेशन को रोशन करें

चरण 1: आवश्यक घटक

  • अरुडिनो बोर्ड
  • DS3231 आरटीसी बोर्ड
  • 16x2 एलसीडी स्क्रीन
  • 2 एक्स पुश बटन
  • 10K ओम चर रोकनेवाला (या पोटेंशियोमीटर)
  • 330-ओम रोकनेवाला
  • 3V सिक्का सेल बैटरी
  • ब्रेड बोर्ड
  • जम्पर तार

आरटीसी मोक्यूल DS3231

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

हम RTC (A. K. A रीयल-टाइम घड़ी) का उपयोग करते हैं

आरटीसी रीयल-टाइम-घड़ी (आरटीसी) एक एकीकृत सर्किट (आईसी) है जो वर्तमान समय का ट्रैक रखता है। आरटीसी वास्तविक मोड में समय का ख्याल रखता है। आरटीसी आमतौर पर कंप्यूटर मदरबोर्ड और एम्बेडेड सिस्टम में समय पर पहुंच की आवश्यकता के लिए पाया जाता है।

चरण 2: Arduino घड़ी का कनेक्शन

Arduino घड़ी का कनेक्शन
Arduino घड़ी का कनेक्शन
  • SCL पिन को RTC मॉड्यूल से Arduino A5. से कनेक्ट करें
  • एसडीए पिन को आरटीसी मॉड्यूल से Arduino A4. से कनेक्ट करें
  • VCC को 5v और GND को GND से कनेक्ट करें
  • एक पुशबटन को पिन से कनेक्ट करें 8
  • दूसरे पुशबटन को पिन से कनेक्ट करें 9
  • Arduino के 2 पिन करने के लिए LCD का RS कनेक्ट करें
  • Arduino के 3 पिन करने के लिए LCD का E कनेक्ट करें
  • Arduino के 7 को पिन करने के लिए LCD का D7 कनेक्ट करें
  • Arduino के 6 को पिन करने के लिए LCD का D6 कनेक्ट करें
  • Arduino के 5 को पिन करने के लिए LCD का D5 कनेक्ट करें
  • Arduino के 4 पिन करने के लिए LCD का D4 कनेक्ट करें
  • VSS और K को GND. से कनेक्ट करें
  • VDD और A को 5v. से कनेक्ट करें
  • vo को पोटेंशियोमीटर आउटपुट पिन से कनेक्ट करें

चरण 3: RTC के साथ Arduino घड़ी के लिए कोड

RTC के साथ Arduino घड़ी के लिए कोड
RTC के साथ Arduino घड़ी के लिए कोड

DS3231 केवल बीसीडी प्रारूप के साथ काम करता है और बीसीडी को दशमलव में बदलने के लिए और इसके विपरीत मैंने नीचे 2 पंक्तियों का उपयोग किया (उदाहरण के लिए मिनट): // बीसीडी को दशमलव मिनट में बदलें = (मिनट >> 4) * 10 + (मिनट और 0x0F);

// दशमलव को बीसीडीमिनट में बदलें = ((मिनट / 10) << 4) + (मिनट% 10); शून्य DS3231_display(): समय और कैलेंडर प्रदर्शित करता है, इससे पहले कि समय और कैलेंडर डेटा को बीसीडी से दशमलव स्वरूप में परिवर्तित किया जाता है। शून्य blink_parameter():

// DS3231 और Arduino का उपयोग करके सेट बटन के साथ वास्तविक समय घड़ी और कैलेंडर // LCD लाइब्रेरी कोड शामिल करें #include // वायर लाइब्रेरी कोड शामिल करें (I2C प्रोटोकॉल डिवाइस के लिए आवश्यक) #include // LCD मॉड्यूल कनेक्शन (RS, E, D4, D5), D6, D7) लिक्विड क्रिस्टल LCD(2, 3, 4, 5, 6, 7); शून्य सेटअप () {पिनमोड (8, INPUT_PULLUP); // बटन 1 पिन 8 पिनमोड (9, INPUT_PULLUP) से जुड़ा है; // बटन 2 पिन 9 से जुड़ा है // एलसीडी के कॉलम और पंक्तियों की संख्या को सेट करें LCD.begin (16, 2); वायर.बेगिन (); // i2c बस में शामिल हों} चार समय = "समय:::"; चार कैलेंडर = "दिनांक: //20"; बाइट मैं, दूसरा, मिनट, घंटा, तिथि, महीना, वर्ष; शून्य DS3231_display () {// बीसीडी को दशमलव सेकंड में बदलें = (दूसरा >> 4) * 10 + (सेकंड और 0x0F); मिनट = (मिनट >> 4) * 10 + (मिनट और 0x0F); घंटा = (घंटा >> 4) * 10 + (घंटा और 0x0F); दिनांक = (तारीख >> 4) * 10 + (तारीख और 0x0F); महीना = (महीना >> 4) * 10 + (महीना और 0x0F); वर्ष = (वर्ष >> 4) * 10 + (वर्ष और 0x0F); // अंत रूपांतरण समय [१२] = दूसरा% १० + ४८; समय [११] = दूसरा / १० + ४८; समय [9] = मिनट% १० + ४८; समय [८] = मिनट / १० + ४८; समय [६] = घंटा% १० + ४८; समय [५] = घंटा / १० + ४८; कैलेंडर [१४] = वर्ष% १० + ४८; कैलेंडर [१३] = वर्ष / १० + ४८; कैलेंडर [9] = माह% १० + ४८; कैलेंडर [८] = महीना / १० + ४८; कैलेंडर [६] = दिनांक% १० + ४८; कैलेंडर [५] = दिनांक / १० + ४८; LCD.setCursor(0, 0); एलसीडी.प्रिंट (समय); // प्रदर्शन समय LCD.setCursor (0, 1); एलसीडी.प्रिंट (कैलेंडर); // कैलेंडर प्रदर्शित करें} शून्य ब्लिंक_पैरामीटर () {बाइट जे = 0; जबकि (जे 23) // यदि घंटे> 23 ==> घंटे = 0 पैरामीटर = 0; अगर (i == 1 && पैरामीटर> 59) // यदि मिनट> 59 ==> मिनट = 0 पैरामीटर = 0; अगर (i == 2 && पैरामीटर> 31) // यदि दिनांक> 31 ==> दिनांक = 1 पैरामीटर = 1; अगर (i == 3 && पैरामीटर> 12) // अगर महीना> 12 ==> महीना = 1 पैरामीटर = 1; अगर (i == 4 && पैरामीटर> 99) // यदि वर्ष> 99 ==> वर्ष = 0 पैरामीटर = 0; स्प्रिंटफ (पाठ, "% 02u", पैरामीटर); LCD.setCursor (एक्स, वाई); एलसीडी.प्रिंट (पाठ); देरी (200); // 200ms प्रतीक्षा करें} LCD.setCursor (x, y); एलसीडी.प्रिंट (""); // दो रिक्त स्थान प्रदर्शित करें blink_parameter (); स्प्रिंटफ (पाठ, "% 02u", पैरामीटर); LCD.setCursor (एक्स, वाई); एलसीडी.प्रिंट (पाठ); ब्लिंक_पैरामीटर (); if(!digitalRead(8)){// यदि बटन (पिन #8) दबाया जाता है i++; // अगले पैरामीटर रिटर्न पैरामीटर के लिए वृद्धि 'i'; // रिटर्न पैरामीटर मान और बाहर निकलें } } } शून्य लूप () { अगर (! digitalRead (8)) {// यदि बटन (पिन # 8) दबाया जाता है तो i = 0; घंटा = संपादित करें (5, 0, घंटा); मिनट = संपादित करें (8, 0, मिनट); दिनांक = संपादित करें (5, 1, दिनांक); महीना = संपादित करें (8, 1, महीना); वर्ष = संपादित करें (13, 1, वर्ष); // दशमलव को बीसीडी मिनट में बदलें = ((मिनट / 10) << 4) + (मिनट% 10); घंटा = ((घंटा / 10) << 4) + (घंटा% 10); दिनांक = ((तारीख / 10) << 4) + (दिनांक% 10); महीना = ((महीना / १०) << ४) + (माह% १०); वर्ष = ((वर्ष / 10) << 4) + (वर्ष% 10); // अंत रूपांतरण // DS3231 RTC Wire.beginTransmission (0x68) पर डेटा लिखें; // DS3231 पते के साथ I2C प्रोटोकॉल प्रारंभ करें Wire.write(0); // रजिस्टर पता भेजें Wire.write(0); // सेकेंड रीसेट करें और थरथरानवाला वायर शुरू करें। लिखें (मिनट); // मिनट लिखें वायर।लिखें (घंटा); // घंटे लिखें Wire.write(1); // दिन लिखें (उपयोग नहीं किया गया) वायर.राइट (तारीख); // तारीख लिखें Wire.write (माह); // महीना लिखें Wire.write (वर्ष); // वर्ष लिखें Wire.endTransmission (); // ट्रांसमिशन बंद करो और I2C बस विलंब (200) को छोड़ दें; // 200ms प्रतीक्षा करें} Wire.beginTransmission (0x68); // DS3231 एड्रेस वायर.राइट (0); के साथ I2C प्रोटोकॉल शुरू करें; // रजिस्टर पता भेजें Wire.endTransmission(false); // I2C पुनरारंभ Wire.requestFrom (0x68, 7); // DS3231 से 7 बाइट्स का अनुरोध करें और दूसरे पढ़ने के अंत में I2C बस जारी करें = Wire.read (); // रजिस्टर से सेकंड पढ़ें 0 मिनट = वायर.रीड (); // रजिस्टर से मिनट पढ़ें 1 घंटा = वायर.रीड (); // रजिस्टर 2 से घंटे पढ़ें Wire.read (); // रजिस्टर 3 से दिन पढ़ें (इस्तेमाल नहीं किया गया) तारीख = वायर.रीड (); // रजिस्टर से पढ़ने की तारीख 4 महीने = वायर.रीड (); // रजिस्टर से महीने पढ़ें 5 साल = वायर.रीड (); // रजिस्टर 6 DS3231_display () से पढ़ें वर्ष; // डायप्ले समय और कैलेंडर विलंब (50); // 50ms प्रतीक्षा करें}

सिफारिश की: