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.
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.
// 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.
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.
Diğer örnek uygulamalar için Arduino SDkütüphanesine bakabilirsiniz.