Gränssnitts SD-kortmodul för dataloggning

Prova Vårt Instrument För Att Eliminera Problem





I det här inlägget ska vi ansluta SD-kortmodul med arduino för dataloggning. Vi kommer att se en översikt över SD-kortmodulen och förstå dess stiftkonfigurationer och komponenter ombord. Slutligen kommer vi att konstruera en krets för att logga temperatur- och fuktighetsdata till SD-kort.



Säker digitalkort

SD-kort eller Secure Digital-kort är välsignat för modern elektronik eftersom det ger hög lagringskapacitet i minimal storlek. Vi har använt SD-kortet för medielagring i ett av föregående projekt (Mp3-spelare). Här ska vi använda den för dataloggning.

Dataloggning är det grundläggande steget för att registrera tidigare händelse av en incident. Till exempel: forskare och forskare som kan tolka ökningen av den globala temperaturen.



De kom till denna slutsats efter att ha förstått det stigande temperaturmönstret genom att titta på data från de senaste decennierna. Inspelning av data om den aktuella händelsen kan också avslöja om den framtida händelsen.

Eftersom arduino är en utmärkt mikrokontroller för att läsa sensordata och stöder olika kommunikationsprotokoll för att läsa av sensorer och ingångsutrustning, har anslutningen mellan SD-kortmodul arduino gjort en bit kaka.

Eftersom arduino inte har något annat lagringsutrymme än sitt eget lagringsutrymme för program kan vi lägga till ett externt minne med den beskrivna modulen i den här artikeln.

Låt oss nu titta på SD-kortmodulen.

Bild av SD-kortmodul:

Bild av SD-kortmodul:

Baksidan av modulen och stiftkonfigurationen:

Baksidan av modulen och stiftkonfigurationen:

Det finns sex stift och den stöder SPI-kommunikationsprotokollet (seriellt perifert gränssnitt). För Arduino UNO är SPI-kommunikationsstiften 13, 12, 11 och 10. För Arduino mega är SPI-stiften 50, 51, 52 och 53.

Det föreslagna projektet illustreras med Arduino UNO om du har någon annan modell av Arduino hänvisar du till internet för SPI-stift.

Modulen består av en korthållare som håller SD-kortet på plats. 3.3V-regulator tillhandahålls för att begränsa spänningen till SD-kort eftersom den är utformad för att fungera vid 3,3V och inte 5V.

Den har LVC125A integrerad krets ombord som är logisk nivåväxlare. Funktionen hos logiknivåväxlare är att reducera 5V-signaler från arduino till 3.3V-logiska signaler.

Nu avslutas SD-kortmodulen.

Med hjälp av SD-kortmodulen kan vi lagra vilken konung av data som helst, här ska vi lagra textdata. Vi kommer att lagra temperatur- och fuktighetsdata till SD-kort. Vi använder också realtidsklockmodul för att logga tiden tillsammans med sensordata. Den registrerar data var 30: e sekund.

Schematiskt diagram:

Gränssnitts SD-kortmodul för dataloggning

RTC-modulen kommer att hålla reda på tid och logga datum och tid till SD-kortet.

Fel-lysdioden blinkar snabbt om SD-kortet misslyckas eller inte initialiseras eller SD-kortet inte finns. Resten av tiden lyser lysdioden.

HUR man ställer in tid för RTC:

• Ladda ner biblioteket nedan.
• När du har slutfört hårdvarukonfigurationen ansluter du arduino till PC.
• Öppna arduino IDE
• Gå till Arkiv> Exempel> DS1307RTC> SetTime.
• Ladda upp koden och RTC synkroniseras med datorns tid.
• Ladda upp koden nedan.

Ladda ner följande arduino-bibliotek innan du laddar upp koden.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11 temp & luftfuktighet: 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 utvecklat av R.Girish ----- //

När kretsen har fått logga data under en tid kan du ta bort SD-kortanslutningen till din dator, det kommer att finnas TEXT.txt-fil som alla temperatur- och luftfuktighetsdata registreras tillsammans med tid och datum, som visas nedan.

OBS: Idén ovan är ett exempel på hur man gränssnitt och spelar in data. Användningen av detta projekt beror på din fantasi, du kan spela in sensordata av alla slag.

Författarens prototyp:

Prototyp för gränssnitt SD-kortmodul med Arduino




Tidigare: Kontaktlösa sensorer - infraröd, temperatur / fuktighet, kapacitiv, ljus Nästa: Så här ansluter du en IR-fotodiodsensor i en krets