Datenprotokollierung mit Arduino und einem SD -Kartenmodul

Data Logging with Arduino and an SD Card Module

Datenprotokollierung ist ein entscheidender Aspekt von vielen IoT, Umweltüberwachung und sensorbasierte Projekte. Mit einem Arduino und ein SD -Kartenmodul, du kannst Speichern Sie Sensordaten, Zeitstempel und andere Lesungen Für zukünftige Analyse. Dieser Leitfaden zeigt Ihnen, wie es geht Schließen Sie ein SD -Kartenmodul an Arduino an, schreiben und lesen Sie Daten und Fehlerbehebung bei gemeinsamen Problemen.


1. Was Sie brauchen

Arduino Board (Uno, Mega, Nano usw.)
Micro SD-Kartenmodul (SPI-basiert)
MicroSD -Karte (FAT32 Formatiert, 2GB - 32 GB empfohlen)
Jumperdrähte
Sensoren (optional, z. B. DHT11, BMP280 usw.)

🔹 Notiz: Das SD -Modul kommuniziert mit Arduino mit Arduino SPI (serielle periphere Grenzfläche).


2. Verkabelung des SD -Kartenmoduls mit Arduino

SD -Kartenmodulstift 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 auswählen) 10 (spi cs) 53 (spi cs)

3. Installieren Sie die erforderliche Bibliothek

  1. Offen Arduino ide.
  2. Gehen zu Skizze → Bibliothek einschließen → Bibliotheken verwalten.
  3. Suchen nach SD und installieren Sie die SD -Bibliothek von Arduino.

4. Initialisieren der SD -Karte (Test, wenn das SD -Modul funktioniert)

Verwenden Sie Folgendes Basis -Testcode Um zu überprüfen, ob das SD -Modul funktioniert:

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

Was dieser Code tut:

✔ Initialisiert die SD -Modul.
✔ Drucke "SD -Karte ist fertig" wenn erkannt.
✔ Drucke "Initialisierung der SD -Karten ist fehl!" Wenn es einen Fehler gibt.

🔹 Fehlerbehebung:
✅ Überprüfen Sie, ob die SD -Karte ist FAT32 formatiert.
✅ Sicherstellen Richtige Verkabelung (Miso, Mosi, SCK und CS).
✅ Versuchen Sie es mit einem anderen CS Pin (z. B. 4 statt 10) und aktualisieren Sie den Code.


5. Daten auf die SD -Karte schreiben

Dieses Beispiel erstellt eine Datei (data.txt) und schreibt Sensorwerte darauf.

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

Was dieser Code tut:

✔ Erstellt oder öffnet data.txt.
✔ Schreibt "Hallo, das ist ein Testprotokoll!" zur Datei.
✔ Schließt die Datei nach dem Schreiben.

🔹 Dateihandhabungsfunktionen:
SD.open("filename.txt", FILE_WRITE); → Datei zum Schreiben öffnen.
dataFile.println("Text"); → Daten in Datei schreiben.
dataFile.close(); → Schließen Sie die Datei, um Daten zu speichern.


6. Daten aus der SD -Karte lesen

Verwenden Sie diesen Code zu Lesen und Anzeigen von Daten von der SD -Karte lesen und anzeigen.

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

Was dieser Code tut:

✔ Öffnet data.txt zum Lesen.
✔ Druckt den Inhalt der Datei zu Serienmonitor.

🔹 Tipp: Stellen Sie sicher, dass die Datei sicherstellen existiert vor dem Lesen Fehler vermeiden.


7. Protokollierungssensordaten auf der SD -Karte

Dieses Beispiel loget sich ab Temperatur- und Luftfeuchtigkeitsdaten eines DHT11 -Sensors.

Erforderliche Komponenten

DHT11 -Temperatur- und Feuchtigkeitssensor
DHT -Bibliothek (Adafruit DHT -Sensorbibliothek)

Verkabelung für DHT11 -Sensor

DHT11 PIN Arduino Pin
VCC 5v
GND GND
DATEN 2

Code: Protokollierung von DHT11 -Daten auf SD -Karte

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

Was dieser Code tut:

✔ Liest Temperatur & Feuchtigkeit von der DHT11 -Sensor.
✔ Protokolliert die Daten in log.txt Auf der SD -Karte.
✔ Druckt die Werte zu Serienmonitor.


8. Tipps zur Fehlerbehebung

Problem: SD -Karte nicht erkannt?
✅ Stellen Sie sicher, dass die SD -Karte ist FAT32 formatiert.
✅ Doppelprüfung Miso, Mosi-, SCK- und CS -Verkabelung.
✅ Versuchen eine andere SD -Karte (Einige Karten sind nicht kompatibel).

Problem: Daten nicht speichern?
✅ Stets Schließen Sie die Datei Verwendung dataFile.close();.
✅ Sicherstellen Genug Speicherplatz ist auf der SD -Karte erhältlich.


9. Praktische Anwendungen

Wetterüberwachungssystem - Blockentemperatur, Luftfeuchtigkeit und Luftdruck.
Energieüberwachung - Aufzeichnen Spannung und Strom Lesungen im Laufe der Zeit.
GPS -Tracking - Speichern Breitengrad und Länge Daten aus einem GPS -Modul.
Ereignisprotokollierung - Aufzeichnungssensor -Trigger oder Tastendrücken.


10. Schlussfolgerung

Mit an ein SD -Kartenmodul mit Arduino ist eine großartige Möglichkeit zu Speichern Sie Sensordaten, protokollieren Sie Ereignisse oder erstellen Sie einen tragbaren Datenprotokollger. Mit SPI -Kommunikation, Sie können leicht Dateien lesen und schreiben, ideal für IoT- und Automatisierungsprojekte.

Hinterlasse einen Kommentar

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.