Arduino SD Kart Uygulaması

Arduino SD Kart Uygulaması (Data Logger)

LM35 sesnörümüz 4-20 volt aralığında çalışan, -55 ile +150 derece arasında ölçüm yapan 0,5 derece hassasiyetinde analog sensördür. Bu sensör eksi sıcaklıklar için negatif gerilim verir. Arduino negatif gerilimleri ölçemediği için eksi sıcaklıkları bu uygulamada gözardı edeceğiz.

Hafıza kartının formatı için; 2 GB a kadar fat16, 2 GB dan büyük kapasiteler için ise fat32 formatı kullanılmalıdır. Diğer formatlarda arduino SD kütüphanesi ile okuma yazma yapamazsınız. Ayrıca dosya adı en fazla 8, dosya uzantısı 3 karakter olmalıdır. Dosya isimini anlaşılır ve kısa tutmaya çalışın. Örnek: “IsiLog.txt” gibi.

Elimde arduino SD kart modülü olmadığı için mikrosd adaptör çıkışlarına header pin lehimleyerek basitçe bir adaptör yaptım. Aşagıda adaptör ve SD kart pin açıklamalarını görebilrisiniz.

sd_microsd_adapter_pin

 

sd_kart_pin

Yukarıda da görüldüğü gibi sd kart besleme voltajı 3.3 volttur. Buna çok dikkat edin. İletişim için ise SPI interface kullanılıyor. Şimdi devremizi tasarlayalım.

arduino_sdkart_lm35_bb

Pin       SD Kart Pin       Arduino Pin
CS                 1                         D4
MOSI             2                         D11
SCK               5                         D13
MISO             7                         D12

LM35 ve kart okuyucu adaptörümüzü şekildeki gibi arduinoya bağlantılarını yapıyoruz. Şimdi her 60 saniyede bir sıcaklık bilgisini okuyup hafıza kartına yazacak programımızı hazırlayalım.

// DIYOT.NET
// www.diyot.net
// Arduino SD Kart Uygulaması 2015
#include 
#include 
File dosya;
float derece;
#define CSpin 4
#define LM35Pin A0
int sayac = 1;
void setup() {
Serial.begin(9600); // serial açılıyor
if (!SD.begin(CSpin)) {// SD kart başlatılıyor
Serial.println("SD Kart yok yada baglanti basarisiz.");
return;
}
Serial.println("SD Kart baglandi");
}


void loop() {
derece = sicaklikOlc();
dosya = SD.open("Log.txt", FILE_WRITE); // Dosya açılıyor. Yok ise yeni oluşturulur.
if (SD.exists("Log.txt")) { // Dosya var mı? kontrolü.
dosya.print(sayac); // dosyaya yazılıyor.
dosya.print(". Dakika Sıcaklık Değeri : ");
dosya.println(derece);
dosya.close(); // dosyayı kapat.
Serial.println("Sicaklik bilgisi kaydedildi.");
}else{
Serial.println("Dosya yok yada yazma başarisiz!");
}
sayac++; // sayacı bir arttırıyoruz.
delay(60000); // 60 saniye bekle
}


float sicaklikOlc()
{
float temp;
temp = analogRead(LM35Pin);
temp = (5.0 * temp * 100.0)/1024.0;//lm35 sıcaklık hesaplama bölümü
return temp;
}

Satır aralarında kod ile ilgili açıklamalar mevcut. Arduinoya programı yükleyip seri port ekranını açalım. Aşağıdaki gibi bir ekran görülecektir.

arduino_sdkart_lm35_seri_log

Hafıza kartını bilgisayara takıp baktığınızda aşağıdaki gibi bir dosya olduğunu görebilirsiniz.

arduino_sdkart_lm35_log

Bu uygulamada hafıza kartına sadece yazma işlemi yaptık.

Diğer örnek uygulamalar için Arduino SDkütüphanesine bakabilirsiniz.

Rate this post