पावर साइकिल के बीच डेटा बचाने के लिए Arduino EEPROM का उपयोग कैसे करें

पावर साइकिल के बीच डेटा बचाने के लिए Arduino EEPROM का उपयोग कैसे करें

क्या आप जानते हैं कि Arduino बंद होने पर डेटा स्टोर कर सकता है? फ्लैश मेमोरी में संग्रहीत स्केच नहीं। मैं EEPROM में चर डेटा के बारे में बात कर रहा हूँ। मेरे साथ जुड़ें क्योंकि मैं आपको दिखाता हूं कि इसे कैसे पढ़ना और लिखना है, और यह आपकी परियोजनाओं के लिए क्या कर सकता है।





यदि आप Arduino के लिए नए हैं, तो सुनिश्चित करें कि आप हमारी जांच कर रहे हैं शुरुआती मार्गदर्शक .





ईईपीरोम क्या है?

EEPROM का मतलब है विद्युत व्यामार्जनीय क्रमादेश केवल पढने की यादास्त . यह एक प्रकार की गैर-वाष्पशील मेमोरी है। अगर आपको इसका मतलब समझ में नहीं आता है तो चिंता न करें। यह केवल हटाए गए बिजली के साथ भी डेटा संग्रहीत करता है (विपरीत) टक्कर मारना , जिसे किसी भी डेटा को बनाए रखने के लिए बिजली की आवश्यकता होती है)।





EEPROM को असंख्य प्रोसेसरों में बनाया गया है, जैसे कि मैट्रिक्स क्रिएटर पाई HAT में उपयोग किए जाने वाले फील्ड-प्रोग्रामेबल गेट ऐरे (FPGA)। सभी Arduinos में EEPROM उपलब्ध है, लेकिन क्षमता प्रति मॉडल भिन्न होती है। सुनिश्चित करें कि आप प्रत्येक बोर्ड पर अधिक विवरण के लिए हमारी खरीदारी मार्गदर्शिका देखें।

यह कैसे काम करता है?

EEPROM का उपयोग करके विद्युत रूप से मिटाया और प्रोग्राम किया जाता है फाउलर-नॉर्डहाइम टनलिंग . इसका उपयोग करने में सक्षम होने के लिए आपको तकनीकी विवरण जानने की आवश्यकता नहीं है। मूल आधार यह है कि बिजली का उपयोग बाइनरी डेटा (क्या बाइनरी है) को बदलने के लिए किया जाता है। इसे इलेक्ट्रॉनिक रूप से पढ़ा, मिटाया और फिर से लिखा जा सकता है।



सौभाग्य से, अरुडिनो भाषा कंप्यूटर विज्ञान में डिग्री की आवश्यकता के बिना, डेटा को बदलना आसान बनाता है।

जीवन प्रत्याशा

जबकि Arduino में EEPROM का उपयोग करना आसान है, इसका जीवन सीमित है। EEPROM को 100,000 रीड/इरेज़ साइकल को हैंडल करने के लिए निर्दिष्ट किया गया है। इसका मतलब है कि आप EEPROM के अस्थिर होने से पहले 100,000 बार डेटा लिख ​​और मिटा सकते हैं/फिर से लिख सकते हैं। वास्तव में, एटमेले (Arduino 'Chip' के निर्माता) अर्धचालक प्रत्येक प्रोसेसर की सहनशीलता के आधार पर अधिक या कम संख्या में चक्र संभाल सकते हैं।





एक बार किसी स्थान को कई बार लिखा और मिटा दिया गया तो यह अविश्वसनीय होना शुरू हो सकता है। यह सही डेटा नहीं लौटा सकता है, या पड़ोसी बिट से मान वापस नहीं कर सकता है।

यह बहुत सारे लिखने की तरह लग सकता है, लेकिन इस सीमा तक पहुंचना आसान हो सकता है यदि प्रोग्रामेटिक रूप से पढ़ना और लिखना (एक में) कुंडली , उदाहरण के लिए)। डेटा पढ़ना सिलिकॉन को नीचा नहीं करता है, केवल लेखन करता है . आप बिना किसी डर के EEPROM से जितना चाहें उतना डेटा पढ़ सकते हैं!





