আরডুইনোতে ইপ্রোমের পরিচিতি

সমস্যাগুলি দূর করার জন্য আমাদের উপকরণটি ব্যবহার করে দেখুন





এই পোস্টে আমরা EEPROM কী, তা EEPROM এ কীভাবে ডেটা সংরক্ষণ করা হয় তা বুঝতে যাচ্ছি আরডুইনো বোর্ডের মাইক্রোকন্ট্রোলার এবং কয়েকটি উদাহরণের মাধ্যমে EEPROM এ ডেটা কীভাবে লিখতে এবং পড়তে হয় তা ব্যবহারিকভাবে পরীক্ষা করুন।

আরডুইনোতে ইপ্রোমের পরিচিতি

কেন EEPROM?

আমরা জিজ্ঞাসার আগে EEPROM কি? EEPROM কেন প্রথম স্থানে সংরক্ষণের জন্য ব্যবহৃত হয় তা জানা খুব গুরুত্বপূর্ণ। সুতরাং, আমরা EEPROMs সম্পর্কে সুস্পষ্ট ধারণা পেতে পারি।



কম্পিউটার হার্ড ডিস্ক, পুরানো স্কুল ক্যাসেট টেপ রেকর্ডার, সিডি, ডিভিডি, ব্লু-রে ডিস্কের মতো অপটিক্যাল স্টোরেজ মিডিয়াম এবং এসএসডি (সলিড স্টেট ড্রাইভ) এর মতো কঠিন স্টেট মেমরির মতো চৌম্বকীয় স্টোরেজ ডিভাইসগুলি থেকে আজকাল প্রচুর স্টোরেজ ডিভাইস উপলব্ধ devices কম্পিউটার এবং মেমরি কার্ড ইত্যাদি

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



কম্পিউটার বা স্মার্টফোনের মতো কানের সুরকার সংগীত বা আই পপিং ভিডিও সরবরাহ করে এমন ডিভাইসটি কিছু সমালোচনামূলক ডেটা যেমন কনফিগারেশন ডেটা, বুট ডেটা, পাসওয়ার্ডস, বায়ো-মেট্রিক ডেটা, লগইন ডেটা ইত্যাদি সঞ্চয় করে

সুরক্ষার কারণে এই উল্লিখিত ডেটা ভর স্টোরেজ ডিভাইসে সংরক্ষণ করা যাবে না এবং এই ডেটাগুলি ব্যবহারকারীরা অজান্তেই সংশোধন করতে পারে যা ডিভাইসটির ক্ষতি করতে পারে।

এই ডেটাগুলি কয়েকটি মেগাবাইটের কাছে কেবলমাত্র কয়েকটি বাইট নেয়, চৌম্বকীয় বা অপটিকাল মিডিয়ামের মতো একটি প্রথাগত স্টোরেজ ডিভাইসটিকে প্রসেসরের চিপগুলিতে সংযুক্ত করে অর্থনৈতিক এবং শারীরিকভাবে সম্ভব হয় না।

সুতরাং, এই সমালোচনামূলক ডেটা প্রসেসিং চিপগুলিতে নিজেই সংরক্ষণ করা হয়।

আরডুইনো কম্পিউটার বা স্মার্টফোন থেকে আলাদা নয়। বেশ কয়েকটি পরিস্থিতি রয়েছে যেখানে আমাদের কিছু সমালোচনামূলক ডেটা সংরক্ষণ করতে হবে যা পাওয়ার কাটা বন্ধ হওয়ার পরেও মুছে ফেলা উচিত নয়, উদাহরণস্বরূপ সেন্সর ডেটা।

এতক্ষণে, আপনি একটি ধারণা পেয়েছেন মাইক্রোপ্রসেসর এবং মাইক্রোকন্ট্রোলার চিপগুলিতে কেন আমাদের ইপ্রোম দরকার need

ইপ্রোম কী?

EEPROM এর অর্থ বৈদ্যুতিন ক্ষয়যোগ্য প্রোগ্রামেবল পঠনযোগ্য মেমরি। এটি একটি অ-উদ্বায়ী মেমরি যা পড়তে এবং লিখতেও পারে বাইট বুদ্ধিমান

