Arduino - Cartão Micro SD

Neste tutorial, vamos aprender a usar o Cartão Micro SD com o Arduino. Em detalhes, vamos aprender:

Cartão Micro SD com Arduino

Sobre o Módulo de Cartão Micro SD

O Módulo de Cartão Micro SD pode se comunicar com o Arduino e pode receber um Cartão Micro SD. Em outras palavras, o Módulo de Cartão Micro SD é uma ponte entre o Arduino 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 Arduino.
  • Pino GND: conecte este pino ao GND do Arduino.
  • Pino MISO: (Master In Slave Out) conecte este pino ao pino MISO do Arduino.
  • Pino MOSI: (Master Out Slave In) conecte este pino ao pino MOSI do Arduino.
  • Pino SCK: conecte este pino ao pino SCK do Arduino.
  • Pino SS: (Slave Select) conecte este pino ao pino definido no código do Arduino como pino SS.

Preparação

  • Conecte o Cartão Micro SD ao PC por meio de 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 como fazer)

Diagrama de Ligação

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

This image is created using Fritzing. Click to enlarge image

※ 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.

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

Código Arduino

Passos Rápidos

  • 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 Arduino conforme o diagrama de ligação acima
  • Conecte o Arduino ao PC por meio do cabo USB
  • Abra a Arduino IDE, selecione a placa e a porta corretas
  • Abra o Serial Monitor na Arduino IDE
  • Copie o código abaixo e cole na Arduino IDE
/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); if (!SD.exists("arduino.txt")) { Serial.println(F("arduino.txt doesn't exist. Creating arduino.txt file...")); // create a new file by opening a new file and immediately close it myFile = SD.open("arduino.txt", FILE_WRITE); myFile.close(); } // recheck if file is created or not if (SD.exists("arduino.txt")) Serial.println(F("arduino.txt exists on SD Card.")); else Serial.println(F("arduino.txt doesn't exist on SD Card.")); } void loop() { }
  • Clique no botão Upload na Arduino IDE para carregar o código no Arduino
  • O resultado no Serial Monitor na primeira execução
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. arduino.txt doesn't exist. Creating arduino.txt file... arduino.txt exists on SD Card.
Ln 11, Col 1
Arduino Uno on COM15
2
  • O resultado no Serial Monitor nas execuções seguintes
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. arduino.txt exists on SD Card.
Ln 11, Col 1
Arduino Uno 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.

  • Retire 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

Arduino - Como gravar/ler dados em/de 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 Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); // open file for writing myFile = SD.open("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by ArduinoGetStarted.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } // open file for reading myFile = SD.open("arduino.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: error on opening file arduino.txt")); } } void loop() { }
  • O Serial Monitor mostra o conteúdo do arquivo
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Created by ArduinoGetStarted.com Learn Arduino and SD Card
Ln 11, Col 1
Arduino Uno on COM15
2

※ Nota:

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

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

Você também pode retirar 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)

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

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); // open file for writing myFile = SD.open("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by ArduinoGetStarted.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } // open file for reading myFile = SD.open("arduino.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: error on opening file arduino.txt")); } } void loop() { }
  • O resultado no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. Line 1: Created by ArduinoGetStarted.com Line 2: Learn Arduino and SD Card
Ln 11, Col 1
Arduino Uno on COM15
2

※ Nota:

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

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

Por padrão, o conteúdo será acrescentado 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 Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); SD.remove("arduino.txt"); // delete the file if existed // create new file by opening file for writing myFile = SD.open("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by ArduinoGetStarted.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } // open file for reading myFile = SD.open("arduino.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: error on opening file arduino.txt")); } } void loop() { }
  • O resultado no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. Created by ArduinoGetStarted.com Learn Arduino and SD Card
Ln 11, Col 1
Arduino Uno on COM15
2
  • Reinicie o Arduino
  • Verifique no Serial Monitor se o conteúdo do arquivo foi acrescentado ou não.

Você também pode retirar 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!