Összekötő SD-kártya modul az adatrögzítéshez

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Ebben a bejegyzésben az SD kártyamodult illesztjük az arduinóval az adatnaplózáshoz. Megnézzük az SD-kártya modul áttekintését, és megismerjük annak PIN-konfigurációit és a fedélzeti alkatrészeket. Végül felépítünk egy áramkört a hőmérséklet és a páratartalom adatainak SD kártyára történő rögzítésére.



Biztonságos digitális kártya

Az SD-kártya vagy a Secure Digital kártya elengedhetetlen a modern elektronikához, mivel nagy kapacitású tárolást biztosít minimális méretben. Az SD-kártyát médiatárolásra használtuk az előző projekt egyikében (Mp3-lejátszó). Itt fogjuk használni az adatrögzítéshez.

Az adatnaplózás az alapvető lépés az esemény múltbeli előfordulásának rögzítésére. Például: tudósok és kutatók képesek értelmezni a globális hőmérséklet emelkedését.



Erre a következtetésre jutottak, miután megértették az emelkedő hőmérsékleti mintát az elmúlt évtizedek adatainak áttekintésével. Az aktuális incidens adatainak rögzítése a jövőbeni eseményről is tájékoztatást adhat.

Mivel az arduino nagyszerű mikrovezérlő az érzékelők adatainak olvasására, és különféle kommunikációs protokollokat támogat az érzékelők és a bemeneti kimeneti perifériák leolvasásához, az arduino SD-kártya modul közötti kapcsolat süteményt készített.

Mivel az arduino a saját programterületén kívül nem rendelkezik más tárhellyel, a cikkben leírt modul segítségével hozzáadhatunk egy külső tárhelyet.

Most vessünk egy pillantást az SD kártya modulra.

Az SD-kártya modul képe:

Az SD-kártya modul képe:

A modul és a csap konfigurációjának oldalsó oldala:

A modul és a csap konfigurációjának oldalsó oldala:

Hat csap van, és támogatja az SPI (soros perifériás interfész) kommunikációs protokollt. Az Arduino UNO esetében az SPI kommunikációs csapok 13, 12, 11 és 10. Az Arduino mega esetében az SPI csapok 50, 51, 52 és 53.

A javasolt projektet az Arduino UNO szemlélteti, ha bármilyen más Arduino modellje van, kérjük, olvassa el az internetet az SPI csapokról.

A modul egy kártyatartóból áll, amely az SD-kártyát a helyén tartja. A 3,3 V-os szabályozó az SD-kártyák feszültségének korlátozására szolgál, mivel 3,3 V-nál és 5 V-nál nem működik.

A fedélzeten van egy LVC125A integrált áramkör, amely logikai szintű váltó. A logikai szintű váltó funkciója az 5 V-os jelek csökkentése az arduino-ból 3,3 V-os logikai jelekké.

Ezzel befejeződött az SD-kártya modul.

Az SD-kártya modul használatával bármely adattárolót tárolhatunk, itt szöveges adatokat tárolunk. A hőmérsékleti és páratartalmi adatokat SD-kártyára tároljuk. Valós idejű óra modult is használunk az idő és az érzékelők adatainak naplózására. 30 másodpercenként rögzíti az adatokat.

Sematikus ábrája:

Összekötő SD-kártya modul az adatrögzítéshez

Az RTC modul nyomon követi az időt, és naplózza a dátumot és az időt az SD-kártyára.

A hiba LED gyorsan villog, ha az SD-kártya nem sikerül, vagy nem sikerül inicializálni, vagy ha nincs SD-kártya. A hátralévő idő alatt a LED nem világít.

Hogyan állítsuk be az RTC idejét:

• Töltse le az alábbi könyvtárat.
• A hardver befejezése után csatlakoztassa az arduino-t a számítógéphez.
• Nyissa meg az arduino IDE alkalmazást
• Válassza a Fájl> Példák> DS1307RTC> SetTime lehetőséget.
• Töltse fel a kódot, és az RTC szinkronizálódik a számítógép idejével.
• Most töltse fel az alább megadott kódot.

Kérjük, a kód feltöltése előtt töltse le a következő arduino könyvtárat.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11 hőmérséklet és páratartalom: 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()
}
}

// ----- R.Girish által kidolgozott program ----- //

Miután engedélyezték az áramkör számára egy ideig az adatok naplózását, eltávolíthatja az SD-kártyát a számítógépéhez való csatlakozásról, lesz egy TEXT.txt fájl, amelyet az összes hőmérsékleti és páratartalmi adat rögzít az idővel és dátummal együtt, az alábbiak szerint.

MEGJEGYZÉS: A fenti ötlet példa arra, hogyan lehet interfészt és rögzíteni az adatokat. A projekt felhasználása a képzeletétől függ, bármilyen típusú szenzoradatot rögzíthet.

A szerző prototípusa:

Prototípus az interfészes SD-kártya modulhoz Arduino-val




Előző: Érintés nélküli érzékelők - infravörös, hőmérséklet / páratartalom, kapacitív, fény Következő: Az infravörös fotodióda-érzékelő csatlakoztatása áramkörbe