বাইট-লেভেল পড়া এবং লেখা এটিকে অন্যান্য অর্ধপরিবাহী স্মৃতি থেকে আলাদা করে তোলে। উদাহরণস্বরূপ ফ্ল্যাশ মেমরি: ব্লক-ওয়াইজ পদ্ধতিতে ডেটা পড়া, লেখা এবং মোছা।

একটি ব্লক কয়েক হাজার থেকে হাজার হাজার বিট হতে পারে, যা ভর স্টোরেজের জন্য সম্ভব, তবে মাইক্রোপ্রসেসার এবং মাইক্রোকন্ট্রোলারগুলিতে 'কেবল পঠন মেমরি' অপারেশনের জন্য নয়, যা বাইট ডেটা দ্বারা বাইট অ্যাক্সেস করতে হবে।

আরডুইনো ইউনো বোর্ডে (এটিমেগ 328 পি) এটি বোর্ডে 1KB বা 1024 বাইট EEPROM রয়েছে। প্রতিটি বাইটের স্বতন্ত্রভাবে অ্যাক্সেস করা যায় প্রতিটি বাইটের ঠিকানা 0 থেকে 1023 (এটি মোট 1024) has

ঠিকানা (0-1023) একটি মেমরি অবস্থান যেখানে আমাদের ডেটা সংরক্ষণ করা হবে।

প্রতিটি ঠিকানায় আপনি 8-বিট ডেটা, 0 থেকে 255 পর্যন্ত সংখ্যার অঙ্কগুলি সঞ্চয় করতে পারেন Our আমাদের ডেটা বাইনারি আকারে সংরক্ষণ করা হয়, তাই আমরা যদি 255 নম্বরটি EEPROM তে লিখি তবে এটি একটি ঠিকানায় 11111111 হিসাবে অঙ্কটি সংরক্ষণ করবে এবং যদি আমরা শূন্য সঞ্চয় করি, এটি 00000000 হিসাবে সঞ্চয় করবে।

আপনি যথাযথ প্রোগ্রাম লিখে পাঠ্য, বিশেষ অক্ষর, বর্ণমালা অক্ষর ইত্যাদি সঞ্চয় করতে পারেন store

নির্মাণের বিবরণ এবং কাজের বিষয়ে এখানে আলোচনা করা হয়নি যা এই নিবন্ধটি দীর্ঘায়িত করতে পারে এবং আমরা আপনাকে নিদ্রাহীন করে তুলতে পারি। ইউটিউব বা গুগলের দিকে রওনা করুন, ইইইপিআরএম এর নির্মাণ এবং কাজ সম্পর্কিত আকর্ষণীয় নিবন্ধ / ভিডিও রয়েছে।

EEPROM কে EPROM এর সাথে বিভ্রান্ত করবেন না:

সংক্ষেপে EPROM একটি বৈদ্যুতিন প্রোগ্রামযোগ্য পঠন মেমরি যা অর্থ এটি বৈদ্যুতিকভাবে প্রোগ্রাম করা যায় (স্টোর মেমরি) তবে বৈদ্যুতিকভাবে মোছা যায় না।

এটি স্টোরেজ চিপের উপরে আল্ট্রাভায়োলেট লাইটের উজ্জ্বল চকমক ব্যবহার করে যা সঞ্চিত ডেটা মুছে দেয়। EEPROM EPROM এর প্রতিস্থাপন হিসাবে এসেছিল এবং এখন কোনও ইলেকট্রনিক ডিভাইসে খুব কমই ব্যবহার করা হয়।

EEPROM এর জন্য ফ্ল্যাশ মেমোরিটিকে বিভ্রান্ত করবেন না:

একটি ফ্ল্যাশ মেমরিটি একটি অর্ধপরিবাহী এবং অ-উদ্বায়ী মেমরি যা বৈদ্যুতিকভাবে ক্ষয়যোগ্য এবং বৈদ্যুতিকভাবে প্রোগ্রামযোগ্যও হয়, প্রকৃতপক্ষে ফ্ল্যাশ মেমরিটি EEPROM থেকে উদ্ভূত হয়। তবে ব্লক অনুসারে মেমরি অ্যাক্সেস বা অন্য কথায়, মেমরির উপায় অ্যাক্সেস করা হয় এবং এর নির্মাণ EEPROM থেকে আলাদা করে তোলে।

