डेटा लॉगिंग के लिए इंटरफेसिंग एसडी कार्ड मॉड्यूल

समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें





इस पोस्ट में हम डेटा लॉगिंग के लिए arduino के साथ SD कार्ड मॉड्यूल को इंटरफ़ेस करने जा रहे हैं। हम एसडी कार्ड मॉड्यूल का अवलोकन देखेंगे और इसके पिन कॉन्फ़िगरेशन और बोर्ड घटकों पर समझेंगे। अंत में हम एसडी कार्ड के तापमान और आर्द्रता के डेटा को लॉग करने के लिए एक सर्किट का निर्माण करेंगे।



सुरक्षित डिजिटल कार्ड

एसडी कार्ड या सुरक्षित डिजिटल कार्ड आधुनिक इलेक्ट्रॉनिक्स के लिए वरदान है क्योंकि यह न्यूनतम आकार में उच्च क्षमता का भंडारण प्रदान करता है। हमने पिछले प्रोजेक्ट (एमपी 3 प्लेयर) में से एक में मीडिया स्टोरेज के लिए एसडी कार्ड का इस्तेमाल किया है। यहां हम डेटा लॉगिंग के लिए इसका उपयोग करने जा रहे हैं।

डेटा लॉगिंग एक घटना की पिछली घटना को रिकॉर्ड करने के लिए मौलिक कदम है। उदाहरण के लिए: वैज्ञानिक और शोधकर्ता वैश्विक तापमान के बढ़ने की व्याख्या करने में सक्षम हैं।



पिछले कुछ दशकों के आंकड़ों को देखकर बढ़ते तापमान पैटर्न को समझने के बाद वे इस नतीजे पर पहुंचे। वर्तमान घटना के बारे में डेटा रिकॉर्ड करना भविष्य में होने वाली घटना के बारे में भी बता सकता है।

चूंकि arduino सेंसर डेटा को पढ़ने के लिए एक महान माइक्रोकंट्रोलर है और सेंसर और इनपुट आउटपुट बाह्य उपकरणों को पढ़ने के लिए विभिन्न संचार प्रोटोकॉल का समर्थन करता है, इसलिए एसडी कार्ड मॉड्यूल arduino के बीच का कनेक्शन केक का टुकड़ा है।

चूँकि arduino के पास अपने प्रोग्राम स्टोरेज स्पेस के अलावा कोई स्टोरेज नहीं है, हम इस लेख में वर्णित मॉड्यूल का उपयोग करके एक बाहरी स्टोरेज जोड़ सकते हैं।

अब एसडी कार्ड मॉड्यूल पर एक नजर डालते हैं।

एसडी कार्ड मॉड्यूल की छवि:

एसडी कार्ड मॉड्यूल की छवि:

मॉड्यूल और पिन कॉन्फ़िगरेशन के फ़्लिप्सीड:

मॉड्यूल और पिन कॉन्फ़िगरेशन के फ़्लिप्सीड:

छह पिन हैं और यह एसपीआई (धारावाहिक परिधीय इंटरफ़ेस) संचार प्रोटोकॉल का समर्थन करता है। Arduino UNO के लिए SPI संचार पिन 13, 12, 11, और 10. Arduino मेगा के लिए SPI पिन 50, 51, 52 और 53 हैं।

प्रस्तावित परियोजना को Arduino UNO के साथ चित्रित किया गया है यदि आपके पास Arduino का कोई अन्य मॉडल है तो कृपया SPI पिन के लिए इंटरनेट देखें।

मॉड्यूल में एक कार्ड धारक होता है जो एसडी कार्ड रखता है। 3.3V नियामक को एसडी कार्डों में वोल्टेज को सीमित करने के लिए प्रदान किया जाता है क्योंकि यह 3.3V पर कार्य करने के लिए डिज़ाइन किया गया है न कि 5V।

इसमें LVC125A इंटीग्रेटेड सर्किट ऑन बोर्ड है जो लॉजिक लेवल शिफ्टर है। लॉजिक लेवल शिफ्टर का कार्य आर्डिनो से 5V सिग्नल को 3.3V लॉजिक सिग्नल को कम करना है।

अब जो SD कार्ड मॉड्यूल का समापन करता है।

एसडी कार्ड मॉड्यूल का उपयोग करके हम डेटा के किसी भी राजा को स्टोर कर सकते हैं, यहां हम टेक्स्ट डेटा को स्टोर करने जा रहे हैं। हम एसडी कार्ड के लिए तापमान और आर्द्रता डेटा संग्रहीत करेंगे। हम सेंसर डेटा के साथ समय लॉग करने के लिए वास्तविक समय घड़ी मॉड्यूल का भी उपयोग कर रहे हैं। यह हर 30 सेकंड में डेटा रिकॉर्ड करता है।

योजनाबद्ध आरेख:

डेटा लॉगिंग के लिए इंटरफेसिंग एसडी कार्ड मॉड्यूल

RTC मॉड्यूल समय का ट्रैक रखेगा और दिनांक और समय को SD कार्ड में लॉग करेगा।

अगर एसडी कार्ड फेल हो जाए या फेल न हो जाए या एसडी कार्ड मौजूद न हो तो एरर एलईडी तेजी से ब्लिंक हो जाती है। बाकी समय एलईडी बंद रहें।

RTC के लिए समय कैसे निकालें:

• नीचे दी गई लाइब्रेरी को डाउनलोड करें।
• पूर्ण हार्डवेयर सेटअप के साथ, आर्डिनो को पीसी से कनेक्ट करें।
• आर्डूइनो आईडीई खोलें
• फ़ाइल> उदाहरण> DS1307RTC> सेटटाइम पर जाएं।
• कोड अपलोड करें और RTC कंप्यूटर के समय के साथ सिंक्रनाइज़ हो जाएगा।
• अब नीचे दिए गए कोड को अपलोड करें।

कोड अपलोड करने से पहले कृपया arduino लाइब्रेरी का अनुसरण करें।

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11 अस्थायी और आर्द्रता: arduino-info.wikispaces.com/file/detail/DHT-lib.zip

कार्यक्रम:

//-----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 द्वारा विकसित कार्यक्रम ----- //

एक बार जब सर्किट को कुछ समय के लिए डेटा लॉग करने की अनुमति दी जाती है, तो आप अपने कंप्यूटर से एसडी कार्ड कनेक्ट को हटा सकते हैं, वहां TEXT.txt फ़ाइल होगी जिसे सभी तापमान और आर्द्रता डेटा समय और तारीख के साथ दर्ज किया गया है, जैसा कि नीचे दिखाया गया है।

नोट: उपरोक्त विचार एक उदाहरण है कि डेटा को कैसे इंटरफ़ेस और रिकॉर्ड किया जाए। इस परियोजना का उपयोग आपकी कल्पना पर निर्भर करता है, आप किसी भी प्रकार का सेंसर डेटा रिकॉर्ड कर सकते हैं।

लेखक का प्रोटोटाइप:

Arduino के साथ इंटरफ़ेड एसडी कार्ड मॉड्यूल के लिए प्रोटोटाइप




पिछला: कॉन्टैक्टलेस सेंसर - इन्फ्रारेड, टेम्परर्ट्योर / ह्यूमिडिटी, कैपेसिटिव, लाइट अगला: सर्किट में IR फोटोडायोड सेंसर कैसे कनेक्ट करें