পাওয়ার সাইকেলের মধ্যে ডেটা সংরক্ষণ করতে Arduino EEPROM কিভাবে ব্যবহার করবেন

পাওয়ার সাইকেলের মধ্যে ডেটা সংরক্ষণ করতে Arduino EEPROM কিভাবে ব্যবহার করবেন

আপনি কি জানেন যে Arduino বন্ধ হয়ে গেলে ডেটা সঞ্চয় করতে পারে? ফ্ল্যাশ মেমরিতে সংরক্ষিত স্কেচ নয়। আমি EEPROM- এ ভেরিয়েবল ডেটার কথা বলছি। আমার সাথে যোগ দিন যেমন আমি আপনাকে দেখাব কিভাবে এটি পড়তে এবং লিখতে হয়, এবং এটি আপনার প্রকল্পের জন্য কি করতে পারে।





আপনি যদি আরডুইনোতে নতুন হন তবে নিশ্চিত করুন যে আপনি আমাদের দেখুন নতুনদের গাইড





EEPROM কি?

EEPROM মানে বৈদ্যুতিকভাবে মুছে ফেলা যায় এমন প্রোগ্রামযোগ্য পঠনযোগ্য মেমরি । এটি এক ধরনের অ-উদ্বায়ী মেমরি। আপনি এর কোন মানে বুঝতে না পারলে চিন্তা করবেন না। এটি কেবল সরানো শক্তি দিয়েও ডেটা সঞ্চয় করে (অসদৃশ র্যাম , যে কোন ডাটা ধরে রাখতে বিদ্যুতের প্রয়োজন)।





EEPROM অসংখ্য প্রসেসরের মধ্যে তৈরি করা হয়েছে, যেমন ম্যাট্রিক্স ক্রিয়েটর পাই HAT এ ব্যবহৃত ফিল্ড-প্রোগ্রামযোগ্য গেট অ্যারে (FPGA)। সমস্ত Arduinos EEPROM উপলব্ধ, কিন্তু ক্ষমতা প্রতি মডেল পরিবর্তিত হয়। প্রতিটি বোর্ডে আরও বিস্তারিত জানার জন্য আপনি আমাদের কেনার গাইডটি দেখুন।

এটা কিভাবে কাজ করে?

EEPROM বৈদ্যুতিকভাবে মুছে ফেলা হয় এবং ব্যবহার করে প্রোগ্রাম করা হয় Fowler-Nordheim টানেলিং । এটি ব্যবহার করতে সক্ষম হওয়ার জন্য আপনাকে প্রযুক্তিগত বিবরণ জানার দরকার নেই। মৌলিক ভিত্তি হল বিদ্যুৎ বাইনারি ডেটা (বাইনারি কি) পরিবর্তন করতে ব্যবহৃত হয়। এটি ইলেক্ট্রনিকভাবে পড়া, মুছে ফেলা এবং পুনরায় লেখা যায়।



সৌভাগ্যবশত, আরডুইনো ভাষা কম্পিউটার বিজ্ঞানে ডিগ্রির প্রয়োজন ছাড়াই ডেটা পরিবর্তন করা সহজ করে তোলে।

আয়ু

যদিও Arduino এ EEPROM ব্যবহার করা সহজ, এটি একটি সীমিত জীবন আছে। EEPROM 100,000 রিড/ইরেজ চক্র পরিচালনা করার জন্য নির্দিষ্ট করা হয়েছে। এর মানে আপনি লিখতে পারেন এবং তারপর EEPROM অস্থিতিশীল হওয়ার আগে 100,000 বার ডেটা মুছে/পুনরায় লিখতে পারেন। বাস্তবে, এটমেল (Arduino 'চিপ' নির্মাতারা) অর্ধপরিবাহী প্রতিটি এবং প্রতিটি প্রসেসরের সহনশীলতার উপর নির্ভর করে একটি উচ্চ বা নিম্ন সংখ্যক চক্র পরিচালনা করতে পারে।





