التخزين على ذاكرة SD

حول المشروع:

في بعض المشاريع تحتاج لتسجيل مقدار كبير من المعلومات (القراءات) بدون أن تبقى باتصال مع الكمبيوتر. مثال: قياس درجة الحرارة طوال السنة. هذا العمل يسمى logging.
الخيار الأمثل في هذه الحالة هو استخدام ذاكرات الـ SD فهي رخيصة واستخدامها سهل. الرائع في الأمر أنها بإمكانك أخذ مئات أو آلاف القراءات بسهولة من الأردوينو إلى الذاكرة SD إلى الكمبيوتر إلى برنامج أكسيل ؛ ثم رسم شكل بياني يبين لك خلاصة كل تلك القراءات.

التوصيل

تتصل القطعة المخصصة لقراءة بطاقة SD بالأردوينو عن طريق بروتوكول الإتصال SPI. يعتبر  SPI واحد ن أسهل بروتوكولات الاتصال  ويستخدم بكثرة لربط مكونات الأنظمة الإلكترونية (أردوينو، حساسات، ذاكرات ، شرائح إلكترونية متنوعة ) يستخدم بروتوكول الـ SPI أربعة أسلاك 

الوظيفةاسم المنفذالإختصارمنفذ الأردوينو
نقل البیانات تسلسلیا من الأردوینو إلى الذاكرةmaster out/slave inMOSI11
نقل البیانات من الذاكرة إلى الأردوینوmaster in/slave outMISO12
نبضات التزامنclockCLK13
اختیار الملحق الفعال (في حال الربط بأكثر من ملحق)chip selectCSany

الكتابة على الذاكرة

في هذا التمرين تتم الكتابة داخل ملف “jemjem” داخل الذاكرة. أولا نقوم بتعريف الكائن “jeem” و فتح الملف “jemjem.txt”. بعد ذلك نقوم بالكتابة باستخدام ()jeem.println . أخيرا عند الانتهاء من الكتابة يجب اغلاق الملف. لاحظ استخدام مكتبة “SPI.h”  المخصصة لبروتوكول الاتصال SPI و مكتبة (SD.h) المخصص لقارئ الذاكرة.

				
					#include "SPI.h"
#include "SD.h"
File jeem;  // Object
int CS=8;    // CS connecting to pin8
int x=20178;

void setup(){
 if (!SD.begin(CS)) {return;}  //make sure SD card works well
 jeem = SD.open("jemjem.txt",  FILE_WRITE); // opening the file
 if(jeem){  // don't write untill the file is open
 jeem.println("I will upload once only");
 jeem.println(x);
 jeem.close(); }} // the file must be closed after writing
 void loop() {}
 
 
 
 
 


				
			

كتابة المقاومة المتغيرة

يقوم البرنامج التالي بقراءة قيمة الجهد التماثلية من المقاومة المتغيرة وكتابتها في الملف “log” داخل ذاكرة SD  مع قيمة الزمن بأمر millis . لاحظ أن العملية تتكرر كل 100 ميلي ثانية. 

				
					#include "SPI.h"
#include "SD.h"
File jeem;
int CS =8;
int x;
void setup() {
if (!SD.begin(CS)) {return;} }
void loop() {
x=analogRead(A5);
jeem = SD.open("log.txt", FILE_WRITE);
if (jeem) {
jeem.print(x);
jeem.print(",");
jeem.println(millis());
jeem.close();
delay(100);}}
 
 
 
 
 


				
			

التعامل مع البيانات

بعد الانتهاء من تسجيل قيم الجهد التماثلية في التمرين السابق يمكن الآن الحصول على كافة البيانات التي تم كتابتها على الذاكرة من خلال توصيل الذاكرة بالكمبيوتر. يمكنك ملاحظة وجود الملف “log.txt” الذي يحتوي على القيم.

 

أخيرا لمعرفة كيفية تحويل القراءات إلى رسم يمكن مشاهدة الفيديو 

انتقل إلى المتجر

ذاكرة خارجية 32 جيجا SANDESK

35.00 ر.س

ARDUINO NANO | اردوينو نانو

35.00 ر.س

وحدة قارئ الذاكرة | SD CARD MODULE

15.00 ر.س

مقاومة متغيرة صغيرة

3.00 ر.س
انتقال إلى الأعلى