Come collegare una scheda micro SD Arduino

Il modulo di scheda di memoria per il microcontrollore Arduino (SD Card Shield) consente di salvare i dati dai sensori quando si creano progetti complessi, poiché la memoria non volatile (EEPROM) di Arduino consente di utilizzare solo 4 Kbyte di memoria sulla scheda Arduino Mega (Atmega2560). In questa recensione vedremo come leggere e scrivere informazioni in un file su un modulo micro SD Card con l’aiuto del microcontrollore Arduino Uno.




Per questa attività sono necessari:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • scheda micro SD
  • cavi di collegamento
  • libreria SPI.h e SD.h

Modulo scheda micro SD Arduino datasheet, pinout

Per lavorare con il modulo si raccomanda di utilizzare il file system della scheda sd – FAT16 o FAT32. Quando si lavora con una nuova scheda, utilizzare sempre questo programma per verificare l’operatività della memoria flash e del modulo. Se non si dispone di tali informazioni sul monitor della porta IDE di Arduino, verificare il corretto collegamento del modulo della scheda micro sd al microcontrollore e provare a formattare la scheda in anticipo.

Modulo scheda SD Arduino pinout, datasheet
Modulo scheda SD Arduino pinout, datasheet

Il modulo è collegato ad Arduino tramite l’interfaccia SPI, per la quale sono necessari i pin SCK, MISO, MOSI e CS. Le schede Arduino Uno e Nano hanno pin speciali per il bus SPI, mentre la scheda Mega 2560 ha pin diversi. Per il pin CS è possibile utilizzare qualsiasi pin libero del microcontrollore e specificare questa modifica nel codice. Per testare la connessione del modulo sd alla scheda Arduino, utilizzare lo sketch standard della libreria SD.h

Collegamento una scheda micro SD ad Arduino

Come usare scheda micro SD Arduino Uno
Come usare modulo scheda micro SD Arduino Uno
SD card shield Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 5V 5V 5V
MOSI 11 11 51
MISO 12 12 50
SCK 13 13 52
SC 4 4 53

Il seguente esempio di codice consente di aprire il file test.txt dalla scheda di memoria per scrivere informazioni (se non esiste un file con questo nome, verrà creato) e salvare una riga con il testo “test 1, 2, 3”. Successivamente, il file deve essere chiuso nel programma per salvare tutti i dati. Tutte le informazioni del file saranno inviate alla porta COM dell’IDE Arduino. Caricare lo sketch per scrivere il file su SD Card e aprire il monitor dell Arduino IDE.

Programma Arduino per scrittura su scheda micro SD




#include "SPI.h"
#include "SD.h"

File myFile;

const int chipSelect = 4;    

void setup() {
  Serial.begin(9600);
  pinMode(SS, OUTPUT);

  while (!SD.begin(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed");
  }
 
  myFile = SD.open("test.txt", FILE_WRITE);

  if (myFile) {
    Serial.println("Writing to test.txt");
    myFile.println("testing 1, 2, 3");
    myFile.close();
  }

  else { Serial.println("error opening test.txt"); }
 
  myFile = SD.open("test.txt");

  if (myFile) {
    Serial.println("\ntest.txt:");
    while (myFile.available()) {
       Serial.write(myFile.read());
    }
    myFile.close();
  }

  else { Serial.println("error opening test.txt"); }
}

void loop() {
 
}

Spiegazione del codice per scrittura di informazioni sulla SD:



  1. quando si lavora con la scheda sd non è possibile aprire più file contemporaneamente; prima di aprire un nuovo file è necessario chiudere quello vecchio;
  2. quando si ricarica il programma, i nuovi dati vengono aggiunti al file e non sovrascritti.

Il codice seguente consente di visualizzare sul monitor della porta le informazioni sulla dimensione del file test.txt dell’esempio precedente, nonché tutte le informazioni che vi sono state scritte. Si noti che il nome del file sulla scheda SD micro non deve contenere più di 8 caratteri, esclusa l’estensione. La libreria SD.h non è sensibile alle maiuscole e minuscole del nome del file, quindi “TEST.txt” e “test.txt” sono lo stesso file.

Programma Arduino per lettore di schede micro SD

#include "SPI.h"
#include "SD.h"

File myFile;

const int chipSelect = 4;    

void setup() {
  Serial.begin(9600);
  pinMode(SS, OUTPUT);

  while (!SD.begin(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed");
  }
 
  myFile = SD.open("test.txt");

  if (myFile) {
    Serial.print(myFile.size());
    Serial.println(" Kb");
    Serial.println("\ntest.txt:");
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    myFile.close();
  }

  else { Serial.println("error opening test.txt"); }
}

void loop() {
 
}

Spiegazione del codice per lettore di informazioni di SD:

  1. alcuni produttori producono moduli con due contatti di alimentazione – 5V e 3,3V.

Libreria SD.h descrizione delle funzioni e dei comandi

Prima di iniziare a lavorare con il modulo della scheda di memoria, è necessario installare le librerie SD.h e SPI.h in Arduino IDE, che possono essere scaricate dal nostro sito. La libreria SPI.h contiene molti comandi e funzioni utili che consentono di lavorare con i file sulla scheda di memoria flash sd shield: creare e cancellare file, aprire e salvare in file le informazioni necessarie dai sensori, ecc. Di seguito è riportato l’elenco dei comandi e delle funzioni.

Funzioni della libreria SD.h per Arduino IDE

  • begin() – inizializzazione della libreria, assegna il pin per il segnale;
  • exists() – controlla se ci sono informazioni sulla scheda;
  • mkdir() – crea la cartella desiderata sulla scheda di memoria sd;
  • rmdir() – cancella la cartella (la cartella deve essere vuota);
  • open() – apre il file per la scrittura/lettura (se il file non esiste, verrà creato);
  • remove() – rimuove il file dalla scheda di memoria.

Comandi della libreria SD.h per Arduino IDE

  • available() – verifica se ci sono byte disponibili per la lettura nel file;
  • size() – visualizza informazioni sulla dimensione dei dati;
  • read() – legge le informazioni;
  • write() – scrive sul file;
  • close() – chiude il file, controllando se i dati sono stati salvati sulla scheda sd;
  • flush() – consente di verificare se i dati sono stati scritti sulla scheda di memoria;
  • name() – restituisce un puntatore al nome;
  • peek() – legge i byte di dati senza spostare il puntatore;
  • position() – mostra la posizione attuale del puntatore nel file;
  • seek() – cambia la posizione corrente nel file;
  • print() – stampa i dati in un file separato;
  • println() – stampa i dati in un file fino al punto in cui appare una riga vuota;
  • isDirectory() – verifica se il file è una directory (cartella);
  • openNextFile() – stampa il nome del file successivo sulla mappa;
  • rewindDirectory() – ritorna al primo file della cartella.

Conclusioni. Abbiamo esaminato diverse possibilità di lavoro con il modulo sd e la scheda Arduino Uno per leggere e scrivere file sulla scheda di memoria micro SD. Questo modulo sarà utile nei progetti in cui è necessario salvare periodicamente delle informazioni. Ad esempio, se si devono salvare informazioni giornaliere dal sensore bmp180 (sensore GY-68) di Arduino sulla pressione atmosferica e sulla temperatura dell’aria ambiente.

Rate this post


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.