একবার একটি অবস্থান লেখা হয়েছে এবং অনেক বার মুছে ফেলা হলে এটি অবিশ্বস্ত হতে শুরু করতে পারে। এটি সঠিক ডেটা ফেরত দিতে পারে না, অথবা প্রতিবেশী বিট থেকে মান ফেরত দিতে পারে না।

এটি অনেক লেখার মতো মনে হতে পারে, তবে প্রোগ্রাম্যাটিকভাবে পড়া এবং লেখার ক্ষেত্রে এই সীমাতে পৌঁছানো সহজ হতে পারে (a তে লুপ , উদাহরণ স্বরূপ). ডেটা পড়া সিলিকনকে হ্রাস করে না, শুধু লেখালেখি করে । আপনি EEPROM থেকে যতটা খুশি তত ডেটা পড়তে পারেন!





এটা মনে রাখা গুরুত্বপূর্ণ যে এই সীমা প্রতিটি মেমরির অবস্থানের জন্য প্রযোজ্য। আপনার Arduino এর EEPROM- এ 1,000 বা তার বেশি মেমরি লোকেশন পাওয়া যেতে পারে, তাই আপনি যদি একটি লোকেশনে অনেকবার লিখেন, তাহলে শুধুমাত্র সেই লোকেশনই প্রভাবিত হবে, অন্য কারো নয়। পরে আমি আলোচনা করব লেভেলিং পরুন , যা সমানভাবে ডেটা বিতরণ করে EEPROM পরিধান কমাতে পারে - এমন কিছু যা এসএসডি ব্যবহার করে।

এটা কি জন্য দরকারী?

EEPROM আপনার Arduino প্রকল্পের জন্য অবিশ্বাস্যভাবে দরকারী। বিদ্যুৎ অপসারণের পরেও এটি ডেটা মনে রাখে, আপনি আরডুইনো রাজ্য সংরক্ষণ করতে পারেন। হয়তো আপনি একটি লেজার বুর্জ তৈরি করতে পারেন যা তার অবস্থান মনে রাখে বা কতটা 'বারুদ' অবশিষ্ট থাকে। আপনি এটি আপনার যন্ত্রপাতি নিয়ন্ত্রণ করতে ব্যবহার করতে পারেন, এবং আপনার যন্ত্র কতবার সক্রিয় হয়েছে তা লগ করতে পারেন।

EEPROM সেটিংস বা উচ্চ-স্কোরের মতো জিনিসগুলির জন্য সবচেয়ে উপযুক্ত। আপনি যদি নিয়মিত জটিল তথ্য লিখতে চান, তাহলে হয়তো একটি ইথারনেট shাল (বিল্ট-ইন এসডি স্লট সহ) অথবা রাস্পবেরি পাই বিবেচনা করুন।

পড় ও লিখ

এখন যেহেতু তত্ত্বটি বেরিয়ে গেছে, আসুন দেখি কিভাবে কিছু ডেটা পড়তে এবং লিখতে হয়! প্রথমে, লাইব্রেরি অন্তর্ভুক্ত করুন (এটি Arduino IDE এর সাথে আসে):

#include

এখন কিছু তথ্য লিখুন:

EEPROM.write(0, 12);

এই সংখ্যাটি লিখে 12 EEPROM অবস্থানে 0 । প্রতিটি লেখায় 3.3 মিলিসেকেন্ড লাগে ( মাইক্রোসফট , 1000ms = 1 সেকেন্ড)। লক্ষ্য করুন কিভাবে আপনি চিঠি লিখতে পারবেন না ( গৃহস্থালি ), শুধুমাত্র শূন্য থেকে 255 পর্যন্ত সংখ্যা অনুমোদিত। এই কারণেই EEPROM সেটিংস বা উচ্চ স্কোরের জন্য আদর্শ, কিন্তু প্লেয়ারের নাম বা শব্দের জন্য এত ভাল নয়। এই পদ্ধতিটি ব্যবহার করে পাঠ্য সংরক্ষণ করা সম্ভব (আপনি বর্ণমালার প্রতিটি অক্ষরকে একটি সংখ্যায় ম্যাপ করতে পারেন), তবে আপনার একাধিক মেমরির অবস্থান থাকতে হবে - প্রতিটি অক্ষরের জন্য একটি অবস্থান।

