Povezivanje modula SD kartice za bilježenje podataka

Isprobajte Naš Instrument Za Uklanjanje Problema





U ovom postu povezat ćemo modul SD kartice s arduinom za bilježenje podataka. Vidjet ćemo pregled modula SD kartice i razumjeti njegove konfiguracije pinova i komponente na ploči. Napokon ćemo izraditi sklop za bilježenje podataka o temperaturi i vlažnosti na SD karticu.



Sigurna digitalna kartica

SD kartica ili Secure Digital kartica blagodat su za modernu elektroniku jer pruža pohranu velikog kapaciteta na minimalnoj veličini. SD karticu koristili smo za pohranu medija u jednom od prethodnih projekata (Mp3 uređaj). Ovdje ćemo ga koristiti za bilježenje podataka.

Zapisivanje podataka temeljni je korak za bilježenje prošlih pojava incidenta. Na primjer: znanstvenici i istraživači sposobni protumačiti porast globalne temperature.



Do ovog su zaključka došli nakon što su razumjeli obrazac porasta temperature gledajući podatke iz posljednjih nekoliko desetljeća. Snimanje podataka o trenutnom incidentu moglo bi otkriti i buduću pojavu.

Budući da je arduino izvrstan mikrokontroler za čitanje podataka senzora i podržava razne komunikacijske protokole za čitanje senzora i ulaznu izlaznu perifernu opremu, veza između modula SD kartice arduino učinila je kolač.

Budući da arduino nema pohranu osim vlastitog prostora za pohranu programa, možemo dodati vanjsku pohranu pomoću opisanog modula u ovom članku.

Pogledajmo sada modul SD kartice.

Slika modula SD kartice:

Slika modula SD kartice:

Preokret modula i konfiguracija pina:

Preokret modula i konfiguracija pina:

Postoji šest pinova i podržava komunikacijski protokol SPI (serijsko periferno sučelje). Za Arduino UNO SPI pinovi za komunikaciju su 13, 12, 11 i 10. Za Arduino mega SPI pinovi su 50, 51, 52 i 53.

Predloženi projekt ilustriran je Arduinom UNO ako imate bilo koji drugi model Arduina, potražite SPI igle na Internetu.

Modul se sastoji od držača kartice koji drži SD karticu na mjestu. 3.3V regulator je predviđen za ograničavanje napona na SD kartice jer je dizajniran da radi na 3.3V, a ne na 5V.

Na ploči ima integrirani krug LVC125A koji je logički mjenjač razine. Funkcija logičkog mjenjača razine je smanjiti 5V signale iz arduina na 3,3V logičke signale.

Sada je zaključen modul SD kartice.

Pomoću modula SD kartice možemo pohraniti bilo koji kralj podataka, ovdje ćemo pohraniti tekstualne podatke. Podaci o temperaturi i vlažnosti pohranit ćemo na SD karticu. Također koristimo modul sata u stvarnom vremenu za bilježenje vremena zajedno s podacima senzora. Podaci bilježe svakih 30 sekundi.

Shematski dijagram:

Povezivanje modula SD kartice za bilježenje podataka

RTC modul će pratiti vrijeme i bilježiti datum i vrijeme na SD karticu.

LED za pogrešku brzo trepće ako SD kartica ne uspije ili se ne pokrene ili ako SD kartica nije prisutna. Ostatak vremena LED ne svijetli.

KAKO POSTAVITI VRIJEME ZA RTC:

• Preuzmite knjižnicu u nastavku.
• S dovršenim postavljanjem hardvera, spojite arduino na računalo.
• Otvorite arduino IDE
• Idite na File> Primjeri> DS1307RTC> SetTime.
• Učitajte kod i RTC će se sinkronizirati s vremenom računala.
• Sada prenesite dolje navedeni kod.

Molimo prenesite sljedeću arduino biblioteku prije slanja koda.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11 temperatura i vlažnost: 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 razvio R.Girish ----- //

Jednom kad sklop može neko vrijeme bilježiti podatke, možete ukloniti SD karticu koja se spaja na vaše računalo, bit će datoteka TEXT.txt u koju se bilježe svi podaci o temperaturi i vlažnosti, zajedno s vremenom i datumom, kao što je prikazano u nastavku.

NAPOMENA: Gornja ideja primjer je povezivanja i snimanja podataka. Korištenje ovog projekta ovisi o vašoj mašti, možete snimati podatke senzora bilo koje vrste.

Autorski prototip:

Prototip za povezani modul SD kartice s Arduinom




Prethodno: Beskontaktni senzori - infracrveni, temperatura / vlažnost, kapacitivni, svjetlosni Dalje: Kako spojiti IR senzor za fotodiodu u krug