SINAU PROGRAMMING
SINAU PROGRAMMING
  • Home
  • Source Code
  • Social
  • CONTROL
    • Internet of Think (IoT)
    • ESP
      • NodeMcu
      • Lora
      • WeMos
      • Esp 32 Dev
      • Node 32s
    • Arduino
    • Raspberry
    • Proteus
  • MATLAB
    • MATLAB PROJECT
    • PLC
      • Omron
      • Mitsubishi
      • Siemens
      • Schneider
      • ArduinoPLC
    • Arduino
    • Basic & Doc
  • Contact Us

 PRIVACY POLICY

Salah satu prioritas utama blog/website sinauprogramming.com, adalah privasi pengunjung kami. Dokumen Kebijakan Privasi ini berisi jenis informasi yang dikumpulkan dan dicatat oleh ainamulyana.com dan bagaimana kami menggunakannya.


Informasi yang Kami Kumpulkan

sinauprogramming.com mengikuti prosedur standar menggunakan file log. File-file ini mencatat pengunjung ketika mereka mengunjungi situs web. Informasi yang dikumpulkan oleh file log termasuk alamat protokol internet (IP), jenis browser, Penyedia Layanan Internet (ISP), tanggal dan waktu, halaman rujukan/keluar, dan mungkin jumlah klik. Ini tidak terkait dengan informasi apa pun yang dapat diidentifikasi secara pribadi. Tujuan informasi adalah untuk menganalisis tren, mengelola situs, melacak pergerakan pengguna di situs web, dan mengumpulkan informasi demografis.


Cookies

sinauprogramming.com menggunakan ‘cookie’. Cookie digunakan untuk menyimpan informasi seperti preferensi pengunjung dan halaman yang diakses atau dikunjungi pengunjung pada situs web ini. Informasi tersebut kami gunakan untuk mengoptimalkan pengalaman pengguna dengan menyesuaikan konten halaman web kami.


Kebijakan Privasi Pihak Ketiga

Kebijakan Privasi sinauprogramming.com tidak berlaku untuk pengiklan atau situs web lain. Karena itu, kami menyarankan Anda untuk membaca seksama masing-masing Kebijakan Privasi dari pihak ketiga untuk informasi yang lebih rinci. Anda berhak untuk menonaktifkan cookies pada browser Anda.


Informasi Anak

sinauprogramming.com tidak mengumpulkan informasi identifikasi pribadi termasuk terhadap anak-anak di bawah umur. Salah satu prioritas kami adalah membantu perlindungan untuk anak-anak saat menggunakan internet. Kami mendorong orang tua dan wali untuk mengamati, berpartisipasi, memantau, dan membimbing aktivitas online mereka.


Persetujuan

Dengan menggunakan situs website/blog sinauprogramming.com, Anda dengan ini menyetujui Kebijakan Privasi kami dan menyetujui syarat dan ketentuannya.




 Part yang dibutuhkkan:

  • ESP32 development board 
  • MicroSD Card Module
  • MicroSD Card
  • Jumper Wires
  • Breadboard

Modul kartu microSD berkomunikasi menggunakan protokol komunikasi SPI. Anda dapat menghubungkannya ke ESP32 menggunakan pin SPI default.

MicroSD card moduleESP32
3V33.3V
CSGPIO 5
MOSIGPIO 23
CLKGPIO 18
MISOGPIO 19
GNDGND

Pada bagian ini, kami akan menunjukkan kepada Anda bagaimana menangani file dengan kartu microSD menggunakan ESP32 dan Arduino IDE. Kami akan menggunakan contoh pustaka SD untuk mendemonstrasikan semua fungsi penanganan file utama termasuk membaca, menghapus, menambahkan file, dll. Pustaka SD untuk ESP32 menggunakan pengontrol SPI.

Persiapan Micro SD Card Module

Sebelum memasukkan Kartu SD ke dalam modul pembaca kartu SD, Anda perlu memformat kartu dengan benar sebelum Anda benar-benar dapat menggunakannya, jika tidak, Anda akan mengalami masalah karena modul pembaca kartu SD hanya dapat membaca sistem file FAT16 atau FAT32. Jika kartu sd Anda baru maka kemungkinan besar kartu tersebut diformat pabrik, itu mungkin juga tidak berfungsi karena kartu pra-format dilengkapi dengan sistem file FAT, bagaimanapun juga, lebih baik memformat kartu lama untuk mengurangi masalah selama pengoperasian.


