ارڈینو میں EEPROM کا تعارف

مسائل کو ختم کرنے کے لئے ہمارے آلے کو آزمائیں





اس پوسٹ میں ہم یہ سمجھنے جارہے ہیں کہ EEPROM کیا ہے ، EEPROM میں بلٹ پر ڈیٹا کیسے اسٹور کیا جاتا ہے ارڈینو بورڈ مائکروکانٹرولر اور عملی طور پر یہ بھی جانچیں کہ EEPROM پر ڈیٹا کو کس طرح لکھنا اور پڑھنا ہے۔

ارڈینو میں EEPROM کا تعارف

ایپرووم کیوں؟

اس سے پہلے کہ ہم پوچھیں EEPROM کیا ہے؟ یہ جاننا بہت ضروری ہے کہ EEPROM کو پہلے جگہ اسٹوریج کے لئے کیوں استعمال کیا جاتا ہے۔ تاکہ ہم EEPROMs کے بارے میں واضح نظریہ حاصل کریں۔



آج کل بہت سارے اسٹوریج ڈیوائسز دستیاب ہیں ، جن میں مقناطیسی اسٹوریج آلات جیسے کمپیوٹر ہارڈ ڈسک ، پرانی اسکول کیسٹ ٹیپ ریکارڈرز ، آپٹیکل اسٹوریج میڈیم جیسے سی ڈیز ، ڈی وی ڈی ، بلو رے ڈسک اور ٹھوس ریاست میموری جیسے ایس ایس ڈی (سالڈ اسٹیٹ ڈرائیو) شامل ہیں۔ کمپیوٹر اور میموری کارڈ وغیرہ۔

یہ بڑے پیمانے پر اسٹوریج ڈیوائس ہیں جو ڈیٹا جیسے میوزک ، ویڈیوز ، دستاویزات وغیرہ کو ذخیرہ کرسکتے ہیں جتنے کم کلو بائٹس سے لے کر ملٹی ٹیرابائٹس تک۔ یہ غیر مستحکم میموری ہیں جس کا مطلب ہے ، اسٹوریج میڈیم پر بجلی کاٹ جانے کے بعد بھی اعداد و شمار کو برقرار رکھا جاسکتا ہے۔



وہ آلہ جو کان سنجانے والی موسیقی فراہم کرتا ہے یا آنکھوں میں پاپپنگ ویڈیوز جیسے کمپیوٹر یا اسمارٹ فون میں کچھ اہم ڈیٹا جیسے کنفگریشن ڈیٹا ، بوٹ ڈیٹا ، پاس ورڈز ، بائیو میٹرک ڈیٹا ، لاگ ان ڈیٹا وغیرہ اسٹور کیا جاتا ہے۔

یہ مذکورہ ڈیٹا سیکیورٹی وجوہات کی بناء پر بڑے پیمانے پر اسٹوریج ڈیوائسز میں محفوظ نہیں کیا جاسکتا ہے اور یہ اعداد و شمار صارفین کو غیر ارادتاified تبدیل کیا جاسکتا ہے جس سے اس آلے میں خرابی پیدا ہوسکتی ہے۔

یہ اعداد و شمار چند میگا بائٹس کے لئے صرف کچھ بائٹس لیتا ہے ، جو روایتی اسٹوریج ڈیوائس جیسے مقناطیسی یا آپٹیکل میڈیم کو پروسیسر چپس سے جوڑتا ہے ، وہ معاشی اور جسمانی طور پر ممکن نہیں ہے۔

لہذا ، یہ اہم ڈیٹا خود پروسیسنگ چپس میں محفوظ ہیں۔

ارڈینو کمپیوٹر یا اسمارٹ فون سے مختلف نہیں ہے۔ بہت سارے حالات موجود ہیں جہاں ہمیں کچھ نازک اعداد و شمار کو ذخیرہ کرنے کی ضرورت ہے جو بجلی کے منقطع ہونے کے بعد بھی مٹ نہ جائیں ، مثال کے طور پر سینسر کا ڈیٹا۔