আরডুইনো ইউনো (এটিএমগা 328 পি মাইক্রোকন্ট্রোলার) প্রোগ্রাম স্টোরেজের জন্য 32KB ফ্ল্যাশ মেমোরি খেলাধুলা করে।

EEPROM এর জীবনকাল:

অন্য যে কোনও বৈদ্যুতিন স্টোরেজ মাধ্যমের মতো, EEPROM এও সীমাবদ্ধ পঠন, লিখন এবং মুছে চক্র রয়েছে। তবে সমস্যাটি হ'ল এটি অন্য যে কোনও ধরণের অর্ধপরিবাহী মেমরির সাথে তুলনা করে সর্বনিম্ন জীবনযাত্রার একটি।

আরডুইনোর EEPROM- এ, আটমেল দাবি করেছে প্রতি কোষে প্রায় 100000 (এক লাখ) লেখার চক্র। আপনার ঘরের তাপমাত্রা যদি EEPROM এর জীবনকাল কম হয়।

দয়া করে নোট করুন যে EEPROM থেকে প্রাপ্ত ডেটা পড়া জীবনকালকে উল্লেখযোগ্যভাবে প্রভাবিত করে না।

বহিরাগত EEPROM আইসি রয়েছে যা 8 কিলোমিটার, 128 কেবি, 256 কেবি ইত্যাদির মেমরির ক্ষমতা সহ স্বাচ্ছন্দ্যে আরডুইনো ইন্টারফেস করা যেতে পারে যার সাথে প্রতি সেলটিতে প্রায় 1 মিলিয়ন লেখার চক্র থাকে।

এটি EEPROM সমাপ্ত করে, এখন আপনি EEPROMs সম্পর্কে যথেষ্ট তাত্ত্বিক জ্ঞান অর্জন করতে পারতেন।

নিম্নলিখিত বিভাগে আমরা শিখব কীভাবে কার্যত অর্ডিনোতে EEPROM পরীক্ষা করতে হয়।

আরডুইনোতে কীভাবে EEPROM পরীক্ষা করবেন

এটি বাস্তবায়নের জন্য, আপনার কেবল একটি ইউএসবি কেবল এবং আরডুইনো ইউনো বোর্ড প্রয়োজন, আপনি যেতে প্রস্তুত।

উপরের ব্যাখ্যা থেকে আমরা বুঝতে পারি যে EEPROM এর ঠিকানা রয়েছে যেখানে আমরা আমাদের ডেটা সঞ্চয় করি। আমরা আরডুইনো ইউনোতে 0 থেকে 1023 টি অবস্থান সঞ্চয় করতে পারি। প্রতিটি অবস্থান 8 বিট বা একটি বাইট সমন্বিত করতে পারেন।

এই উদাহরণে আমরা একটি ঠিকানার মধ্যে ডেটা সংরক্ষণ করতে যাচ্ছি। প্রোগ্রামটির জটিলতা হ্রাস করতে এবং প্রোগ্রামটি যতটা সম্ভব সংক্ষিপ্ত রাখতে আমরা 0 থেকে 9 এর ঠিকানায় সিঙ্গেল ডিজিটের পূর্ণসংখ্যা (0 থেকে 9) সংরক্ষণ করতে যাচ্ছি।

প্রোগ্রাম কোড # 1