यह ध्यान रखना महत्वपूर्ण है कि यह सीमा प्रत्येक स्मृति स्थान पर लागू होती है। आपके Arduino में EEPROM में 1,000 या अधिक मेमोरी स्थान उपलब्ध हो सकते हैं, इसलिए यदि आप एक स्थान पर बहुत अधिक बार लिखते हैं, तो यह केवल वही स्थान प्रभावित होता है, और कोई अन्य नहीं। बाद में मैं चर्चा करूँगा लेवलिंग पहनें , जो समान रूप से डेटा वितरित करके EEPROM पहनने को कम कर सकता है - कुछ ऐसा जो SSDs उपयोग करते हैं।

यह किस लिए उपयोगी है?

EEPROM आपके Arduino प्रोजेक्ट्स के लिए अविश्वसनीय रूप से उपयोगी है। चूंकि यह डेटा को तब भी याद रखता है जब बिजली हटा दी जाती है, आप Arduino की स्थिति को संग्रहीत कर सकते हैं। हो सकता है कि आप एक लेज़र बुर्ज बना सकते हैं जो अपनी स्थिति को याद रखता है या कितना 'बारूद' शेष है। आप इसका उपयोग अपने उपकरणों को नियंत्रित करने के लिए कर सकते हैं, और लॉग इन कर सकते हैं कि आपका उपकरण कितनी बार सक्रिय हुआ।

EEPROM सेटिंग्स या हाई-स्कोर जैसी चीजों के लिए सबसे उपयुक्त है। यदि आप नियमित रूप से जटिल डेटा लिखना चाहते हैं, तो शायद एक ईथरनेट शील्ड (अंतर्निहित एसडी स्लॉट के साथ) या रास्पबेरी पाई पर विचार करें।

पढ़ना और लिखना

अब जबकि सिद्धांत समाप्त हो गया है, आइए देखें कि कुछ डेटा को कैसे पढ़ना और लिखना है! सबसे पहले, पुस्तकालय शामिल करें (यह Arduino IDE के साथ आता है):

#include

अब कुछ डेटा लिखें:

EEPROM.write(0, 12);

यह संख्या लिखता है 12 EEPROM स्थान के लिए 0 . प्रत्येक लेखन में 3.3 मिलीसेकंड लगते हैं ( एमएस , 1000ms = 1 सेकंड)। ध्यान दें कि आप पत्र कैसे नहीं लिख सकते ( char ), केवल शून्य से 255 तक की संख्या की अनुमति है। यही कारण है कि EEPROM सेटिंग्स या उच्च स्कोर के लिए आदर्श है, लेकिन खिलाड़ी के नाम या शब्दों के लिए इतना अच्छा नहीं है। इस पद्धति का उपयोग करके पाठ को संग्रहीत करना संभव है (आप वर्णमाला के प्रत्येक अक्षर को एक संख्या में मैप कर सकते हैं), हालांकि आपको कई मेमोरी स्थानों की आवश्यकता होगी - प्रत्येक अक्षर के लिए एक स्थान।

यहां बताया गया है कि आप उस डेटा को कैसे पढ़ते हैं:

नोटपैड++ में दो फाइलों की तुलना कैसे करें
EEPROM.read(0);

शून्य वह पता है जिसे आपने पहले लिखा था। यदि आपने पहले किसी पते पर नहीं लिखा है, तो यह अधिकतम मान लौटाएगा ( 255 )

कुछ और उपयोगी तरीके उपलब्ध हैं। मान लें कि आप दशमलव स्थान या स्ट्रिंग स्टोर करना चाहते हैं:

EEPROM.put(2,'12.67');

यह डेटा को कई स्थानों पर लिखता है - कुछ ऐसा जो खुद को लिखना आसान होगा, लेकिन कोई भी कम नहीं। आपको अभी भी ट्रैक करना होगा कि इसने कितने स्थानों को लिखा है, ताकि आप गलती से अपने डेटा को अधिलेखित न कर दें! आपको का उपयोग करना होगा पाना इस डेटा को फिर से प्राप्त करने की विधि:

float f = 0.00f;
EEPROM.get(2, f);

