Οδηγός για τη σύνδεση του module κάρτας SD με το Arduino (SPI)

Σε αυτό το μάθημα θα δούμε πώς να συνδέσουμε και να προγραμματίσουμε το Arduino με το module κάρτας  SD  για να διαβάσουμε και να γράψουμε αρχεία σε μια κάρτα SD.

Η παρουσίαση του module της κάρτας SD

Το module κάρτας SD είναι ιδιαίτερα χρήσιμo για projects που απαιτούν καταγραφή δεδομένων. Το Arduino μπορεί να δημιουργήσει ένα αρχείο σε μια κάρτα SD για να γράψει και να αποθηκεύσει δεδομένα χρησιμοποιώντας τη βιβλιοθήκη SD. Υπάρχουν διάφορα μοντέλα αυτών των modules αλλά όλα λειτουργούν με παρόμοιο τρόπο, χρησιμοποιώντας το πρωτόκολλο επικοινωνίας SPI.

Η μονάδα που χρησιμοποιείται σε αυτό το μάθημα είναι αυτή που φαίνεται στο παρακάτω σχήμα (μπροστινή και πίσω όψη). Αυτό το module λειτουργεί με micro SD card.

Καλωδίωση των pins

Ο παρακάτω πίνακας δείχνει πώς πρέπει να συνδέσετε τη μονάδα κάρτας SD στο Arduino σας

SD card module Wiring to Arduino Uno
VCC3.3V or 5V (check module’s datasheet)
CS4
MOSI11
CLK13
MISO12
GNDGND

 

Προετοιμασία της κάρτας SD

Το πρώτο βήμα κατά τη χρήση της μονάδας κάρτας SD με το Arduino είναι η διαμόρφωση της κάρτας SD σε φορματ  FAT16 ή FAT32. Ακολουθήστε τις παρακάτω οδηγίες.

1) Για να μορφοποιήσετε την κάρτα SD, τοποθετήστε την στον υπολογιστή σας. Μεταβείτε στο My Computer και κάντε δεξί κλικ στην κάρτα SD. Επιλέξτε Format όπως φαίνεται στην παρακάτω εικόνα.

2) Εμφανίζεται ένα νέο παράθυρο. Επιλέξτε FAT32, πατήστε Start  για να μορφοποίησετε την κάρτα. Ακολουθήστε τις οδηγίες στην εικόνα.

Δοκιμή της μονάδας κάρτας SD

Τοποθετήστε τη διαμορφωμένη κάρτα SD στη μονάδα κάρτας SD.  Συνδέστε τη μονάδα κάρτας SD στο Arduino όπως φαίνεται στα παρακάτω κύκλωμα.

Για να βεβαιωθείτε ότι όλα είναι καλωδιωμένα σωστά και ότι η κάρτα SD λειτουργεί σωστά, στο παράθυρο Arduino IDE μεταβείτε στο File> Examples > SD > CardInfo. Ανεβάστε τον κώδικα στην πλακέτα Arduino. Βεβαιωθείτε ότι έχετε επιλέξει τη σωστή πλακέτα και τη σωστή θύρα COM. Ανοίξτε τo Serial Monitor με baud rate9600 και θα δείτε τις πληροφορίες της κάρτας SD σας. Εάν όλα λειτουργούν σωστά, θα δείτε ένα παρόμοιο μήνυμα στο Serial Monitor.

Ανάγνωση και εγγραφή στην κάρτα SD

Η βιβλιοθήκη SD παρέχει χρήσιμες λειτουργίες για την εύκολη εγγραφή και ανάγνωση από την κάρτα SD. Για να πραγματοποιήσετε εγγραφή και ανάγνωση, πρέπει πρώτα να συμπεριλάβετε τις βιβλιοθήκες SPI και SD:

#include < SPI.h >
#include < SD. h>

Πρέπει επίσης να αρχικοποιήσετε τη μονάδα της κάρτας SD στην ακίδα Chip Select (CS) – στην περίπτωσή μας, την ακίδα 4.

SD.begin(4);

Για να ανοίξετε ένα νέο αρχείο στην κάρτα SD, πρέπει να δημιουργήσετε ένα αντικείμενο αρχείου (file object) που αναφέρεται στο αρχείο δεδομένων σας. Για παράδειγμα:

dataFile = SD.open("data.txt", FILE_WRITE);

Η πρώτη παράμετρος αυτής της συνάρτησης είναι το όνομα του αρχείου, data.txt, και το όρισμα FILE_WRITE σας επιτρέπει να διαβάζετε και να γράφετε στο αρχείο. Αυτή η γραμμή κώδικα δημιουργεί ένα αρχείο με το όνομα data.txt στην κάρτα SD. Εάν το αρχείο υπάρχει ήδη, το Arduino θα ανοίξει το υπάρχον αρχείο αντί να δημιουργήσει ένα νέο.

Εγγραφή Δεδομένων

Για να γράψετε δεδομένα στο τρέχον ανοιχτό αρχείο, χρησιμοποιείτε:

dataFile.write(data);

Όπου dataFile είναι το αντικείμενο αρχείου που δημιουργήθηκε προηγουμένως και data είναι αυτό που θέλετε να γράψετε στο αρχείο. Μπορείτε επίσης να χρησιμοποιήσετε τις συναρτήσεις print() ή println() για να καταγράψετε δεδομένα:

dataFile.print(data);
dataFile.println(data); // ακολουθούμενο από νέα γραμμή

Ανάγνωση και Κλείσιμο

Για να διαβάσετε τα δεδομένα που είναι αποθηκευμένα στο αρχείο σας:

dataFile.read();

Μπορείτε να γράφετε μόνο σε ένα αρχείο τη φορά, επομένως πρέπει να κλείνετε το αρχείο πριν προχωρήσετε στο επόμενο. Για να κλείσετε το αρχείο data.txt που μόλις δημιουργήσατε:

dataFile.close();

(Σημείωση: Στη βιβλιοθήκη SD του Arduino, η συνάρτηση close() συνήθως καλείται στο αντικείμενο του αρχείου χωρίς ορίσματα).

Για ένα πλήρες sketch σχετικά με την ανάγνωση και την εγγραφή, στο περιβάλλον Arduino IDE μεταβείτε στο: File > Examples > SD > ReadWrite (Αρχείο > Παραδείγματα > SD > ReadWrite).