تُعَدّ وحدة الـ SD card مفيدةً بشكلٍ خاصٍّ للمشاريع التي تتطلّب تسجيلاَ للبيانات، حيث يمكن للأردوينو أن يُنشِئ ملفّاً في كرت الذاكرة لكتابة البيانات وحفظها باستخدام مكتبةٍ برمجيّةٍ خاصّة.
هنالك نماذجٌ مختلفةٌ لهذه الواحدة تختلف من شركة لأخرى، ولكنّهم جميعاً يعملون بالطّريقة نفسها، باستخدام بروتوكول الاتصال SPI.

  SD card  الشكل (1): شكل ال 

                                                                   الشكل (1): شكل ال  SD card

هذه الواحدة متوافقةٌ مع كروت الذاكرة الميكرويّة micro SD، ولكن يوجد وحداتٌ أخرى تعمل مع كروت الذاكرة العادية.

   SD card  الشكل (2): شكل ال 
الشكل (2): شكل ال  SD card

كيفية توصيل الواحدة مع الأردوينو:

 

SD card module Wiring to Arduino Uno Wiring to Arduino Mega
VCC 3.3V or 5V

(تحقّق من الداتا شيت الخاصّ بها)

3.3V or 5V

(تحقّق من الداتا شيت الخاصّة بها)

CS 4 53
MOSI 11 51
CLK 13 52
MISO 12 50
GND GND GND

 

ملاحظة:

تختلف أطراف ال spi من لوحة أردوينو الى أخرى، في حال استخدمْتَ لوحة أردوينو أخرى فعليك أن تتحقَّقَ من التوثيق الخاصّ بها عبر الرابط:
https://www.arduino.cc/en/Reference/SPI

تحضير بطاقة الـ SD (كرت الذّاكرة):

تُعَدّ تهيئة البطاقة كـ 16FAT أو 32FAT  الخطوة الأولى عند استخدام بطاقة SD مع الأردوينو، ويتمّ هذا باتّباع الخطوات أدناه:

  • لتهيئة بطاقة الـ SD نقوم : أولاً بإدخالها في جهاز الحاسوب، ومن ثمّ ننقر بالزّرّ اليمينيّ على بطاقة SD، ثمّ نختار “تهيئة” كما يظهر في الشكل.

SD الشكل (3): خطوات تهيئة بطاقة الـ

الشكل (3): خطوات تهيئة بطاقة الـ SD

2- تظهر نافذةٌ جديدةٌ، نختار 32FAT، ومن ثمّ ننقر على “ابدأ” لبدء عملية التّهيئة واتّباع التعليمات التي تظهر على الشاشة.

SD  الشكل (4): خطوات تهيئة بطاقة الـ

الشكل (4): خطوات تهيئة بطاقة الـ SD

اختبار واحدة الـ SD card:

نُدخِل بطاقة الـ SD المُهيَّئَة في الواحدة، ومن ثمّ نَصِلُ الواحدة إلى الأردوينو كما يظهر في مخطّط الدّارة أدناه.

  مع الأردوينو SD الشكل (5):توصيل بطاقة الـ
الشكل (5):توصيل بطاقة الـ SD مع الأردوينو

ملاحظة:

قد تكون الأرجل بترتيبٍ مختلفٍ حسب الشّركة المصنِّعة.

لنتأكّد من أنّ كلّ شيء موصول بالشّكل الصّحيح، وأنّ بطاقة الـ SD تعمل بشكلٍ صحيحٍ، نفتح واجهة برنامج Arduino IDE ونقوم بما يلي:
File } Examples } SD } Card Info

ثم نحمّل الكود عل لوحة الأردوينو الخاصّة بك، نتأكّد من صحّة اللوحة ومنفذ COM المُختار، ومن ثُمّ نفتح المراقب التسلسليّ حيث يكون معدَّل الباود 9600، ثم يجب أن تظهر على الشاشة معلومات بطاقتك الـ SD.

إذا كان كلّ شيءٍ يعمل بشكلٍ صحيحٍ، فسنرى رسالةً مماثلةً على واجهة العرض التسلسلية .

    الشكل (6): رسالة المراقب التسلسليّ

                                                                 الشكل (6): رسالة في واجهة العرض التسلسلية 

القراءة والكتابة في بطاقة الـ SD:

تحوي مكتبة الـ SD توابع للكتابة والقراءة من بطاقة الـ SD.
أولاً: علينا تضمين مكتبات الـ SD وSPI.

<include <SPI.h#

<include <SD.h#

ثانيا: تهيئة الواحدة عبر اختيار الرّجْل CS، في مثالنا الطّرف 4.

(SD.begin(4

ثالثا: فتح ملفٍّ جديدٍ في بطاقة ال SD، علينا إنشاء كائنٍ يمثّل الملفّ الهدف الذي سنكتب عليه أو نقرأ منه، على سبيل المثال:
(dataFile = SD.open(“data.txt”, FILE_WRITE

البارامتر الأوّل هو اسم الملفّ ” data.txt”، والبارامتر الثاني ” FILE_WRITE” لتحديد المهمة قراءةً أو كتابة.
يُنشئ هذا السطر البرمجيّ ملفاً اسمه data.txt على بطاقتك ال SD، وإذا كان موجوداً حقّاً هذا الملفّ، فإنّ الأردوينو سيفتح الملفّ بدلاً من إنشاء واحدٍ آخر.

رابعاً: كتابة البيانات في الملفّ المفتوح حاليّاً، نستخدم:

(dataFile.write(data

حيث datafile هو الكائن الذي أُنشِئ مُسبقاً، والبيانات هي ما تريد أن يُكتَب في الملفّ.

يمكنك أيضاً استخدام التابعين () print أو () println لطباعة البيانات في الملفّ.

(dataFile.print(data

dataFile.println(data) // followed by a new line

خامساً: قراءة البيانات المحفوظة في الملفّ:

()dataFile.read

سادسا: يمكننا الكتابة ضمن الملفّ لمرّةٍ واحدةٍ فقط، لذا عليك أن تُغلِق الملفّ قبل الانتقال إلى واحدٍ آخرٍ، لإغلاق ملفّ data.txt الذي أنشأناه:

(“SD.close(“data.txt

بارامتر هذا التّابع هو الملفّ الذي تريد إغلاقه، في مثالنا data.txt.

يوجد مثالٌ جاهزٌ في مكتبة ال sd يوضّح آليّة الكتابة و القراءة و التّوابع المستخدمة يمكننا فتحه عبر الخطوات :
File} Examples } SD } ReadWrite.


المصدر:  Ultimate Guide for Arduino Sensors and Module
ترجمة: لبانة مطر ، مراجعة: علي العلي ، تدقيق لغوي: مي همدر ، تصميم: علي العلي ، تحرير:قحطان غانم.