विज्ञापन
Arduino प्रोजेक्ट्स पर समय रखना उतना आसान नहीं है जितना कि आप सोच सकते हैं: एक बार जब कंप्यूटर कनेक्शन नहीं होता है, तो आपका अनर्जित Arduino बस अपने आंतरिक टिकर सहित चलना बंद कर देता है।
अपने Arduino को अपने आस-पास की दुनिया के साथ तालमेल रखने के लिए, आपको "रियल टाइम क्लॉक मॉड्यूल" नाम की आवश्यकता है। यहाँ एक का उपयोग कैसे करें
रियल टाइम क्लॉक (RTC) का क्या मतलब है?
आपका कंप्यूटर सबसे अधिक संभावना है कि वह अपना समय इंटरनेट के साथ जोड़ता है, लेकिन इसमें अभी भी एक आंतरिक घड़ी है जो इंटरनेट कनेक्शन के बिना भी चालू रहती है या बिजली बंद हो जाती है। जब आप एक Arduino का उपयोग कंप्यूटर में प्लग करते हैं, तो आपके सिस्टम घड़ी द्वारा प्रदान किए गए सटीक समय तक पहुंच होती है। यह बहुत उपयोगी है, लेकिन अधिकांश Arduino परियोजनाओं को एक कंप्यूटर से दूर उपयोग करने के लिए डिज़ाइन किया गया है - जिस पर बिंदु, किसी भी समय बिजली अनप्लग हो जाती है, या Arduino पुनः आरंभ हो जाता है, यह बिल्कुल पता नहीं होता है कि किस समय यह है। आंतरिक घड़ी को रीसेट किया जाएगा और अगली बार शून्य पर चलने के बाद इसकी गिनती शुरू हो जाएगी।
यदि आपके प्रोजेक्ट को समय की आवश्यकता के साथ कुछ करना है - जैसे कि मेरा रात की रोशनी और सूर्योदय अलार्म घड़ी Arduino नाइट लाइट और सनराइज अलार्म प्रोजेक्टआज, हम एक सूर्योदय अलार्म घड़ी बना रहे हैं, जो एक आक्रामक शोर बनाने वाली मशीन का सहारा लिए बिना धीरे से और धीरे से आपको जगाएगी। अधिक पढ़ें - यह स्पष्ट रूप से एक मुद्दा बनने जा रहा है। उस परियोजना में, हम इस मुद्दे को मैन्युअल रूप से क्रूड में हर रात समय निर्धारित करके प्राप्त करते हैं जिस तरह से - उपयोगकर्ता बिस्तर पर जाने से पहले रीसेट बटन दबाते हैं, एक मैनुअल समय प्रदान करते हैं सिंक। स्पष्ट रूप से यह एक आदर्श दीर्घकालिक समाधान नहीं है।
एक RTC मॉड्यूल एक अतिरिक्त बिट सर्किट्री है, जिसके लिए एक छोटे से सिक्का सेल बैटरी की आवश्यकता होती है, जो कि आपके Arduino के बंद होने पर भी समय गिनना जारी रखता है। एक बार सेट होने के बाद - यह बैटरी के जीवन के लिए उस समय को रखेगा, आमतौर पर एक अच्छा वर्ष या तो।
TinyRTC
Arduino के लिए सबसे लोकप्रिय RTC TinyRTC कहा जाता है और इसे लगभग खरीदा जा सकता है $ 5- $ 10 ईबे पर. आपको सबसे अधिक संभावना है कि आप अपनी खुद की बैटरी की आपूर्ति करें (यह कई स्थानों पर इन विदेशों में शिप करने के लिए अवैध है), और कुछ हेडर (छेद में स्लॉट जो आप को अपने आप में मिलाप करने की आवश्यकता होगी)।
मेरे पास यह मॉड्यूल है:
यहां तक कि इसमें एक बिल्ट-इन टेम्परेचर सेंसर भी है, हालाँकि अगर आप इसे इस्तेमाल नहीं कर रहे हैं तो बैटरी अधिक समय तक चलेगी।
उस चीज़ पर छेद की संख्या बहुत डरावनी लगती है, लेकिन आपको केवल उनमें से चार की आवश्यकता है; GND, VCC, SCL और SDA - आप RTC मॉड्यूल के दोनों ओर संबंधित पिन का उपयोग कर सकते हैं। आप घड़ी का उपयोग करके बात करते हैं I2C प्रोटोकॉल, जिसका अर्थ है कि केवल दो पिन का उपयोग किया जाता है - एक "घड़ी" के लिए (एक धारावाहिक संचार डेटा घड़ी, समय के साथ कुछ नहीं करना) और एक डेटा के लिए। वास्तव में, आप एक ही दो पिन पर 121 I2C उपकरणों तक की श्रृंखला भी देख सकते हैं - बाहर की जाँच करें यह प्रवेश पृष्ठ है अन्य I2C उपकरणों के चयन के लिए आप जोड़ सकते हैं, क्योंकि बहुत सारे हैं!
शुरू करना
नीचे दिए गए आरेख के अनुसार अपने TinyRTC मॉड्यूल को हुक करें - तापमान सेंसर के लिए गुलाबी डीएस लाइन की आवश्यकता नहीं है।
इसके बाद, डाउनलोड करें समय तथा DS1307RTC पुस्तकालयों और अपने में जिसके परिणामस्वरूप फ़ोल्डर जगह है /libraries फ़ोल्डर।
पुस्तकालयों और उदाहरणों में लोड करने के लिए Arduino वातावरण से बाहर निकलें और पुनः लोड करें।
आपको DS1307RTC मेनू में दो उदाहरण मिलेंगे: अपलोड करें और चलाएं निर्धारित समय उदाहरण पहले - यह सही समय पर आरटीसी सेट करेगा। वास्तविक कोड के साथ विस्तार में जाने के लायक नहीं है, बस पता है कि प्रारंभिक समय सिंक्रनाइज़ेशन करने के लिए आपको इसे एक बार चलाने की आवश्यकता है।
अगला, उदाहरण के उपयोग के साथ देखें ReadTest.
#शामिल
#शामिल
#शामिल शून्य सेटअप () {Serial.begin (9600); जबकि (सीरियल); // सीरियल देरी के लिए प्रतीक्षा करें (200); Serial.println ("DS1307RTC पढ़ें टेस्ट"); Serial.println ( ""); } शून्य लूप () {tmElements_t tm; if (RTC.read (tm)) {Serial.print ("Ok, Time ="); Print2digits (tm) घंटे); Serial.write ( ':'); Print2digits (tm) मिनट); Serial.write ( ':'); Print2digits (tm) दूसरा); सीरीयलप्रिंट (", तिथि (डी / एम / वाई) ="); सिरियल.प्रिंट (टीएम)। डे); Serial.write ( '/'); सिरियल.प्रिंट (टीएम)। महीना); Serial.write ( '/'); Serial.print (tmYearToCalendar (tm) साल)); Serial.println (); } और {if (RTC.chipPresent ()) {Serial.println ("DS1307 रोक दिया गया है")। कृपया सेटटाइम चलाएं "); Serial.println ("समय शुरू करने और दौड़ना शुरू करने के लिए उदाहरण"); Serial.println (); } और {Serial.println ("DS1307 रीड एरर!" कृपया सर्किट्री की जांच करें। "); Serial.println (); } देरी (9000); } देरी (1000); } void Print2digits (int संख्या) {if (संख्या> = 0 && संख्या <10) {Serial.write ('0'); } Serial.print (संख्या); }
ध्यान दें कि हमने कोर को भी शामिल किया है Wire.h पुस्तकालय - यह Arduino के साथ आता है और I2C पर संचार के लिए उपयोग किया जाता है। कोड अपलोड करें, 9600 बॉड पर सीरियल कंसोल खोलें, और देखें और आपका Arduino वर्तमान समय में हर सेकंड आउटपुट करता है। अद्भुत!
उदाहरण में सबसे महत्वपूर्ण कोड एक बना रहा है tmElements_t tm - इस एक संरचना हम वर्तमान समय के साथ आबाद होंगे; और यह RTC.read (tm) फ़ंक्शन, जो RTC मॉड्यूल से वर्तमान समय प्राप्त करता है, इसे हमारे में डालता है टीएम संरचना, और अगर सब कुछ ठीक हो जाता है, तो सच है। अपने डिबग या लॉजिक कोड को उस "if" स्टेटमेंट में जोड़ें, जैसे कि समय को प्रिंट करना या उस पर प्रतिक्रिया करना।
अब जब आप जानते हैं कि Arduino के साथ सही समय कैसे मिलता है, तो आप सूर्योदय अलार्म परियोजना को फिर से लिखने या एक एलईडी शब्द घड़ी बनाने की कोशिश कर सकते हैं - संभावनाएं अनंत हैं! आप क्या बनायेंगे?
छवि क्रेडिट: Snootlab फ़्लिकर
जेम्स के पास आर्टिफिशियल इंटेलिजेंस में बीएससी है, और कॉम्पिटिया ए + और नेटवर्क + प्रमाणित है। वह MakeUseOf के प्रमुख डेवलपर हैं, और अपना खाली समय वीआर पेंटबॉल और बोर्डगेम खेलने में बिताते हैं। वह पीसी का निर्माण कर रहा है क्योंकि वह एक बच्चा था।