Ada beberapa contoh di Arduino IDE yang menunjukkan cara menangani file di kartu microSD menggunakan ESP32. Di Arduino IDE, buka File > Examples > SD(esp32) > SD_Test,





Program Micro SD Card Module

Library disini


/*
 * Connect the SD card to the following pins:
 *
 * SD Card | ESP32
 *    D2       -
 *    D3       SS
 *    CMD      MOSI
 *    VSS      GND
 *    VDD      3.3V
 *    CLK      SCK
 *    VSS      GND
 *    D0       MISO
 *    D1       -
 */
#include "FS.h"
#include "SD.h"
#include "SPI.h"

void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
    Serial.printf("Listing directory: %s\n", dirname);

    File root = fs.open(dirname);
    if(!root){
        Serial.println("Failed to open directory");
        return;
    }
    if(!root.isDirectory()){
        Serial.println("Not a directory");
        return;
    }

    File file = root.openNextFile();
    while(file){
        if(file.isDirectory()){
            Serial.print("  DIR : ");
            Serial.println(file.name());
            if(levels){
                listDir(fs, file.path(), levels -1);
            }
        } else {
            Serial.print("  FILE: ");
            Serial.print(file.name());
            Serial.print("  SIZE: ");
            Serial.println(file.size());
        }
        file = root.openNextFile();
    }
}

void createDir(fs::FS &fs, const char * path){
    Serial.printf("Creating Dir: %s\n", path);
    if(fs.mkdir(path)){
        Serial.println("Dir created");
    } else {
        Serial.println("mkdir failed");
    }
}

void removeDir(fs::FS &fs, const char * path){
    Serial.printf("Removing Dir: %s\n", path);
    if(fs.rmdir(path)){
        Serial.println("Dir removed");
    } else {
        Serial.println("rmdir failed");
    }
}

void readFile(fs::FS &fs, const char * path){
    Serial.printf("Reading file: %s\n", path);

    File file = fs.open(path);
    if(!file){
        Serial.println("Failed to open file for reading");
        return;
    }

    Serial.print("Read from file: ");
    while(file.available()){
        Serial.write(file.read());
    }
    file.close();
}

void writeFile(fs::FS &fs, const char * path, const char * message){
    Serial.printf("Writing file: %s\n", path);

    File file = fs.open(path, FILE_WRITE);
    if(!file){
        Serial.println("Failed to open file for writing");
        return;
    }
    if(file.print(message)){
        Serial.println("File written");
    } else {
        Serial.println("Write failed");
    }
    file.close();
}

void appendFile(fs::FS &fs, const char * path, const char * message){
    Serial.printf("Appending to file: %s\n", path);

    File file = fs.open(path, FILE_APPEND);
    if(!file){
        Serial.println("Failed to open file for appending");
        return;
    }
    if(file.print(message)){
        Serial.println("Message appended");
    } else {
        Serial.println("Append failed");
    }
    file.close();
}

void renameFile(fs::FS &fs, const char * path1, const char * path2){
    Serial.printf("Renaming file %s to %s\n", path1, path2);
    if (fs.rename(path1, path2)) {
        Serial.println("File renamed");
    } else {
        Serial.println("Rename failed");
    }
}

void deleteFile(fs::FS &fs, const char * path){
    Serial.printf("Deleting file: %s\n", path);
    if(fs.remove(path)){
        Serial.println("File deleted");
    } else {
        Serial.println("Delete failed");
    }
}

void testFileIO(fs::FS &fs, const char * path){
    File file = fs.open(path);
    static uint8_t buf[512];
    size_t len = 0;
    uint32_t start = millis();
    uint32_t end = start;
    if(file){
        len = file.size();
        size_t flen = len;
        start = millis();
        while(len){
            size_t toRead = len;
            if(toRead > 512){
                toRead = 512;
            }
            file.read(buf, toRead);
            len -= toRead;
        }
        end = millis() - start;
        Serial.printf("%u bytes read for %u ms\n", flen, end);
        file.close();
    } else {
        Serial.println("Failed to open file for reading");
    }


    file = fs.open(path, FILE_WRITE);
    if(!file){
        Serial.println("Failed to open file for writing");
        return;
    }

    size_t i;
    start = millis();
    for(i=0; i<2048; i++){
        file.write(buf, 512);
    }
    end = millis() - start;
    Serial.printf("%u bytes written for %u ms\n", 2048 * 512, end);
    file.close();
}

