Sąveikaujantis SD kortelės modulis, skirtas duomenų registravimui

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame įraše mes ketiname sąsajos SD kortelės modulį su „arduino“ duomenų registravimui. Pamatysime SD kortelės modulio apžvalgą ir suprasime jo kaiščių konfigūracijas bei laive esančius komponentus. Galiausiai sukursime grandinę temperatūros ir drėgmės duomenims įrašyti į SD kortelę.



Saugi skaitmeninė kortelė

SD kortelė arba „Secure Digital“ kortelė yra naudinga šiuolaikinei elektronikai, nes ji suteikia didelės talpos ir minimalų dydį. Mes naudojome SD kortelę laikmenoms saugoti viename iš ankstesnių projektų (Mp3 grotuvas). Čia mes ketiname jį naudoti duomenų registravimui.

Duomenų registravimas yra pagrindinis žingsnis norint užfiksuoti praeities įvykį. Pvz .: mokslininkai ir tyrėjai, galintys interpretuoti pasaulinės temperatūros kilimą.



Šią išvadą jie padarė supratę kylančios temperatūros modelį, žiūrėdami pastarųjų kelių dešimtmečių duomenis. Įrašius duomenis apie dabartinį įvykį taip pat gali būti atskleista apie būsimą įvykį.

Kadangi „Arduino“ yra puikus mikrovaldiklis jutiklių duomenims nuskaityti ir palaiko įvairius ryšio protokolus, kad būtų galima nuskaityti jutiklius ir įvesties išvesties periferinius įrenginius, ryšys tarp SD kortelės modulio „arduino“ padarė pyragą.

Kadangi „arduino“ neturi jokios kitos atminties, išskyrus savo programos saugyklą, išorinę atmintinę galime pridėti naudodami šiame straipsnyje aprašytą modulį.

Dabar pažvelkime į SD kortelės modulį.

SD kortelės modulio vaizdas:

SD kortelės modulio vaizdas:

Modulio atvirkštinė dalis ir kaiščių konfigūracija:

Modulio atvirkštinė dalis ir kaiščių konfigūracija:

Yra šeši kaiščiai ir jis palaiko SPI (nuosekliosios periferinės sąsajos) ryšio protokolą. „Arduino UNO“ SPI ryšio kaiščiai yra 13, 12, 11 ir 10. „Arduino mega“ SPI kaiščiai yra 50, 51, 52 ir 53.

Siūlomas projektas iliustruojamas „Arduino UNO“, jei turite kokio nors kito „Arduino“ modelio. SPI kaiščius rasite internete.

Modulis susideda iš kortelės laikiklio, kuris laiko SD kortelę. 3.3V reguliatorius yra skirtas riboti SD kortelių įtampą, nes jis skirtas veikti esant 3.3V, o ne 5V įtampai.

Laive yra integruota grandinė LVC125A, kuri yra loginio lygio perjungiklis. Loginio lygio perjungiklio funkcija yra sumažinti 5 V signalus iš „Arduino“ į 3,3 V loginius signalus.

Dabar baigsite SD kortelės modulį.

Naudodami SD kortelės modulį galime saugoti bet kokį duomenų karalių, čia mes saugosime tekstinius duomenis. Temperatūros ir drėgmės duomenis saugosime į SD kortelę. Mes taip pat naudojame realaus laiko laikrodžio modulį registruodami laiką kartu su jutiklio duomenimis. Joje duomenys registruojami kas 30 sekundžių.

Schema:

Sąveikaujantis SD kortelės modulis, skirtas duomenų registravimui

RTC modulis stebės laiką ir įrašys datą bei laiką į SD kortelę.

Klaidos šviesos diodas mirksi greitai, jei SD kortelė nepavyksta, jos nepavyksta inicijuoti arba SD kortelės nėra. Likusį laiką šviesos diodas nedega.

KAIP NUSTATYTI RTC LAIKĄ:

• Atsisiųskite biblioteką žemiau.
• Baigę aparatūros sąranką, prijunkite „arduino“ prie kompiuterio.
• Atidarykite „Arduino IDE“
• Eikite į Failas> Pavyzdžiai> DS1307RTC> „SetTime“.
• Įkelkite kodą ir RTC bus sinchronizuojamas su kompiuterio laiku.
• Dabar įkelkite žemiau pateiktą kodą.

Prieš įkeldami kodą, atsisiųskite šią „Arduino“ biblioteką.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11 temperatūra ir drėgmė: 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()
}
}

// ----- R.Girisho sukurta programa ----- //

Kai grandinei leidžiama kurį laiką registruoti duomenis, galite pašalinti SD kortelę, prijungtą prie kompiuterio, bus TEXT.txt failas, kuriame visi temperatūros ir drėgmės duomenys bus įrašyti kartu su laiku ir data, kaip parodyta žemiau.

PASTABA: Pirmiau pateikta idėja yra pavyzdys, kaip susieti ir įrašyti duomenis. Šio projekto panaudojimas priklauso nuo jūsų vaizduotės, galite įrašyti bet kokius jutiklių duomenis.

Autoriaus prototipas:

Sąsajinio SD kortelės modulio su „Arduino“ prototipas




Pora: bekontakčiai jutikliai - infraraudonieji spinduliai, temperatūros / drėgmės, talpiniai, šviesos Kitas: Kaip prijungti IR fotodiodo jutiklį grandinėje