Gegevensregistratie met Arduino en een SD -kaartmodule

Data Logging with Arduino and an SD Card Module

Gegevenslogging is een cruciaal aspect van velen IoT, milieumonitoring en op sensor gebaseerde projecten. Met een Arduino en een SD -kaartmodule, je kan Bewaar sensorgegevens, tijdstempels en andere lezingen voor toekomstige analyse. Deze gids laat je zien hoe je het moet Sluit een SD -kaartmodule aan op Arduino, Schrijf en lees gegevens en lost problemen op met veel voorkomende problemen.


1. Wat je nodig hebt

Arduino Board (Uno, mega, nano, enz.)
Micro SD-kaartmodule (SPI-gebaseerd)
MicroSD -kaart (FAT32 geformatteerd, 2 GB - 32 GB aanbevolen)
Jumper draden
Sensoren (optioneel, bijvoorbeeld DHT11, BMP280, enz.)

🔹 Opmerking: De SD -module communiceert met Arduino met behulp van SPI (seriële perifere interface).


2. De SD -kaartmodule bedraden naar Arduino

SD -kaartmodule -pin Arduino Uno Pin Arduino Mega Pin
VCC 5V 5V
GND GND GND
Miso 12 (spi miso) 50 (spi miso)
Mosi 11 (SPI Mosi) 51 (SPI Mosi)
Sck 13 (SPI SCK) 52 (SPI SCK)
CS (chip select) 10 (spi cs) 53 (SPI CS)

3. De vereiste bibliotheek installeren

  1. Open Arduino IDE.
  2. Gaan naar Sketch → Baten Library → Bibliotheken beheren.
  3. Zoeken naar SD en installeer de SD -bibliotheek door Arduino.

4. De SD -kaart initialiseren (test als SD -module werkt)

Gebruik het volgende basistestcode Om te controleren of de SD -module werkt:

#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
}

Wat deze code doet:

✔ Initialiseert de SD -module.
✔ Afdrukken "SD -kaart is klaar" indien gedetecteerd.
✔ Afdrukken "SD -kaartinitialisatie is mislukt!" Als er een fout is.

🔹 Problemen oplossen:
✅ Controleer of de SD -kaart is FAT32 geformatteerd.
✅ Ervoor zorgen Correcte bedrading (Miso, Mosi, SCK en CS).
✅ Probeer nog een CS Pin (bijv. 4 in plaats van 10) en update de code.


5. Gegevens schrijven naar de SD -kaart

Dit voorbeeld Maakt een bestand (data.txt) en schrijft er sensorwaarden aan.

#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
}

Wat deze code doet:

✔ Creëert of opent data.txt.
✔ Schrijft "Hallo, dit is een testlogboek!" naar het bestand.
✔ Sluit het bestand na het schrijven.

🔹 Functies voor het afhandelen van bestanden:
SD.open("filename.txt", FILE_WRITE); → Bestand openen voor schrijven.
dataFile.println("Text"); → Gegevens schrijven naar bestand.
dataFile.close(); → Sluit het bestand om gegevens op te slaan.


6. Gegevens lezen van de SD -kaart

Gebruik deze code voor Lees en toon gegevens van de SD -kaart.

#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
}

Wat deze code doet:

✔ Geopend data.txt voor lezen.
✔ Drukt de inhoud van het bestand af aan Serie -monitor.

🔹 Tip: Zorg ervoor dat het bestand Bestaat voordat u leest om fouten te voorkomen.


7. Gegevens inloggen sensor naar de SD -kaart

Dit voorbeeld registreert Temperatuur- en vochtigheidsgegevens van een DHT11 -sensor.

Vereiste componenten

DHT11 Temperatuur- en vochtigheidssensor
DHT Library (Adafruit DHT Sensor Library)

Bedrading voor DHT11 -sensor

Dht11 pin Arduino Pin
VCC 5V
GND GND
GEGEVENS 2

CODE: DHT11 -gegevens inloggen op SD -kaart

#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
}

Wat deze code doet:

✔ Leest Temperatuur en vochtigheid van de DHT11 -sensor.
✔ Logt de gegevens in log.txt op de SD -kaart.
✔ Drukt de waarden af ​​op Serie -monitor.


8. Tips voor probleemoplossing

Probleem: SD -kaart niet gedetecteerd?
✅ Zorg ervoor dat de SD -kaart is FAT32 geformatteerd.
✅ Controle Miso, Mosi, SCK en CS -bedrading.
✅ Poging Een andere SD -kaart (Sommige kaarten zijn onverenigbaar).

Probleem: Gegevens niet opslaan?
✅ Altijd Sluit het bestand gebruik dataFile.close();.
✅ Ervoor zorgen genoeg opslagruimte is beschikbaar op de SD -kaart.


9. Praktische toepassingen

Weerbewakingssysteem - Logtemperatuur, vochtigheid en luchtdruk.
Energiemonitoring - Dossier spanning en stroom Metingen in de loop van de tijd.
GPS -tracking - Winkel breedtegraad en lengte Gegevens van een GPS -module.
Gebeurtenislogboekregistratie - Record sensor -triggers of knoopdrukken.


10. Conclusie

Een SD -kaartmodule met Arduino is een geweldige manier om Bewaar sensorgegevens, loggebeurtenissen of maak een draagbare datalogger maken. Met SPI -communicatie, je kunt gemakkelijk Lees en schrijf bestanden, waardoor het ideaal is voor IoT- en automatiseringsprojecten.

Laat een reactie achter

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.