Interfacing SD-kortmodul til datalogning

Prøv Vores Instrument Til At Fjerne Problemer





I dette indlæg skal vi interface SD-kortmodul med arduino til datalogning. Vi får vist en oversigt over SD-kortmodulet og forstår dets pin-konfigurationer og komponenter om bord. Endelig skal vi konstruere et kredsløb til at logge temperatur- og fugtighedsdataene til SD-kortet.



Sikker digitalt kort

SD-kort eller Secure Digital-kort er velsignet for moderne elektronik, da det giver opbevaring med høj kapacitet i minimal størrelse. Vi har brugt SD-kortet til medielagring i et af det tidligere projekt (Mp3-afspiller). Her skal vi bruge det til datalogning.

Datalogning er det grundlæggende trin til at registrere den tidligere forekomst af en hændelse. For eksempel: forskere og forskere, der er i stand til at fortolke stigningen i global temperatur.



De kom til denne konklusion efter at have forstået det stigende temperaturmønster ved at se på dataene fra de sidste par årtier. Optagelse af data om den aktuelle hændelse kan også afsløre om den fremtidige begivenhed.

Da arduino er en god mikrokontroller til læsning af sensordata og understøtter forskellige kommunikationsprotokoller til at læse sensorerne og inputudgangsudstyr, er forbindelsen mellem SD-kortmodul arduino lavet stykke kage.

Da arduino ikke har noget andet lager end dets eget programlagerplads, kan vi tilføje et eksternt lager ved hjælp af det beskrevne modul i denne artikel.

Lad os nu se på SD-kortmodulet.

Billede af SD-kortmodul:

Billede af SD-kortmodul:

Bagsiden af ​​modulet og pin-konfigurationen:

Bagsiden af ​​modulet og pin-konfigurationen:

Der er seks ben, og den understøtter SPI (seriel perifer interface) kommunikationsprotokol. For Arduino UNO er ​​SPI-kommunikationsstifterne 13, 12, 11 og 10. For Arduino mega er SPI-stifterne 50, 51, 52 og 53.

Det foreslåede projekt er illustreret med Arduino UNO, hvis du har en anden Arduino-model, se internet for SPI-benene.

Modulet består af en kortholder, der holder SD-kortet på plads. 3.3V regulator er forsynet med at begrænse spændingen til SD-kort, da den er designet til at fungere ved 3.3V og ikke 5V.

Det har LVC125A integreret kredsløb om bord, som er logisk niveauskifter. Funktionen af ​​logisk niveauskifter er at reducere 5V signaler fra arduino til 3.3V logiske signaler.

Nu afsluttes SD-kortmodulet.

Ved hjælp af SD-kortmodul kan vi gemme enhver konge af data, her skal vi gemme tekstdata. Vi gemmer temperatur- og fugtighedsdata på SD-kortet. Vi bruger også realtidsurmodul til at logge tiden sammen med sensordata. Den registrerer dataene hvert 30. sekund.

Skematisk diagram:

Interfacing SD-kortmodul til datalogning

RTC-modulet holder styr på tid og logger dato og tid til SD-kortet.

Fejl-LED blinker hurtigt, hvis SD-kortet ikke initialiseres eller ikke SD-kortet ikke findes. Resten af ​​tiden forbliver lysdioden slukket.

SÅDAN INDSTILLES TID FOR RTC:

• Download biblioteket nedenfor.
• Tilslut arduino til pc med afsluttet hardwareopsætning.
• Åbn arduino IDE
• Gå til Filer> Eksempler> DS1307RTC> SetTime.
• Upload koden, og RTC synkroniseres med computerens tid.
• Upload nu koden nedenfor.

Download venligst følgende arduino-bibliotek, før du uploader koden.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11 temp og fugtighed: 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 udviklet af R.Girish ----- //

Når kredsløbet har fået lov til at logge data i et stykke tid, kan du fjerne SD-kortforbindelsen til din computer, der vil være TEXT.txt-fil, som alle temperatur- og fugtighedsdata registreres sammen med tid og dato, som vist nedenfor.

BEMÆRK: Ovenstående idé er et eksempel på, hvordan man interface og registrerer data. Udnyttelsen af ​​dette projekt afhænger af din fantasi, du kan registrere sensordata af enhver art.

Forfatterens prototype:

Prototype til interfaced SD-kortmodul med Arduino




Tidligere: Kontaktløse sensorer - infrarød, temperatur / fugtighed, kapacitiv, lys Næste: Sådan tilsluttes en IR-fotodiodesensor i et kredsløb