void setup(){
    Serial.begin(115200);
    if(!SD.begin()){
        Serial.println("Card Mount Failed");
        return;
    }
    uint8_t cardType = SD.cardType();

    if(cardType == CARD_NONE){
        Serial.println("No SD card attached");
        return;
    }

    Serial.print("SD Card Type: ");
    if(cardType == CARD_MMC){
        Serial.println("MMC");
    } else if(cardType == CARD_SD){
        Serial.println("SDSC");
    } else if(cardType == CARD_SDHC){
        Serial.println("SDHC");
    } else {
        Serial.println("UNKNOWN");
    }

    uint64_t cardSize = SD.cardSize() / (1024 * 1024);
    Serial.printf("SD Card Size: %lluMB\n", cardSize);

    listDir(SD, "/", 0);
    createDir(SD, "/mydir");
    listDir(SD, "/", 0);
    removeDir(SD, "/mydir");
    listDir(SD, "/", 2);
    writeFile(SD, "/hello.txt", "Hello ");
    appendFile(SD, "/hello.txt", "World!\n");
    readFile(SD, "/hello.txt");
    deleteFile(SD, "/foo.txt");
    renameFile(SD, "/hello.txt", "/foo.txt");
    readFile(SD, "/foo.txt");
    testFileIO(SD, "/test.txt");
    Serial.printf("Total space: %lluMB\n", SD.totalBytes() / (1024 * 1024));
    Serial.printf("Used space: %lluMB\n", SD.usedBytes() / (1024 * 1024));
}

void loop(){

}


Hasil Akan ditampilkan pada Serial Monitor








 Kartu SD atau kartu Micro SD banyak digunakan dalam berbagai aplikasi, seperti pencatatan data, visualisasi data, dan masih banyak lagi. Modul Micro SD Card Adapter memudahkan kita untuk mengakses kartu SD ini dengan mudah. Modul Adaptor Kartu Micro SD adalah modul yang mudah digunakan dengan antarmuka SPI dan pengatur tegangan 3.3V terpasang untuk menyediakan pasokan yang tepat ke kartu SD. kali ini kita akan membuat proyek “Menyimpan dan membaca data microSD dengan Arduino UNO”. MicroSD card agar lebih mudah koneksinya dengan Arduino kita tambahkan modul microSD Card.

Module micro sd merupakan modul untuk mengakses micro SD untuk pembacaan maupun penulisan data dengan menggunakan sistem antarmuka SPI (Serial Parallel Interface).

Diagram Sirkuit untuk Modul Kartu Micro SD

Modul ini dibuat dengan komponen yang sangat umum dan tersedia. Diagram Skema Modul Kartu Micro SD ditunjukkan di bawah ini.


Seperti yang kalian lihat pada skema di atas, kami memiliki konektor Kartu Micro SD yang merupakan konektor tipe push-out dan konektor tersebut terhubung ke IC pemindah level logika. Tegangan operasi maksimum modul adalah 3.6V sehingga IC pemindah level logika menjadi sangat penting. Untuk memberi daya pada kartu SD dan konverter level logika, kami menggunakan LDO LM1117 yang karenanya modul ini dapat bekerja dengan level logika 3.3V dan 5V. Konektor JP1 di bagian bawah skema mewakili konektor di bagian bawah modul kartu micro SD.

Control Interface Module

  • GND : negatif power supply
  • VCC : positif power supply
  • MISO, MOSI, SCK : SPI bus
  • CS : chip select signal pin

Fitur dan spesifikasi

  • Mendukung pembacaan kartu memori SD Card biasa (<=2G) maupun SDHC card (high-speed card) (<=32G)
  • Tegangan operasional dapat menggunakan tegangan 5V atau 3.3V
  • Arus operasional yang digunakan yaitu 80mA (0.2~200mA)
  • Menggunakan antarmuka SPI
  • Pada modul ini sudah terdapat 4 lubang baut guna untuk pemasangan pada rangkaian lainnya
  • Ukuran modul yaitu 42 x 24 x 12 mm

Arduino Micro SD Card Module Circuit Connection Diagram


Sekarang kita telah sepenuhnya memahami cara kerja Modul Kartu Micro SD, kita dapat menghubungkan semua kabel yang diperlukan ke Arduino dan menulis kode untuk mengeluarkan semua data dari sensor. Diagram Koneksi Modul Kartu Micro SD dengan Arduino ditunjukkan di bawah ini-


Tabel untuk koneksi perangkaian skema diatas


ARDUINO UNO PIN

MICROSD CARD MODULE PIN

