Interface do Módulo de Cartão SD para Registro de Dados

Experimente Nosso Instrumento Para Eliminar Problemas





Neste post, faremos a interface do módulo de cartão SD com o arduino para registro de dados. Veremos a visão geral do módulo de cartão SD e compreenderemos suas configurações de pinos e componentes integrados. Finalmente, estaremos construindo um circuito para registrar os dados de temperatura e umidade no cartão SD.



Cartão Secure Digital

O cartão SD ou o cartão Secure Digital é um benefício para a eletrônica moderna, pois fornece armazenamento de alta capacidade em tamanho mínimo. Usamos o cartão SD para armazenamento de mídia em um dos projetos anteriores (MP3 player). Aqui, vamos usá-lo para registro de dados.

O registro de dados é a etapa fundamental para registrar a ocorrência anterior de um incidente. Por exemplo: cientistas e pesquisadores capazes de interpretar o aumento da temperatura global.



Eles chegaram a essa conclusão depois de compreender o padrão de aumento da temperatura, observando os dados das últimas décadas. O registro dos dados sobre o incidente atual também pode revelar sobre a ocorrência futura.

Visto que o arduino é um ótimo microcontrolador para leitura de dados do sensor e suporta vários protocolos de comunicação para ler os sensores e periféricos de entrada e saída, a conexão entre o módulo de cartão SD do arduino é fácil.

Uma vez que o arduino não tem nenhum armazenamento além de seu próprio espaço de armazenamento de programa, podemos adicionar um armazenamento externo usando o módulo descrito neste artigo.

Agora vamos dar uma olhada no módulo de cartão SD.

Imagem do módulo de cartão SD:

Imagem do módulo de cartão SD:

Lado oposto do módulo e configuração do pino:

Lado oposto do módulo e configuração do pino:

Possui seis pinos e suporta o protocolo de comunicação SPI (interface periférica serial). Para Arduino UNO, os pinos de comunicação SPI são 13, 12, 11 e 10. Para Arduino mega, os pinos SPI são 50, 51, 52 e 53.

O projeto proposto é ilustrado com Arduino UNO. Se você tiver qualquer outro modelo de Arduino, consulte a Internet para obter os pinos SPI.

O módulo consiste em um suporte de cartão que mantém o cartão SD no lugar. O regulador de 3,3 V é fornecido para limitar a voltagem para os cartões SD, pois é projetado para funcionar a 3,3 V e não a 5 V.

Possui circuito integrado LVC125A na placa, que é um deslocador de nível lógico. A função do deslocador de nível lógico é reduzir os sinais de 5 V do Arduino para sinais lógicos de 3,3 V.

Isso conclui o módulo do cartão SD.

Usando o módulo de cartão SD, podemos armazenar qualquer tipo de dados, aqui vamos armazenar dados de texto. Estaremos armazenando dados de temperatura e umidade no cartão SD. Também estamos utilizando o módulo de relógio em tempo real para registrar o tempo junto com os dados do sensor. Ele registra os dados a cada 30 segundos.

Diagrama esquemático:

Interface do Módulo de Cartão SD para Registro de Dados

O módulo RTC controlará a hora e registrará a data e a hora no cartão SD.

O LED de erro pisca rapidamente se o cartão SD falhar ou não inicializar ou se o cartão SD não estiver presente. No resto do tempo, o LED permanece apagado.

COMO AJUSTAR HORA PARA RTC:

• Baixe a biblioteca abaixo.
• Com a configuração do hardware concluída, conecte o arduino ao PC.
• Abra o IDE arduino
• Vá para Arquivo> Exemplos> DS1307RTC> SetTime.
• Carregue o código e o RTC será sincronizado com a hora do computador.
• Agora carregue o código fornecido abaixo.

Faça o download da seguinte biblioteca do Arduino antes de enviar o código.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

Temperatura e umidade DHT11: arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Programa:

//-----Program developed by R.Girish-----//
#include
#include
#include
#include
#include
#include
#define DHTxxPIN A0
const int cs = 10
const int LED = 7
dht DHT
int ack
int f
File myFile
void setup()
{
Serial.begin(9600)
pinMode(LED,OUTPUT)
if (!SD.begin(cs))
{
Serial.println('Card failed, or not present')
while(true)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
}
Serial.println('Initialization done')
}
void loop()
{
myFile = SD.open('TEST.txt', FILE_WRITE)
if(myFile)
{
Serial.println('----------------------------------------------')
myFile.println('----------------------------------------------')
tmElements_t tm
if(!RTC.read(tm))
{
goto A
}
if (RTC.read(tm))
{
Serial.print('TIME:')
if(tm.Hour>12) //24Hrs to 12 Hrs conversion//
{
if(tm.Hour==13)
{
Serial.print('01')
myFile.print('01')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==14)
{
Serial.print('02')
myFile.print('02')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==15)
{
Serial.print('03')
myFile.print('03')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==16)
{
Serial.print('04')
myFile.print('04')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==17)
{
Serial.print('05')
myFile.print('05')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==18)
{
Serial.print('06')
myFile.print('06')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==19)
{
Serial.print('07')
myFile.print('07')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==20)
{
Serial.print('08')
myFile.print('08')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==21)
{
Serial.print('09')
myFile.print('09')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==22)
{
Serial.print('10')
myFile.print('10')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==23)
{
Serial.print('11')
myFile.print('11')
Serial.print(':')
myFile.print(':')
}
else
{
Serial.print(tm.Hour)
myFile.print(tm.Hour)
Serial.print(':')
myFile.print(':')
}
Serial.print(tm.Minute)
myFile.print(tm.Minute)
Serial.print(':')
myFile.print(':')
Serial.print(tm.Second)
myFile.print(tm.Second)
if(tm.Hour>=12)
{
Serial.print(' PM')
myFile.print( ' PM')
}
if(tm.Hour<12)
{
Serial.print('AM')
myFile.print( ' AM')
}
Serial.print(' DATE:')
myFile.print(' DATE:')
Serial.print(tm.Day)
myFile.print(tm.Day)
Serial.print('/')
myFile.print('/')
Serial.print(tm.Month)
myFile.print(tm.Month)
Serial.print('/')
myFile.print('/')
Serial.println(tmYearToCalendar(tm.Year))
myFile.println(tmYearToCalendar(tm.Year))
Serial.println('----------------------------------------------')
myFile.println('----------------------------------------------')
} else {
A:
if (RTC.chipPresent())
{
Serial.print('RTC stopped!!!')
myFile.print('RTC stopped!!!')
Serial.println(' Run SetTime code')
myFile.println(' Run SetTime code')
} else {
Serial.print('RTC Read error!')
myFile.print('RTC Read error!')
Serial.println(' Check circuitry!')
myFile.println(' Check circuitry!')
}
}
ack=0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1
break
}
if(ack==0)
{
f=DHT.temperature*1.8+32
Serial.print('Temperature(C) = ')
myFile.print('Temperature(°C) = ')
Serial.println(DHT.temperature)
myFile.println(DHT.temperature)
Serial.print('Temperature(F) = ')
myFile.print('Temperature(°F) = ')
Serial.print(f)
myFile.print(f)
Serial.print('n')
myFile.println(' ')
Serial.print('Humidity(%) = ')
myFile.print('Humidity(%) = ')
Serial.println(DHT.humidity)
myFile.println(DHT.humidity)
Serial.print('n')
myFile.println(' ')
}
if(ack==1)
{
Serial.println('NO DATA')
myFile.println('NO DATA')
}
for(int i=0 i<30 i++)
{
delay(1000)
}
}
myFile.close()
}
}

// ----- Programa desenvolvido por R.Girish ----- //

Uma vez que o circuito pode registrar dados por algum tempo, você pode remover o cartão SD e conectar ao seu computador, haverá o arquivo TEXT.txt onde todos os dados de temperatura e umidade são registrados junto com a hora e a data, conforme mostrado abaixo.

NOTA: A ideia acima é um exemplo de como fazer a interface e registrar dados. A utilização deste projeto depende da sua imaginação, você pode registrar dados de sensores de qualquer tipo.

Protótipo do autor:

Protótipo para módulo de cartão SD com interface com Arduino




Anterior: Sensores sem contato - infravermelho, temperatura / umidade, capacitivos, luz A seguir: Como conectar um sensor fotodiodo infravermelho em um circuito