এখন, কোডটি আরডুইনোতে আপলোড করুন:
//------------------Program Developed by R.GIRISH-------------------//
#include
int inputAddress = 0
int inputValue = 0
int ReadData = 0
boolean Readadd = true
boolean Readval = true
void setup()
{
Serial.begin(9600)
Serial.println('Enter the address (0 to 9)')
Serial.println('')
while(Readadd)
{
inputAddress = Serial.read()
if(inputAddress > 0)
{
inputAddress = inputAddress - 48
Readadd = false
}
}
Serial.print('You have selected Address: ')
Serial.println(inputAddress)
Serial.println('')
delay(2000)
Serial.println('Enter the value to be stored (0 to 9)')
Serial.println('')
while(Readval)
{
inputValue = Serial.read()
if(inputValue > 0)
{
inputValue = inputValue - 48
Readval = false
}
}
Serial.print('The value you entered is: ')
Serial.println(inputValue)
Serial.println('')
delay(2000)
Serial.print('It will be stored in Address: ')
Serial.println(inputAddress)
Serial.println('')
delay(2000)
Serial.println('Writing on EEPROM.....')
Serial.println('')
EEPROM.write(inputAddress, inputValue)
delay(2000)
Serial.println('Value stored successfully!!!')
Serial.println('')
delay(2000)
Serial.println('Reading from EEPROM....')
delay(2000)
ReadData = EEPROM.read(inputAddress)
Serial.println('')
Serial.print('The value read from Address ')
Serial.print(inputAddress)
Serial.print(' is: ')
Serial.println(ReadData)
Serial.println('')
delay(1000)
Serial.println('Done!!!')
}
void loop()
{
// DO nothing here.
}
//------------------Program Developed by R.GIRISH-------------------//

আউটপুট:

কোডটি আপলোড হয়ে গেলে সিরিয়াল মনিটরটি খুলুন।

এটি আপনাকে 0 থেকে 9. এর মধ্যে প্রবেশের ঠিকানা জিজ্ঞাসা করবে উপরের আউটপুট থেকে, আমি ঠিকানা 3 প্রবেশ করিয়েছি So সুতরাং, আমি লোকেশন (ঠিকানা) 3 তে একটি পূর্ণসংখ্যা মান সংরক্ষণ করব।

এখন, এটি আপনাকে 0 থেকে 9 পর্যন্ত একক অঙ্কের পূর্ণসংখ্যার মান লিখতে অনুরোধ করবে। উপরের আউটপুট থেকে, আমি মান 5 প্রবেশ করিয়েছি।

সুতরাং, এখন 5 মান ঠিকান অবস্থান 3 সংরক্ষণ করা হবে।

একবার আপনি মানটি প্রবেশ করানোর পরে এটি EEPROM এ মান লিখবে।

এটি একটি সাফল্যের বার্তা প্রদর্শন করবে, যার অর্থ মান সঞ্চিত।

কয়েক সেকেন্ড পরে এটি মূল্য পড়বে যা মন্তব্য করা ঠিকানায় সংরক্ষণ করা হবে এবং এটি সিরিয়াল মনিটরে মানটি প্রদর্শন করবে।

উপসংহারে, আমরা আরডুইনোর মাইক্রোকন্ট্রোলারের EEPROM থেকে মানগুলি লিখেছি এবং পড়েছি।

এখন, আমরা পাসওয়ার্ড সংরক্ষণের জন্য EEPROM ব্যবহার করতে যাচ্ছি।

আমরা একটি digit ডিজিটের নম্বর (কম বা বেশি নয়) পাসওয়ার্ড প্রবেশ করবো, এটি different টি পৃথক ঠিকানায় (প্রতিটি অঙ্কের প্রতিটি ঠিকানা) এবং '1' বা '0' সঞ্চয় করার জন্য একটি অতিরিক্ত ঠিকানায় সংরক্ষণ করা হবে।

আপনি একবার পাসওয়ার্ডটি প্রবেশ করার পরে, অতিরিক্ত ঠিকানা '1' মানটি সংরক্ষণ করবে যা ইঙ্গিত করে যে পাসওয়ার্ড সেট হয়ে গেছে এবং প্রোগ্রামটি আপনাকে এলইডি চালু করার জন্য পাসওয়ার্ডটি প্রবেশ করতে বলবে।

অতিরিক্ত ঠিকানা সঞ্চিত মান যদি '0' হয় বা অন্য কোনও মান উপস্থিত থাকে তবে এটি আপনাকে নতুন 6 ডিজিটের পাসওয়ার্ড তৈরি করতে বলবে।

উপরের পদ্ধতি দ্বারা প্রোগ্রামটি সনাক্ত করতে পারে যে আপনি ইতিমধ্যে একটি পাসওয়ার্ড সেট করে রেখেছেন বা একটি নতুন পাসওয়ার্ড তৈরি করতে হবে কিনা।