GNDGND
5VVCC
12MISO
11MOSI
13SCK
4CS
Menghubungkan modul Micro SD Card ke Arduino UNO sangat sederhana kita hanya perlu menghubungkan jalur SPI yaitu SCK, MISO, dan MOSI, ke jalur SPI Arduino yaitu SCK(D13), MOSI(D12), dan MISO( D11) dan jika ada beberapa perangkat yang terhubung di bus SPI maka kita juga perlu menghubungkan jalur CS ke Arduino. Selain itu VCC dan Ground digunakan untuk memberi daya pada perangkat.

Persiapan Micro SD Card Module

Sebelum memasukkan Kartu SD ke dalam modul pembaca kartu SD, Anda perlu memformat kartu dengan benar sebelum Anda benar-benar dapat menggunakannya, jika tidak, Anda akan mengalami masalah karena modul pembaca kartu SD hanya dapat membaca sistem file FAT16 atau FAT32. Jika kartu sd Anda baru maka kemungkinan besar kartu tersebut diformat pabrik, itu mungkin juga tidak berfungsi karena kartu pra-format dilengkapi dengan sistem file FAT, bagaimanapun juga, lebih baik memformat kartu lama untuk mengurangi masalah selama pengoperasian.


Program Micro SD Card Module

Library disini


#include <SD.h>
#include <SPI.h>
 
Sd2Card card;
SdVolume volume;
SdFile root;
 
const int chipSelect = 4;
 
void setup()
{
//set up untuk komunikasi serial melalui serial monitor
Serial.begin(9600);
while (!Serial) {;
  }
 
Serial.print("\nInitializing SD card...");
Serial.println();
//untuk memastikan sd card terbaca
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("inisialisasi gagal. Hal untuk memeriksa:");
Serial.println("* Apakah kartu sudah dimasukkan?");
Serial.println("* Apakah pengkabelan sudah benar?");
Serial.println("* Anda mengubah pin chipselect yang menyesuaikan dengan module?");
while (1);
  } else {
    Serial.println("Cek Wiringmu dan pastikan Micro SD sudah dimasukkan");
  }
 
// Mencetak jenis kartu
Serial.print("\nTipe Micro SD : ");
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("tidak diketahui"); }
 
if (!volume.init(card)) {
Serial.println("tidak bisa menemukan FAT16 / partisi FAT32. \ Pastikan telah diformat kartu");
while (1);
}
 
// Mencetak jenis dan ukuran volume FAT-jenis pertama
uint32_t volumesize;
Serial.print("\nVolume type is FAT");
Serial.println(volume.fatType(), DEC);
 
volumesize = volume.blocksPerCluster();
volumesize *= volume.clusterCount();
volumesize /= 2;  
Serial.print("Volume size (bytes): ");
Serial.println(volumesize);
Serial.print("Volume size (Kbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (Mbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
 
Serial.println("\nFile yang ditemukan pada kartu (nama, tanggal dan ukuran dalam bytes): ");
 
root.openRoot(volume);
 
root.ls(LS_R | LS_DATE | LS_SIZE);
}
 
void loop(void) {
}


Hasil Akan ditampilkan pada Serial Monitor
Newer Posts Older Posts Home





POPULAR POSTS

  • Skema Power Supply Switching SMPS
  • Proteus 8.5 Full Version Professional
  • Serial Communication UART Raspberry Pico (SoftSerial)
  • Artificial Neural Network for Identification MATLAB
  • Tutorial ILI9341 TFT SPI LCD touch Screen
  • Pulse Oxymetry (SPO2) + Raspberry Pi
  • Menampilkan Text Pada LCD 16x2 I2C Arduino

ABOUT ME

cobabaru

Sinau Programming

SUBSCRIBE & FOLLOW

Training


Contact Form

Name

Email *

Message *

Categories

  • alkes 1
  • Android 3
  • Arduino 35
  • Basic & Doc 12
  • centrifuge 1
  • ESP32 8
  • Internet of Things (IoT) 23
  • LCD TFT SPI 2
  • MATLAB 6
  • Metode kendali 1
  • Modul Charger 1
  • Nextion 4
  • NodeMcu 8
  • oled 1
  • Pattern Recognition 2
  • Perbaikan 1
  • PID 2
  • PLC HMI VTSCADA ARDUINO 3
  • PRIVACY POLICY 1
  • Proteus 11
  • Python 1
  • raspberry 5
  • Teknik Elektromedik 2
  • Thingsboard 1
  • Video 5
  • Wemos 4

sinau_programming

Sinau Programming Distributed by Sinau Programming