Interfacing SD Card Module para sa Pag-log ng Data

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Sa post na ito pupunta kami sa interface module ng SD card na may arduino para sa pag-log ng data. Makikita natin ang pangkalahatang ideya ng module ng SD card at mauunawaan ang mga pagsasaayos ng pin nito at sa mga bahagi ng board. Sa wakas magtatayo kami ng isang circuit upang mai-log ang data ng temperatura at halumigmig sa SD card.



Secure Digital Card

Ang SD card o Secure Digital card ay para sa modernong electronics dahil nagbibigay ito ng mataas na kapasidad na imbakan sa kaunting laki. Ginamit namin ang SD card para sa pag-iimbak ng media sa isa sa nakaraang proyekto (Mp3 player). Dito ay gagamitin namin ito para sa pag-log ng data.

Ang pag-log ng data ay ang pangunahing hakbang upang maitala ang nakaraang paglitaw ng isang insidente. Halimbawa: ang mga siyentipiko at mananaliksik ay maaaring bigyang kahulugan ang pagtaas ng temperatura sa buong mundo.



Napagpasyahan nila matapos maunawaan ang tumataas na pattern ng temperatura sa pamamagitan ng pagtingin sa data ng nakaraang ilang dekada. Ang pagtatala ng data tungkol sa kasalukuyang insidente ay maaari ring isiwalat tungkol sa hinaharap na paglitaw.

Dahil ang arduino ay isang mahusay na microcontroller para sa pagbabasa ng data ng sensor at sinusuportahan ang iba't ibang mga protocol ng komunikasyon upang mabasa ang mga sensor at input ng output peripheral, ang koneksyon sa pagitan ng module ng SD card na arduino ay gumawa ng piraso ng cake.

Dahil ang arduino ay walang anumang imbakan maliban sa sarili nitong espasyo sa pag-iimbak ng programa, maaari kaming magdagdag ng isang panlabas na imbakan gamit ang inilarawan na module sa artikulong ito.

Tingnan natin ang module ng SD card.

Larawan ng module ng SD card:

Larawan ng module ng SD card:

Flipside ng module at pagsasaayos ng pin:

Flipside ng module at pagsasaayos ng pin:

Mayroong anim na mga pin at sinusuportahan nito ang SPI (serial peripheral interface) na protocol ng komunikasyon. Para sa Arduino UNO ang mga pin ng komunikasyon ng SPI ay 13, 12, 11, at 10. Para sa Arduino mega ang mga SPI pin ay 50, 51, 52 at 53.

Ang iminungkahing proyekto ay isinalarawan sa Arduino UNO kung mayroon kang anumang iba pang modelo ng Arduino mangyaring mag-refer sa internet para sa mga SPI pin.

Ang modyul ay binubuo ng isang may-hawak ng kard na humahawak sa SD card sa lugar. Ang 3.3V regulator ay ibinigay upang limitahan ang boltahe sa mga SD card dahil ito ay dinisenyo upang gumana sa 3.3V at hindi 5V.

Mayroon itong integrated LVC125A circuit sa board na kung saan ay shifter sa antas ng lohika. Ang pagpapaandar ng shifter sa antas ng lohika ay upang mabawasan ang 5V signal mula sa arduino hanggang 3.3V signal ng lohika.

Ngayon na nagtatapos ang module ng SD card.

Gamit ang module ng SD card maaari kaming mag-imbak ng anumang hari ng data, dito kami mag-iimbak ng data ng teksto. Magtatago kami ng data ng temperatura at kahalumigmigan sa SD card. Gumagamit din kami ng module ng real time na orasan upang mai-log ang oras kasama ang data ng sensor. Itinatala nito ang data tuwing 30 segundo.

Diagram ng iskematika:

Interfacing SD Card Module para sa Pag-log ng Data

Susubaybayan ng module ng RTC ang oras at i-log ang petsa at oras sa SD card.

Mabilis na kumikislap ang error na LED, kung ang SD card ay nabigo o nabigong simulan o wala ang SD card. Natitirang oras na ang LED ay mananatiling off.

PAANO magtakda ng oras sa RTC:

• I-download ang library sa ibaba.
• Sa kumpletong pag-setup ng hardware, ikonekta ang arduino sa PC.
• Buksan ang arduino IDE
• Pumunta sa File> Mga Halimbawa> DS1307RTC> SetTime.
• I-upload ang code at makakasabay ang RTC sa oras ng computer.
• I-upload ngayon ang code na ibinigay sa ibaba.

Mangyaring i-download ang sumusunod na arduino library bago i-upload ang code.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11 temp at kahalumigmigan: 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()
}
}

// ----- Program na binuo ni R.Girish ----- //

Kapag pinahintulutan ang circuit na mag-log ng data nang ilang oras, maaari mong alisin ang SD card na kumonekta sa iyong computer, magkakaroon ng TEXT.txt file na ang lahat ng data ng temperatura at halumigmig ay naitala kasama ng oras at petsa, tulad ng ipinakita sa ibaba.

TANDAAN: Ang ideya sa itaas ay isang halimbawa kung paano mag-interface at magtala ng data. Ang paggamit ng proyektong ito ay nakasalalay sa iyong imahinasyon, maaari kang magtala ng data ng sensor ng anumang uri.

Prototype ng may-akda:

Prototype para sa Interfaced SD Card Module na may Arduino




Nakaraan: Mga Sensors na Walang contact - Infrared, Temperarture / Humidity, Capacitive, Light Susunod: Paano Ikonekta ang isang IR Photodiode Sensor sa isang Circuit