ماژول کارت حافظه آردوینو؛ آموزش کامل SD Card و ذخیره اطلاعات
ماژول کارت حافظه آردوینو یکی از سادهترین راهها برای اضافه کردن
فضای ذخیرهسازی به پروژههای Arduino است. وقتی حافظه داخلی برد برای ثبت اطلاعات
سنسورها، لاگها یا فایلهای پروژه کافی نباشد، یک کارت microSD میتواند مشکل
ذخیرهسازی را برطرف کند.
در این آموزش با ساختار ماژول، پایهها، ارتباط SPI، آمادهسازی کارت، اتصال
به Arduino، کتابخانه SD، ذخیره و خواندن فایل و خطاهای رایج آشنا میشویم.
📌 ماژول کارت حافظه آردوینو در یک نگاه
microSD
SPI
VCC / GND / MISO / MOSI / SCK / CS
SD
ذخیره اطلاعات
ماژول SD آردوینو دقیقاً چه کاری انجام میدهد؟
این ماژول بین Arduino و کارت microSD قرار میگیرد و ارتباط میان آنها را
ساده میکند. مدلهای رایج معمولاً سوکت کارت، رگولاتور 3.3V و مدار تبدیل
سطح منطقی دارند تا اتصال کارت به میکروکنترلرهای 5 ولتی آسانتر شود.
خود کارت microSD به ولتاژ پایینتر و منطق 3.3V نیاز دارد؛ بنابراین نباید
بدون بررسی مدار ماژول، سیگنال 5V را مستقیماً به کارت متصل کرد.
⚠️ قبل از اتصال، ولتاژ را بررسی کنید
بعضی ماژولهای آماده رگولاتور و Level Shifter دارند و برای تغذیه 5V در سمت
ماژول طراحی شدهاند. با این حال، همه بردهای بازار دقیقاً یکسان نیستند؛
مشخصات همان مدل را بررسی کنید.
چرا بیشتر پروژههای Arduino از SPI استفاده میکنند؟
کارتهای SD روشهای ارتباطی مختلفی دارند، اما در پروژههای DIY رابط SPI
محبوبیت بیشتری دارد. سیمکشی ساده، پشتیبانی مناسب Arduino و دسترسی آسان
به کتابخانهها باعث شده این روش برای دیتالاگر و ذخیره اطلاعات گزینهای عملی باشد.
در مقابل، SDIO سرعت بالاتری دارد اما پیادهسازی آن پیچیدهتر است و برای
بسیاری از پروژههای آموزشی انتخاب راحتی نیست.
پایههای ماژول microSD را بشناسید
بیشتر ماژولهای microSD که با Arduino استفاده میشوند، شش پایه اصلی دارند.
چهار مورد برای SPI و دو پایه دیگر برای تغذیه هستند.
| پایه | کاربرد |
|---|---|
| VCC | تغذیه |
| GND | زمین |
| MISO | داده از کارت به Arduino |
| MOSI | داده از Arduino به کارت |
| SCK | کلاک SPI |
| CS | انتخاب کارت |

کارت حافظه را قبل از استفاده آماده کنید
پیش از قرار دادن کارت در ماژول، فایلسیستم آن را بررسی کنید. آموزش مرجع
استفاده از FAT16 یا FAT32 را مطرح میکند و فرمت کردن کارت با ابزار
SD Association را برای جلوگیری از بعضی خطاهای رایج پیشنهاد میدهد.
کارت قدیمی که قبلاً در دوربین یا دستگاه دیگری استفاده شده، ممکن است
فایلسیستم نامناسبی داشته باشد. یک فرمت تمیز میتواند عیبیابی پروژه
را سادهتر کند.
💾 قبل از شروع این کار را انجام دهید
یک کارت سالم انتخاب کنید، اطلاعات مهم آن را پشتیبان بگیرید و سپس
فایلسیستم مناسب پروژه را ایجاد کنید. برای تست اولیه، کارت ساده و
بدون فایلهای اضافی انتخاب بهتری است.
سیمکشی ماژول SD با Arduino Uno
در Arduino Uno پایههای SPI سختافزاری روی D11، D12 و D13 قرار دارند.
برای Chip Select نیز میتوان D10 را انتخاب کرد. همین آرایش برای Uno و
Nano V3 در آموزش مرجع استفاده شده است.
| ماژول SD | Arduino Uno | کاربرد |
|---|---|---|
| VCC | 5V* | تغذیه |
| GND | GND | زمین |
| MISO | D12 | SPI |
| MOSI | D11 | SPI |
| SCK | D13 | Clock |
| CS | D10 | Chip Select |
* این اتصال VCC برای ماژولهایی مناسب است که رگولاتور و Level Shifter
لازم را روی خود برد دارند.
🔌 اتصال سریع
VCC → 5V*
GND → GND
MISO → D12
MOSI → D11
SCK → D13
CS → D10

