نوشتن در کارت میکرو SD آردوینو

  • ۱۰۰ بازدید

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

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

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

microsd card

در داخل کارت میکرو SD آرایه NAND Flash قرار داده شده است تا بیت های داده را ذخیره کند و ورودی/خروجی داده ها برای انتقال داده ها از/به کارت میکرو SD کنترل کند و کنترل کننده SD عملکرد کل حافظه میکرو SD را کنترل می کند.

پایه آداپتور micro SD

این برد آداپتور به اتصال میکروکنترلرها به کارت میکرو SD کمک می کند و حاوی یک آی سی شیفتر سطح، تنظیم کننده ولتاژ و شش ترمینال برای رابط خارجی است.

رابط میکرو اس دی آردوینو

در اینجا مقدار دما باید برای هر ثانیه ذخیره شود، بنابراین سنسور دمای LM35 به پین Arduino A0 وصل می شود سپس آداپتور micro SD به آردوینو متصل می شود.

  • GND – GND
  • 5V – VCC (+5V)
  • D10 – CS
  • D11 – MOSI
  • D12 – MISO
  • D13 – SCK

می توانید “کتابخانه SdFat” را از https://github.com/greiman/SdFat نصب کنید. کتابخانه آردوینو SdFat دسترسی خواندن/نوشتن به سیستم های فایل FAT16/FAT32 را در کارت های فلش SD/SDHC فراهم می کند.

در اینجا از مثال ساده Arduino IDE برای دیتالاگ استفاده شده است. داده ها در کارت micro SD به عنوان فایل متنی “data-log.txt” ذخیره می شوند.

دیتالاگر Micro SD کد آردوینو

#include <SPI.h>
#include <SD.h>
File myFile;
int x = 0;
int tempValue;
void setup()
{
   pinMode(10, OUTPUT);
   SD.begin(10);
}
void loop()
{
   tempValue = analogRead(A0);
   myFile = SD.open("data-log.txt", FILE_WRITE);
   if (myFile) {
      myFile.print("Temperature ");
      myFile.print(x);
      myFile.print(":");
      myFile.println((long)tempValue*0.48875);
   }
   myFile.close(); 
   x++;
   delay(1000);
}