آموزش آردوینوتکنولوژی

ذخیره اطلاعات در کارت حافظه SD با آردوینو (+اکسل)

ذخیره سازی داده ها یکی از مهمترین بخش های هر پروژه است. روش های مختلفی برای ذخیره داده ها با توجه به نوع و اندازه داده ها وجود دارد. کارت‌های SD و micro SD یکی از کاربردی‌ترین کارت‌ها در میان فضا های ذخیره‌سازی‌ها هستند که در دستگاه‌هایی مانند تلفن همراه، مینی کامپیوتر و … استفاده می‌شوند.

در این آموزش، نحوه استفاده از کارت های SD و micro SD با آردوینو را خواهید آموخت.

در پایان به عنوان یک پروژه ساده دمای محیط را اندازه گیری کرده و روی کارت SD ذخیره می کنید.

آنچه شما یاد خواهید گرفت:

  • نحوه استفاده از کارت حافظه SD و micro SD
  • نوشتن اطلاعات روی کارت SD
  • خواندن اطلاعات از کارت SD

ماژول کارت SD و Micro SD

ماژول کارت SD و Micro SD

ماژول های کارت حافظه SD و micro SD به شما این امکان را می دهند که با کارت حافظه ارتباط برقرار کرده و اطلاعات روی آنها را بنویسید یا بخوانید. اتصال ماژول کارت SD به آردوینو از طریق پروتکل SPI است.

برای استفاده از این ماژول ها با آردوینو به کتابخانه SD نیاز دارید. این کتابخانه به صورت پیش فرض بر روی نرم افزار آردوینو نصب شده است.

توجه کنید: این ماژول ها نمی توانند کارت های حافظه با ظرفیت بالا را کنترل کنند. معمولاً حداکثر ظرفیت قابل شناسایی این ماژول ها برای کارت های SD برابر 2 گیگابایت و برای کارت های micro SD 16 گیگابایت است.

پین های ماژول خواننده کارت SD
پین های ماژول خواننده کارت SD

دستورات مهم کتابخانه ماژول SD

توضیح مختصری از دستورات کاربردی کتابخانه SD در زیر ارائه شده است:

  • SD.begin(sspin)  = شروع کار با ماژول کارت SD است. در پرانتز شماره پایه SS را وارد کنید.
  • SD.exists(filename) = بررسی میکند فایل مورد نظر در کارت حافظه موجود است یا خیر
  • SD.open(filepath,mode) = فایل را در کارت SD باز میکند و در حالت خواندن یا نوشتن قرار میدهد.
  • file.close() = فایل را میبندد و موارد درون آن را ذخیره میکند. (file نام فایل مورد نظر شما است)
  • SD.remove(filename) = فایل داده شده را از حافظه پاک میکند.
  • SD.mkdir(name) = یک پوشه در کارت حافظه SD ایجاد میکند.
  • SD.rmdir(name) = پوشه را در کارت حافظه SD حذف میکند.
  • file.name() = نام فایل را برمیگرداند. (file نام فایل مورد نظر شما است)
  • file.print(data) = داده های شما را در فایل مورد نظر قرار میدهد.
  • file.println(data) = داده های شما را همراه با خط جدید (new line) در فایل مورد نظر قرار میدهد.
  • file.read() = فایل مورد نظر را میخواند.
  • file.available() = بررسی میکند آیا در فایل چیزی موجود است یا خیر

دقت کنید در متود ها کلمه file که در ابتدا نوشته شده است نام فایل مورد نظر شما است. این کتابخانه دستورات زیادی دارد که مهم ترین های آن ها را در اینجا بررسی کردیم

مطلب پیشنهادی:  آموزش کنترل چند سروو موتور با آردوینو

اتصال ماژول کارت حافظه SD به آردوینو

نکته: ماژول استفاده شده در این آموزش، ماژول micro SD است، اما برای ماژول های SD نیز می توانید از کد و آموزش استفاده کنید.

استفاده از این ماژول بسیار ساده است و نحوه سیم کشی و اتصال آن به آردوینو به شرح زیر است:

اتصال ماژول کارت حافظه SD به آردوینو

کد نوشتن اطلاعات روی کارت SD با آردوینو

کد زیر برای نوشتن داده ها روی کارت حافظه SD با برد آردوینو استفاده میشود. توضیحات خط به خط قرار داده شده است.

#include <SPI.h>
#include <SD.h>
File myFile;
void setup() {
// آغاز ارتباط سریال
Serial.begin(9600);
while (!Serial) {
; // صبر برای برقراری ارتباط سریال
}
Serial.print("Initializing SD card...");
if (!SD.begin(10)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
// باز کردن فایل
myFile = SD.open("test.txt", FILE_WRITE);
// اگر فایل باز شده است، مواردی را در آن مینویسیم.
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.println("This is a test file :)");
myFile.println("testing 1, 2, 3.");
for (int i = 0; i < 20; i++) {
myFile.println(i);
}
// بستن فایل
myFile.close();
Serial.println("done.");
} else {
// اگر فایل باز نشده بود این ارور نمایش داده شود
Serial.println("error opening test.txt");
}
}
void loop() {
// چیزی به صورت متناوب اجرا نمیکنیم
}

