ESP32 - Cartão SD

Neste guia, vamos explorar como usar um Cartão Micro SD com o ESP32. Vamos abordar os seguintes tópicos:

Sobre o Módulo de Cartão Micro SD

O Módulo de Cartão Micro SD pode se comunicar com o ESP32 e pode receber um Cartão Micro SD. Em outras palavras, o Módulo de Cartão Micro SD é uma ponte entre o ESP32 e o Cartão Micro SD

Pinagem

Pinagem do Módulo de Cartão Micro SD

O Módulo de Cartão Micro SD tem 6 pinos:

  • Pino VCC: conecte ao pino 5V do ESP32.
  • Pino GND: conecte este pino ao GND do ESP32.
  • Pino MISO: (Master In Slave Out) conecte este pino ao pino MISO do ESP32.
  • Pino MOSI: (Master Out Slave In) conecte este pino ao pino MOSI do ESP32.
  • Pino SCK: conecte este pino ao pino SCK do ESP32.
  • Pino SS: (Slave Select) conecte este pino ao pino definido como pino SS no código do ESP32.

Preparação

  • Conecte o Cartão Micro SD ao PC usando um Leitor de Cartão SD USB 3.0
  • Verifique se o Cartão Micro SD está formatado em FAT16 ou FAT32 (pesquise no Google)

Diagrama de Ligação

Diagrama de Ligação do ESP32 com o Módulo de Cartão Micro SD

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

※ Nota:

Se você usar um shield Ethernet ou qualquer shield que tenha um slot para Cartão Micro SD, não precisa usar o Módulo de Cartão Micro SD. Basta inserir o Cartão Micro SD no slot de Cartão Micro SD do shield.

ESP32 - Como abrir um arquivo no Cartão Micro SD e criá-lo se não existir

Código ESP32

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS 5 // The ESP32 pin GPIO5 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { while (1) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); delay(1000); } } Serial.println(F("SD CARD INITIALIZED.")); if (!SD.exists("/esp32.txt")) { Serial.println(F("esp32.txt doesn't exist. Creating esp32.txt file...")); // create a new file by opening a new file and immediately close it myFile = SD.open("/esp32.txt", FILE_WRITE); myFile.close(); } // recheck if file is created or not if (SD.exists("/esp32.txt")) Serial.println(F("esp32.txt exists on SD Card.")); else Serial.println(F("esp32.txt doesn't exist on SD Card.")); } void loop() { }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
  • Abra a Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Insira o Cartão Micro SD no módulo de Cartão Micro SD
  • Faça a ligação entre o módulo de Cartão Micro SD e o ESP32 conforme o diagrama de ligação acima
  • Conecte o ESP32 ao PC usando o cabo USB
  • Abra o Serial Monitor na Arduino IDE
  • Copie o código acima e cole-o na Arduino IDE
  • Clique no botão Upload na Arduino IDE para carregar o código no ESP32
  • O resultado no Serial Monitor na primeira execução
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. esp32.txt doesn't exist. Creating esp32.txt file... esp32.txt exists on SD Card.
Ln 11, Col 1
ESP32 Dev Module on COM15
2
  • O resultado no Serial Monitor nas próximas execuções
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. esp32.txt exists on SD Card.
Ln 11, Col 1
ESP32 Dev Module on COM15
2

※ Nota:

Você pode NÃO ver a saída no Serial Monitor na primeira execução se o seu primeiro upload for feito antes de abrir o Serial Monitor.

  • Remova o Cartão Micro SD do módulo
  • Insira o Cartão Micro SD em um leitor de Cartão SD USB
  • Conecte o leitor de Cartão SD USB ao PC
  • Verifique se o arquivo existe ou não

ESP32 - Como gravar e ler dados em um arquivo no Cartão Micro SD

O código abaixo faz o seguinte:

  • Grava dados em um arquivo
  • Lê o conteúdo do arquivo caractere por caractere e o exibe no Serial Monitor
