استقاده از حافظه در آردوینو

1 سال قبل
182 بازدید

0

سلام یک پروژه خانه هوشمند داشتیم که با استفاده از ماژول سیمکارت و آردینو یونو و با پیامک رله را خاموش روشن کنیم، تا این بخش را انجام دادم حالا بخش جدیدی اضافه شده که نتوانستم انجام بدم، در این مرحله استاد خواسته شماره هایی که در نرم افزار برای مجوز فعال سازی و غیر فعال سازی رله وارد شده توسط یک شماره ادمین قابل تغییر و حذف و اضافه باشه و خود ادمین هم با رعایت امنیت و شرایطی از طریق پیامک قابل تغییر باشه، لطفا راهنمایی بفرمایید برای این منظور باید چه کار کنم؟

07 مرداد 02 در 04:17
راحله
1

افزودن دیدگاه

1 پاسخ ثبت شده است
0

با سلام

در زمینه استفاده از حافظه در برد های آردوینو شما یک حافظه  EEPROM دارید که تعداد کارکتر محدودی را میتواند در خود ذخیره کند و از لایبراری با همین نام می توانید به آن دسترسی پیدا کنید.

در صورتی که میکرو خود را به ESP تغییر بدهید بسته به اینکه از ESP32 یا ESP8266 استفاده میکنید از لایبراری های SPIFFS یا LittleFS میتوانید استفاده کنید.

البته تمامی این موارد از حافظه داخلی خود میکرو برای این منظور استفاده میکنند، شما میتوانید از حافظه های خارجی مانند EEPROM یا SPIFLASH یا SDCard برای این منظور استفاده کنید.

نحوه نوشتن و خواندن دیتا نیز بسته به روش انتخابی و جوری که میخواهید دیتا را سیو کنید متفاوت می شود.

البته می توانید از دفترچه مخاطبین موجود در خود ماژول سیم کارت هم استفاده کنید که البته کار بسیار سخت و دشواری می باشد.

ویرایش اول:

در آموزش ها به صورت کامل توضیح داده است به چه صورت از حافظه استفاده کنید.

از این آموزش نیز می توانید استفاده کنید. EEPROM آردوینو: آموزش استفاده و نحوه کار با آن [با مثال کاربردی]

 

ویرایش دوم:

خوب بذارید یک راه ساده پیشنهاد بدم بهتون.

یکی این هست که دقت کنید توی هر حافظه شما میتونید از 0 تا 255 عدد بدهید.

شما رقم های تلفن مورد نظر را به صورت 2 رقم 2 رقم در هر حافظه ذخیره کنید این طوری رقم های 00 الی 99 رو میتونید ذخیره کنید و موقع واکشی همین عدد هارو کنار هم بذارید.

روش دیگر این میباشد که با دستور 

EEPROM.update(address, val);//address = 0 و val = شماره تلفن

شماره مورد نظر را در حافظه بریزید.

سپس با دستور 

 int data = EEPROM.read(address);

که میخواهید شماره را بخوانید متوجه می شوید که رقم ها کمتر می باشد.

