با توجه به محدود بودن حافظه ی میکروکنترلر ها، معمولا برای ثبت دیتاهای طولانی و لاگ ها از کارت های حافظه ی SD و Micro SD در پروژه ها استفاده می شود. این کارت ها با کارایی فوق العاده بالا و قیمت مناسبشان می توانند گزینه ی مناسبی برای اکثر پروژه های الکترونیکی باشند. استفاده از این ماژول های کارتخوان به نسب ساده است و پروتکل ارتباطی آن ها معمولا به صورت SPI می باشد.
برای اتصال کارتخوان های SD و Micro SD اتصال چهار پین ارتباطی MISO/MOSI/SCK/CS و دو پین تغذیه ی VCC/GND الزامی هست. جدول زیر به وضوح پین های مربوطه را برای برد های UNO و Mega نمایش می دهد، در صورتی که از برد متفاوتی استفاده می کنید. با دقت به پین های برد خودتان ارتباط را به صورت صحیح بین ماژول و برد برقرار کنید.
<tr”></tr”>
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 استفاده از این نوع حافظه می تواند راه حلی مناسب و عاقلانه برای پروژه هایی که نیازمند حافظه ی بیشتر از حافظه ی پیش فرض میکروکنترلر هستند باشند. استفاده از این کارت ها آسان است و فضای بسیار کمی را نیز اشغال می کنند پس به راحتی می توانید با استفاده از این ماژول های کارتخوان به نیاز خود دست پیدا کنید.
سلام
ممنون از آموزش
من sd رو که وصل می کنم به آردویینو و template رو اجرا می کنم، sd رو نمیشناسه، اتصالاتم به آردویینو uno این شکلیه:
cs 10
sck 13
mosi 11
miso 12
vcc 3.3v
gnd gnd
میشه لطفا راهنمایی کنید مشکل کجاست؟
پین های اتصالی صحیح هستند. تصویری از ماژول به همراه اسکچ مورد استفاده را از طریق پیام رسان تلگرام ارسال کنید تا بررسی کنم.
با عرض سلام
می خواساتم بدام nodmcu چقدر حافظه برای انتقال اطلاعات روی آن دارد.
برد اصلی طبق توضیحات سازنده : 128kBytes Memory – 4MBytes Storage. سایر برد های متفرقه بسته ماژول ESP8266 استفاده شده در برد.
سلام و خسته نباشید
اقای مهندس من میخام یه سری اطلاعات رو از پورت سریال اردوینو به کارت حافظه منتقل کنم .منتها وقتی از پورت سریال خود اردوینو استفاده میکنم مشکلی نیست.اما وقتی پورت سریال رو به میکروی دیگه متصل میکنم.کاراکترهای عجیب میفرسته .سرعت انتقال یکی هست اما نمیدونم مشکل کجاست.ممنون میشم راهنمایی کنید
مهم ترین عامل ایجاد این مشکل یکی نبودن سرعت ارتباطی بین میکروکنترلر های مختلف و کارت حافظه ی شماست. جدای از سرعت قابلیت درک سرعت برای میکروکنترلر نیز مهم است، به صورت مثال AtMega328 امکان درک ارتباط سریال در سرعت 115200 را ندارد، همه ی سرعت ها را روی 9600 تنظیم کنید و تست بگیرید. جدای ازا این موارد از یک میکروکنترلر سوم نیز استفاده کنید و با آن هم تست بگیرید، ممکن است خود میکروکنترلر دوم نیز دچار مشکل باشد. در نهایت نیز مسیر ارتباطی سریال را چک کنید، ممکن است قطعه ای میان راه در استریم بیت ایجاد تغییر و مشکل کند، آن قطعه را از مدار حذف کنید.