Search Code

Tutorial ESP32 40/55 - Membaca dan menulis ke Kartu Micro SD | Kit Pembelajaran IoT ESP32 SunFounder

Tutorial ESP32 40/55 - Membaca dan menulis ke Kartu Micro SD | Kit Pembelajaran IoT ESP32 SunFounder

Dalam tutorial ini, kita akan mempelajari cara membaca dari dan menulis ke kartu micro SD menggunakan ESP32 dan papan ekstensi ESP32 SunFounder. Ini akan memungkinkan kita untuk menyimpan data dan mengambilnya kembali nanti, yang sangat penting untuk banyak aplikasi IoT. Di akhir tutorial ini, Anda akan memiliki pengaturan yang berfungsi yang dapat membuat, menulis ke, dan membaca file dari kartu micro SD.

Untuk memulai, pastikan kartu micro SD Anda diformat dengan benar ke FAT32, karena ini adalah sistem file yang diperlukan agar ESP32 dapat berinteraksi dengan kartu tersebut. Kita akan menggunakan pustaka SD_MMC, yang menyederhanakan proses mengakses file di kartu micro SD. Penting untuk dicatat bahwa kapasitas maksimum untuk kartu micro SD tidak boleh melebihi 32 GB.

Penjelasan Perangkat Keras

Komponen utama dalam proyek ini termasuk mikrokontroler ESP32 dan modul kartu micro SD. ESP32 adalah mikrokontroler serbaguna yang dilengkapi dengan kemampuan Wi-Fi dan Bluetooth bawaan, menjadikannya ideal untuk aplikasi IoT. Modul kartu micro SD memungkinkan ESP32 untuk membaca dari dan menulis ke kartu, memungkinkan penyimpanan data untuk berbagai aplikasi.

Kartu micro SD beroperasi dengan menggunakan sistem file untuk menyimpan data secara terstruktur. Kartu ini berkomunikasi dengan ESP32 melalui antarmuka SD_MMC, yang memungkinkan pembacaan dan penulisan file secara efisien. Pengaturan ini dapat digunakan untuk mencatat data, menyimpan gambar, atau aplikasi lain apa pun yang memerlukan persistensi data.

Instruksi Pengkabelan

ESP32-40-micro-sd-card-1

Untuk menghubungkan kartu micro SD ke ESP32, ikuti langkah-langkah berikut:

Pertama, hubungkan pin daya dan ground. Hubungkan pin VCC modul kartu micro SD ke pin 3.3V pada ESP32, dan hubungkan pin GND ke salah satu pin GND pada ESP32. Selanjutnya, hubungkan pin data: hubungkan pin CS (Chip Select) modul kartu micro SD ke pin 5 pada ESP32, pin MOSI (Master Out Slave In) ke pin 23, pin MISO (Master In Slave Out) ke pin 19, dan pin SCK (Serial Clock) ke pin 18. Pastikan koneksi ini aman untuk menghindari masalah komunikasi.

Jika Anda menggunakan papan ekstensi yang berbeda, nomor pin mungkin berbeda, jadi lihat dokumentasi khusus untuk papan Anda. Pengkabelan sangat penting untuk keberhasilan operasi membaca dan menulis file ke kartu micro SD.

Contoh Kode & Penjelasan

Sekarang, mari kita lihat bagian utama dari kode yang berinteraksi dengan kartu micro SD. Pengaturan dimulai dengan menginisialisasi komunikasi serial dan memeriksa apakah kartu micro SD berhasil dipasang.

Serial.begin(115200); // Inisialisasi komunikasi serial
if (!SD_MMC.begin()) { // Periksa apakah kartu SD berhasil dipasang
  Serial.println("Gagal memasang kartu SD"); // Cetak pesan kesalahan jika kartu SD gagal dipasang
  return;
}

Dalam potongan kode ini, komunikasi serial diatur ke baud rate 115200, yang penting untuk memantau keluaran. Fungsi SD_MMC.begin() mencoba memasang kartu SD; jika gagal, pesan kesalahan dicetak ke monitor serial.

Bagian berikutnya dari kode membuat file baru di kartu micro SD dan menulis satu baris teks ke dalamnya.

File file = SD_MMC.open("/test.txt", FILE_WRITE); 
if (!file) {
  Serial.println("Gagal membuka file untuk penulisan"); // Cetak pesan kesalahan jika file gagal dibuka
  return;
}
if (file.println("Tes penulisan file")) { // Tulis satu baris teks ke file
  Serial.println("Penulisan file berhasil"); // Cetak pesan sukses jika operasi penulisan berhasil
} else {
  Serial.println("Penulisan file gagal"); // Cetak pesan kesalahan jika operasi penulisan gagal
}
file.close(); // Tutup file

Di sini, file bernama test.txt dibuka dalam mode tulis. Jika file berhasil dibuka, ia menulis satu baris teks dan mencetak pesan sukses. Jika operasi penulisan gagal, pesan kesalahan dicetak sebagai gantinya. Terakhir, file ditutup untuk memastikan perubahan tersimpan.

Kode ini juga membaca file dari direktori root kartu micro SD dan mencetak nama serta ukurannya.

File root = SD_MMC.open("/"); // Buka direktori root kartu SD
while (File file = root.openNextFile()) { // Ulangi semua file di direktori root
  Serial.print(file.name()); // Cetak nama file
  Serial.print("\t");
  Serial.println(file.size()); // Cetak ukuran file
  file.close(); // Tutup file
}

Potongan kode ini membuka direktori root dan mengulangi semua file, mencetak nama dan ukurannya ke monitor serial. Ini berguna untuk memverifikasi bahwa data berhasil ditulis dan untuk melihat isi kartu SD.

Untuk detail lebih lanjut, lihat kode lengkap yang dimuat di bawah artikel.

Demonstrasi / Apa yang Diharapkan

Setelah mengunggah kode dan mengatur ulang ESP32, Anda akan melihat pesan di monitor serial yang menunjukkan apakah kartu SD berhasil dipasang dan apakah operasi file berhasil. Anda juga akan melihat daftar file yang ditemukan di direktori root, yang mengonfirmasi bahwa data ditulis dengan benar (dalam video pada 13:45).

Kesalahan umum termasuk memastikan bahwa kartu micro SD diformat dengan benar dan terhubung, serta memverifikasi bahwa monitor serial diatur ke baud rate yang benar. Jika ada masalah, periksa kembali pengkabelan dan koneksi Anda.

Stempel Waktu Video

  • 00:00 Mulai
  • 1:45 Pengenalan kartu Micro SD pada ESP32
  • 3:46 Halaman dokumen
  • 4:43 Kode Arduino
  • 8:09 Memilih papan ESP32 dan port COM di Arduino IDE
  • 9:51 Demonstrasi penulisan kartu MicroSD
  • 11:12 Melihat file yang ditulis di PC

Gambar

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
Bahasa: 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

Hal-hal yang mungkin Anda butuhkan

Berkas📁

Tidak ada file tersedia.