دلیل این موضوع این می باشد که شماره اولیه شما که در مبنای دسیمال می باشد به مبنای HEX تغییر کرده است و از طرفی فقط در آدرس 0 نمی باشد و باید آدرس های 1 و 2 و.. را نیز بخوانید (تا جایی که داده ای که میخوانید 0 بشود

سپس با دستور های انتقال بیت ها ضریب دار عدد هارو انتقال بدهید که برای مورد شما از دستور 

data  << 8

برای انتقال 8 بیت داده به سمت راست استفاده میکنید.

به این صورت کل داده های شما در یک مقدار ایجاد می شود

مشابه دستور کلی زیر (درصورت نیاز تکرار کنید و بیشتر نیز انتقال بدهید)

 int data0 = EEPROM.read(0);
 int data1 = EEPROM.read(1);
 int data2 = EEPROM.read(2);
 int value = data2 << 16 | data1 << 8 | data0;

در انتها مقدار کلی را به صورت دسیمال نمایش بدهید و مشاهده میکنید که عدد شما با شماره مورد نظر یکی شده است.

 

امیدوارم کمک کلی به شما کرده باشم

07 مرداد 02 در 04:26
محمد دمیرچی
4240

باید از آردینو یونو استفاده کنیم و امکان حذف و اضافه و ویرایش حداقل ۴ شماره تلفن از طریق پیامک باشد. اگر از حافظه خود آردینو استفاده کنم ممکن است به خاطر پر شدن حافظه برنامه و سایر دستورات دوار مشکل شود یا هنگ کند؟ روش‌کار هم همانطور که عرض کردم ویرایش ۴ شماره از طریق ارسال پیامک است  – راحله 02-05-07 در 04:44

این حافظه با حافظه برنامه جدا می باشد و ربطی هم دیگر ندارند. و داخل این حافظه شماره های بیشتر از 4 عدد را میتوانید ذخیره کنید.  – محمد دمیرچی 02-05-07 در 06:07

ببخشید من نتونستم برنامه مربوط به این موضوع رو بنویسم، میشه راهنمایی کنید از چه خط دستوراتی باید استفاده کنم  – راحله 02-05-08 در 12:34

پاسخ ویرایش شد  – محمد دمیرچی 02-05-09 در 12:57

پاسخ ویرایش شد  – محمد دمیرچی 02-05-14 در 12:18

سپاس، نمیشه به صورت رشته یا کاراکتر در حافظه ذخیره کرد و خواند؟ چون این روشی که فرمودید خیلی برنامه رو زیاد میکنهاگر امکان ذخیره به صورت رشته یا کاراکتر هست بفرمایید ممنون میشم  – راحله 02-05-14 در 12:29

خیر، تمامی حافظه ها از دیتای HEX استفاده میکنند و کارکتر ها را نیز به HEX تبدیل کرده و ذخیره میکند. این بیس تمام تکنولوژی کامپیوتری میباشد. رشته نیز در نهایت همین مراحل را میرود تا ذخیره سازی شود و فقط شما مشاهده نمیکنید.  – محمد دمیرچی 02-05-15 در 07:26

سلام. ببخشید مهندس دمیرچی متاسفانه نمیتونم برنامه ای بنویسم که باش شماره تلفن همراه را در حافظه آردینو ذخیره کنم، مراحلی که فرمودید را هم انجام دادم اما خروجی درستی نگرفتم! اگر امکان داره بیشتر کمکم کنید. ممنون از محبت و توجه همیشگی شما  – راحله 02-07-24 در 08:11

سلام، پیشنهاد بنده استفاده از ESP32 هست. بسیار راحت تر میتوانید با آن کد نویسی کنید و اطلاعات را در حافظه ذخیره کنید.  – محمد دمیرچی 02-07-26 در 05:02

سلام. آخه این مربوط به کلاسه و استاد گفته با استفاده از آردینو و ماژول سیمکارت از طریق پیامک شماره ها را در حافظه آردینو ذخیره کنید به صورتی که شماره ای که اولین پیامک رو میده ادمین بشه و بتونه بقیه شماره ها رو اضافه یا حذف کنه یا تغییر بده، درس حافظه را هم داده و الان به راحتی باش کار میکنم اما اینکار رو نمیتونم انجام بدم. ممنون میشم کمکم کنید  – راحله 02-07-26 در 06:35

اگر می توانید با حافظه کار کنید فقط بحث ترتیب ذخیره کردن می باشد، در فانکشن شروع برنامه مقدار ها را از حافظه بخوانید و بریزید در متغییر های برنامه خود، در زمانی که دستور سیو یا تغییر می آید مقدار ها را در حافظه آپدیت کنید و دستور ریست آردوینو را بفرستید تا دوباره بوت بشود و با تغییرات جدید شروع به کار کند ، البته می توانید از PhoneBook خود ماژول سیم کارت نیز استفاده کنید  – محمد دمیرچی 02-07-26 در 10:27

دقیقا همین بحث ذخیره به ترتیب عدد های شماره تلفن و خواندنشون رو نمیتونم انحام بدم که یرشماره رو پیامک بزنم و در حافظه ذخیره بشه و دقیقا بتونم همون شاره تلفن رو از حافظه بخونم در بخشهای دیگر برنامه استفادهکنم استفاده کند  – راحله 02-07-26 در 11:06

لطف کنید همین موضوع را به عنوان یک سؤال جدید بپرسید و بخش ذخیره‌سازی که نوشته اید را نیز پیوست کنید تا بررسی بشود کجای کار را اشتباه کرده اید.  – محمد دمیرچی 02-07-29 در 05:57

افزودن دیدگاه


انجمن کافه‌ربات © 1400