আপনি কীভাবে সেই ডেটা পড়েন তা এখানে:

সাইন আপ না করে অনলাইনে বিনামূল্যে সিনেমা দেখা
EEPROM.read(0);

শূন্য হল সেই ঠিকানা যা আপনি আগে লিখেছিলেন। যদি আপনি আগে কোন ঠিকানায় লিখেননি, এটি সর্বোচ্চ মান ফেরত দেবে ( 255 )।

আরও কিছু উপকারী পদ্ধতি আছে। বলুন আপনি একটি দশমিক স্থান বা স্ট্রিং সংরক্ষণ করতে চেয়েছিলেন:

EEPROM.put(2,'12.67');

এটি একাধিক স্থানে ডেটা লিখে - এমন কিছু যা নিজেকে লিখতে সহজ হবে, কিন্তু কোনটিই কম নয়। এটি এখনও কতগুলি অবস্থানে লেখা হয়েছে তার ট্র্যাক রাখতে হবে, যাতে আপনি ভুল করে আপনার ডেটা ওভাররাইট না করেন! আপনাকে ব্যবহার করতে হবে পাওয়া এই ডেটা পুনরুদ্ধার করার পদ্ধতি:

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

Get থেকে মান ভাসা মধ্যে সংরক্ষিত হয় পরিবর্তনশীল লক্ষ্য করুন কিভাবে এটি দিয়ে শুরু করা হয় 0.00f মান হিসাবে। দ্য কম্পাইলারকে জানাতে দেয় যে আপনি এই ভেরিয়েবলে একটি বড় সংখ্যা সংরক্ষণ করতে চাইতে পারেন, তাই এটি সংকলনের সময় কিছু অতিরিক্ত কনফিগারেশন সেট করে।

দ্য EEPROM ডকুমেন্টেশন উপরে আরডুইনো ওয়েবসাইট আরো অনেক উদাহরণ আছে

লেভেলিং পরুন

পরিধান সমতলকরণ একটি কৌশল যা পরিধান কমাতে এবং 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 এ ঠিকানা এবং writeCount সংরক্ষণ করতে হবে (এবং writeCount কে ঠিকানা লোকেশনে বিভক্ত করতে হবে)। বেশিরভাগ সময়, এই স্তরের সুরক্ষার প্রয়োজন হবে না। Arduinos খুব সস্তা, তাই আপনি একটি ব্যাকআপ ক্রয় করা সহজ হতে পারে!

কিছু অসাধারণ প্রকল্প তৈরির জন্য আপনার এখন যথেষ্ট জানা উচিত। আপনি যদি কিছু শীতল করেন তবে আমাদের জানান! আপনি কি ছবির সব ডিভাইস চিনতে পারেন? আমাদের নিচে একটি মন্তব্য করুন!

শেয়ার করুন শেয়ার করুন টুইট ইমেইল আপনার ভার্চুয়ালবক্স লিনাক্স মেশিনগুলিকে সুপারচার্জ করার ৫ টি টিপস

ভার্চুয়াল মেশিন দ্বারা দেওয়া খারাপ পারফরম্যান্সে ক্লান্ত? আপনার ভার্চুয়ালবক্সের কর্মক্ষমতা বাড়ানোর জন্য আপনার যা করা উচিত তা এখানে।

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • DIY
  • আরডুইনো
  • ইলেকট্রনিক্স
লেখক সম্পর্কে জো কোবার্ন(136 নিবন্ধ প্রকাশিত)

জো যুক্তরাজ্যের লিংকন বিশ্ববিদ্যালয় থেকে কম্পিউটার বিজ্ঞানে স্নাতক। তিনি একজন পেশাদার সফটওয়্যার ডেভেলপার, এবং যখন তিনি ড্রোন উড়াচ্ছেন না বা সঙ্গীত লিখছেন না, তখন তাকে প্রায়ই ফটো তুলতে বা ভিডিও তৈরি করতে দেখা যায়।

জো কোবার্ন থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন
বিভাগ Diy