ابھی تک ، آپ کو اندازہ ہوگیا ہوگا کہ ہمیں مائکرو پروسیسرز اور مائکروکنٹرولر چپس پر ایپرووم کی ضرورت کیوں ہے۔

ایپرووم کیا ہے؟

EEPROM کا مطلب ہے برقی طور پر ایراسیبل پروگرام لائق صرف پڑھنے والی میموری۔ یہ ایک غیر مستحکم میموری بھی ہے جو پڑھ لکھ سکتی ہے بائٹ وار

بائٹ لیول پڑھنا اور لکھنا اس کو دوسرے سیمیکمڈکٹر یادوں سے مختلف بناتا ہے۔ مثال کے طور پر فلیش میموری: بلاک وار انداز میں ڈیٹا کو پڑھنا ، لکھنا اور مٹانا۔

بلاک کچھ سیکڑوں سے ہزاروں بٹس ہوسکتا ہے ، جو بڑے پیمانے پر ذخیرہ کرنے کے لئے ممکن ہے ، لیکن مائکرو پروسیسرز اور مائکروکنٹرولروں میں 'صرف پڑھنے والے میموری' کے کاموں کے لئے نہیں ، جس میں بائٹ ڈیٹا تک بائٹ تک رسائی حاصل کرنے کی ضرورت ہے۔

ارڈینوو یونو بورڈ (اے ٹی میگا 328 پی) پر اس میں بورڈ 1KB یا EEPROM کے 1024 بائٹ ہیں۔ ہر بائٹ تک انفرادی طور پر رسائی حاصل کی جاسکتی ہے ہر بائٹ کا پتہ 0 سے 1023 تک ہوتا ہے (یہ کل 1024 ہے)۔

ایڈریس (0-1023) میموری کا مقام ہے جہاں ہمارا ڈیٹا اسٹور کیا جائے گا۔

ہر پتے پر آپ 8 بٹ ڈیٹا ، 0 سے 255 تک کے عددی ہندسوں کو اسٹور کرسکتے ہیں۔ ہمارا ڈیٹا بائنری شکل میں اسٹور کیا جاتا ہے ، لہذا اگر ہم 255 نمبر EEPROM میں لکھتے ہیں تو یہ ہندسے کو 11111111 کے بطور ایڈریس میں اسٹور کرے گا اور اگر ہم صفر اسٹور کرتے ہیں تو ، یہ 00000000 کے طور پر اسٹور کرے گا۔

آپ مناسب پروگرام لکھ کر متن ، خصوصی حرف ، حرفی شماری وغیرہ بھی اسٹور کرسکتے ہیں۔

یہاں تعمیراتی تفصیلات اور کام کرنے پر بحث نہیں کی جاسکتی ہے جس سے یہ مضمون لمبا ہوسکتا ہے اور ہم آپ کو نیند سے دوچار کرسکتے ہیں۔ یوٹیوب یا گوگل کی سمت ، ای ای ایپورم کی تعمیراتی اور کام کرنے سے متعلق دلچسپ مضمون / ویڈیوز موجود ہیں۔

EEPROM کو EPROM کے ساتھ الجھا نہ کریں:

مختصر طور پر EPROM ایک برقی طور پر پروگرام کی قابلِ مطالعہ صرف میموری ہے جس کا مطلب ہے کہ یہ برقی پروگرام (اسٹور میموری) کو بنایا جاسکتا ہے ، لیکن اسے برقی طور پر مٹایا نہیں جاسکتا۔

یہ اسٹوریج چپ کے اوپر الٹرا وایلیٹ لائٹ کی روشن چمک استعمال کرتا ہے جو ذخیرہ شدہ ڈیٹا کو مٹاتا ہے۔ EEPROM EPROM کے متبادل کے طور پر آیا تھا اور اب کسی الیکٹرانک آلات میں مشکل سے استعمال ہوتا ہے۔

EEPROM کے لئے فلیش میموری کو الجھا نہ کریں:

ایک فلیش میموری ایک سیمک کنڈکٹر اور غیر مستحکم میموری ہے جو برقی طور پر صاف کرنے اور بجلی سے چلنے کے قابل بھی ہے ، حقیقت میں فلیش میموری EEPROM سے ماخوذ ہے۔ لیکن بلاک وار میموری تک رسائی یا دوسرے لفظوں میں ، میموری کا طریقہ تک رسائی حاصل ہے اور اس کی تعمیر ای ای پی آر ایم سے مختلف ہے۔

