Adatnaplózás Arduino -val és egy SD -kártya modullal

Data Logging with Arduino and an SD Card Module

Az adatnaplózás soknak kulcsfontosságú aspektusa IoT, környezeti megfigyelés és érzékelő-alapú projektek- Egy Arduino és egy SD -kártya modul, tudsz Tárolja az érzékelő adatait, az időbélyegeket és az egyéb leolvasásokat A jövőbeli elemzéshez. Ez az útmutató megmutatja, hogyan kell Csatlakoztasson egy SD -kártya modult az Arduino -hoz, Írja be és olvassa el az adatokat, és elhárítsa a közös problémákat.


1, amire szüksége van

Arduino Board (Uno, Mega, Nano stb.)
Mikro SD kártya modul (SPI-alapú)
MicroSD kártya (FAT32 formázott, 2 GB - 32 GB ajánlott)
Jumper vezetékek
Érzékelők (opcionális, például DHT11, BMP280 stb.)

🔹 Jegyzet: Az SD modul az Arduino -val kommunikál SPI (soros perifériás interfész).


2. Az SD -kártya modult az Arduino -ra huzalja

SD kártya modul tű Arduino Uno Pin Arduino Mega Pin
VCC 5 V -os 5 V -os
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. A szükséges könyvtár telepítése

  1. Nyitott Arduino ide.
  2. Elindul Vázlat → Vegye fel a könyvtárat → Könyvtárak kezelése.
  3. Keres SD és telepítse a SD könyvtár Arduino.

4. Az SD -kártya inicializálása (tesztelje, ha az SD modul működik)

Használja a következőket alapvető teszt kód Annak ellenőrzése, hogy az SD modul működik -e:

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

Mit csinál ez a kód:

✔ Inicializálja a SD modul.
✔ Nyomatok "Az SD -kártya készen áll" Ha észlelik.
✔ Nyomatok "Az SD -kártya inicializálása sikertelen!" Ha hiba van.

🔹 Hibaelhárítás:
✅ Ellenőrizze, hogy az SD -kártya van -e FAT32 formázott.
✅ Biztosít helyes vezeték (Miso, Mosi, SCK és CS).
✅ Próbálj meg egy másikat CS PIN (például 4 helyett 4) és frissítse a kódot.


5. Adatok írása az SD -kártyára

Ez a példa létrehoz egy fájlt (data.txt) és az érzékelő leolvasásait írja rá.

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

Mit csinál ez a kód:

✔ Létrehozza vagy kinyitja data.txt.
✔ Ír "Helló, ez egy tesztnapló!" a fájlhoz.
✔ Írás után bezárja a fájlt.

🔹 Fájlkezelési funkciók:
SD.open("filename.txt", FILE_WRITE); → Nyissa meg a fájlt az íráshoz.
dataFile.println("Text"); → Adatok írása a fájlba.
dataFile.close(); → Zárja be a fájlt az adatok mentéséhez.


6. Adatok olvasása az SD -kártyáról

Használja ezt a kódot Olvassa el és jelenítse meg az adatokat az SD -kártyáról.

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

Mit csinál ez a kód:

✔ Kinyit data.txt Az olvasáshoz.
✔ Kinyomtatja a fájl tartalmát Soros monitor.

🔹 Tipp: Győződjön meg arról, hogy a fájl olvasás előtt létezik A hibák elkerülése érdekében.


7. Az érzékelő adatainak naplózása az SD -kártyára

Ez a példa napló Hőmérsékleti és páratartalom -adatok egy DHT11 érzékelőtől.

Szükséges alkatrészek

DHT11 hőmérsékleti és páratartalom -érzékelő
DHT könyvtár (AdaFruit DHT érzékelő könyvtár)

Vezetékek a DHT11 érzékelőhöz

DHT11 PIN Arduino Pin
VCC 5 V -os
GND GND
ADAT 2

Kód: DHT11 adatok naplózása az SD -kártyára

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

Mit csinál ez a kód:

✔ Olvasható hőmérséklet és páratartalom a DHT11 érzékelő.
✔ Bejelentkezik az adatokat log.txt Az SD -kártyán.
✔ Az értékeket kinyomtatja Soros monitor.


8. Hibaelhárítási tippek

Probléma: Az SD -kártyát nem észlelték?
✅ Győződjön meg arról, hogy az SD -kártya van -e FAT32 formázott.
✅ Kétszer ellenőrizzen Miso, Mosi, SCK és CS vezetékek.
✅ Megpróbál Egy másik SD -kártya (Néhány kártya nem kompatibilis).

Probléma: Az adatok nem mentenek meg?
✅ Mindig Zárja be a fájlt felhasználás dataFile.close();.
✅ Biztosít Elég tárolóhely elérhető az SD -kártyán.


9. Gyakorlati alkalmazások

Időjárás -megfigyelő rendszer - A log hőmérséklete, a páratartalom és a légnyomás.
Energiafigyelés - nyilvántartás feszültség és áram Olvasások az idő múlásával.
GPS -követés - Tárolás szélesség és hosszúság Adatok egy GPS modulból.
Eseménynaplózás - Rekord -érzékelő kiváltó vagy gombnyomás.


10. Következtetés

Egy SD kártya modul Arduino -val nagyszerű módja annak Tárolja az érzékelő adatait, a naplózási eseményeket, vagy hozzon létre egy hordozható adatnaplót- Vel SPI -kommunikáció, könnyen Olvassa el és írjon fájlokat, ideálissá téve IoT és automatizálási projektek.

Hagyj egy megjegyzést

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.