প্রবেশ করা পাসওয়ার্ডটি যদি পিন # 13 গ্লোতে এলইডি বিল্ডটি সঠিক করে থাকে তবে প্রবেশ করা পাসওয়ার্ডটি ভুল হলে, LED জ্বলে না এবং সিরিয়াল মনিটর আপনাকে অনুরোধ করবে যে আপনার পাসওয়ার্ডটি ভুল।

প্রোগ্রাম কোড # 2

এখন কোড আপলোড করুন:
//------------------Program Developed by R.GIRISH---------------//
#include
int passExistAdd = 200
const int LED = 13
int inputAddress = 0
int word1 = 0
int word2 = 0
int word3 = 0
int word4 = 0
int word5 = 0
int word6 = 0
int wordAddress1 = 0
int wordAddress2 = 1
int wordAddress3 = 2
int wordAddress4 = 3
int wordAddress5 = 4
int wordAddress6 = 5
int passwordExist = 0
boolean ReadVal1 = true
boolean ReadVal2 = true
boolean ReadVal3 = true
boolean ReadVal4 = true
boolean ReadVal5 = true
boolean ReadVal6 = true
int checkWord1 = 0
int checkWord2 = 0
int checkWord3 = 0
int checkWord4 = 0
int checkWord5 = 0
int checkWord6 = 0
void setup()
{
Serial.begin(9600)
pinMode(LED, OUTPUT)
digitalWrite(LED, LOW)
passwordExist = EEPROM.read(passExistAdd)
if(passwordExist != 1)
{
Serial.println('Enter a new 6 number password:')
while(ReadVal1)
{
word1 = Serial.read()
if(word1 > 0)
{
word1 = word1 - 48
ReadVal1 = false
}
}
while(ReadVal2)
{
word2 = Serial.read()
if(word2 > 0)
{
word2 = word2 - 48
ReadVal2 = false
}
}
while(ReadVal3)
{
word3 = Serial.read()
if(word3 > 0)
{
word3 = word3 - 48
ReadVal3 = false
}
}
while(ReadVal4)
{
word4 = Serial.read()
if(word4 > 0)
{
word4 = word4 - 48
ReadVal4 = false
}
}
while(ReadVal5)
{
word5 = Serial.read()
if(word5 > 0)
{
word5 = word5 - 48
ReadVal5 = false
}
}
while(ReadVal6)
{
word6 = Serial.read()
if(word6 > 0)
{
word6 = word6 - 48
ReadVal6 = false
}
}
Serial.println('')
Serial.print(word1)
Serial.print(word2)
Serial.print(word3)
Serial.print(word4)
Serial.print(word5)
Serial.print(word6)
EEPROM.write(wordAddress1, word1)
EEPROM.write(wordAddress2, word2)
EEPROM.write(wordAddress3, word3)
EEPROM.write(wordAddress4, word4)
EEPROM.write(wordAddress5, word5)
EEPROM.write(wordAddress6, word6)
EEPROM.write(passExistAdd,1)
Serial.println(' Password saved Sucessfully!!!')
Serial.println('')
Serial.println('Press Reset Button.')
while(true){}
}
if(passwordExist == 1)
{
Serial.println('')
Serial.println('Please enter the 6 digit number password:')
while(ReadVal1)
{
word1 = Serial.read()
if(word1 > 0)
{
word1 = word1 - 48
ReadVal1 = false
}
}
while(ReadVal2)
{
word2 = Serial.read()
if(word2 > 0)
{
word2 = word2 - 48
ReadVal2 = false
}
}
while(ReadVal3)
{
word3 = Serial.read()
if(word3 > 0)
{
word3 = word3 - 48
ReadVal3 = false
}
}
while(ReadVal4)
{
word4 = Serial.read()
if(word4 > 0)
{
word4 = word4 - 48
ReadVal4 = false
}
}
while(ReadVal5)
{
word5 = Serial.read()
if(word5 > 0)
{
word5 = word5 - 48
ReadVal5 = false
}
}
while(ReadVal6)
{
word6 = Serial.read()
if(word6 > 0)
{
word6 = word6 - 48
ReadVal6 = false
}
}
checkWord1 = EEPROM.read(wordAddress1)
if(checkWord1 != word1)
{
Serial.println('')
Serial.println('Wrong Password!!!')
Serial.println('')
Serial.println('Press Reset Button.')
while(true){}
}
checkWord2 = EEPROM.read(wordAddress2)
if(checkWord2 != word2)
{
Serial.println('')
Serial.println('Wrong Password!!!')
Serial.println('')
Serial.println('Press Reset Button.')
while(true){}
}
checkWord3 = EEPROM.read(wordAddress3)
if(checkWord3 != word3)
{
Serial.println('')
Serial.println('Wrong Password!!!')
Serial.println('')
Serial.println('Press Reset Button.')
while(true){}
}
checkWord4 = EEPROM.read(wordAddress4)
if(checkWord4 != word4)
{
Serial.println('')
Serial.println('Wrong Password!!!')
Serial.println('')
Serial.println('Press Reset Button.')
while(true){}
}
checkWord5 = EEPROM.read(wordAddress5)
if(checkWord5 != word5)
{
Serial.println('')
Serial.println('Wrong Password!!!')
Serial.println('')
Serial.println('Press Reset Button.')
while(true){}
}
checkWord6 = EEPROM.read(wordAddress6)
if(checkWord6 != word6)
{
Serial.println('')
Serial.println('Wrong Password!!!')
Serial.println('')
Serial.println('Press Reset Button.')
while(true){}
}
digitalWrite(LED, HIGH)
Serial.println('')
Serial.println('LED is ON')
Serial.println('')
Serial.println('Press Reset Button.')
}
}
void loop()
{
}
//------------------Program Developed by R.GIRISH---------------//

