Search Code

ESP32 Eğitimi 40/55 - Micro SD Karta Okuma ve Yazma | SunFounder'ın ESP32 IoT Öğrenme Kiti

ESP32 Eğitimi 40/55 - Micro SD Karta Okuma ve Yazma | SunFounder'ın ESP32 IoT Öğrenme Kiti

Bu eğitimde, ESP32 ve SunFounder ESP32 genişletme kartını kullanarak bir mikro SD karta nasıl okuma ve yazma yapılacağını öğreneceğiz. Bu, verileri saklamamıza ve daha sonra geri almamıza olanak tanır; bu da birçok IoT uygulaması için gereklidir. Bu eğitimin sonunda, mikro SD kartta dosyalar oluşturabilen, yazabilen ve okuyabilen çalışan bir kuruluma sahip olacaksınız.

Başlamak için, mikro SD kartınızın FAT32 olarak doğru şekilde biçimlendirildiğinden emin olun, çünkü ESP32'nin kartla etkileşim kurması için gereken dosya sistemi budur. Mikro SD karttaki dosyalara erişim sürecini basitleştiren SD_MMC kütüphanesini kullanacağız. Mikro SD kartın maksimum kapasitesinin 32 GB'ı aşmaması gerektiğini unutmamak önemlidir.

Donanım Açıklaması

Bu projedeki ana bileşenler ESP32 mikrodenetleyicisi ve mikro SD kart modülüdür. ESP32, yerleşik Wi-Fi ve Bluetooth özelliklerine sahip çok yönlü bir mikrodenetleyicidir ve bu da onu IoT uygulamaları için ideal kılar. Mikro SD kart modülü, ESP32'nin karta okuma ve yazma yapmasını sağlayarak çeşitli uygulamalar için veri depolamayı mümkün kılar.

Mikro SD kart, verileri yapılandırılmış bir şekilde saklamak için bir dosya sistemi kullanarak çalışır. ESP32 ile SD_MMC arayüzü üzerinden iletişim kurar; bu da dosyaların verimli bir şekilde okunmasını ve yazılmasını sağlar. Bu kurulum, veri kaydetme, görüntü kaydetme veya veri kalıcılığı gerektiren herhangi bir uygulama için kullanılabilir.

Bağlantı Talimatları

ESP32-40-micro-sd-card-1

Mikro SD kartı ESP32'ye bağlamak için şu adımları izleyin:

İlk olarak, güç ve toprak pinlerini bağlayın. Mikro SD kart modülünün VCC pinini ESP32 üzerindeki 3.3V pinine bağlayın ve GND pinini ESP32 üzerindeki GND pinlerinden birine bağlayın. Ardından, veri pinlerini bağlayın: mikro SD kart modülünün CS (Chip Select) pinini ESP32 üzerindeki 5 numaralı pine, MOSI (Master Out Slave In) pinini 23 numaralı pine, MISO (Master In Slave Out) pinini 19 numaralı pine ve SCK (Serial Clock) pinini 18 numaralı pine bağlayın. İletişim sorunlarını önlemek için bu bağlantıların güvenli olduğundan emin olun.

Farklı bir genişletme kartı kullanıyorsanız, pin numaraları değişebilir; bu nedenle kartınıza özel belgelere başvurun. Mikro SD karta dosya okuma ve yazma işlemlerinin başarılı olması için bağlantı kritik öneme sahiptir.

Kod Örnekleri ve Açıklama

Şimdi, mikro SD kartla etkileşime giren kodun ana bölümlerine bakalım. Kurulum, seri iletişimi başlatmak ve mikro SD kartın başarıyla bağlanıp bağlanmadığını kontrol etmekle başlar.

Serial.begin(115200); // Seri iletişimi başlat
if (!SD_MMC.begin()) { // SD kartın başarıyla bağlanıp bağlanmadığını kontrol et
  Serial.println("SD kart bağlanamadı"); // SD kart bağlanamazsa hata mesajı yazdır
  return;
}

Bu kod parçasında, seri iletişim 115200 baud hızına ayarlanır; bu, çıktıyı izlemek için önemlidir. SD_MMC.begin() işlevi SD kartı bağlamaya çalışır; başarısız olursa, seri monitöre bir hata mesajı yazdırılır.

Kodun bir sonraki bölümü, mikro SD kartta yeni bir dosya oluşturur ve içine bir satır metin yazar.