ارڈینوو یونو (اے ٹی میگا 328 پی مائکروکنٹرولر) پروگرام اسٹوریج کے ل 32 32KB فلیش میموری بھی کھیلتا ہے۔

EEPROM کی عمر:

کسی بھی دوسرے الیکٹرانک اسٹوریج میڈیم کی طرح ، EEPROM میں بھی پڑھنے لکھنے ، لکھنے ، صاف کرنے کے چکروں کو ختم کرنا ہوتا ہے۔ لیکن مسئلہ یہ ہے کہ اس میں سیمک کنڈکٹر میموری کی کسی بھی طرح کی موازنہ کم سے کم عمر میں سے ایک ہے۔

ارڈینو کے ایپرووم پر ، اٹمل نے فی سیل تقریبا 100000 (ایک لاکھ) تحریری سائیکل کا دعوی کیا۔ اگر آپ کے کمرے کا درجہ حرارت EEPROM کی عمر زیادہ کم ہو۔

براہ کرم نوٹ کریں کہ EEPROM کے اعداد و شمار کو پڑھنے سے عمر بھر میں کوئی خاص اثر نہیں پڑتا ہے۔

بیرونی EEPROM ICs ہیں جن میں 8 KB ، 128KB ، 256 KB وغیرہ کی میموری کی گنجائش کے ساتھ آسانی سے Ardino انٹرفیس کیا جاسکتا ہے جس میں ہر سیل 1 کلو لکھنے کے دورانیے کی عمر ہوتی ہے۔

یہ EEPROM کو ختم کرتا ہے ، اب آپ EEPROMs کے بارے میں کافی نظریاتی معلومات حاصل کرلیتے۔

درج ذیل سیکشن میں ہم سیکھیں گے کہ عملی طور پر اڈوینو پر EEPROM کو کس طرح سے جانچنا ہے۔

ایردوینو میں EEPROM کی جانچ کیسے کریں

اس کو عملی جامہ پہنانے کے ل all ، آپ کو صرف ایک USB کیبل اور اردوینو یونو بورڈ کی ضرورت ہے ، آپ جانے کے لئے تیار ہیں۔

مذکورہ بالا وضاحتوں سے ہم سمجھ گئے کہ EEPROM کا پتہ ہے جہاں ہم اپنا ڈیٹا اسٹور کرتے ہیں۔ ہم آرڈینو اونو میں 0 سے 1023 مقامات محفوظ کرسکتے ہیں۔ ہر مقام پر 8 بٹس یا ایک بائٹ کی جگہ ہوسکتی ہے۔

اس مثال میں ہم ایک پتے میں ڈیٹا اسٹور کرنے جارہے ہیں۔ پروگرام کی پیچیدگی کو کم کرنے اور پروگرام کو ممکنہ حد تک مختصر رکھنے کے ل we ، ہم ایک پتے پر 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 داخل کیا ہے۔ لہذا ، میں اس جگہ (ایڈریس) 3 میں عددی قیمت کو محفوظ کروں گا۔

اب ، یہ آپ کو 0 سے 9 تک کی ایک عددی عددی قیمت داخل کرنے کا اشارہ کرے گا۔ مندرجہ بالا آؤٹ پٹ سے ، میں نے قیمت 5 درج کی ہے۔

لہذا ، اب قیمت 5 ایڈریس کے مقام 3 میں محفوظ ہوجائے گی۔

ایک بار جب آپ قدر داخل کریں گے ، تو یہ EEPROM پر قیمت لکھ دے گی۔

یہ کامیابی کا پیغام دکھائے گا ، جس کا مطلب ہے کہ قیمت محفوظ ہے۔

کچھ سیکنڈ کے بعد یہ وہ قیمت پڑھ لے گی جو تبصرہ شدہ پتے پر محفوظ کی جاتی ہے اور اس سے سیریل مانیٹر پر قدر ظاہر ہوگی۔

