Prepojovací modul SD karty na zaznamenávanie údajov

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V tomto príspevku sa chystáme prepojiť modul SD karty s arduino pre záznam dát. Uvidíme prehľad modulu SD karty a pochopíme jeho konfigurácie pinov a komponenty na palube. Na záver zostrojíme obvod na zaznamenávanie údajov o teplote a vlhkosti na SD kartu.



Zabezpečená digitálna karta

Karta SD alebo karta Secure Digital je prínosom pre modernú elektroniku, pretože poskytuje vysokokapacitný ukladací priestor pri minimálnej veľkosti. SD kartu sme použili na ukladanie médií v jednom z predchádzajúcich projektov (MP3 prehrávač). Tu ho použijeme na zaznamenávanie údajov.

Zaznamenávanie údajov je základným krokom k zaznamenaniu minulého incidentu v minulosti. Napríklad: vedci a vedci schopní interpretovať nárast globálnej teploty.



K tomuto záveru dospeli po pochopení rastúceho teplotného modelu prezeraním údajov posledných pár desaťročí. Zaznamenávanie údajov o aktuálnom incidente môže prezradiť aj budúci výskyt.

Pretože arduino je skvelým mikrokontrolérom na čítanie údajov senzorov a podporuje rôzne komunikačné protokoly na čítanie senzorov a vstupných výstupných periférií, spojenie medzi modulom SD karty arduino bolo hračkou.

Pretože arduino nemá iné úložisko ako svoj vlastný programový úložný priestor, môžeme pomocou opísaného modulu v tomto článku pridať externé úložisko.

Teraz sa pozrime na modul SD karty.

Obrázok modulu SD karty:

Obrázok modulu SD karty:

Obrátená strana modulu a konfigurácia kolíkov:

Obrátená strana modulu a konfigurácia kolíkov:

K dispozícii je šesť pinov a podporuje komunikačný protokol SPI (sériové periférne rozhranie). Pre Arduino UNO sú komunikačné piny SPI 13, 12, 11 a 10. Pre Arduino mega sú piny SPI 50, 51, 52 a 53.

Navrhovaný projekt je ilustrovaný na Arduino UNO, ak máte akýkoľvek iný model Arduina, kolíky SPI nájdete na internete.

Modul sa skladá z držiaka karty, ktorý drží SD kartu na danom mieste. Regulátor 3,3 V slúži na obmedzenie napätia na karty SD, pretože je navrhnutý tak, aby fungoval pri napätí 3,3 V, a nie 5 V.

Má integrovaný obvod LVC125A, ktorý je radič logickej úrovne. Funkciou radiča logickej úrovne je znížiť 5V signály z arduina na 3,3V logické signály.

Tým je modul SD karty ukončený.

Pomocou modulu SD karty môžeme ukladať ľubovoľné dáta, tu ideme ukladať textové dáta. Budeme ukladať údaje o teplote a vlhkosti na SD kartu. Využívame tiež modul hodín reálneho času na zaznamenávanie času spolu s údajmi snímača. Zaznamenáva údaje každých 30 sekúnd.

Schematický diagram:

Prepojovací modul SD karty na zaznamenávanie údajov

Modul RTC bude sledovať čas a zaznamenávať dátum a čas na kartu SD.

Chybová LED dióda rýchlo bliká, ak SD karta zlyhá alebo sa nepodarí inicializovať alebo SD karta nie je prítomná. Po zvyšok času zostane LED dióda zhasnutá.

AKO NASTAVIŤ ČAS NA RTC:

• Stiahnite si knižnicu nižšie.
• Po dokončení nastavenia hardvéru pripojte arduino k počítaču.
• Otvorte arduino IDE
• Prejdite na Súbor> Príklady> DS1307RTC> SetTime.
• Nahrajte kód a RTC sa synchronizuje s časom počítača.
• Teraz nahrajte nižšie uvedený kód.

Pred nahraním kódu si stiahnite nasledujúcu arduino knižnicu.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

Teplota a vlhkosť DHT11: 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 vyvinutý R.Girishom ----- //

Keď je v obvode povolené nejaký čas zaznamenávať údaje, môžete odpojiť kartu SD pripojenú k vášmu počítaču, bude tu súbor TEXT.txt, ktorý zaznamená všetky údaje o teplote a vlhkosti spolu s časom a dátumom, ako je uvedené nižšie.

POZNÁMKA: Vyššie uvedená myšlienka je príkladom toho, ako prepojiť a zaznamenať údaje. Využitie tohto projektu závisí od vašej fantázie, môžete zaznamenávať údaje senzorov ľubovoľného druhu.

Autorský prototyp:

Prototyp pre modul SD karty s rozhraním Arduino




Dvojica: Bezkontaktné snímače - infračervené, teplotné / vlhkostné, kapacitné, ľahké Ďalej: Ako pripojiť IR fotodiódový senzor k obvodu