Arduino'da SD Kart Kullanımı

👤 Yazar: ozcan 📅 Tarih: 09.06.2026 15:05 👁️ Görüntüleme: 10

1. Donanım ve SPI Bağlantı Mimarisi

SD kart modülleri, mikrodenetleyici ile yüksek hızlı veri aktarımına olanak tanıyan SPI (Serial Peripheral Interface) protokolü üzerinden haberleşir. Bu protokolde pin eşleşmeleri kullanılan Arduino modeline göre değişiklik gösterir.

Arduino ve Elektronik Devre Bileşenleri

Görsel: Arduino Geliştirme Platformu ve SPI Protokolü Destekli Donanımlar

Standart bir SD kart modülünün Arduino Uno ve Arduino Mega üzerindeki doğru pin eşleşmeleri aşağıdaki tabloda belirtilmiştir:

SD Kart Modülü Pin Arduino Uno / Nano Arduino Mega İşlevi
VCC 5V / 3.3V 5V / 3.3V Güç Girişi
GND GND GND Toprak Hattı
MISO Pin 12 Pin 50 Veri Çıkışı (Master In Slave Out)
MOSI Pin 11 Pin 51 Veri Girişi (Master Out Slave In)
SCK Pin 13 Pin 52 Saat Sinyali (Serial Clock)
CS / SS Pin 10 Pin 10 Çip Seçimi (Chip Select)

Kritik Uyarı: SD kartlar yerel lojik seviyede 3.3V gerilimle çalışır. Eğer satın aldığınız modülün üzerinde dahili bir voltaj regülatörü ve lojik seviye dönüştürücü (level shifter) entegresi yer almıyorsa, Arduino'nun gönderdiği 5V sinyaller karta kalıcı hasar verecektir. Projeyi yaparken modülünüzün 5V uyumlu olduğundan emin olun.

2. Depolama Formatı ve Kart Hazırlığı

Arduino'nun yerleşik SD.h kütüphanesi, modern işletim sistemlerinin kullandığı karmaşık NTFS veya exFAT gibi dosya sistemlerini doğrudan okuyamaz. Kartın sistem tarafından sorunsuz tanınması için şu hazırlıkların yapılması gerekir:

3. Örnek Kodlama ve Kararlı Uygulama

Aşağıdaki kod bloğu, SD karta veri ekleme ve yazılan verinin doğruluğunu kontrol etme amacıyla geri okuma işlemlerini gerçekleştiren, bellek optimizasyonu yapılmış tam sürüm bir taslaktır:

#include <SPI.h>
#include <SD.h>

const int chipSelect = 10; // CS pini projenize göre değiştirilebilir

void setup() {
  Serial.begin(9600);
  while (!Serial) { ; } // Seri portun hazır olmasını bekle (Mega/Leonardo için)

  Serial.print(F("SD kart baslatiliyor... "));

  // Kartın varlığını ve başlatılmasını kontrol et
  if (!SD.begin(chipSelect)) {
    Serial.println(F("Basarisiz veya kart bulunamadi!"));
    return;
  }
  Serial.println(F("Kart hazir."));

  // ---- DOSYAYA VERİ YAZMA İŞLEMİ ----
  File dataFile = SD.open("log.txt", FILE_WRITE);
  
  if (dataFile) {
    dataFile.println("Sistem_Aktif;Veri_Giris_Testi;2026");
    dataFile.close(); // Arabellekteki veriyi karta fiziksel olarak kaydeder
    Serial.println(F("Veri basariyla yazildi."));
  } else {
    Serial.println(F("Dosya acilirken hata olustu (Yazma)"));
  }

  // ---- DOSYADAN VERİ OKUMA İŞLEMİ ----
  dataFile = SD.open("log.txt");
  if (dataFile) {
    Serial.println(F("Dosya Icerigi:"));
    while (dataFile.available()) {
      Serial.write(dataFile.read());
    }
    dataFile.close();
  } else {
    Serial.println(F("Dosya acilirken hata olustu (Okuma)"));
  }
}

void loop() {
  // Döngüsel veri kayıtları buraya eklenebilir
}

4. Kararlılık ve Performans İçin Altın Kurallar

Projelerinizin sahada yarıda kalmaması ve Arduino'nun kilitlenmesini önlemek için şu üç parametreye dikkat etmelisiniz:

8.3 Dosya İsimlendirme Kuralı

Standart SD.h kütüphanesi uzun dosya adlarını tanımaz. Oluşturacağınız dosyaların adı en fazla 8 karakter, uzantısı ise en fazla 3 karakter olmalıdır (Örneğin: sicaklik_sensor_verileri.txt yerine data.txt veya log2026.txt tercih edilmelidir).

RAM Bellek Optimizasyonu

SD kütüphanesi yapısı gereği Arduino'nun kısıtlı RAM belleğinden (SRAM) yaklaşık 512 byte harcar. Kod içerisindeki sabit metinleri Serial.println(F("Mesaj")) formunda yazarak F() makrosu içine almak, bu metinlerin RAM yerine program belleğinde tutulmasını sağlar ve bellek yetersizliğinden kaynaklanan çökmelerin önüne geçer.

Veri Güvenliği (Close ve Flush)

Kod bloğunda dataFile.close() komutu tetiklenene kadar yazılan veriler RAM arabelleğinde bekletilir. Olası ani enerji kesintilerinde veri kaybı yaşamamak adına, her döngü sonunda ya dosyayı kapatmalı ya da dataFile.flush() komutunu kullanarak veriyi fiziksel olarak karta işlemelisiniz.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
Sayfa Başı
Yenidir CMS V0.1