Grensesnitt SD-kortmodul for datalogging

Prøv Instrumentet Vårt For Å Eliminere Problemer





I dette innlegget skal vi grensesnitt SD-kortmodul med arduino for datalogging. Vi vil se oversikt over SD-kortmodulen og forstå dens pin-konfigurasjoner og komponenter om bord. Til slutt skal vi konstruere en krets for å logge temperatur- og fuktighetsdataene til SD-kortet.



Sikre digitale kort

SD-kort eller Secure Digital-kort er velsignet for moderne elektronikk, da det gir lagring med høy kapasitet i minimal størrelse. Vi har brukt SD-kortet til medielagring i et av forrige prosjekt (Mp3-spiller). Her skal vi bruke den til datalogging.

Datalogging er det grunnleggende trinnet for å registrere tidligere hendelse av en hendelse. For eksempel: forskere og forskere som er i stand til å tolke økningen av global temperatur.



De kom til denne konklusjonen etter å ha forstått det stigende temperaturmønsteret ved å se på dataene fra de siste tiårene. Registrering av data om den aktuelle hendelsen kan også avsløre om den fremtidige hendelsen.

Siden arduino er en flott mikrokontroller for å lese sensordata og støtter forskjellige kommunikasjonsprotokoller for å lese sensorene og inngangsutstyret, har forbindelsen mellom SD-kortmodulen arduino laget et stykke kake.

Siden arduino ikke har annen lagring enn sin egen programlagringsplass, kan vi legge til en ekstern lagring ved hjelp av den beskrevne modulen i denne artikkelen.

La oss nå ta en titt på SD-kortmodulen.

Bilde av SD-kortmodul:

Bilde av SD-kortmodul:

Baksiden av modulen og pin-konfigurasjonen:

Baksiden av modulen og pin-konfigurasjonen:

Det er seks pinner, og den støtter SPI (serial peripheral interface) kommunikasjonsprotokoll. For Arduino UNO er ​​SPI-kommunikasjonspinnene 13, 12, 11 og 10. For Arduino mega er SPI-pinnene 50, 51, 52 og 53.

Det foreslåtte prosjektet er illustrert med Arduino UNO hvis du har noen annen modell av Arduino, vennligst se internett for SPI-pinnene.

Modulen består av en kortholder som holder SD-kortet på plass. 3.3V regulator er gitt for å begrense spenningen til SD-kort, da den er designet for å fungere ved 3.3V og ikke 5V.

Den har LVC125A integrert krets om bord som er logisk nivåskifter. Funksjonen til logisk nivåskifter er å redusere 5V signaler fra arduino til 3.3V logiske signaler.

Nå avsluttes SD-kortmodulen.

Ved hjelp av SD-kortmodul kan vi lagre hvilken som helst konge av data, her skal vi lagre tekstdata. Vi lagrer temperatur- og fuktighetsdata på SD-kort. Vi bruker også sanntidsklokke-modul for å logge tiden sammen med sensordata. Den registrerer dataene hvert 30. sekund.

Skjematisk diagram:

Grensesnitt SD-kortmodul for datalogging

RTC-modulen vil holde oversikt over tid og logge dato og klokkeslett til SD-kortet.

Feil-LED-en blinker raskt hvis SD-kortet mislykkes eller ikke initialiseres eller SD-kortet ikke er tilstede. Resten av tiden lyser LED-lampen.

SLIK STILLER DU TID FOR RTC:

• Last ned biblioteket nedenfor.
• Når du har fullført maskinvareoppsettet, kobler du arduino til PC.
• Åpne arduino IDE
• Gå til Fil> Eksempler> DS1307RTC> SetTime.
• Last opp koden og RTC blir synkronisert med datamaskinens tid.
• Last nå opp koden nedenfor.

Last ned følgende arduino-bibliotek før du laster opp koden.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11 temp og fuktighet: arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Program:

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

// ----- Program utviklet av R.Girish ----- //

Når kretsen har fått lov til å logge data i noen tid, kan du fjerne SD-kortet som er koblet til datamaskinen din. Det vil være TEXT.txt-fil som registrerer alle temperatur- og fuktighetsdata sammen med tid og dato, som vist nedenfor.

MERKNAD: Ideen ovenfor er et eksempel på hvordan man grensesnitt og registrerer data. Utnyttelsen av dette prosjektet avhenger av fantasien din, du kan registrere sensordata av noe slag.

Forfatterens prototype:

Prototype for grensesnitt SD-kortmodul med Arduino




Forrige: Kontaktløse sensorer - infrarød, temperatur / fuktighet, kapasitiv, lett Neste: Slik kobler du en IR-fotodiodesensor til en krets