Modulo di interfacciamento con scheda SD per la registrazione dei dati

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo post interfacciamo il modulo della scheda SD con arduino per la registrazione dei dati. Vedremo una panoramica del modulo della scheda SD e capiremo le sue configurazioni dei pin e i componenti di bordo. Infine costruiremo un circuito per registrare i dati di temperatura e umidità sulla scheda SD.



Secure Digital Card

La scheda SD o Secure Digital è un vantaggio per l'elettronica moderna in quanto fornisce un'elevata capacità di archiviazione con dimensioni minime. Abbiamo utilizzato la scheda SD per l'archiviazione multimediale in uno dei progetti precedenti (lettore Mp3). Qui lo useremo per la registrazione dei dati.

La registrazione dei dati è il passaggio fondamentale per registrare il verificarsi di un incidente in passato. Ad esempio: scienziati e ricercatori in grado di interpretare l'aumento della temperatura globale.



Sono giunti a questa conclusione dopo aver compreso l'aumento della temperatura osservando i dati degli ultimi decenni. La registrazione dei dati sull'incidente in corso potrebbe anche rivelare eventi futuri.

Poiché arduino è un ottimo microcontrollore per la lettura dei dati dei sensori e supporta vari protocolli di comunicazione per leggere i sensori e le periferiche di input output, la connessione tra il modulo della scheda SD arduino è diventata un gioco da ragazzi.

Poiché arduino non dispone di alcuno spazio di archiviazione diverso dal proprio spazio di archiviazione del programma, possiamo aggiungere un archivio esterno utilizzando il modulo descritto in questo articolo.

Ora diamo un'occhiata al modulo della scheda SD.

Immagine del modulo della scheda SD:

Immagine del modulo della scheda SD:

Lato rovescio del modulo e configurazione dei pin:

Lato rovescio del modulo e configurazione dei pin:

Ci sono sei pin e supporta il protocollo di comunicazione SPI (interfaccia periferica seriale). Per Arduino UNO i pin di comunicazione SPI sono 13, 12, 11 e 10. Per Arduino mega i pin SPI sono 50, 51, 52 e 53.

Il progetto proposto è illustrato con Arduino UNO se avete altri modelli di Arduino fate riferimento a internet per i pin SPI.

Il modulo è costituito da un supporto per scheda che tiene in posizione la scheda SD. Il regolatore da 3,3 V è fornito per limitare la tensione alle schede SD poiché è progettato per funzionare a 3,3 V e non a 5 V.

Ha un circuito integrato LVC125A a bordo che è un cambio di livello logico. La funzione del cambio di livello logico è quella di ridurre i segnali 5V da arduino a segnali logici 3,3V.

Ora questo conclude il modulo della scheda SD.

Usando il modulo della scheda SD possiamo memorizzare qualsiasi tipo di dati, qui memorizzeremo i dati di testo. Memorizzeremo i dati di temperatura e umidità sulla scheda SD. Stiamo anche utilizzando il modulo orologio in tempo reale per registrare l'ora insieme ai dati del sensore. Registra i dati ogni 30 secondi.

Diagramma schematico:

Modulo di interfacciamento con scheda SD per la registrazione dei dati

Il modulo RTC terrà traccia dell'ora e registrerà la data e l'ora sulla scheda SD.

Il LED di errore lampeggia rapidamente se la scheda SD non riesce o non si inizializza o la scheda SD non è presente. Il resto del tempo il LED rimane spento.

COME IMPOSTARE L'ORA PER RTC:

• Scarica la libreria di seguito.
• Con la configurazione hardware completata, collega arduino al PC.
• Apri arduino IDE
• Vai a File> Esempi> DS1307RTC> SetTime.
• Carica il codice e RTC verrà sincronizzato con l'ora del computer.
• Ora carica il codice fornito di seguito.

Si prega di scaricare la seguente libreria arduino prima di caricare il codice.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

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

Programma:

//-----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()
}
}

// ----- Programma sviluppato da R.Girish ----- //

Una volta che il circuito è autorizzato a registrare i dati per un po 'di tempo, è possibile rimuovere la scheda SD collegata al computer, ci sarà il file TEXT.txt in cui vengono registrati tutti i dati di temperatura e umidità insieme a ora e data, come mostrato di seguito.

NOTA: l'idea sopra è un esempio di come interfacciare e registrare i dati. L'utilizzo di questo progetto dipende dalla tua immaginazione, puoi registrare i dati dei sensori di qualsiasi tipo.

Prototipo dell'autore:

Prototipo per modulo scheda SD interfacciato con Arduino




Precedente: Sensori senza contatto: infrarossi, temperatura / umidità, capacitivi, luce Avanti: Come collegare un sensore a fotodiodo IR in un circuito