ESP8266 - Cartão Micro SD

Este tutorial ensina você a usar o cartão Micro SD com o ESP8266. Em detalhes, vamos aprender:

Cartão Micro SD com ESP8266 NodeMCU

Sobre o Módulo de Cartão Micro SD

O módulo de cartão Micro SD é a ligação entre o ESP8266 e um cartão Micro SD. Ele consegue estabelecer uma conexão com o ESP8266 e pode ser usado para acomodar o cartão Micro SD. Em outras palavras, ele serve como uma ponte entre os dois.

Pinagem do Módulo de Cartão Micro SD

Pinagem do módulo de cartão Micro SD

O módulo de cartão Micro SD tem 6 pinos:

  • Pino VCC: deve ser conectado ao pino 5V do Arduino.
  • Pino GND: deve ser conectado ao GND do Arduino.
  • Pino MISO: (Master In Slave Out) deve ser conectado ao pino MISO do Arduino.
  • Pino MOSI: (Master Out Slave In) deve ser conectado ao pino MOSI do Arduino.
  • Pino SCK: deve ser conectado ao pino SCK do Arduino.
  • Pino SS: (Slave Select) deve ser conectado ao pino especificado no código do ESP8266 como pino SS.

Preparação

Verifique se o cartão Micro SD está formatado como FAT16 ou FAT32 (você pode pesquisar na internet para obter mais informações).

Diagrama de Ligação

Diagrama de ligação do módulo de cartão Micro SD com ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

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

Código ESP8266

Passos Rápidos

Para começar com o ESP8266 no Arduino IDE, siga estes passos:

  • Confira o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Ligue os componentes como mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra o Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Insira o cartão Micro SD no módulo de cartão Micro SD.
  • Faça as conexões entre o módulo de cartão Micro SD e o ESP8266 conforme o diagrama de ligação.
  • Conecte o ESP8266 ao PC com um cabo USB.
  • Abra o Arduino IDE e selecione a placa e a porta apropriadas.
  • Abra o Serial Monitor no Arduino IDE.
  • Copie e cole o código a seguir no Arduino IDE.
/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 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("esp8266.txt")) { Serial.println(F("esp8266.txt doesn't exist. Creating esp8266.txt file...")); // create a new file by opening a new file and immediately close it myFile = SD.open("esp8266.txt", FILE_WRITE); myFile.close(); } // recheck if file is created or not if (SD.exists("esp8266.txt")) Serial.println(F("esp8266.txt exists on SD Card.")); else Serial.println(F("esp8266.txt doesn't exist on SD Card.")); } void loop() { }
  • Clique no botão Upload no Arduino IDE para compilar e fazer o upload do código para o ESP8266.
  • O Serial Monitor mostrará o resultado da primeira execução.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. esp8266.txt doesn't exist. Creating esp8266.txt file... esp8266.txt exists on SD Card.
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2
  • Será diferente
  • O resultado exibido no Serial Monitor nas execuções seguintes será diferente.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. esp8266.txt exists on SD Card.
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

※ Nota:

Você pode não ver a saída no Serial Monitor quando fizer o upload do código pela primeira vez, se isso for feito antes de abrir o Serial Monitor.

  • Remova o cartão Micro SD do módulo.
  • Coloque o cartão Micro SD em um leitor de cartão SD USB.
  • Conecte o leitor de cartão SD USB ao computador.
  • Verifique se o arquivo está presente ou não.

ESP8266 - Como gravar/ler dados em/de um arquivo no cartão Micro SD

O código a seguir:

  • Salva dados em um arquivo
  • Lê o conteúdo do arquivo caractere por caractere e o exibe no Serial Monitor
/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 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("esp8266.txt", FILE_WRITE); if (myFile) { myFile.println("Created by newbiely.com"); // write a line to esp8266.txt myFile.println("Learn ESP8266 and SD Card"); // write another line to esp8266.txt myFile.close(); } else { Serial.print(F("SD Card: error on opening file esp8266.txt")); } // open file for reading myFile = SD.open("esp8266.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 esp8266.txt")); } } void loop() { }
  • O Serial Monitor exibiu o conteúdo do arquivo.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Created by ArduinoGetStarted.com Learn ESP8266 and SD Card
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

※ Nota:

Por padrão, os dados serão adicionados ao final do arquivo. Se você reiniciar o ESP8266 com o código acima, o texto será anexado ao arquivo novamente, e o Serial Monitor exibirá mais linhas como estas:

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

Você pode remover o cartão Micro SD do módulo e usar um leitor de cartão SD USB para ver o conteúdo dele no seu computador.

ESP8266 - Como ler um arquivo no cartão Micro SD linha por linha

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 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("esp8266.txt", FILE_WRITE); if (myFile) { myFile.println("Created by newbiely.com"); // write a line to esp8266.txt myFile.println("Learn ESP8266 and SD Card"); // write another line to esp8266.txt myFile.close(); } else { Serial.print(F("SD Card: error on opening file esp8266.txt")); } // open file for reading myFile = SD.open("esp8266.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 esp8266.txt")); } } void loop() { }
  • A saída exibida no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
SD CARD INITIALIZED. Line 1: Created by ArduinoGetStarted.com Line 2: Learn ESP8266 and SD Card
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

※ Nota:

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

ESP8266 - 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 é: excluir o arquivo existente e criar um novo com o mesmo nome.

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

Você pode remover o cartão Micro SD do módulo e ver o conteúdo dele no seu computador. Um leitor de cartão SD USB é necessário para isso.

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!