/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS 5 // The ESP32 pin GPIO5 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { while (1) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); delay(1000); } } Serial.println(F("SD CARD INITIALIZED.")); // open file for writing myFile = SD.open("/esp32.txt", FILE_WRITE); if (myFile) { myFile.println("Created by esp32io.com"); // write a line to esp32.txt myFile.println("Learn ESP32 and SD Card"); // write another line to esp32.txt myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } // open file for reading myFile = SD.open("/esp32.txt", FILE_READ); if (myFile) { while (myFile.available()) { char ch = myFile.read(); // read characters one by one from Micro SD Card Serial.print(ch); // print the character to Serial Monitor } myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } } void loop() { }
  • O Serial Monitor mostra o conteúdo do arquivo
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Created by newbiely.com Learn ESP32 and SD Card
Ln 11, Col 1
ESP32 Dev Module on COM15
2

※ Nota:

Por padrão, os dados serão adicionados ao final do arquivo. Se você reiniciar o ESP32 com o código acima, o texto será adicionado ao arquivo novamente ⇒ o Serial Monitor mostrará mais linhas, como abaixo:

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Created by newbiely.com Learn ESP32 and SD Card Created by newbiely.com Learn ESP32 and SD Card
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Você também pode remover o Cartão Micro SD do módulo e abri-lo no seu PC para verificar o conteúdo (é necessário um leitor de Cartão SD USB)

ESP32 - Como ler um arquivo no Cartão Micro SD linha por linha

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS 5 // The ESP32 pin GPIO5 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { while (1) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); delay(1000); } } Serial.println(F("SD CARD INITIALIZED.")); // open file for writing myFile = SD.open("/esp32.txt", FILE_WRITE); if (myFile) { myFile.println("Created by esp32io.com"); // write a line to esp32.txt myFile.println("Learn ESP32 and SD Card"); // write another line to esp32.txt myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } // open file for reading myFile = SD.open("/esp32.txt", FILE_READ); if (myFile) { int line_count = 0; while (myFile.available()) { char line[100]; // maximum is 100 characters, change it if needed int line_length = myFile.readBytesUntil('\n', line, 100); // read line-by-line from Micro SD Card line_count++; Serial.print(F("Line ")); Serial.print(line_count); Serial.print(F(": ")); Serial.write(line, line_length); // print the character to Serial Monitor // \n character is escaped by readBytesUntil function Serial.write('\n'); // print a new line charactor } myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } } void loop() { }
  • O resultado no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. Line 1: Created by newbiely.com Line 2: Learn ESP32 and SD Card
Ln 11, Col 1
ESP32 Dev Module on COM15
2

※ Nota:

Você pode ver mais linhas no Serial Monitor se o conteúdo do arquivo não tiver sido apagado antes.

ESP32 - Como sobrescrever um arquivo no Cartão Micro SD

Por padrão, o conteúdo será adicionado ao final do arquivo. A maneira mais simples de sobrescrever um arquivo é: apagar o arquivo existente e criar um novo com o mesmo nome

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS 5 // The ESP32 pin GPIO5 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { while (1) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); delay(1000); } } Serial.println(F("SD CARD INITIALIZED.")); SD.remove("/esp32.txt"); // delete the file if existed // create new file by opening file for writing myFile = SD.open("/esp32.txt", FILE_WRITE); if (myFile) { myFile.println("Created by esp32io.com"); // write a line to esp32.txt myFile.println("Learn ESP32 and SD Card"); // write another line to esp32.txt myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } // open file for reading myFile = SD.open("/esp32.txt", FILE_READ); if (myFile) { while (myFile.available()) { char ch = myFile.read(); // read characters one by one from Micro SD Card Serial.print(ch); // print the character to Serial Monitor } myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } } void loop() { }
  • O resultado no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. Created by newbiely.com Learn ESP32 and SD Card
Ln 11, Col 1
ESP32 Dev Module on COM15
2
  • Reinicie o ESP32
  • Verifique no Serial Monitor se o conteúdo do arquivo foi adicionado ou não.

Você também pode remover o Cartão Micro SD do módulo e abri-lo no seu PC para verificar o conteúdo (é necessário um leitor de Cartão SD USB)

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!