আউটপুট:

সিরিয়াল মনিটরটি খুলুন এটি আপনাকে 6 ডিজিটের নম্বর পাসওয়ার্ড তৈরি করতে অনুরোধ করবে।

যে কোনও 6 ডিজিটের পাসওয়ার্ড লিখুন এবং এটি নোট করুন এবং এন্টার টিপুন। এখন পাসওয়ার্ড সংরক্ষণ করা হয়েছে।

আপনি হয় রিসেট বোতাম টিপুন বা পিসি থেকে ইউএসবি কেবলটি সংযোগ বিচ্ছিন্ন করতে পারেন, যা আরডুইনো বোর্ডের সরবরাহকে বাধা দেয়।

এখন, ইউএসবি কেবলটি পুনরায় সংযুক্ত করুন, ক্রমিক মনিটরের খুলুন, যা আপনাকে সংরক্ষণ করা 6 ডিজিটের পাসওয়ার্ড দেওয়ার জন্য অনুরোধ করবে।

সঠিক পাসওয়ার্ড প্রবেশ করান LED জ্বলে উঠবে।

আপনি যদি পাসওয়ার্ড পরিবর্তন করতে চান তবে কোড থেকে অঙ্কটি পরিবর্তন করুন:

int passExistAdd = 200

উপরের লাইনটি অতিরিক্ত ঠিকানা যা আমরা আগে আলোচনা করেছি। 6 থেকে 1023 পর্যন্ত যে কোনও জায়গায় পরিবর্তন করুন 0 0 থেকে 5 টি ঠিকানা 6 ডিজিটের পাসওয়ার্ড সংরক্ষণের জন্য সংরক্ষিত।

এই অতিরিক্ত ঠিকানা পরিবর্তন করা প্রোগ্রামটিকে বোকা বানাবে যে পাসওয়ার্ডটি এখনও তৈরি হয়নি এবং আপনাকে নতুন 6 ডিজিটের পাসওয়ার্ড তৈরি করতে অনুরোধ করবে।

আরডুইনো টিউটোরিয়ালে এই EEPROM সম্পর্কিত আপনার যদি কোনও প্রশ্ন থাকে তবে মন্তব্যগুলিতে প্রকাশ করুন, আপনি একটি দ্রুত উত্তর পেতে পারেন।




পূর্ববর্তী: আরডুইনো ব্যবহার করে ওভার কারেন্ট কাট-অফ পাওয়ার সাপ্লাই পরবর্তী: ডিটিএমএফ মডিউলটি ব্যবহার করে মোবাইল ফোন নিয়ন্ত্রিত রোবট গাড়ি