نتیجه اجرای کد بالا، ایجاد یک فایل txt با محتوای زیر است.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

کد نوشتن اطلاعات روی کارت SD با آردوینو

کد آردوینو برای خواندن داده های کارت حافظه SD

#include <SPI.h>
#include <SD.h>
File myFile;
void setup() {
// آغاز ارتباط سریال
Serial.begin(9600);
while (!Serial) {
; // صبر برای برقراری ارتباط سریال
}
Serial.print("Initializing SD card...");
if (!SD.begin(10)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
// باز کردن فایل برای خواندن
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
// خواندن داده های موجود در فایل
while (myFile.available()) {
Serial.write(myFile.read());
}
// بستن فایل
myFile.close();
} else {
// اگر فایل باز نشده است ارور چاپ شود
Serial.println("error opening test.txt");
}
}
void loop() {
// هیچ چیز را به صورت متناوب اجرا نمیکنیم
}

نتیجه اجرای کد بالا:

کد آردوینو برای خواندن داده های کارت حافظه SD

ذخیره دما روی SD همراه با ساعت

شما میتوانید از ماژول RTC DS3231 برای اضافه کردن قابلیت زمان و تاریخ به کد خود اضافه کنید. ما در این پروژه همراه با ذخیره دما، ساعت را نیز ذخیره میکنیم. پیشنهاد میکنم مقاله راه اندازی DS3231 با آردوینو را بخوانید. مدار زیر نحوه اتصال ماژول کارت خوان SD و ماژول RTC DS3231 به آردوینو را نشان میدهد.

اتصال ماژول کارت خوان SD و ماژول RTC DS3231 به آردوینو

برای کار با ماژول DS3231، ابتدا باید کتابخانه (Sodaq_DS3231.h) را به آردوینو اضافه کنید. (آموزش نصب کتابخانه آردوینو)

نصب کتابخانه Sodaq_DS3231.h

#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include "Sodaq_DS3231.h"
File myFile;
DateTime now;
int newHour = 0;
int oldHour = 0;
void save_temperature() {
myFile = SD.open("temp.txt", FILE_WRITE);
now = rtc.now();
myFile.print(now.hour());
myFile.print(":");
myFile.print(now.minute());
rtc.convertTemperature(); //تبدیل دما
myFile.print(",");
myFile.println(rtc.getTemperature()); //ذخیره دما در کارت حافظه
myFile.close();
}
void setup ()
{
Wire.begin();
rtc.begin();
Serial.begin(9600);
Serial.print("Initializing SD card...");
if (!SD.begin(10)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
now = rtc.now();
oldHour = now.hour();
}
void loop ()
{
now = rtc.now();
newHour = now.hour();
if (oldHour != newHour) {
save_temperature();
oldHour = newHour;
}
}

کد بالا راس هر ساعت دما را در فایل ذخیره میکند. داده های ذخیره شده در فایل را میتوانید با استفاده از اکسل مطالعه کنید یا در صورت نیاز در نمودار رسم کنید.

مطلب پیشنهادی:  نکات و ابزار هایی برای توسعه فریمور امبدد

برای انجام این کار ابتدا اکسل را باز کنید و روی گزینه مشخص شده کلیک کنید.

انتقال داده های آردوینو به اکسل

سپس فایل خود را انتخاب کنید. در پنجره بعدی روی Next کلیک کنید. در ادامه گزینه Comma را انتخاب کنید و اطلاعات شما در اکسل ظاهر خواهند شد.

ذخیره دما روی SD همراه با ساعت

نمایش داده های آردوینو در نمودار اکسل

برای تمرین میتوانید  یک دستگاه کنترل ورود/خروج بسازید. با استفاده از ماژول RFID و آردوینو، هر فرد را شناسایی کنید و اطلاعات را در کارت حافظه SD ذخیره کنید.

5 (2 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

برای ارسال تصاویر از انجمن سایت استفاده کنید.

سوالات فنی را در انجمن سایت مطرح کنید تا در مسابقه شرکت کنید. ورود به انجمن

7 نظر

  1. سلام میشه فایل های ذخیره شده رو روی ال سی دی نمایش داد؟
    مثلا اینطوری که ما یک ساعت مشخص رو بدیم و اون بگه دما در اون لحظه چند درجه بود

  2. سلام میشه کاری کرد که چیزی را که با کلیپد تایپ می کنیم همون عدد رو پس از زدن دکمه ستاره روی کارت micro sdذخیره کنه

  3. سلام استاد من می خواستم علاوه بر ذخیره دما بر میکروsd اون رو در ماژول اولد هم ذخیره کنم
    ماژول ها به صورت جداگانه کار می کنه ولی وقتی کد های جفتشون رو باهم می زنم نه میکرو sd کار می کنه و نه اولد من اینو با آردوینو زدم می خواستم بدونم کدش رو در ماژول wemos بزنم باز هم این مشکل هست یا خیر

  4. سلام…ایا در برد اردوینو امکان خواندن اطلاعات به صورت مستقیم از فایل اکسل وجود دارد؟؟یا فقط به صورت txt میتونه بخونه یا ذخیره کنه؟؟

    1. سلام عزیز
      اگر از این ماژول استفاده میکنید باید از فرمت فایل مناسب همین ماژول استفاده شود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *