Arduino Micro SD Card Adapter Catalex

Posted on

Micro SD Arduino

Micro SD Arduino Card Adapter Catalex Dengan Arduino – Assalamu’alaikum teman-teman semua. Kali kita akan belajar bagaimana caranya mengakses micro sd card adapter menggunakan Arduino Uno. Akan ada banyak manfaat dari module micro sd , salah satunya adalah untuk data logger.

Micro SD Adapter adalah sebuah  module yang digunakan untuk membaca data dari memory micro SD. Untuk dapat berkomunikasi dengan arduino, module menggunakan komunikasi SPI (Serial Parallel Interface) yang mana menggunakan pin SCK, MISO, MOSI dan CS.

Pada tutorial , saya menggunaka modul Micro SD card Adapter dengan merek CATALEX. Untuk tampilannya seperti .

Arduino Micro SD Arduino Card Adapter Catalex

Rangkian MicroSD Ardino

Sebelum masuk ke kode program, kita hubungkan terlebih dahulu micro SD Module ke Arduino. Untuk komunikasi menggunakan SPI. Perhatikan gambar berikut:

Arduino Micro SD Arduino Card Adapter Catalex

Tabel koneksi untuk rangkaian di atas:

 Arduino Uno MicroSD Module
 5V VCC
 GND GND
 13 SCK
 12 MISO
 11 MOSI
 4 CS

Untuk pin CS, pada rangkaian di atas kita gunakan pin 4 dari Arduino. Anda bisa mengubah dari pin 4 ke pin lain pada Arduino.

Setelah rangkaian selesai dihubungkan, masukkan kartu memori ke dalam modul . Untuk langkah pertama, hal yang harus kita lakukan adalah mengecek atau memastikan kartu memori dapat dibaca dengan benar.

Cek Kartu Memori (baca informasi MicroSD)

Pada langkah kita harus memastikan bahwa microSD yang kita gunakan, dapat terbaca oleh Arduino. Oleh karena itu, kita menggunakan baris program dibawah .

Silahkan upload ke Arduino Uno anda:

/*
  created  28 Mar 2011
  by Limor Fried
  modified 9 Apr 2012
  by Tom Igoe
*/
// include the SD library:
#include <SPI.h>
#include <SD.h>

Sd2Card card;
SdVolume volume;
SdFile root;

//Jika pakai SD Card Module, gunakan 4
//Jika pakai SD Shield, gunakan 10
const int chipSelect = 4;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.println("Mulai Pembacaan MicroSD...");

  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("Pembacaan Micro SD gagal!");
    Serial.println("* Apa koneksi telah benar?");
    Serial.println("* Atau kartu memori belum di masukkan?");
    while (1);
  } else {
    Serial.println("Kartu Memori MicroSD terbaca.");
  }

  // Tampilkan jenis memori yang digunakan
  Serial.println();
  Serial.print("Tipe memori      : ");
  switch (card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Sekarang kita akan mencoba membuka 'volume' / 'partisi' - seharusnya FAT16 atau FAT32
  if (!volume.init(card)) {
    Serial.println("Tidak dapat menemukan partisi FAT16 / FAT32. n Pastikan Anda telah memformat kartunya");
    while (1);
  }

  Serial.print("Clusters         : ");
  Serial.println(volume.clusterCount());
  Serial.print("Blok x Cluster   : ");
  Serial.println(volume.blocksPerCluster());

  Serial.print("Total Blocks     : ");
  Serial.println(volume.blocksPerCluster() * volume.clusterCount());
  Serial.println();

  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("Tipe sistem file     :  FAT");
  Serial.println(volume.fatType(), DEC);

  volumesize = volume.blocksPerCluster();    // cluster adalah kumpulan blok
  volumesize *= volume.clusterCount();       // kita akan memiliki banyak cluster
  uint32_t kb = volumesize /= 2;                // Blok kartu SD selalu 512 byte (2 blok berukuran 1KB)
  uint32_t mb = volumesize /= 1024;
  uint32_t gb = volumesize / 1024;
  Serial.println((String)"Ukuran penyimpanan   :  " + kb + " Kb atau " + mb + " Mb atau " + gb + " Gb");
  Serial.println("------------------------------------------------------------");
  Serial.println("Isi dalam memori (name, date and size in bytes): ");
  root.openRoot(volume);

  // daftar semua file di kartu dengan tanggal dan ukuran
  root.ls(LS_R | LS_DATE | LS_SIZE);
}

void loop(void) {
}

Hasilnya adalah sebagai berikut:


Buat File di MicroSD

Ada 2 cara membuat file, secara manual dan otomatis menggunakan kode program. Secara manual, silahkan buat langusng dikomputer dan simpan file dengan format .txt di microSD. Untuk membuat file dengan program saya buatkan programnya dibawah .

Perhatian!

  1. Untuk nama file maksimal 8 karakter dan tambahkan file ekstensinya “.txt”. Contohnya “Data_Log.txt”
  2. Untuk nama file tidak Case Sensitive atau tidak mengenal huruf kapital atau huruf kecil. Misalnya di microSD nama file adalah “DATA_LOG.TXT” sedangkan nama file di program “data_log.txt”, seperti itu tidak error, masih dapat terbaca dan terdeteksi, asalkan namanya sama.

Sekarang kita akan coba membuat sebuah file dengan format “txt” yang dapat menyimpan teks. Dengan format kita dapat membuat data logger. Adapun perintah dasarnya adalah:

myFile = SD.open(namaFile, FILE_WRITE);

Berikut adalah programnya:

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

File myFile;

String namaFile;

//Jika pakai SD Card Module, gunakan 4
//Jika pakai SD Card Shield, gunakan 10
const int chipSelect = 4;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  Serial.println("Mulai Pembacaan MicroSD...");

  if (!SD.begin(chipSelect)) {
    Serial.println("Pembacaan Micro SD gagal!");
    Serial.println("* Apa koneksi telah benar?");
    Serial.println("* Atau kartu memori belum di masukkan?");
    while (1);
  } else {
    Serial.println("Kartu Memori MicroSD terbaca.");
    Serial.println("Untuk membuat sebuah file, gunakan format .txt.");
    Serial.print("Tuliskan nama file: ");
  }

  while (Serial.available() == 0) {}

  namaFile = Serial.readString();
  Serial.println(namaFile);

  namaFile.trim();

  // cek nama yang ingin dibuat didalam memori
  if (SD.exists(namaFile)) {
    Serial.println("File " + namaFile + " telah ada di memori. Coba nama yang lain");
  } else {
    Serial.println("File " + namaFile + " belum ada di memori.");

    // Buat sebuah file sesuai yang diinginkan
    Serial.println("Membuat file " + namaFile + "...");
    myFile = SD.open(namaFile, FILE_WRITE);
    myFile.close();
    Serial.println("Selamat. File " + namaFile + " telah dibuat");
  }

}

void loop() {
  // put your main code here, to run repeatedly:

}

Disini saya memasukkan nama dengan nama “tes”. Maka hasilnya adalah sebagia berikut:


Tulis Data Ke File MicroSD

Setelah microSD memiliki sebuah file yang telah dibuat, maka langkah selanjutnya adalah menulis data ke file tersebut.  Perintah dasarnya adalah:

myFile.println(“data”);

Untuk programnya bisa gunakan berikut:

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

File myFile;

String namaFile = "tes.txt";

//Jika pakai SD Card Module, gunakan 4
//Jika pakai SD Shield, gunakan 10
const int chipSelect = 4;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  Serial.println("Mulai Pembacaan MicroSD...");

  if (!SD.begin(chipSelect)) {
    Serial.println("Pembacaan Micro SD gagal!");
    Serial.println("* Apa koneksi telah benar?");
    Serial.println("* Atau kartu memori belum di masukkan?");
    while (1);
  } else {
    Serial.println("Kartu Memori MicroSD terbaca.");
  }

  if (SD.exists(namaFile)) {
    myFile = SD.open(namaFile, FILE_WRITE);
    myFile.println("testing 1, 2, 3.");
    myFile.close();
    Serial.println("Tulis data selesai.");
  } else {
    Serial.println("error opening test.txt");
  }
}

void loop() {
  // put your main code here, to run repeatedly:

}

Dari kode program diatas, hasilnya adalah sebagai berikut:

Micro SD Arduino Card Adapter Catalex Dengan Arduino

(a) adalah informasi dari serial monitor saat penulisan data ke file microSD, sedangkan (b) adalah hasil dari penulisan data tersebut. Kemudian file saya buka menggunakan teks editor (hitam) dan menampilkan data yang telah tertulis dari Arduino.

Baca Data dari file MicroSD

Jika kita ingin membaca data yang telah dituliskan ke file tadi, maka perintah dasarnya adalah:

Serial.write(myFile.read());

Perintah tersebut diletakkan didalam perulangan untuk membaca semua data. Adapun program membaca data dari file yang ada di microSD menggunakan Arduino adalah sebagai berikut:

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

File myFile;

String namaFile = "tes.txt";

//Jika pakai SD Card Module, gunakan 4
//Jika pakai SD Shield, gunakan 10
const int chipSelect = 4;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  Serial.println("Mulai Pembacaan MicroSD...");

  if (!SD.begin(chipSelect)) {
    Serial.println("Pembacaan Micro SD gagal!");
    Serial.println("* Apa koneksi telah benar?");
    Serial.println("* Atau kartu memori belum di masukkan?");
    while (1);
  } else {
    Serial.println("Kartu Memori MicroSD terbaca.");
  }


  if (SD.exists("tes.txt")) {
    Serial.print("Data yg terbaca: ");
    myFile = SD.open("tes.txt");

    while (myFile.available()) {
      Serial.write(myFile.read());
    }

    myFile.close();
  } else {
    Serial.println("error opening test.txt");
  }
}

void loop() {
  // put your main code here, to run repeatedly:

}

Hasilnya adalah:

Micro SD Arduino Card Adapter Catalex Dengan Arduino

Hapus File dari MicroSD

Jika anda merasa ingin menghapus file yang ada di microSD, maka perintah yang digunakan adalah:

SD.remove(“namaFile”);

Adapun kode programnya adalah:

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

File myFile;

String namaFile = "tes.txt";

//Jika pakai SD Card Module, gunakan 4
//Jika pakai SD Shield, gunakan 10
const int chipSelect = 4;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  Serial.println("Mulai Pembacaan MicroSD...");

  if (!SD.begin(chipSelect)) {
    Serial.println("Pembacaan Micro SD gagal!");
    Serial.println("* Apa koneksi telah benar?");
    Serial.println("* Atau kartu memori belum di masukkan?");
    while (1);
  } else {
    Serial.println("Kartu Memori MicroSD terbaca.");
  }

  SD.remove("testing.txt");

  if (SD.exists("testing.txt")) {
    Serial.println("File masih ada");
  } else {
    Serial.println("File telah terhapus");
  }
}

void loop() {
  // put your main code here, to run repeatedly:

}

Semoga dapat membantu teman-teman semua dan semoga bermanfaat.

Tags: