Arduino SD Kart Uygulaması (Data Logger)

MrLegend

Üye
Katılım
22 Ocak 2017
Mesajlar
5
Puanları
1
Yaş
34
Bu uygulamada arduino LM35 sıcaklık sensöründen 1 dakikalık periyotlarda okuduğumuz datayı sd karta kaydedeceğiz. Öncelikle LM35 sensörümüzü incleyelim.

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.


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.


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.

#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.


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


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

Kaynak: zobakit
 

Forum istatistikleri

Konular
128,130
Mesajlar
915,293
Kullanıcılar
449,847
Son üye
AhmetK06

Yeni konular

Geri
Üst