प्राप्त मूल्य को फ्लोट में संग्रहीत किया जाता है एफ चर। ध्यान दें कि इसे कैसे प्रारंभ किया जाता है 0.00f मूल्य के रूप में। NS एफ कंपाइलर को यह जानने देता है कि आप इस वेरिएबल में बड़ी संख्या में स्टोर करना चाहते हैं, इसलिए यह संकलन के दौरान कुछ अतिरिक्त कॉन्फ़िगरेशन सेट करता है।

NS EEPROM प्रलेखन पर Arduino वेबसाइट बहुत अधिक उदाहरण हैं।

समतलन पुराना होना

वियर लेवलिंग एक तकनीक है जिसका उपयोग पहनने को कम करने और EEPROM के जीवन को बढ़ाने के लिए किया जाता है। यदि आप केवल एक छोटे प्रोजेक्ट पर काम कर रहे हैं, तो आपको इस बारे में चिंता करने की आवश्यकता नहीं है।

EEPROM जीवन को संरक्षित करने के लिए आप जो सबसे आसान काम कर सकते हैं, वह है अपने लेखन को किसी विशेष स्थान तक सीमित करना। आप पहले पता पढ़कर ऐसा कर सकते हैं, और यदि आप जो मूल्य लिखना चाहते हैं वह पहले से मौजूद है, तो इसे फिर से लिखने की कोई आवश्यकता नहीं है (याद रखें, डेटा पढ़ने से कोई नुकसान नहीं होता है)। यहां बताया गया है कि आप यह कैसे करेंगे:

int safeWrite(int data, address) {
if(EEPROM.read(address) != data) {
EEPROM.write(address, data);
}
}

यह काफी सरल कोड है, हालांकि यह केवल पूर्णांकों के लिए काम करता है! पहिया का पुन: आविष्कार करने के बजाय, Arduino EEPROM लाइब्रेरी में निर्मित फ़ंक्शन का उपयोग करें:

EEPROM.update(address, val);

इस विधि में बिल्कुल वैसा ही हस्ताक्षर है जैसा कि लिखो विधि, हालांकि यह आवश्यक लिखने की संख्या को काफी कम कर सकता है!

यदि आपको बहुत अधिक डेटा लिखने की आवश्यकता है, और आप सिलिकॉन के खराब होने के बारे में चिंतित हैं, तो आप ट्रैक कर सकते हैं कि आप कितने लिखते हैं, हालांकि यह अधिक डेटा का उपयोग करता है। यहाँ एक मोटा कार्यान्वयन है स्यूडोकोड :

var address = 0
var writeCount = 0
if(writeCount > 75,000)
writeCount = 0
address += 1
EEPROM.write(address, data)

आपको EEPROM में एड्रेस और राइटकाउंट स्टोर करना होगा (और राइटकाउंट को एड्रेस लोकेशन पर विभाजित करना होगा)। अधिकांश समय, इस स्तर की सुरक्षा आवश्यक नहीं होगी। Arduinos इतने सस्ते भी हैं, इसलिए आपको बैकअप खरीदना आसान लग सकता है!

अब आपको कुछ कमाल के प्रोजेक्ट बनाने के लिए पर्याप्त जानकारी होनी चाहिए। अगर आप कुछ अच्छा बनाते हैं तो हमें बताएं! क्या आप तस्वीरों में सभी उपकरणों को पहचान सकते हैं? हमारे लिए नीचे टिप्पणी छोड़ें!

साझा करना साझा करना कलरव ईमेल अपने वर्चुअलबॉक्स लिनक्स मशीनों को सुपरचार्ज करने के लिए 5 टिप्स

वर्चुअल मशीनों द्वारा पेश किए गए खराब प्रदर्शन से थक गए हैं? अपने वर्चुअलबॉक्स प्रदर्शन को बढ़ावा देने के लिए आपको यहां क्या करना चाहिए।

आगे पढ़िए
संबंधित विषय
  • DIY
  • अरुडिनो
  • इलेक्ट्रानिक्स
लेखक के बारे में जो कोबर्न(136 लेख प्रकाशित)

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

जो कोबर्न . की अन्य फ़िल्में-टीवी शो

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

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

सब्सक्राइब करने के लिए यहां क्लिक करें
श्रेणी Diy