آخر میں ، ہم نے ارڈوینو کے مائکروقابو کنٹرولر کے EEPROM سے اقدار لکھیں اور پڑھیں۔

اب ، ہم پاس ورڈ اسٹور کرنے کیلئے EEPROM استعمال کرنے جارہے ہیں۔

ہم 6 عددی نمبر (کم یا زیادہ نہیں) پاس ورڈ درج کریں گے ، یہ 6 مختلف پتے (ہر ہندسے کے لئے ہر پتہ) اور '1' یا '0' کو ذخیرہ کرنے کے ل one ایک اضافی پتہ میں اسٹور کیا جائے گا۔

ایک بار جب آپ پاس ورڈ داخل کرتے ہیں تو ، اضافی پتہ '1' کی قیمت کو محفوظ کرتا ہے جس میں یہ اشارہ ہوتا ہے کہ پاس ورڈ سیٹ ہے اور پروگرام آپ کو ایل ای ڈی کو آن کرنے کے ل the پاس ورڈ داخل کرنے کے لئے کہے گا۔

اگر پتہ کی ذخیرہ شدہ اضافی قیمت '0' ہے یا کوئی دوسری قیمت موجود ہے تو ، یہ آپ کو 6 ہندسوں کا نیا پاس ورڈ بنانے کے لئے کہے گا۔

مذکورہ بالا طریقہ سے ، پروگرام یہ شناخت کرسکتا ہے کہ آیا آپ نے پہلے ہی پاس ورڈ ترتیب دیا ہے یا نیا پاس ورڈ بنانے کی ضرورت ہے۔

اگر درج کردہ پاس ورڈ کو درست کریں تو ایل ای ڈی میں پن # 13 گلوز پر تعمیر کرنا درست ہے ، اگر درج کردہ پاس ورڈ غلط ہے تو ، ایل ای ڈی چمک نہیں سکے گی اور سیریل مانیٹر اشارہ کرے گا کہ آپ کا پاس ورڈ غلط ہے۔

پروگرام کا کوڈ # 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 ہندسوں کا پاس ورڈ درج کریں اور اسے نوٹ کریں اور انٹر دبائیں۔ اب پاس ورڈ محفوظ ہوچکا ہے۔

آپ یا تو ری سیٹ کے بٹن کو دبائیں یا پی سی سے USB کیبل منقطع کر سکتے ہیں ، جس سے آرڈینو بورڈ کو فراہمی میں خلل پڑتا ہے۔

اب ، USB کیبل کو دوبارہ مربوط کریں ، سیریل مانیٹر کھولیں ، جو آپ کو 6 عددی پاس ورڈ داخل کرنے کا اشارہ کرے گا۔

درست پاس ورڈ درج کریں ایل ای ڈی چمکے گا۔

اگر آپ پاس ورڈ تبدیل کرنا چاہتے ہیں تو کوڈ سے ہندسے کو تبدیل کریں:

int passExistAdd = 200

مذکورہ بالا اضافی پتہ ہے جس پر ہم نے پہلے تبادلہ خیال کیا ہے۔ 6 سے 1023 تک کہیں بھی تبدیل کریں۔ 0 سے 5 پتے 6 ہندسوں کا پاس ورڈ اسٹور کرنے کے لئے محفوظ ہیں۔

اس اضافی پتے کو تبدیل کرنے سے یہ پروگرام بے وقوف ہوجائے گا کہ ابھی تک پاس ورڈ نہیں بنایا گیا ہے اور آپ کو 6 ہندسوں کا نیا پاس ورڈ بنانے کا اشارہ کرے گا۔

اگر آپ کو ارڈینو ٹیوٹوریل میں اس EEPROM کے بارے میں کوئی سوالات ہیں تو ، براہ کرم تبصرے میں اظہار کریں ، آپ کو فوری جواب مل سکتا ہے۔




پچھلا: ارڈینو کا استعمال کرتے ہوئے موجودہ کٹ آف بجلی سے زیادہ فراہمی اگلا: ڈی ٹی ایم ایف ماڈیول کا استعمال کرتے ہوئے موبائل فون کنٹرول روبوٹ کار