آموزش استفاده از ماژول های کارتخوان SD و Micro SD

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

برای اتصال کارتخوان های SD و Micro SD اتصال چهار پین ارتباطی MISO/MOSI/SCK/CS و دو پین تغذیه ی VCC/GND الزامی هست. جدول زیر به وضوح پین های مربوطه را برای برد های UNO و Mega نمایش می دهد، در صورتی که از برد متفاوتی استفاده می کنید. با دقت به پین های برد خودتان ارتباط را به صورت صحیح بین ماژول و برد برقرار کنید.

SD/MicroSD Mega Uno
CS ۵۳ ۱۰
SCK ۵۲ ۱۳
MOSI ۵۱ ۱۱
MISO ۵۰ ۱۲
VCC VCC VCC
GND GND GND

 

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

/*
تست نمایش، نوشتن و حذف فایل از روی کارت حافظه
*/
 
#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ;
  }


  Serial.print("Initializing SD card...");

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  if (SD.exists("example.txt")) {
    Serial.println("example.txt exists.");
  } else {
    Serial.println("example.txt doesn't exist.");
  }

  Serial.println("Creating example.txt...");
  myFile = SD.open("example.txt", FILE_WRITE);
  myFile.close();

  if (SD.exists("example.txt")) {
    Serial.println("example.txt exists.");
  } else {
    Serial.println("example.txt doesn't exist.");
  }

  Serial.println("Removing example.txt...");
  SD.remove("example.txt");

  if (SD.exists("example.txt")) {
    Serial.println("example.txt exists.");
  } else {
    Serial.println("example.txt doesn't exist.");
  }
}

void loop() {
}

 

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