Saskarnes SD karšu modulis datu reģistrēšanai

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā ziņojumā mēs saskaramies ar SD kartes interfeisu ar arduino datu reģistrēšanai. Mēs redzēsim SD kartes moduļa pārskatu un izpratīsim tā tapu konfigurācijas un borta komponentus. Visbeidzot, mēs izveidosim ķēdi, lai temperatūras un mitruma datus reģistrētu SD kartē.



Droša digitālā karte

SD karte vai Secure Digital karte ir noderīga mūsdienu elektronikai, jo tā nodrošina lielas ietilpības krātuvi ar minimālu izmēru. Mēs esam izmantojuši SD karti multivides uzglabāšanai vienā no iepriekšējiem projektiem (Mp3 atskaņotājs). Šeit mēs to izmantosim datu reģistrēšanai.

Datu reģistrēšana ir būtisks solis, lai reģistrētu incidenta pagātnes notikumus. Piemēram: zinātnieki un pētnieki spēj interpretēt globālās temperatūras paaugstināšanos.



Viņi nonāca pie šāda secinājuma, sapratuši temperatūras paaugstināšanās tendences, aplūkojot pēdējo desmitgažu datus. Datu reģistrēšana par pašreizējo incidentu var arī atklāt nākotnes notikumu.

Tā kā arduino ir lielisks mikrokontrolleris sensoru datu nolasīšanai un atbalsta dažādus sakaru protokolus sensoru un ieejas izvades perifērijas ierīču nolasīšanai, savienojums starp SD kartes moduli arduino radīja kūkas gabalu.

Tā kā arduino nav citas krātuves, izņemot tās pašas programmas krātuvi, mēs varam pievienot ārēju krātuvi, izmantojot šajā rakstā aprakstīto moduli.

Tagad apskatīsim SD kartes moduli.

SD kartes moduļa attēls:

SD kartes moduļa attēls:

Moduļa aizmugure un tapas konfigurācija:

Moduļa aizmugure un tapas konfigurācija:

Ir seši tapas, un tas atbalsta SPI (seriālās perifērās saskarnes) sakaru protokolu. Arduino UNO SPI sakaru tapas ir 13, 12, 11 un 10. Arduino mega SPI tapas ir 50, 51, 52 un 53.

Piedāvātais projekts ir ilustrēts ar Arduino UNO, ja jums ir kāds cits Arduino modelis, lūdzu, SPI tapām skatiet internetu.

Modulis sastāv no kartes turētāja, kas tur SD karti vietā. 3.3V regulators ir paredzēts, lai ierobežotu spriegumu līdz SD kartēm, jo ​​tas ir paredzēts darbam ar 3.3V, nevis 5V.

Tajā ir LVC125A integrētā shēma, kas ir loģiskā līmeņa pārslēdzējs. Loģiskā līmeņa pārslēdzēja funkcija ir samazināt 5V signālus no arduino uz 3.3V loģiskiem signāliem.

Tagad ir pabeigts SD kartes modulis.

Izmantojot SD kartes moduli, mēs varam uzglabāt jebkuru datu karali, šeit mēs glabāsim teksta datus. Temperatūras un mitruma datus uzglabāsim SD kartē. Mēs arī izmantojam reālā laika pulksteņa moduli, lai reģistrētu laiku kopā ar sensora datiem. Tas reģistrē datus ik pēc 30 sekundēm.

Shematiska diagramma:

Saskarnes SD karšu modulis datu reģistrēšanai

RTC modulis sekos laikam un reģistrēs datumu un laiku SD kartē.

Kļūdas gaismas diode ātri mirgo, ja SD karte neizdodas vai neizdodas inicializēt vai SD kartes nav. Pārējā laikā gaismas diode nedeg.

Kā iestatīt laiku RTC:

• Lejupielādējiet bibliotēku zemāk.
• Pabeidzot aparatūras iestatīšanu, pievienojiet arduino datoram.
• Atveriet arduino IDE
• Atveriet File> Piemēri> DS1307RTC> SetTime.
• Augšupielādējiet kodu, un RTC tiks sinhronizēts ar datora laiku.
• Tagad augšupielādējiet tālāk norādīto kodu.

Pirms koda augšupielādes, lūdzu, lejupielādējiet šo arduino bibliotēku.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11 temperatūra un mitrums: 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()
}
}

// ----- R.Girish izstrādātā programma ----- //

Kad ķēdei ir atļauts kādu laiku reģistrēt datus, jūs varat noņemt SD kartes savienojumu ar datoru, būs TEXT.txt fails, kurā visi temperatūras un mitruma dati tiek ierakstīti kopā ar laiku un datumu, kā parādīts zemāk.

PIEZĪME. Iepriekš minētā ideja ir datu saskarnes un reģistrēšanas piemērs. Šī projekta izmantošana ir atkarīga no jūsu iztēles, jūs varat ierakstīt jebkura veida sensoru datus.

Autora prototips:

Saskarnes SD karšu moduļa ar Arduino prototips




Pāri: Bezkontakta sensori - infrasarkanais, temperatūras / mitruma, kapacitatīvs, gaisma Nākamais: Kā savienot IR fotodiodu sensoru ķēdē