ذخیرهسازی اطلاعات یکی از کارهای مهم در پروژههای مختلف است که با توجه به حجم و نوع دادهها، روشهای زیاد و متنوعی نیز برای انجام آن وجود دارد. در این بین، کارتهای SD و microSD جزو پرکاربردترین ذخیرهسازهای جهان به شمار میروند که در گوشیهای هوشمند، لپتاپها، تبلتها و . . . قرار میگیرند. ما در این آموزش میدهیم شما را با نحوه راه اندازی ماژول کارت حافظه با آردوینو و یا ذخیره اطلاعات در کارت حافظه SD با آردوینو آشنا کنیم؛ پس با ما و بلاگ بهنام رباتیک همراه باشید.
لوازم مورد نیاز برای پروژه راه اندازی ماژول کارت حافظه با آردوینو
ماژول SD و microSD چیست؟
ماژولهای SD و microSD به شما اجازه میدهند تا با حافظه موجود در آنها ارتباط برقرار کرده و اطلاعات مدنظر را در آنها قرار داده و یا از آنها بخوانید. لازم به ذکر است که پروتکل ارتباطی این ماژولها SPI میباشد.
برای استفاده از این ماژولها در آردوینو، باید کتابخانه SD را نصب داشته باشید. خوشبختانه این کتابخانه به صورت پیشفرض در نرمافزار Arduino IDE نصب است.
نکته: این ماژولها از کارتهای حافظه با ظرفیت زیاد پشتیبانی نمیکنند. معمولاً حداکثر ظرفیت ماژول SD به 2 و حداکثر ظرفیت ماژول microSD به 16 گیگابایت میرسد.
آشنایی با پینهای ماژول microSD
این ماژول شش پین دارد که عبارتند از:
- VCC: پین منبع تغذیه 5 ولت
- GND: پین اتصال به زمین
- CS: پین انتخاب چیپ
- MISO: پین خروجی SPI از ماژول کارت microSD
- MOSI: پین ورودی SPI از ماژول کارت microSD
- SCK: کلاک سریال
شما میتوانید پینهای این ماژول را در ادامه ببینید.
مهمترین دستورات کتابخانه ماژول SD
در جدول زیر میتوانید توضیحات کوتاهی در مورد برخی دستورات موجود در کتابخانه SD ببینید.
دستور |
توضیح |
SD.begin(#sspin) |
آغازگر کتابخانه SD. در اینجا باید پین متصل به SS را به عنوان تابع سلسله بیفزایید. |
SD.exists(filename) |
بررسی میکند که آیا یک فایل یا مسیر در کارت SD وجود دارد یا خیر. |
SD.open(filepath, mode) |
یک فایل موجود در کارت SD را در حالت خواندن یا نوشتن اجرا میکند. اگر بخش مربوط به حالت را خالی نگه دارید، فایل به صورت پیشفرض در حالت خواندن اجرا میشود. چنانچه فایلی برای نوشتن اجرا شد ولی وجود نداشت، یک فایل با همان ایجاد میشود |
file.close() |
فایل را میبندد و مطمئن میشود که دادههای نوشته شده در آن به صورت فیزیکی در مموری کارت microSD ذخیره شدهاند |
SD.remove(filename) |
حذف یک فایل از مموری کارت microSD |
SD.mkdir(filename) |
ایجاد مسیر در مموری کارت microSD |
SD.rmdir(filename) |
حذف یک مسیر از مموری کارت microSD |
file.name()* |
بازگرداندن نام فایل |
file.print(data) |
چاپ دادهها در فایل |
file.println(data |
چاپ دادهها به همراه بازگردان و یک خط جدید |
file.read() |
خواندن دادهها از فایل |
file.available() |
بررسی میکند که آیا بایت برای خواندن از فایل وجود دارد یا خیر. |
نحوه ذخیره اطلاعات در کارت حافظه SD با آردوینو
نکته: ماژول استفاده شده در این مطلب آموزشی، ماژول microSD است اما شما میتوانید از کدهای ارائه برای ماژول SD نیز بهره ببرید.
سیمکشی مدار پروژه راه اندازی ماژول کارت حافظه با آردوینو
بسته به نوع ماژول استفاده شده (microSD یا SD)، سیمکشی مدار این پروژه را با توجه به تصویر زیر انجام دهید.
روش دیگر نیز آن است که یک تکه یخ را داخل پلاستیک بگذارید تا مدار خیس نشود و سپس پلاستیک را به سنسور نزدیک کنید تا ببینید دما کاهش مییابد.
کدهای پروژه ذخیره اطلاعات در کارت حافظه SD با آردوینو
کدهای زیر را در نرمافزار Arduino IDE آپلود کنید تا روی مموری کارت microSD نوشته شوند.
#include
#include
File myFile;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
if (!SD.begin(10)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open("test.txt", FILE_WRITE);
// if the file opened okay, write to it:
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);
}
// close the file:
myFile.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
void loop() {
// nothing happens after setup
}
نتیجه اجرای کدهای داده شده به صورت زیر است:
کدهای زیر را در نرمافزار Arduino IDE آپلود کنید تا از مموری کارت microSD خوانده شوند.
#include
#include
File myFile;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
if (!SD.begin(10)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
// open the file for reading:
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
void loop() {
// nothing happens after setup
}
نتیجه اجرای کدهای داده شده به صورت زیر است: