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
- Aprire Arduino ide.
- Vai a Schizzo → Includi la libreria → Gestisci le librerie.
- 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.