O módulo micro SD possibilita a leitura e gravação de cartões de memória. É extremamente útil para projetos que exigem registro de dados. Ideal para gravar arquivos de logs com resultado de leituras de sensores e consequentemente transferir os arquivos gerados no cartão para qualquer computador que possua um leitor de cartão micro SD.
O módulo usa a interface SPI como padrão para a comunicação com o arduino, ela envolve barramentos SPI, MISO, MOSI, SCK e um pino de sinal CS.
A própria IDE do arduino já possui uma biblioteca específica para facilitar a comunicação com este módulo, dessa forma é simplificada ao máximo a programação para utilização de seus recursos.
O módulo se comunica pela interface SPI e seu nível lógico de sinal é de 3.3V, no entanto, além de possuir um regulador de tensão, o módulo também possui um divisor de tensão, o qual permite a ligação direta nos 5V fornecido pelo arduino.
OBS: Observe que o sistema de arquivos do cartão micro SD deve ser FAT16 ou FAT32. Caso contrário, a biblioteca SD do Arduino não poderá ler e escrever no mesmo.
Estas são as portas padrão de comunicação via SPI do Arduino Uno, as mesmas não devem ser alteradas. Para mais informações, consulte a tabela de pinagem do Arduino Uno.
LISTA DOS COMPONENTES
//Incluir as bibliotecas necessárias #include <SPI.h> #include <SD.h> const int chipSelect = 10; //pino utilizado pelo terminal CS do módulo void setup(){ Serial.begin(9600); //inicializa o monitor Serial while(!Serial){ //aguarda a conexão da porta serial; } //imprime texto no monitor serial Serial.println("Inicializando o cartão de memória..."); Serial.println("**********************************"); pinMode(SS, OUTPUT); //define pinMode como saída if(!SD.begin(chipSelect)){ //se o cartão não for reconhecido, faz: //imprime texto no monitor serial Serial.println("Cartão de memória falhou ou não está presente!"); return; //não executa o restante do código } //imprime texto no monitor serial Serial.println("Cartão de memória inicializado com sucesso!"); Serial.println("*************************************"); Serial.println("Mensagem do arquivo de texto que está no cartão de memória:"); Serial.println(); //quebra de linha no serial SDFile dataFile = SD.open("arquivo.txt"); //dataFile recebe o conteúdo do arquivo // Caso tenha mais de um arquivo, abre um arquivo por vez if(dataFile){ //se existirem dados, faz: while(dataFile.available()){ //enquanto houver conteúdo a ser lido, faz Serial.write(dataFile.read()); //escreve na serial as informações do arquivo } //encerra a leitura, fechar o arquivo atual para poder abrir um outro dataFile.close(); } else{ //se não existirem dados, faz //imprime texto do erro no monitor serial Serial.println("Erro ao abrir o arquivo!"); } } void loop(){ //não necessita repetir a ação }