🔧 به دنبال قطعات و تجهیزات آردوینو هستید؟
برای مشاهده انواع بردهای آردوینو، ماژولها، سنسورها و قطعات مورد نیاز پروژههای خود،
به فروشگاه قطعات الکترونیکی پژوهشگران مراجعه کنید.
اولین تست؛ آیا Arduino کارت را میبیند؟
قبل از نوشتن برنامه اصلی، بهتر است فقط تشخیص کارت را آزمایش کنید.
کتابخانه SD در محیط Arduino قرار دارد و مثال CardInfo میتواند اطلاعات
اولیه کارت را در Serial Monitor نمایش دهد.
برای اجرای آن وارد مسیر
File → Examples → SD → CardInfo
شوید و مقدار Chip Select را با سیمکشی خود هماهنگ کنید.
🧪 CardInfo چرا مهم است؟
این مثال قبل از ورود به برنامه اصلی، ارتباط Arduino با کارت را آزمایش
میکند. اگر همین مرحله درست کار نکند، بهتر است ابتدا سراغ سیمکشی،
CS، تغذیه و فایلسیستم بروید.
ذخیره اطلاعات روی SD؛ اولین فایل خودتان را بسازید
پس از شناسایی موفق کارت، کتابخانه SD امکان ساخت فایل و نوشتن داده را
فراهم میکند. این قابلیت برای ثبت دما، رطوبت، وضعیت دستگاه، شمارش رویدادها
و سایر اطلاعات پروژه کاربرد زیادی دارد.
#include <SPI.h>
#include <SD.h>
const int chipSelect = 10;
void setup() {
Serial.begin(9600);
if (!SD.begin(chipSelect)) {
Serial.println("SD initialization failed!");
return;
}
File file = SD.open("data.txt", FILE_WRITE);
if (file) {
file.println("RNGO Arduino SD Test");
file.println("Temperature: 25.6 C");
file.close();
Serial.println("Data saved.");
} else {
Serial.println("File open failed.");
}
}
void loop() {
}
💡 چرا فایل را ببندیم؟
بعد از نوشتن، close() را اجرا کنید. این کار فایل را میبندد
و اجازه میدهد دادههای بافرشده به شکل درست روی کارت ثبت شوند.
خواندن اطلاعات؛ دادهها را از کارت برگردانید
برای خواندن فایل، آن را باز کنید و محتوایش را از طریق Serial Monitor
نمایش دهید. تابع read() امکان دریافت دادههای فایل را
در اختیار برنامه قرار میدهد.
#include <SPI.h>
#include <SD.h>
const int chipSelect = 10;
void setup() {
Serial.begin(9600);
if (!SD.begin(chipSelect)) {
Serial.println("SD initialization failed!");
return;
}
File file = SD.open("data.txt");
if (file) {
while (file.available()) {
Serial.write(file.read());
}
file.close();
} else {
Serial.println("File open failed.");
}
}
void loop() {
}
اگر کارت SD شناسایی نشد، از کجا شروع کنیم؟
پیام Initialization Failed معمولاً به این معنی است که باید چند بخش اصلی
را بررسی کنید. بهتر است موارد را یکییکی جلو ببرید تا مشخص شود مشکل
سختافزاری است یا نرمافزاری.
| مشکل | اولین بررسی |
|---|---|
| Initialization Failed | SPI، تغذیه و CS |
| کارت شناسایی نمیشود | فرمت و سلامت کارت |
| فایل باز نمیشود | نام فایل و فضای کارت |
| داده ذخیره نمیشود | وضعیت فایل و close() |
🔍 عیبیابی سریع
اگر CardInfo هم کارت را نمیشناسد، ابتدا سیمکشی SPI و CS را بررسی کنید.
در مرحله بعد کارت را دوباره فرمت کنید و با یک کارت سالم دیگر آزمایش کنید.
این روش معمولاً سریعتر از تغییر همزمان چند بخش کد نتیجه میدهد.
چطور با SD یک دیتالاگر واقعی بسازیم؟
ترکیب Arduino با چند سنسور و ماژول microSD یکی از کاربردیترین پروژههای
این بخش است. Arduino مقدار سنسورها را میخواند و کارت حافظه آنها را
برای استفاده بعدی ذخیره میکند.
💾 چند ایده برای دیتالاگر
دما: ثبت تغییرات دمای محیط
رطوبت: ذخیره اطلاعات سنسور رطوبت
ولتاژ: ثبت روند تغییرات منبع تغذیه
رویدادها: ثبت زمان و وضعیت تجهیزات
چه پروژههایی با ماژول کارت حافظه میتوان ساخت؟
- دیتالاگر دما و رطوبت
- ثبت اطلاعات سنسورها
- ذخیره لاگ سیستم
- ذخیره تنظیمات پروژه
- ثبت رویدادهای دستگاه
- ذخیره فایل برای پروژههای چندرسانهای
چه کارت و ماژولی برای پروژه شما مناسب است؟
فقط ظرفیت کارت را معیار خرید قرار ندهید. سازگاری ماژول با ولتاژ Arduino،
وجود Level Shifter، کیفیت سوکت، نوع فایلسیستم و سرعت موردنیاز پروژه نیز
اهمیت دارند.
🛒 ماژول و لوازم پروژه را بررسی کنید
اگر برای پروژه Arduino به ماژول کارت حافظه، برد، سنسور یا سایر قطعات
الکترونیکی نیاز دارید، میتوانید محصولات موردنیاز را در فروشگاه
پژوهشگران بررسی کنید.
مقالات بیشتر برای توسعه پروژه
📚 مقالات بیشتر پژوهشگران
آموزشهای بیشتر درباره Arduino، ESP32، سنسورها، دیتالاگر و ماژولهای
الکترونیکی را در مجموعه مقالات پژوهشگران ببینید.
برای انتخاب قطعه یا طراحی پروژه مشاوره فنی بگیرید
🛠️ در انتخاب قطعات پروژه سؤال دارید؟
اگر درباره انتخاب ماژول SD، کارت حافظه، Arduino، سنسور یا طراحی
دیتالاگر سؤال دارید، قبل از خرید میتوانید برای
مشاوره فنی با مجموعه پژوهشگران در ارتباط باشید.
انتخاب درست قطعات از همان ابتدای پروژه، طراحی مدار و توسعه نرمافزار
را سادهتر میکند.
جمعبندی؛ آیا ماژول SD برای پروژه شما مناسب است؟
ماژول کارت حافظه آردوینو راهکاری ساده برای اضافه کردن
فضای ذخیرهسازی به پروژههای Arduino است. بیشتر ماژولهای رایج از SPI
استفاده میکنند و کتابخانه SD نیز ابزارهای لازم برای ساخت، خواندن و
نوشتن فایل را در اختیار برنامه قرار میدهد.
بهترین مسیر برای شروع این است که کارت را آماده کنید، سیمکشی را بررسی
کنید، CardInfo را اجرا کنید و سپس سراغ برنامه اصلی بروید. پس از موفقیت
در این مرحله میتوانید یک دیتالاگر، سیستم ثبت رویداد یا پروژه ذخیره
اطلاعات بسازید.
⚡ چکلیست سریع کارت SD
✔ نوع ماژول را بررسی کنید.
✔ کارت را آماده و فرمت کنید.
✔ پایههای SPI را درست وصل کنید.
✔ CS را با کد هماهنگ کنید.
✔ CardInfo را اجرا کنید.
✔ بعد از نوشتن اطلاعات، فایل را ببندید.
💬 تجربه شما از کار با کارت حافظه چیست؟
اگر قبلاً با ماژول کارت حافظه آردوینو کار کردهاید،
تجربه خود را درباره دیتالاگر، ذخیره اطلاعات، فرمت کارت یا مشکلات
شناسایی SD با ما و سایر کاربران به اشتراک بگذارید.
اگر راهحل خاصی برای خطای Initialization یا ذخیره اطلاعات پیدا کردهاید،
در بخش نظرات همین پایین برای ما بنویسید.
سوالات متداول درباره ماژول کارت حافظه آردوینو
آیا هر کارت microSD با Arduino کار میکند؟
سازگاری به نوع ماژول، فایلسیستم کارت و شرایط سختافزاری بستگی دارد.
برای شروع بهتر است از یک کارت سالم و فرمتشده استفاده کنید.
چرا ماژول SD خطای Initialization میدهد؟
تغذیه، سیمکشی SPI، پایه CS، فرمت کارت و سلامت خود کارت را بررسی کنید.
اجرای CardInfo به پیدا کردن مشکل اولیه کمک میکند.
برای Arduino کارت SD را FAT32 کنیم یا FAT16؟
کتابخانه و پروژه شما باید با فایلسیستم مورد استفاده سازگار باشد.
آموزش مرجع برای این ماژول FAT16 و FAT32 را مطرح میکند.



