Registrazione dei dati con Arduino e un modulo di scheda SD

Data Logging with Arduino and an SD Card Module

La registrazione dei dati è un aspetto cruciale di molti IoT, monitoraggio ambientale e progetti basati sui sensori. Con un Arduino e un modulo di scheda SD, puoi archiviare i dati del sensore, i timestamp e altre letture per analisi future. Questa guida ti mostrerà come Collega un modulo scheda SD ad Arduino, Scrivi e leggi i dati e risolvi i problemi comuni.


1. Di cosa hai bisogno

Arduino Board (Uno, Mega, Nano, ecc.)
Micro SD Card Module (basato su SPI)
Scheda microSD (formattata FAT32, 2 GB - 32 GB raccomandato)
Fili jumper
Sensori (opzionale, ad esempio DHT11, BMP280, ecc.)

🔹 Nota: Il modulo SD comunica con Arduino usando SPI (interfaccia periferica seriale).


2. Cablaggio del modulo scheda SD su Arduino

Pin del modulo scheda SD Arduino Uno Pin Arduino Mega Pin
VCC 5v 5v
GND GND GND
Miso 12 (SPI MIDO) 50 (SPI MIDO)
MOSI 11 (SPI MOSI) 51 (SPI MOSI)
SCK 13 (SPI SCK) 52 (SPI SCK)
CS (CHIP Select) 10 (Spi CS) 53 (Spi CS)

3. Installazione della libreria richiesta

  1. Aprire Arduino ide.
  2. Vai a Schizzo → Includi la libreria → Gestisci le librerie.
  3. Cercare Sd e installa il Biblioteca SD di Arduino.

4. Inizializzazione della scheda SD (test se il modulo SD funziona)

Usa quanto segue Codice di test di base Per verificare se il modulo SD funziona:

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

const int chipSelect = 10;  // Set CS pin for SD card

void setup() {
    Serial.begin(115200);
    Serial.print("Initializing SD card...");

    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }
    Serial.println("SD card is ready.");
}

void loop() {
    // Nothing here
}

Cosa fa questo codice:

✔ Inizializza il Modulo SD.
✔ Stampe "La scheda SD è pronta" Se rilevato.
✔ Stampe "Inizializzazione della scheda SD non è riuscita!" Se c'è un errore.

🔹 Risoluzione dei problemi:
✅ Verificare che la scheda SD sia FAT32 Formattato.
✅ Garantire cablaggio corretto (Miso, MOSI, SCK e CS).
✅ Prova un altro Pin CS (ad es. 4 anziché 10) e aggiorna il codice.


5. Scrivere dati sulla scheda SD

Questo esempio crea un file (data.txt) e scrive letture dei sensori.

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

const int chipSelect = 10;  

void setup() {
    Serial.begin(115200);
    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }
    
    File dataFile = SD.open("data.txt", FILE_WRITE);
    if (dataFile) {
        dataFile.println("Hello, this is a test log!");
        dataFile.close();
        Serial.println("Data written to SD card.");
    } else {
        Serial.println("Failed to open file.");
    }
}

void loop() {
    // Nothing here
}

Cosa fa questo codice:

✔ Crea o si apre data.txt.
✔ Scrive "Ciao, questo è un registro di prova!" al file.
✔ Chiude il file dopo aver scritto.

🔹 Funzioni di gestione dei file:
SD.open("filename.txt", FILE_WRITE); → Apri file per la scrittura.
dataFile.println("Text"); → Scrivi i dati su file.
dataFile.close(); → Chiudi il file per salvare i dati.


6. Lettura dei dati dalla scheda SD

Usa questo codice per Leggere e visualizzare i dati dalla scheda SD.

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

const int chipSelect = 10;

void setup() {
    Serial.begin(115200);
    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }

    File dataFile = SD.open("data.txt");
    if (dataFile) {
        Serial.println("Reading file...");
        while (dataFile.available()) {
            Serial.write(dataFile.read());  // Print file content
        }
        dataFile.close();
    } else {
        Serial.println("Failed to open file.");
    }
}

void loop() {
    // Nothing here
}

Cosa fa questo codice:

✔ Si apre data.txt per la lettura.
✔ Stampa il contenuto del file a Monitor seriale.

🔹 Mancia: Assicurati che il file esiste prima di leggere per evitare errori.


7. Registrazione dei dati del sensore sulla scheda SD

Questo esempio registri Dati di temperatura e umidità da un sensore DHT11.

Componenti richiesti

Sensore di temperatura e umidità DHT11
Libreria DHT (Adafruit DHT Sensor Library)

Cablaggio per sensore DHT11

PIN DHT11 Arduino Pin
VCC 5v
GND GND
DATI 2

Codice: registrazione dei dati DHT11 alla scheda SD

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

#define DHTPIN 2      // Pin connected to DHT sensor
#define DHTTYPE DHT11 // Define sensor type (DHT11 or DHT22)
DHT dht(DHTPIN, DHTTYPE);

const int chipSelect = 10;

void setup() {
    Serial.begin(115200);
    dht.begin();

    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }
}

void loop() {
    float temp = dht.readTemperature();
    float humidity = dht.readHumidity();

    if (isnan(temp) || isnan(humidity)) {
        Serial.println("Failed to read from DHT sensor!");
        return;
    }

    File dataFile = SD.open("log.txt", FILE_WRITE);
    if (dataFile) {
        dataFile.print("Temperature: ");
        dataFile.print(temp);
        dataFile.print(" °C, Humidity: ");
        dataFile.print(humidity);
        dataFile.println(" %");
        dataFile.close();
    } else {
        Serial.println("Failed to write to SD card.");
    }

    Serial.print("Logged: Temp = ");
    Serial.print(temp);
    Serial.print(" °C, Humidity = ");
    Serial.println(humidity);

    delay(2000);  // Log every 2 seconds
}

Cosa fa questo codice:

✔ Legge temperatura e umidità da Sensore DHT11.
✔ Accede ai dati in log.txt Sulla scheda SD.
✔ Stampa i valori a Monitor seriale.


8. Suggerimenti per la risoluzione dei problemi

Problema: Scheda SD non rilevata?
✅ Assicurarsi che la scheda SD sia FAT32 Formattato.
✅ Doppio controllo Cablaggio Miso, MOSI, SCK e CS.
✅ Tentativo Una scheda SD diversa (Alcune carte sono incompatibili).

Problema: I dati non salvano?
✅ Sempre chiudere il file usando dataFile.close();.
✅ Garantire Abbastanza spazio di archiviazione è disponibile sulla scheda SD.


9. Applicazioni pratiche

Sistema di monitoraggio meteorologico - Temperatura del registro, umidità e pressione dell'aria.
Monitoraggio energetico - Documentazione tensione e corrente Letture nel tempo.
Tracciamento GPS - Negozio latitudine e longitudine Dati da un modulo GPS.
Registrazione degli eventi - Registra i trigger del sensore o il pulsante.


10. Conclusione

Usando un Modulo di scheda SD con Arduino è un ottimo modo per archiviare i dati del sensore, registrare eventi o creare un logger di dati portatile. Con Comunicazione SPI, puoi facilmente Leggi e scrivi file, rendendolo ideale per Progetti IoT e automazione.

Lascia un commento

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.