File file = SD_MMC.open("/test.txt", FILE_WRITE); 
if (!file) {
  Serial.println("Yazma için dosya açılamadı"); // Dosya açılamazsa hata mesajı yazdır
  return;
}
if (file.println("Test dosyası yazma")) { // Dosyaya bir satır metin yaz
  Serial.println("Dosya yazma başarılı"); // Yazma işlemi başarılıysa başarı mesajı yazdır
} else {
  Serial.println("Dosya yazma başarısız"); // Yazma işlemi başarısızsa hata mesajı yazdır
}
file.close(); // Dosyayı kapat

Burada, test.txt adlı bir dosya yazma modunda açılır. Dosya başarıyla açılırsa, bir satır metin yazar ve bir başarı mesajı yazdırır. Yazma işlemi başarısız olursa, bunun yerine bir hata mesajı yazdırılır. Son olarak, değişikliklerin kaydedildiğinden emin olmak için dosya kapatılır.

Kod ayrıca mikro SD kartın kök dizinindeki dosyaları okur ve adlarını ve boyutlarını yazdırır.

File root = SD_MMC.open("/"); // SD kartın kök dizinini aç
while (File file = root.openNextFile()) { // Kök dizindeki tüm dosyalar arasında döngü yap
  Serial.print(file.name()); // Dosya adını yazdır
  Serial.print("\t");
  Serial.println(file.size()); // Dosya boyutunu yazdır
  file.close(); // Dosyayı kapat
}

Bu kod parçası kök dizini açar ve tüm dosyalar arasında dolaşarak adlarını ve boyutlarını seri monitöre yazdırır. Bu, verilerin başarıyla yazıldığını doğrulamak ve SD kartın içeriğini görmek için kullanışlıdır.

Daha fazla ayrıntı için, makalenin altında yüklenen tam koda bakın.

Gösterim / Beklentiler

Kodu yükleyip ESP32'yi sıfırladıktan sonra, seri monitörde SD kartın başarıyla bağlanıp bağlanmadığını ve dosya işlemlerinin başarılı olup olmadığını gösteren mesajlar görmelisiniz. Ayrıca, kök dizinde bulunan dosyaların listesini de göreceksiniz; bu da verilerin doğru yazıldığını doğrular (videoda 13:45'te).

Yaygın tuzaklar arasında mikro SD kartın doğru biçimlendirildiğinden ve bağlandığından emin olmak ve seri monitörün doğru baud hızına ayarlandığını doğrulamak yer alır. Herhangi bir sorun ortaya çıkarsa, bağlantılarınızı ve kablolamanızı tekrar kontrol edin.

Video Zaman Damgaları

  • 00:00 Başlangıç
  • 1:45 ESP32'de Mikro SD kart tanıtımı
  • 3:46 Dokümantasyon sayfası
  • 4:43 Arduino Kodu
  • 8:09 Arduino IDE'de ESP32 Kartı ve COM portunu seçme
  • 9:51 Mikro SD Karta yazma gösterimi
  • 11:12 Yazılan dosyaları PC'de görüntüleme

Görseller

ESP32-40-micro-sd-card-1
ESP32-40-micro-sd-card-1
ESP32-40-micro-sd-card-2
ESP32-40-micro-sd-card-2
841-ESP32 Tutorial 40/55- Arduino code for micro SD card
Dil: C++
#include "SD_MMC.h"

void setup() {
  Serial.begin(115200); // Initialize serial communication
  if (!SD_MMC.begin()) { // Check if SD card is mounted successfully
    Serial.println("Failed to mount SD card"); // Print error message if SD card failed to mount
    return;
  }

  // Create a file in the root directory of SD card and open it in write mode.
  File file = SD_MMC.open("/test.txt", FILE_WRITE); 
  if (!file) {
    Serial.println("Failed to open file for writing"); // Print error message if file failed to open
    return;
  }
  if (file.println("Test file write")) { // Write a line of text to the file
    Serial.println("File write successful"); // Print success message if write operation is successful
  } else {
    Serial.println("File write failed"); // Print error message if write operation failed
  }
  file.close(); // Close the file

  File root = SD_MMC.open("/"); // Open the root directory of SD card
  if (!root) {
    Serial.println("Failed to open directory"); // Print error message if directory failed to open
    return;
  }
  Serial.println("Files found in root directory:"); // Print the list of files found in the root directory
  while (File file = root.openNextFile()) { // Loop through all the files in the root directory
    Serial.print("  ");
    Serial.print(file.name()); // Print the filename
    Serial.print("\t");
    Serial.println(file.size()); // Print the filesize
    file.close(); // Close the file
  }
}
void loop() {} // Empty loop function, does nothing

İhtiyacın olabileceğini düşünüyor

Dosyalar📁

Dosya mevcut değil.