Datavoggning är en avgörande aspekt av många IoT, miljöövervakning och sensorbaserade projekt. Med en Arduino och en SD -kortmodul, du kan Lagra sensordata, tidsstämplar och andra avläsningar för framtida analys. Den här guiden visar hur du gör Anslut en SD -kortmodul till Arduino, Skriv och läs data och felsöka vanliga problem.
1. Vad du behöver
✅ Arduinstyrelse (Uno, Mega, Nano, etc.)
✅ Micro SD-kortmodul (SPI-baserad)
✅ MicroSD -kort (FAT32 formaterat, 2 GB - 32 GB rekommenderas)
✅ Bulttrådar
✅ Sensorer (valfritt, t.ex. DHT11, BMP280, etc.)
🔹 Notera: SD -modulen kommunicerar med Arduino med SPI (serieperifert gränssnitt).
2. Koppla av SD -kortmodulen till Arduino
SD -kortmodulstift | Arduino uno stift | Arduino mega |
---|---|---|
Vcc | 5V | 5V |
Gard | Gard | Gard |
Miso | 12 (SPI MISO) | 50 (SPI MISO) |
Mosi | 11 (SPI MOSI) | 51 (SPI MOSI) |
Säck | 13 (SPI SCK) | 52 (SPI SCK) |
CS (Chip Select) | 10 (spi cs) | 53 (spi cs) |
3. Installera det nödvändiga biblioteket
- Öppna Arduino IDE.
- Gå till Skiss → Inkludera bibliotek → Hantera bibliotek.
- Leta efter SD och installera SD -bibliotek av Arduino.
4. Initiera SD -kortet (Test om SD -modulen fungerar)
Använd följande grundläggande testkod För att kontrollera om SD -modulen fungerar:
#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
}
Vad den här koden gör:
✔ Initialiserar SD -modul.
✔ Grafik "SD -kort är klart" Om detekteras.
✔ Grafik "SD -kortinitiering misslyckades!" Om det finns ett fel.
🔹 Felsökning:
✅ Kontrollera att SD -kortet är FAT32 formaterad.
✅ Säkerställa Korrekt ledning (Miso, Mosi, SCK och CS).
✅ Prova en annan CS Pin (t.ex. 4 istället för 10) och uppdatera koden.
5. Skriva data till SD -kortet
Detta exempel skapar en fil (data.txt
) och skriver sensoravläsningar till det.
#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
}
Vad den här koden gör:
✔ Skapar eller öppnar data.txt
.
✔ Skrivande "Hej, det här är en testlogg!" till filen.
✔ Stänger filen efter att ha skrivit.
🔹 Filhanteringsfunktioner:
✔ SD.open("filename.txt", FILE_WRITE);
→ Öppna fil för att skriva.
✔ dataFile.println("Text");
→ Skriv data till filen.
✔ dataFile.close();
→ Stäng filen för att spara data.
6. Läser data från SD -kortet
Använd den här koden till Läs och visa data från SD -kortet.
#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
}
Vad den här koden gör:
✔ Öppet data.txt
för läsning.
✔ Skriver ut innehållet i filen till Serieövervakare.
🔹 Dricks: Se till att filen finns innan du läser för att undvika fel.
7. Loggningssensordata till SD -kortet
Detta exempel loggar Temperatur- och fuktdata från en DHT11 -sensor.
Obligatoriska komponenter
✅ DHT11 Temperatur- och fuktighetssensor
✅ DHT Library (Adafruit DHT Sensor Library)
Ledningar för DHT11 -sensor
DHT11 -stift | Arduinosnål |
---|---|
Vcc | 5V |
Gard | Gard |
DATA | 2 |
Kod: Logging DHT11 -data till SD -kort
#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
}
Vad den här koden gör:
✔ Avläsningar temperatur och fuktighet från den DHT11 -sensor.
✔ Loggar in data log.txt
på SD -kortet.
✔ Skriver ut värdena till Serieövervakare.
8. Felsökningstips
Problem: SD -kort upptäcks inte?
✅ Se till att SD -kortet är FAT32 formaterad.
✅ Dubbelkontroll Miso, Mosi, SCK och CS -ledningar.
✅ Försök Ett annat SD -kort (Vissa kort är oförenliga).
Problem: Data sparar inte?
✅ Alltid Stäng filen användning dataFile.close();
.
✅ Säkerställa Tillräckligt med lagringsutrymme är tillgängligt på SD -kortet.
9. Praktiska applikationer
✔ Väderövervakningssystem - Loggtemperatur, luftfuktighet och lufttryck.
✔ Energiövervakning - Registrera spänning och ström Läsningar över tiden.
✔ GPS -spårning - förvara latitud och longitud Data från en GPS -modul.
✔ Evenemangsloggning - Spela sensor triggers eller knapptryckningar.
10. Slutsats
Med hjälp av en SD -kortmodul med Arduino är ett bra sätt att Förvara sensordata, logga händelser eller skapa en bärbar datalogger. Med SPI -kommunikation, du kan enkelt Läs och skriv filer, vilket gör det idealiskt för IoT och automatiseringsprojekt.